{"version":3,"file":"js/chunk-vendors-c065aab2.ea5b2246.js","mappings":";;;;;MASA,SAASA,EAAWC,EAAUC,GAC5B,OAAIA,EACKD,EAASE,cAAc,KAAMD,GAG/BD,EAASG,eAClB,CAEA,SAASC,EAAkBC,GACzB,GAAIA,EAAOC,OAAOC,eAChB,OAAOF,EAAOC,OAAOC,eAGvB,MAAMC,EAAQ,CAAC,EAUf,OATAC,OAAOC,KAAKL,EAAOM,OAAOC,SAAQC,IAChC,MAAMC,EAAWT,EAAOM,MAAME,GAE1BC,EAASC,KAAKC,YAChBR,EAAMM,EAASC,KAAKC,WAAaF,EACnC,IAGFT,EAAOC,OAAOC,eAAiBC,EACxBA,CACT,CAEA,SAASS,EAAYZ,EAAQa,EAAWC,EAAWC,EAAenB,GAChE,MAAMoB,EAAQjB,EAAkBC,GAC1BiB,EAAc,GACdC,EAAQ,GAEd,IAAK,IAAIC,EAAQ,EAAGA,EAAQL,EAAWK,GAAS,EAAG,CACjD,MAAMC,EAAO1B,EAAWsB,EAAMI,KAAMxB,GAMpC,GAJIwB,GACFF,EAAMG,KAAKD,GAGTL,EAAe,CACjB,MAAMO,EAAa5B,EAAWsB,EAAMO,YAAa3B,GAE7C0B,GACFL,EAAYI,KAAKC,EAErB,CACF,CAEA,MAAME,EAAO,GAEb,IAAK,IAAIL,EAAQ,EAAGA,EAAQN,EAAWM,GAAS,EAC9CK,EAAKH,KAAKL,EAAMS,IAAI5B,cAAc,KAAMkB,GAA2B,IAAVI,EAAcF,EAAcC,IAGvF,OAAOF,EAAMU,MAAM7B,cAAc,KAAM2B,EACzC,CAEA,SAASG,EAAclB,EAAUmB,GAC/B,OAAOC,MAAMC,QAAQrB,IAAaA,EAASsB,QAAQH,EAAKpB,OAAS,GAAKoB,EAAKpB,OAASC,CACtF,CAwCA,SAASuB,EAA2BC,EAAMC,GACxC,IAAK,IAAIC,EAAIF,EAAKG,MAAOD,EAAI,EAAGA,GAAK,EAAG,CACtC,MAAMP,EAAOK,EAAKL,KAAKO,GAEvB,GAAID,EAAUN,GACZ,MAAO,CACLS,IAAKF,EAAI,EAAIF,EAAKK,OAAOH,GAAK,EAC9BI,MAAON,EAAKM,MAAMJ,GAClBC,MAAOD,EACPP,OAGN,CACF,CAEA,SAASY,EAAeN,GACtB,OAAOO,GAAaT,EAA2BS,EAAUC,MAAOR,EAClE,CAEA,SAASS,EAAgBF,GACvB,OAAOA,aAAqB,IAC9B,CAEA,SAASG,EAAuBnC,GAE9B,OAAO,SAAUgC,GACf,GAAIE,EAAgBF,GAAY,CAC9B,MAAM,KACJb,GACEa,GACE,MACJC,GACED,EAEJ,GAAId,EAAclB,EAAUmB,GAC1B,MAAO,CACLA,OACAS,IAAKK,EAAML,IACXD,MAAOM,EAAMN,MAGnB,CACF,CACF,CAEA,SAASS,EAAaC,EAAOtC,GAC3B,MAAM,KACJuC,EAAI,GACJC,GACEF,EAAML,UACV,IAAIQ,EAAQ,GACZH,EAAMI,IAAIC,aAAaJ,EAAMC,GAAIpB,IAC/BqB,EAAQ,IAAIA,KAAUrB,EAAKqB,MAAM,IAEnC,MAAMG,EAAOH,EAAMI,MAAKC,GAAYA,EAAS9C,KAAK+C,OAAS/C,EAAK+C,OAEhE,OAAIH,EACKA,EAAKI,MAGP,CAAC,CACV,CAEA,SAASC,EAAaxB,EAAO,KAAMzB,EAAO,MACxC,IAAKyB,IAASzB,EACZ,OAAO,EAGT,MAAM+B,EAAQN,EAAKyB,OAAOC,WAAW1B,EAAK2B,cAE1C,IAAKrB,EAAMX,KACT,OAAO,EAGT,MAAMiC,EAAOtB,EAAMX,KAAKqB,MAAMI,MAAKD,GAAQA,EAAK5C,OAASA,IAEzD,IAAKqD,EACH,OAAO,EAGT,IAAIC,EAAa7B,EAAKd,QAClB4C,EAAW9B,EAAKM,QAAUA,EAAMyB,OAChCC,EAAWH,EAAa,EACxBI,EAASH,EAAWxB,EAAMX,KAAKuC,SAEnC,MAAOL,EAAa,GAAKD,EAAKO,QAAQnC,EAAKyB,OAAOW,MAAMP,EAAa,GAAGb,OACtEa,GAAc,EACdC,GAAY9B,EAAKyB,OAAOW,MAAMP,GAAYK,SAG5C,MAAOF,EAAWhC,EAAKyB,OAAOY,YAAcT,EAAKO,QAAQnC,EAAKyB,OAAOW,MAAMJ,GAAUhB,OACnFiB,GAAUjC,EAAKyB,OAAOW,MAAMJ,GAAUE,SACtCF,GAAY,EAGd,MAAO,CACLlB,KAAMgB,EACNf,GAAIkB,EAER,CAEA,SAASK,EAAazB,EAAOtC,GAC3B,MAAM,KACJuC,EAAI,GACJC,GACEF,EAAML,UACV,IAAInC,EAAQ,GACZwC,EAAMI,IAAIC,aAAaJ,EAAMC,GAAIpB,IAC/BtB,EAAQ,IAAIA,EAAOsB,EAAK,IAE1B,MAAMA,EAAOtB,EAAMkE,UAAUnB,MAAKoB,GAAYA,EAASjE,KAAK+C,OAAS/C,EAAK+C,OAE1E,OAAI3B,EACKA,EAAK4B,MAGP,CAAC,CACV,CAEA,SAASkB,EAAa5B,EAAOtC,GAC3B,MAAM,KACJuC,EAAI,MACJL,EAAK,GACLM,EAAE,MACF2B,GACE7B,EAAML,UAEV,OAAIkC,IACOnE,EAAK4D,QAAQtB,EAAM8B,aAAelC,EAAMO,WAG1CH,EAAMI,IAAI2B,aAAa9B,EAAMC,EAAIxC,EAC5C,CASA,SAASsE,EAAahC,EAAOtC,EAAMgD,EAAQ,CAAC,GAC1C,MAAMtB,EAAYN,GAAQA,EAAKpB,OAASA,EAElCoB,EAAOgB,EAAuBpC,EAAvBoC,CAA6BE,EAAML,YAAcD,EAAeN,EAAfM,CAA0BM,EAAML,WAE9F,OAAKrC,OAAOC,KAAKmD,GAAOuB,QAAWnD,EAI5BA,EAAKA,KAAKoD,UAAUxE,EAAM,IAAKoB,EAAKA,KAAK4B,SAC3CA,MAJM5B,CAMb,C;;;;;;AChPA,SAASqD,EAAWC,GAClB,OAAOA,EAAIC,QAAQ,uBAAuB,CAACC,EAAMjE,IAAoB,IAAVA,EAAciE,EAAKC,cAAgBD,EAAKE,gBAAeH,QAAQ,OAAQ,GACpI,CAEA,MAAMI,EACJC,YAAYC,GAAW,OACrBC,EAAM,UACNC,EAAS,OACTjC,EAAM,KACN9B,EAAI,KACJgE,EAAI,YACJC,EAAW,OACXC,IAEAC,KAAKN,UAAYA,EACjBM,KAAKL,OAASA,EACdK,KAAKJ,UAAYA,EACjBI,KAAKrC,OAASA,EACdqC,KAAKnE,KAAOA,EACZmE,KAAKH,KAAOA,EACZG,KAAKF,YAAcA,EACnBE,KAAKC,SAAWD,KAAKnE,KAAKqB,MAC1B8C,KAAKE,QAAUF,KAAKC,OACpBD,KAAKD,OAASC,KAAKE,OAASF,KAAKG,WAAaJ,EAC9CC,KAAKI,eAAgB,EACrBJ,KAAKK,IAAML,KAAKM,YAChBN,KAAKO,WAAaP,KAAKQ,GAAGC,MAAMC,OAClC,CAEAJ,YACE,MAAMK,EAAY,WAAWX,KAAKN,WAC5BkB,EAAQ,CACZjB,OAAQK,KAAKL,OACb9D,KAAMmE,KAAKnE,KACXgE,KAAMG,KAAKH,KACXE,OAAQ,IAAMC,KAAKD,SACnBD,YAAaE,KAAKF,YAClBe,UAAU,EACVC,QAASd,KAAKJ,UAAUkB,QACxBC,YAAatD,GAASuC,KAAKe,YAAYtD,IAezC,MAZ2C,oBAAhCuC,KAAKJ,UAAUoB,eACxBhB,KAAKgB,aAAehB,KAAKJ,UAAUoB,cAGA,oBAA1BhB,KAAKJ,UAAUqB,SACxBjB,KAAKiB,OAASjB,KAAKJ,UAAUqB,QAG/BjB,KAAKQ,GAAK,IAAIG,EAAU,CACtBhD,OAAQqC,KAAKrC,OACbuD,UAAWN,IACVO,SACInB,KAAKQ,GAAGY,GACjB,CAEAH,OAAOpF,EAAMiE,GACX,OAAIjE,EAAKpB,OAASuF,KAAKnE,KAAKpB,OAIxBoB,IAASmE,KAAKnE,MAAQmE,KAAKF,cAAgBA,IAI/CE,KAAKnE,KAAOA,EACZmE,KAAKF,YAAcA,EACnBE,KAAKqB,qBAAqB,CACxBxF,OACAiE,kBAPO,EAUX,CAEAuB,qBAAqBT,GACnB,IAAKZ,KAAKQ,GAAGc,OACX,OAMF,MAAMC,EAAiB,kBACvB,mBAAoB,EACpBlH,OAAOmH,QAAQZ,GAAOpG,SAAQ,EAAEiH,EAAKC,MACnC1B,KAAKQ,GAAGc,OAAOG,GAAOC,CAAK,IAI7B,kBAAoBH,CACtB,CAEAR,YAAYtD,GACV,IAAKuC,KAAKH,KAAK8B,SACb,OAGF,MAAM,MACJ5E,GACEiD,KAAKH,MACH,KACJpF,GACEuF,KAAKnE,KACHS,EAAM0D,KAAKD,SACX6B,EAAW,IAAK5B,KAAKnE,KAAK4B,SAC3BA,GAECoE,EAAc7B,KAAKE,OAASnD,EAAM+E,GAAGC,WAAWzF,EAAIU,KAAMV,EAAIW,GAAIxC,GAAMuH,QAAQ1F,EAAIU,KAAMV,EAAIW,GAAIxC,EAAKwH,OAAOL,IAAa7E,EAAM+E,GAAGI,cAAc5F,EAAK,KAAMsF,GACnK5B,KAAKH,KAAKsC,SAASN,EACrB,CAIAO,eAAeC,GAEb,MAAsB,cAAlBA,EAAS5H,QAIRuF,KAAKO,aAIFP,KAAKO,WAAW+B,SAASD,EAASE,QAC5C,CAGAC,UAAUC,GACR,GAAwC,oBAA7BzC,KAAKJ,UAAU4C,UACxB,OAAOxC,KAAKJ,UAAU4C,UAAUC,GAGlC,MAAMC,IAAc1C,KAAKJ,UAAU3F,OAAOyI,UAE1C,GAAIA,GAA4B,cAAfD,EAAMhI,KAAsB,CAC3C,MAAMkI,EAAaF,EAAMF,OAAOK,SAAWH,EAAMF,OAAOK,QAAQ,sBAC1DC,EAAoBF,IAAe3C,KAAKK,MAAQsC,GAAc3C,KAAKK,IAAIiC,SAASK,IAElFE,IACF7C,KAAKI,eAAgB,EACrB0C,SAASC,iBAAiB,WAAW,KACnC/C,KAAKI,eAAgB,CAAI,GACxB,CACD4C,MAAM,IAGZ,CAEA,MAAMC,EAAwB,SAAfR,EAAMhI,KACfyI,EAAyB,UAAfT,EAAMhI,KAChB0I,EAAuB,QAAfV,EAAMhI,KACd2I,EAASX,EAAMhI,KAAK4I,WAAW,SAA0B,SAAfZ,EAAMhI,KAEtD,QAAIiI,GAAaU,GAAUH,GAAUC,GAAWC,IAIzCnD,KAAKI,aACd,CAEAkD,aACEtD,KAAKqB,qBAAqB,CACxBR,UAAU,GAEd,CAEA0C,eACEvD,KAAKqB,qBAAqB,CACxBR,UAAU,GAEd,CAEAV,aACE,MAAM7D,EAAM0D,KAAKH,KAAK2D,SAASxD,KAAKK,KAC9BoD,EAAczD,KAAKH,KAAK9C,MAAMI,IAAIuG,QAAQpH,GAC1CqH,GAAQ,QAAaF,EAAazD,KAAKnE,KAAKpB,MAClD,OAAOkJ,CACT,CAEAC,UACE5D,KAAKQ,GAAGqD,UACV,EAIF,MAAMC,EAEJC,GAAGtB,EAAOuB,GASR,OARAhE,KAAKiE,WAAajE,KAAKiE,YAAc,CAAC,EAEjCjE,KAAKiE,WAAWxB,KACnBzC,KAAKiE,WAAWxB,GAAS,IAG3BzC,KAAKiE,WAAWxB,GAAOnH,KAAK0I,GAErBhE,IACT,CAEAkE,KAAKzB,KAAU0B,GACbnE,KAAKiE,WAAajE,KAAKiE,YAAc,CAAC,EACtC,MAAMG,EAAYpE,KAAKiE,WAAWxB,GAMlC,OAJI2B,GACFA,EAAU5J,SAAQ6J,GAAYA,EAASC,MAAMtE,KAAMmE,KAG9CnE,IACT,CAKAuE,IAAI9B,EAAOuB,GACT,GAAKQ,UAAUxF,OAER,CAEL,MAAMoF,EAAYpE,KAAKiE,WAAajE,KAAKiE,WAAWxB,GAAS,KAEzD2B,IACEJ,EACFhE,KAAKiE,WAAWxB,GAAS2B,EAAUK,QAAOC,GAAMA,IAAOV,WAEhDhE,KAAKiE,WAAWxB,GAG7B,MAZEzC,KAAKiE,WAAa,CAAC,EAcrB,OAAOjE,IACT,EAIF,MAAM2E,EACJlF,YAAYqB,EAAU,CAAC,GACrBd,KAAKc,QAAU,IAAKd,KAAK4E,kBACpB9D,EAEP,CAEA+D,OACE,OAAO,IACT,CAEAC,WAAWnF,EAAS,MAClBK,KAAKL,OAASA,CAChB,CAEInC,WACF,OAAO,IACT,CAEI/C,WACF,MAAO,WACT,CAEImK,qBACF,MAAO,CAAC,CACV,CAEIG,cACF,MAAO,EACT,CAEAC,aACE,MAAO,EACT,CAEAC,aACE,MAAO,EACT,CAEA3K,OACE,MAAO,CAAC,CACV,EAIF,MAAM4K,EACJzF,YAAY0F,EAAa,GAAIxF,GAC3BwF,EAAW3K,SAAQoF,IACjBA,EAAUkF,WAAWnF,GACrBC,EAAUiF,MAAM,IAElB7E,KAAKmF,WAAaA,CACpB,CAEI5K,YACF,OAAOyF,KAAKmF,WAAWV,QAAO7E,GAAgC,SAAnBA,EAAUnF,OAAiB2K,QAAO,CAAC7K,GAC5EiD,OACAvD,aACI,IAAMM,EACV,CAACiD,GAAOvD,KACN,CAAC,EACP,CAEI6G,cACF,MAAM,KACJjB,GACEG,KACJ,OAAOA,KAAKmF,WAAWC,QAAO,CAAC7K,EAAOqF,KAAc,IAAMrF,EACxD,CAACqF,EAAUpC,MAAO,IAAI6H,MAAMzF,EAAUkB,QAAS,CAC7CwE,IAAIC,EAAKC,EAAM9D,GACb,MAAM+D,EAAUF,EAAIC,KAAU9D,EAS9B,OARArH,OAAOqL,OAAOH,EAAK,CACjB,CAACC,GAAO9D,IAGN+D,GACF5F,EAAK8F,YAAY9F,EAAK9C,QAGjB,CACT,OAGA,CAAC,EACP,CAEIG,YACF,OAAO8C,KAAKmF,WAAWV,QAAO7E,GAAgC,SAAnBA,EAAUnF,OAAiB2K,QAAO,CAAClI,GAC5EM,OACAvD,aACI,IAAMiD,EACV,CAACM,GAAOvD,KACN,CAAC,EACP,CAEI8K,cACF,OAAO/E,KAAKmF,WAAWV,QAAO7E,GAAaA,EAAUmF,UAASK,QAAO,CAACQ,GACpEb,aACI,IAAIa,KAAeb,IAAU,GACrC,CAEAc,SAAQ,OACN5L,IAEA,MAAM6L,EAAmB9F,KAAKmF,WAAWV,QAAO7E,GAAa,CAAC,aAAamG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUtF,OAAM0L,KAAIpG,GAAaA,EAAUtF,KAAK,CACvKL,aAEIgM,EAAkBjG,KAAKmF,WAAWV,QAAO7E,GAAa,CAAC,OAAQ,QAAQmG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUtF,OAAM0L,KAAIpG,GAAaA,EAAUtF,KAAK,CACzKG,KAAMR,EAAO,GAAG2F,EAAUnF,SAASmF,EAAUpC,MAC7CvD,aAEF,MAAO,IAAI6L,KAAqBG,GAAiBD,KAAI1L,IAAQ,OAAOA,IACtE,CAEA0K,YAAW,OACT/K,EAAM,mBACNiM,IAEA,KAAMA,aAA8BpK,QAAUoK,EAAoB,MAAO,GACzE,MAAMC,EAAoBD,aAA8BpK,MAAQkE,KAAKmF,WAAWV,QAAO7E,IAAcsG,EAAmBH,SAASnG,EAAUpC,QAASwC,KAAKmF,WACnJiB,EAAsBD,EAAkB1B,QAAO7E,GAAa,CAAC,aAAamG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUoF,aAAYgB,KAAIpG,GAAaA,EAAUoF,WAAW,CACxL/K,aAEIoM,EAAqBF,EAAkB1B,QAAO7E,GAAa,CAAC,OAAQ,QAAQmG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUoF,aAAYgB,KAAIpG,GAAaA,EAAUoF,WAAW,CAC1LvK,KAAMR,EAAO,GAAG2F,EAAUnF,SAASmF,EAAUpC,MAC7CvD,aAEF,MAAO,IAAImM,KAAwBC,GAAoBjB,QAAO,CAACkB,EAAetB,IAAe,IAAIsB,KAAkBtB,IAAa,GAClI,CAEAC,YAAW,OACThL,EAAM,mBACNiM,IAEA,KAAMA,aAA8BpK,QAAUoK,EAAoB,MAAO,GACzE,MAAMC,EAAoBD,aAA8BpK,MAAQkE,KAAKmF,WAAWV,QAAO7E,IAAcsG,EAAmBH,SAASnG,EAAUpC,QAASwC,KAAKmF,WACnJoB,EAAsBJ,EAAkB1B,QAAO7E,GAAa,CAAC,aAAamG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUqF,aAAYe,KAAIpG,GAAaA,EAAUqF,WAAW,CACxLhL,aAEIuM,EAAqBL,EAAkB1B,QAAO7E,GAAa,CAAC,OAAQ,QAAQmG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUqF,aAAYe,KAAIpG,GAAaA,EAAUqF,WAAW,CAC1LxK,KAAMR,EAAO,GAAG2F,EAAUnF,SAASmF,EAAUpC,MAC7CvD,aAEF,MAAO,IAAIsM,KAAwBC,GAAoBpB,QAAO,CAACqB,EAAexB,IAAe,IAAIwB,KAAkBxB,IAAa,GAClI,CAEAyB,UAAS,OACPzM,EAAM,KACN4F,IAEA,OAAOG,KAAKmF,WAAWV,QAAO7E,GAAaA,EAAU8G,WAAUtB,QAAO,CAACuB,EAAa/G,KAClF,MAAM,KACJpC,EAAI,KACJ/C,GACEmF,EACE8G,EAAW,CAAC,EACZhF,EAAQ9B,EAAU8G,SAAS,CAC/BzM,YACI,CAAC,OAAQ,QAAQ8L,SAAStL,GAAQ,CACpCA,KAAMR,EAAO,GAAGQ,MAAS+C,IACvB,CAAC,IAGD8G,EAAQ,CAACI,EAAIjH,MACZoC,EAAK8B,WAIV9B,EAAK+G,QACElC,EAAGjH,EAAHiH,CAAU7E,EAAK9C,MAAO8C,EAAKsC,SAAUtC,IAGxCgH,EAAS,CAACC,EAAOC,KACjBjL,MAAMC,QAAQgL,GAChBL,EAASI,GAASrJ,GAASsJ,EAAOvM,SAAQ6J,GAAYC,EAAMD,EAAU5G,KAC3C,oBAAXsJ,IAChBL,EAASI,GAASrJ,GAAS6G,EAAMyC,EAAQtJ,GAC3C,EAWF,MARqB,kBAAViE,EACTrH,OAAOmH,QAAQE,GAAOlH,SAAQ,EAAEwM,EAAaC,MAC3CJ,EAAOG,EAAaC,EAAa,IAGnCJ,EAAOrJ,EAAMkE,GAGR,IAAKiF,KACPD,EACJ,GACA,CAAC,EACN,EAIF,SAASQ,EAAWC,GACmB,CACnC,MAAMC,EAAQtE,SAASuE,cAAc,SACrCD,EAAM3M,KAAO,WACb2M,EAAME,YAAcH,EACpB,MAAM,KACJI,GACEzE,UACE,WACJ0E,GACED,EAEAC,EACFD,EAAKE,aAAaL,EAAOI,GAEzBD,EAAKG,YAAYN,EAErB,CACF,CAEA,MAAMO,UAAahD,EACjBlF,YAAYqB,EAAU,CAAC,GACrB8G,MAAM9G,EACR,CAEIrG,WACF,MAAO,MACT,CAEIoF,WACF,OAAO,IACT,CAEI5F,aACF,OAAO,IACT,CAEA4N,UACE,MAAO,MACT,EAIF,SAASC,EAAOpG,EAAQ,EAAGqG,EAAM,EAAGC,EAAM,GACxC,OAAOC,KAAKF,IAAIE,KAAKD,IAAIE,SAASxG,EAAO,IAAKqG,GAAMC,EACtD,CAEA,MAAMG,UAAaxD,EACjBlF,YAAYqB,EAAU,CAAC,GACrB8G,MAAM9G,EACR,CAEIrG,WACF,MAAO,MACT,CAEIoF,WACF,OAAO,IACT,CAEI5F,aACF,OAAO,IACT,CAEA4N,UACE,MAAO,MACT,EAIF,MAAMO,UAAYD,EACZ3K,WACF,MAAO,KACT,CAEIvD,aACF,MAAO,CACLyG,QAAS,SAEb,EAIF,MAAM2H,UAAkBF,EAClB3K,WACF,MAAO,WACT,CAEIvD,aACF,MAAO,CACLyG,QAAS,UACT4H,MAAO,QACP5F,WAAW,EACX6F,SAAU,CAAC,CACTC,IAAK,MAEPC,MAAO,IAAM,CAAC,IAAK,GAEvB,CAEA/B,UAAS,KACPjM,IAEA,MAAO,KAAM,QAAaA,EAC5B,EAIF,MAAMiO,UAAaP,EACb3K,WACF,MAAO,MACT,CAEIvD,aACF,MAAO,CACLqO,MAAO,SAEX,EAIF,IAAInB,EAAM,+6BAEV,MAAMwB,UAAe7E,EACnBrE,YAAYqB,EAAU,CAAC,GACrB8G,QACA5H,KAAK4E,eAAiB,CACpBgE,YAAa,CAAC,EACdjH,UAAU,EACVkH,UAAW,KACX1D,WAAY,GACZzE,QAAS,GACToI,QAAS,MACTC,cAAe,CACbtO,KAAM,MACNiG,QAAS,CAAC,CACRjG,KAAM,eAGVuO,sBAAsB,EACtBC,mBAAmB,EACnBC,mBAAmB,EACnBC,WAAY,CAAC,EACbC,kBAAkB,EAClBC,iBAAiB,EACjBC,aAAc,CAAC,EACfpC,WAAW,EACXqC,OAAQ,OACRC,cAAe,OACfC,SAAU,OACVC,QAAS,OACTC,OAAQ,OACRC,QAAS,OACTC,OAAQ,QAEV7J,KAAK8J,OAAS,CAAC,OAAQ,cAAe,SAAU,QAAS,OAAQ,QAAS,QAC1E9J,KAAK6E,KAAK/D,EACZ,CAEA+D,KAAK/D,EAAU,CAAC,GACdd,KAAK+J,WAAW,IAAK/J,KAAK4E,kBACrB9D,IAELd,KAAKgK,SAAU,EACfhK,KAAKtD,UAAY,CACfM,KAAM,EACNC,GAAI,GAEN+C,KAAKiK,QAAUnH,SAASuE,cAAc,OACtCrH,KAAKmF,WAAanF,KAAKkK,mBACvBlK,KAAKzF,MAAQyF,KAAKmK,cAClBnK,KAAK9C,MAAQ8C,KAAKoK,cAClBpK,KAAK/F,OAAS+F,KAAKqK,eACnBrK,KAAK+E,QAAU/E,KAAKsK,gBACpBtK,KAAK6F,QAAU7F,KAAKuK,gBACpBvK,KAAKgF,WAAahF,KAAKwK,mBACvBxK,KAAKiF,WAAajF,KAAKyK,mBACvBzK,KAAKH,KAAOG,KAAK0K,aACjB1K,KAAK0G,SAAW1G,KAAK2K,iBACrB3K,KAAK4K,yBAED5K,KAAKc,QAAQoG,WACfA,EAAUC,GAGmB,OAA3BnH,KAAKc,QAAQ+H,WACf7I,KAAK4G,MAAM5G,KAAKc,QAAQ+H,WAG1B7I,KAAK8J,OAAOtP,SAAQgD,IAClBwC,KAAK+D,GAAGvG,EAAMwC,KAAKc,QAAQ5B,EAAU,MAAM1B,OAAY,MAAS,GAAE,IAEpEwC,KAAKkE,KAAK,OAAQ,CAChBrE,KAAMG,KAAKH,KACX9C,MAAOiD,KAAKjD,QAGdiD,KAAKmF,WAAWtF,KAAOG,KAAKH,IAC9B,CAEAkK,WAAWjJ,GACTd,KAAKc,QAAU,IAAKd,KAAKc,WACpBA,GAGDd,KAAKH,MAAQG,KAAKjD,OACpBiD,KAAKH,KAAK8F,YAAY3F,KAAKjD,MAE/B,CAEI8N,wBACF,OAAK7K,KAAKc,QAAQkI,qBAIX,CAAC,IAAIZ,EAAO,IAAIM,EAAQ,IAAIL,GAH1B,EAIX,CAEItL,YACF,OAAOiD,KAAKH,KAAOG,KAAKH,KAAK9C,MAAQ,IACvC,CAEAmN,mBACE,OAAO,IAAIhF,EAAiB,IAAIlF,KAAK6K,qBAAsB7K,KAAKc,QAAQqE,YAAanF,KACvF,CAEAsK,gBACE,OAAOtK,KAAKmF,WAAWJ,OACzB,CAEAwF,gBACE,OAAOvK,KAAKmF,WAAWU,QAAQ,CAC7B5L,OAAQ+F,KAAK/F,QAEjB,CAEAuQ,mBACE,OAAOxK,KAAKmF,WAAWH,WAAW,CAChC/K,OAAQ+F,KAAK/F,OACbiM,mBAAoBlG,KAAKc,QAAQmI,mBAErC,CAEAwB,mBACE,OAAOzK,KAAKmF,WAAWF,WAAW,CAChChL,OAAQ+F,KAAK/F,OACbiM,mBAAoBlG,KAAKc,QAAQoI,mBAErC,CAEAyB,iBACE,OAAO3K,KAAKmF,WAAWuB,SAAS,CAC9BzM,OAAQ+F,KAAK/F,OACb4F,KAAMG,KAAKH,MAEf,CAEAsK,cACE,OAAOnK,KAAKmF,WAAW5K,KACzB,CAEA6P,cACE,OAAOpK,KAAKmF,WAAWjI,KACzB,CAEAmN,eACE,OAAO,IAAI,KAAO,CAChBvB,QAAS9I,KAAKc,QAAQgI,QACtBvO,MAAOyF,KAAKzF,MACZ2C,MAAO8C,KAAK9C,OAEhB,CAEA4N,cACE,OAAO,YAAmB,CACxB7Q,OAAQ+F,KAAK/F,OACbkD,IAAK6C,KAAK+K,eAAe/K,KAAKc,QAAQJ,SACtCqE,QAAS,IAAI/E,KAAK+E,SAAS,QAAW,CACpCiG,MAAOhL,KAAKgF,gBACPhF,KAAKiF,cAAejF,KAAK6F,SAAS,OAAO,CAC9CoF,UAAW,QACT,OAAO,SAAiBjL,KAAKc,QAAQsI,iBAAmB,EAAC,OAAWpJ,KAAKc,QAAQqI,aAAe,MAASnJ,KAAKc,QAAQuI,gBAAkB,EAAC,UAAe,GAAK,IAAI,KAAO,CAC1K5H,IAAK,IAAI,KAAU,YACnBb,MAAO,CACLe,SAAU,IAAM3B,KAAKc,QAAQa,YAE7B,IAAI,KAAO,CACbf,MAAO,CACLsK,WAAY,CACVC,SAAU,GAEZC,gBAAiB,CACfxE,MAAO,CAAC/G,EAAM4C,KACZzC,KAAKgK,SAAU,EACfhK,KAAKkE,KAAK,QAAS,CACjBzB,QACA1F,MAAO8C,EAAK9C,MACZ8C,SAEF,MAAMgC,EAAc7B,KAAKjD,MAAM+E,GAAGuJ,QAAQ,WAAW,GACrDrL,KAAKH,KAAKsC,SAASN,EAAY,EAEjCyJ,KAAM,CAACzL,EAAM4C,KACXzC,KAAKgK,SAAU,EACfhK,KAAKkE,KAAK,OAAQ,CAChBzB,QACA1F,MAAO8C,EAAK9C,MACZ8C,SAEF,MAAMgC,EAAc7B,KAAKjD,MAAM+E,GAAGuJ,QAAQ,WAAW,GACrDrL,KAAKH,KAAKsC,SAASN,EAAY,MAInC,IAAI,KAAO,CACbjB,MAAOZ,KAAKc,QAAQ8H,gBAG1B,CAEAmC,eAAerK,EAAS4I,EAAetJ,KAAKc,QAAQwI,cAClD,GAAgB,OAAZ5I,EACF,OAAOV,KAAK/F,OAAOsR,aAAavL,KAAKc,QAAQiI,eAG/C,GAAuB,kBAAZrI,EACT,IACE,OAAOV,KAAK/F,OAAOsR,aAAa7K,EAIlC,CAHE,MAAO8K,GAEP,OADAC,QAAQC,KAAK,kCAAmC,gBAAiBhL,EAAS,SAAU8K,GAC7ExL,KAAK/F,OAAOsR,aAAavL,KAAKc,QAAQiI,cAC/C,CAGF,GAAuB,kBAAZrI,EAAsB,CAC/B,MAAMiL,EAAa,QAAQjL,UACrBkL,EAAS,IAAIC,OAAOC,UACpB7B,EAAU2B,EAAOG,gBAAgBJ,EAAY,aAAaK,KAAKC,kBACrE,OAAO,gBAAqBjM,KAAK/F,QAAQiS,MAAMjC,EAASX,EAC1D,CAEA,OAAO,CACT,CAEAoB,aACE,OAAO,IAAI,KAAW1K,KAAKiK,QAAS,CAClClN,MAAOiD,KAAK8K,cACZqB,YAAa,IAAIhI,KACfnE,KAAKkE,KAAK,WAAYC,EAAK,EAE7BiI,WAAY,IAAIjI,KACdnE,KAAKkE,KAAK,UAAWC,EAAK,EAE5BkI,oBAAqBrM,KAAKqM,oBAAoBC,KAAKtM,OAEvD,CAEAuM,mBAAmB7M,EAAY,MACxBA,GAILM,KAAKH,KAAK2M,SAAS,CACjBC,UAAWzM,KAAK0M,cAAc,CAC5B/O,OAAQ+B,EACRyF,WAAY,IAAInF,KAAK6K,qBAAsB7K,KAAKc,QAAQqE,eAG9D,CAEAuH,eAAc,OACZ/O,EAAM,WACNwH,IAEA,OAAOA,EAAWV,QAAO7E,GAAa,CAAC,OAAQ,QAAQmG,SAASnG,EAAUnF,QAAOgK,QAAO7E,GAAaA,EAAUC,OAAMuF,QAAO,CAACqH,EAAW7M,KACtI,MAAM+M,EAAW,CAAC9Q,EAAMgE,EAAME,EAAQD,KACpC,MAAMJ,EAAYE,EAAUC,KAC5B,OAAO,IAAIL,EAAcE,EAAW,CAClCC,OAAQK,KACRJ,YACAjC,SACA9B,OACAgE,OACAE,SACAD,eACA,EAGJ,MAAO,IAAK2M,EACV,CAAC7M,EAAUpC,MAAOmP,EACnB,GACA,CAAC,EACN,CAEAN,oBAAoBxK,GAClB,MAAM+K,EAAW5M,KAAKjD,MAAMuH,MAAMzC,GAClC7B,KAAKH,KAAK8F,YAAYiH,GACtB5M,KAAKtD,UAAY,CACfM,KAAMgD,KAAKjD,MAAML,UAAUM,KAC3BC,GAAI+C,KAAKjD,MAAML,UAAUO,IAE3B+C,KAAK4K,yBACL5K,KAAKkE,KAAK,cAAe,CACvB2I,QAAS7M,KAAK6M,QAAQP,KAAKtM,MAC3B8M,QAAS9M,KAAK8M,QAAQR,KAAKtM,MAC3BjD,MAAOiD,KAAKjD,MACZ8E,gBAGGA,EAAYkL,aAAclL,EAAYmL,QAAQ,kBAInDhN,KAAKiN,WAAWpL,EAClB,CAEAoL,WAAWpL,GACT7B,KAAKkE,KAAK,SAAU,CAClB2I,QAAS7M,KAAK6M,QAAQP,KAAKtM,MAC3B8M,QAAS9M,KAAK8M,QAAQR,KAAKtM,MAC3BjD,MAAOiD,KAAKjD,MACZ8E,eAEJ,CAEAqL,iBAAiBC,EAAW,MAC1B,GAAInN,KAAKtD,WAA0B,OAAbyQ,EACpB,OAAOnN,KAAKtD,UAGd,GAAiB,UAAbyQ,IAAqC,IAAbA,EAC1B,MAAO,CACLnQ,KAAM,EACNC,GAAI,GAIR,GAAiB,QAAbkQ,EAAoB,CACtB,MAAM,IACJhQ,GACE6C,KAAKjD,MACT,MAAO,CACLC,KAAMG,EAAIuD,QAAQ0M,KAClBnQ,GAAIE,EAAIuD,QAAQ0M,KAEpB,CAEA,MAAO,CACLpQ,KAAMmQ,EACNlQ,GAAIkQ,EAER,CAEAvG,MAAMuG,EAAW,MACf,GAAInN,KAAKH,KAAKmK,SAAwB,OAAbmD,IAAkC,IAAbA,EAC5C,OAGF,MAAM,KACJnQ,EAAI,GACJC,GACE+C,KAAKkN,iBAAiBC,GAC1BnN,KAAKgB,aAAahE,EAAMC,GACxBoQ,YAAW,IAAMrN,KAAKH,KAAK+G,SAAS,GACtC,CAEA5F,aAAahE,EAAO,EAAGC,EAAK,GAC1B,MAAM,IACJE,EAAG,GACH2E,GACE9B,KAAKjD,MACHuQ,EAAexF,EAAO9K,EAAM,EAAGG,EAAIuD,QAAQ0M,MAC3CG,EAAczF,EAAO7K,EAAI,EAAGE,EAAIuD,QAAQ0M,MACxC1Q,EAAY,YAAqBS,EAAKmQ,EAAcC,GACpD1L,EAAcC,EAAGd,aAAatE,GACpCsD,KAAKH,KAAKsC,SAASN,EACrB,CAEAyJ,OACEtL,KAAKH,KAAKQ,IAAIiL,MAChB,CAEAkC,gBACE,OAAOC,KAAKvB,MAAMuB,KAAKC,UAAU,CAC/BnT,MAAOyF,KAAKmF,WAAW5K,MACvB2C,MAAO8C,KAAKmF,WAAWjI,QAE3B,CAEA2P,UACE,MAAMc,EAAM7K,SAASuE,cAAc,OAC7BuG,EAAW,gBAAyB5N,KAAK/F,QAAQ4T,kBAAkB7N,KAAKjD,MAAMI,IAAIuD,SAExF,OADAiN,EAAIjG,YAAYkG,GACTD,EAAIG,SACb,CAEAhB,UACE,OAAO9M,KAAKjD,MAAMI,IAAI4Q,QACxB,CAEAC,WAAWtN,EAAU,CAAC,EAAGuM,GAAa,EAAO3D,GAC3C,MAAM,IACJnM,EAAG,GACH2E,GACE9B,KAAKjD,MACH+F,EAAW9C,KAAK+K,eAAerK,EAAS4I,GACxC5M,EAAY,YAAqBS,EAAK,EAAGA,EAAIuD,QAAQ0M,MACrDvL,EAAcC,EAAGd,aAAatE,GAAWuR,qBAAqBnL,GAAU,GAAOuI,QAAQ,iBAAkB4B,GAC/GjN,KAAKH,KAAKsC,SAASN,EACrB,CAEAqM,aAAajB,GAAa,GACxBjN,KAAKgO,WAAWhO,KAAKc,QAAQiI,cAAekE,EAC9C,CAEArC,yBACE5K,KAAKmO,YAAc9T,OAAOmH,QAAQxB,KAAK/F,OAAOiD,OAAOkI,QAAO,CAAClI,GAAQM,EAAMH,MAAU,IAAMH,EACzF,CAACM,GAAO,CAACC,EAAQ,CAAC,KAAM,QAAauC,KAAKjD,MAAOM,EAAMI,MACrD,CAAC,GACLuC,KAAKoO,gBAAkB/T,OAAOmH,QAAQxB,KAAK/F,OAAOiD,OAAOkI,QAAO,CAAClI,GAAQM,EAAMH,MAAU,IAAMH,EAC7F,CAACM,IAAO,QAAawC,KAAKjD,MAAOM,MAC/B,CAAC,GACL2C,KAAKqO,YAAchU,OAAOmH,QAAQxB,KAAK/F,OAAOM,OAAO6K,QAAO,CAAC7K,GAAQiD,EAAM3B,MAAU,IAAMtB,EACzF,CAACiD,GAAO,CAACC,EAAQ,CAAC,KAAM,QAAauC,KAAKjD,MAAOlB,EAAM4B,MACrD,CAAC,EACP,CAEAX,aAAarC,EAAO,MAClB,OAAOuF,KAAKoO,gBAAgB3T,EAC9B,CAEA+D,aAAa/D,EAAO,MAClB,MAAO,KAAK,QAAauF,KAAKjD,MAAOiD,KAAK/F,OAAOM,MAAME,IAEzD,CAEI6T,eACF,OAAOjU,OAAOmH,QAAQ,IAAKxB,KAAKmO,eAC3BnO,KAAKqO,cACPjJ,QAAO,CAACnK,GAAQuC,EAAMkE,MAAW,IAAMzG,EACxC,CAACuC,GAAO,CAACC,EAAQ,CAAC,IAAMiE,EAAMjE,MAC5B,CAAC,EACP,CAEA8Q,eAAeC,EAAS,KAAMC,GAC5B,MAAM1J,EAAmC,oBAAlB0J,EAA+BA,EAAcD,EAAQxO,KAAKjD,MAAMgI,SAAW,CAACyJ,KAAWxO,KAAKjD,MAAMgI,SACnH6H,EAAW5M,KAAKjD,MAAM2R,YAAY,CACtC3J,YAEF/E,KAAKH,KAAK8F,YAAYiH,EACxB,CAEA+B,iBAAiBnR,EAAO,MACtB,IAAKA,IAASwC,KAAKH,KAAK+O,QACtB,OAGF,MAAMhC,EAAW5M,KAAKjD,MAAM2R,YAAY,CACtC3J,QAAS/E,KAAKjD,MAAMgI,QAAQN,QAAO+J,IAAWA,EAAO/M,IAAI4B,WAAW,GAAG7F,UAEzEwC,KAAKH,KAAK8F,YAAYiH,EACxB,CAEAhJ,UACO5D,KAAKH,MAIVG,KAAKH,KAAK+D,SACZ,EAIF,IAAIiL,EAAgB,CAClBjO,MAAO,CACLjB,OAAQ,CACNmP,QAAS,KACTrU,KAAMJ,SAGV0U,MAAO,CACLpP,OAAQ,CACNqP,WAAW,EAEXC,QAAQtP,GACFA,GAAUA,EAAOsK,SACnBjK,KAAKkP,WAAU,KACblP,KAAKoB,IAAIsG,YAAY/H,EAAOsK,QAAQzC,YACpC7H,EAAO4M,mBAAmBvM,KAAK,GAGrC,IAKJmP,OAAO9H,GACL,OAAOA,EAAc,MACvB,EAEA+H,gBACEpP,KAAKL,OAAOsK,QAAUjK,KAAKoB,GAC7B,GAIF,MAAMiO,EACJ5P,aAAY,QACVqB,IAEAd,KAAKc,QAAUA,EACfd,KAAKsP,aAAc,EAEnBtP,KAAKuP,iBAAmBvP,KAAKwP,YAAYlD,KAAKtM,MAC9CA,KAAKc,QAAQmJ,QAAQlH,iBAAiB,YAAa/C,KAAKuP,iBAAkB,CACxEE,SAAS,IAGXzP,KAAK0P,YAAc,KACb1P,KAAKsP,YACPtP,KAAKsP,aAAc,EAIrBtP,KAAKc,QAAQnB,OAAOuE,KAAK,uBAAuB,EAAM,EAGxDlE,KAAKc,QAAQnB,OAAOoE,GAAG,OAAQ/D,KAAK0P,YACtC,CAEAF,cACExP,KAAKsP,aAAc,CACrB,CAEA1L,UACE5D,KAAKc,QAAQmJ,QAAQ0F,oBAAoB,YAAa3P,KAAKuP,kBAC3DvP,KAAKc,QAAQnB,OAAO4E,IAAI,OAAQvE,KAAK0P,YACvC,EAIF,SAASE,EAAS9O,GAChB,OAAO,IAAI,KAAO,CAChBW,IAAK,IAAI,KAAU,YAEnB5B,KAAKgQ,GACH,OAAO,IAAIR,EAAK,CACdQ,aACA/O,WAEJ,GAGJ,CAEA,IAAIgP,EAAgB,CAClBlP,MAAO,CACLjB,OAAQ,CACNmP,QAAS,KACTrU,KAAMJ,SAIV0V,OACE,MAAO,CACL/F,SAAS,EAEb,EAEA+E,MAAO,CACLpP,OAAQ,CACNqP,WAAW,EAEXC,QAAQtP,GACFA,GACFK,KAAKkP,WAAU,KACbvP,EAAO4O,eAAeqB,EAAQ,CAC5BjQ,SACAsK,QAASjK,KAAKoB,OAEhBpB,KAAKgK,QAAUrK,EAAOqK,QACtBrK,EAAOoE,GAAG,SAAS,KACjB/D,KAAKgK,SAAU,CAAI,IAErBrK,EAAOoE,GAAG,uBAAuBiG,IAC/BhK,KAAKgK,QAAUA,CAAO,GACtB,GAGR,IAKJmF,SACE,OAAKnP,KAAKL,OAIHK,KAAKgQ,aAAalB,QAAQ,CAC/B9E,QAAShK,KAAKgK,QACdpD,MAAO5G,KAAKL,OAAOiH,MACnBF,SAAU1G,KAAKL,OAAO+G,SACtB4H,SAAUtO,KAAKL,OAAO2O,SACtBxR,aAAckD,KAAKL,OAAO7C,aAAawP,KAAKtM,KAAKL,QACjDnB,aAAcwB,KAAKL,OAAOnB,aAAa8N,KAAKtM,KAAKL,UAT1C,IAWX,GAIF,SAASsQ,EAAUpU,EAAMmB,EAAMC,GAC7B,MAAM0G,EAAQb,SAASoN,cAGvB,OAFAvM,EAAMwM,OAAOtU,EAAY,MAANoB,EAAapB,EAAKuU,UAAUpR,OAAS/B,GACxD0G,EAAM0M,SAASxU,EAAMoM,KAAKD,IAAIhL,EAAM,IAC7B2G,CACT,CAEA,SAAS2M,EAAWC,EAAQC,GAC1B,MAAMC,EAAQF,EAAOG,iBACrB,OAAQD,EAAMzR,OAA0CyR,EAAMD,EAAO,EAAI,EAAIC,EAAMzR,OAAS,GAArEuR,EAAOI,uBAChC,CAEA,SAASC,EAAY/Q,EAAMvD,EAAKuU,GAAM,GACpC,MAAM,KACJhV,EAAI,OACJoC,GACE4B,EAAK+O,QAAQkC,WAAWxU,GAC5B,IAAIyU,EACAC,EAEJ,GAAsB,IAAlBnV,EAAKnB,SACHmW,GAAO5S,EAASpC,EAAKuU,UAAUpR,QACjCgS,EAAOV,EAAWL,EAAUpU,EAAMoC,EAAS,EAAGA,IAAU,GACxD8S,EAAO,SACE9S,EAASpC,EAAKuU,UAAUpR,SACjCgS,EAAOV,EAAWL,EAAUpU,EAAMoC,EAAQA,EAAS,IAAK,GACxD8S,EAAO,aAEJ,GAAIlV,EAAK2L,WAAY,CAC1B,GAAIvJ,EAASpC,EAAKoV,WAAWjS,OAAQ,CACnC,MAAMV,EAAQzC,EAAKoV,WAAWhT,GAC9B+S,EAAOV,EAA8B,IAAnBhS,EAAM5D,SAAiBuV,EAAU3R,GAASA,GAAQ,GACpEyS,EAAO,MACT,CAEA,KAAMC,GAAQA,EAAKE,MAAQF,EAAKG,SAAWlT,EAAQ,CACjD,MAAMK,EAAQzC,EAAKoV,WAAWhT,EAAS,GACvC+S,EAAOV,EAA8B,IAAnBhS,EAAM5D,SAAiBuV,EAAU3R,GAASA,EAAO,GACnEyS,EAAO,OACT,CACF,MACEC,EAAOnV,EAAK8U,wBACZI,EAAO,OAGT,MAAMK,EAAIJ,EAAKD,GACf,MAAO,CACLG,IAAKF,EAAKE,IACVC,OAAQH,EAAKG,OACbE,KAAMD,EACNE,MAAOF,EAEX,CAEA,MAAMG,EACJ9R,aAAY,QACVqB,EAAO,WACP+O,IAEA7P,KAAKc,QAAU,CACXmJ,QAAS,KACTuH,cAAc,EACd/H,SAAU,KAAM,KAEf3I,GAELd,KAAK6P,WAAaA,EAClB7P,KAAKsO,UAAW,EAChBtO,KAAKqR,KAAO,EACZrR,KAAKmR,OAAS,EACdnR,KAAKkR,IAAM,EACXlR,KAAKsP,aAAc,EAEnBtP,KAAKuP,iBAAmBvP,KAAKwP,YAAYlD,KAAKtM,MAC9CA,KAAKc,QAAQmJ,QAAQlH,iBAAiB,YAAa/C,KAAKuP,iBAAkB,CACxEE,SAAS,IAGXzP,KAAKyR,aAAe,EAClB5R,WAEAG,KAAKiB,OAAOpB,EAAK,EAGnBG,KAAKc,QAAQnB,OAAOoE,GAAG,QAAS/D,KAAKyR,cAErCzR,KAAK0P,YAAc,EACjBjN,YAEIzC,KAAKsP,YACPtP,KAAKsP,aAAc,EAIrBtP,KAAK0R,KAAKjP,EAAM,EAGlBzC,KAAKc,QAAQnB,OAAOoE,GAAG,OAAQ/D,KAAK0P,YACtC,CAEAF,cACExP,KAAKsP,aAAc,CACrB,CAEArO,OAAOpB,EAAM8R,GACX,MAAM,MACJ5U,GACE8C,EAEJ,GAAIA,EAAK+R,UACP,OAIF,GAAID,GAAaA,EAAUxU,IAAI0U,GAAG9U,EAAMI,MAAQwU,EAAUjV,UAAUmV,GAAG9U,EAAML,WAC3E,OAIF,GAAIK,EAAML,UAAUkC,MAElB,YADAoB,KAAK0R,OAKP,MAAM,KACJ1U,EAAI,GACJC,GACEF,EAAML,UAIJF,EAAQoU,EAAY/Q,EAAM7C,GAC1B6T,EAAMD,EAAY/Q,EAAM5C,GAAI,GAE5BU,EAASqC,KAAKc,QAAQmJ,QAAQ6H,aAEpC,IAAKnU,EAEH,YADAqC,KAAK0R,OAIP,MAAMK,EAAMpU,EAAOgT,wBACbqB,EAAKhS,KAAKc,QAAQmJ,QAAQ0G,wBAG1BU,GAAQ7U,EAAM6U,KAAOR,EAAIQ,MAAQ,EAAIU,EAAIV,KAE/CrR,KAAKqR,KAAOpJ,KAAKgK,MAAMjS,KAAKc,QAAQ0Q,aAAevJ,KAAKF,IAAIgK,EAAIG,MAAQF,EAAGE,MAAQ,EAAGjK,KAAKD,IAAIqJ,EAAMW,EAAGE,MAAQ,IAAMb,GACtHrR,KAAKmR,OAASlJ,KAAKgK,MAAMF,EAAIZ,OAAS3U,EAAM0U,KAC5ClR,KAAKkR,IAAMjJ,KAAKgK,MAAMpB,EAAIM,OAASY,EAAIb,KACvClR,KAAKsO,UAAW,EAChBtO,KAAKmS,YACP,CAEAA,aACEnS,KAAKc,QAAQ2I,SAAS,CACpB6E,SAAUtO,KAAKsO,SACf+C,KAAMrR,KAAKqR,KACXF,OAAQnR,KAAKmR,OACbD,IAAKlR,KAAKkR,KAEd,CAEAQ,KAAKjP,GACCA,GAASA,EAAM2P,eAAiBpS,KAAKc,QAAQmJ,QAAQoI,YAAcrS,KAAKc,QAAQmJ,QAAQoI,WAAW/P,SAASG,EAAM2P,iBAItHpS,KAAKsO,UAAW,EAChBtO,KAAKmS,aACP,CAEAvO,UACE5D,KAAKc,QAAQmJ,QAAQ0F,oBAAoB,YAAa3P,KAAKuP,kBAC3DvP,KAAKc,QAAQnB,OAAO4E,IAAI,QAASvE,KAAKyR,cACtCzR,KAAKc,QAAQnB,OAAO4E,IAAI,OAAQvE,KAAK0P,YACvC,EAIF,SAAS4C,EAAYxR,GACnB,OAAO,IAAI,KAAO,CAChBW,IAAK,IAAI,KAAU,eAEnB5B,KAAKgQ,GACH,OAAO,IAAI0B,EAAO,CAChB1B,aACA/O,WAEJ,GAGJ,CAEA,IAAIyR,EAAmB,CACrB3R,MAAO,CACLjB,OAAQ,CACNmP,QAAS,KACTrU,KAAMJ,QAERmX,aAAc,CACZ1C,SAAS,EACTrU,KAAM+X,UAIVzC,OACE,MAAO,CACL0C,KAAM,CACJnE,UAAU,EACV+C,KAAM,EACNF,OAAQ,GAGd,EAEApC,MAAO,CACLpP,OAAQ,CACNqP,WAAW,EAEXC,QAAQtP,GACFA,GACFK,KAAKkP,WAAU,KACbvP,EAAO4O,eAAe+D,EAAW,CAC/B3S,SACAsK,QAASjK,KAAKoB,IACdoQ,aAAcxR,KAAKwR,aACnB/H,SAAUgJ,IAEJA,EAAKnE,WAAmC,IAAvBtO,KAAKyS,KAAKnE,SAC7BtO,KAAK0S,MAAM,OAAQD,GACTA,EAAKnE,WAAmC,IAAvBtO,KAAKyS,KAAKnE,UACrCtO,KAAK0S,MAAM,OAAQD,GAGrBzS,KAAKyS,KAAOA,CAAI,IAEjB,GAGT,IAKJtD,SACE,OAAKnP,KAAKL,OAIHK,KAAKgQ,aAAalB,QAAQ,CAC/B9E,QAAShK,KAAKL,OAAOE,KAAKmK,QAC1BpD,MAAO5G,KAAKL,OAAOiH,MACnBF,SAAU1G,KAAKL,OAAO+G,SACtB4H,SAAUtO,KAAKL,OAAO2O,SACtBxR,aAAckD,KAAKL,OAAO7C,aAAawP,KAAKtM,KAAKL,QACjDnB,aAAcwB,KAAKL,OAAOnB,aAAa8N,KAAKtM,KAAKL,QACjD8S,KAAMzS,KAAKyS,OAVJ,IAYX,EAEArD,gBACEpP,KAAKL,OAAOgP,iBAAiB,cAC/B,E","sources":["webpack://ida-jandaya/./node_modules/tiptap-utils/dist/utils.esm.js","webpack://ida-jandaya/./node_modules/tiptap/dist/tiptap.esm.js"],"sourcesContent":["\n /*!\n * tiptap-utils v1.13.0\n * (c) 2021 überdosis GbR (limited liability)\n * @license MIT\n */\n \nimport { NodeSelection } from 'prosemirror-state';\n\nfunction createCell(cellType, cellContent) {\n if (cellContent) {\n return cellType.createChecked(null, cellContent);\n }\n\n return cellType.createAndFill();\n}\n\nfunction getTableNodeTypes(schema) {\n if (schema.cached.tableNodeTypes) {\n return schema.cached.tableNodeTypes;\n }\n\n const roles = {};\n Object.keys(schema.nodes).forEach(type => {\n const nodeType = schema.nodes[type];\n\n if (nodeType.spec.tableRole) {\n roles[nodeType.spec.tableRole] = nodeType;\n }\n }); // eslint-disable-next-line\n\n schema.cached.tableNodeTypes = roles;\n return roles;\n}\n\nfunction createTable(schema, rowsCount, colsCount, withHeaderRow, cellContent) {\n const types = getTableNodeTypes(schema);\n const headerCells = [];\n const cells = [];\n\n for (let index = 0; index < colsCount; index += 1) {\n const cell = createCell(types.cell, cellContent);\n\n if (cell) {\n cells.push(cell);\n }\n\n if (withHeaderRow) {\n const headerCell = createCell(types.header_cell, cellContent);\n\n if (headerCell) {\n headerCells.push(headerCell);\n }\n }\n }\n\n const rows = [];\n\n for (let index = 0; index < rowsCount; index += 1) {\n rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));\n }\n\n return types.table.createChecked(null, rows);\n}\n\nfunction equalNodeType(nodeType, node) {\n return Array.isArray(nodeType) && nodeType.indexOf(node.type) > -1 || node.type === nodeType;\n}\n\nfunction flatten(node) {\n // eslint-disable-next-line\n const descend = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!node) {\n throw new Error('Invalid \"node\" parameter');\n }\n\n const result = []; // eslint-disable-next-line\n\n node.descendants((child, pos) => {\n result.push({\n node: child,\n pos\n });\n\n if (!descend) {\n return false;\n }\n });\n return result;\n}\n\nfunction findChildren(node, predicate, descend) {\n if (!node) {\n throw new Error('Invalid \"node\" parameter');\n } else if (!predicate) {\n throw new Error('Invalid \"predicate\" parameter');\n }\n\n return flatten(node, descend).filter(child => predicate(child.node));\n}\n\nfunction findBlockNodes(node, descend) {\n return findChildren(node, child => child.isBlock, descend);\n}\n\n// eslint-disable-next-line\nfunction findParentNodeClosestToPos($pos, predicate) {\n for (let i = $pos.depth; i > 0; i -= 1) {\n const node = $pos.node(i);\n\n if (predicate(node)) {\n return {\n pos: i > 0 ? $pos.before(i) : 0,\n start: $pos.start(i),\n depth: i,\n node\n };\n }\n }\n}\n\nfunction findParentNode(predicate) {\n return selection => findParentNodeClosestToPos(selection.$from, predicate);\n}\n\nfunction isNodeSelection(selection) {\n return selection instanceof NodeSelection;\n}\n\nfunction findSelectedNodeOfType(nodeType) {\n // eslint-disable-next-line\n return function (selection) {\n if (isNodeSelection(selection)) {\n const {\n node\n } = selection;\n const {\n $from\n } = selection;\n\n if (equalNodeType(nodeType, node)) {\n return {\n node,\n pos: $from.pos,\n depth: $from.depth\n };\n }\n }\n };\n}\n\nfunction getMarkAttrs(state, type) {\n const {\n from,\n to\n } = state.selection;\n let marks = [];\n state.doc.nodesBetween(from, to, node => {\n marks = [...marks, ...node.marks];\n });\n const mark = marks.find(markItem => markItem.type.name === type.name);\n\n if (mark) {\n return mark.attrs;\n }\n\n return {};\n}\n\nfunction getMarkRange($pos = null, type = null) {\n if (!$pos || !type) {\n return false;\n }\n\n const start = $pos.parent.childAfter($pos.parentOffset);\n\n if (!start.node) {\n return false;\n }\n\n const link = start.node.marks.find(mark => mark.type === type);\n\n if (!link) {\n return false;\n }\n\n let startIndex = $pos.index();\n let startPos = $pos.start() + start.offset;\n let endIndex = startIndex + 1;\n let endPos = startPos + start.node.nodeSize;\n\n while (startIndex > 0 && link.isInSet($pos.parent.child(startIndex - 1).marks)) {\n startIndex -= 1;\n startPos -= $pos.parent.child(startIndex).nodeSize;\n }\n\n while (endIndex < $pos.parent.childCount && link.isInSet($pos.parent.child(endIndex).marks)) {\n endPos += $pos.parent.child(endIndex).nodeSize;\n endIndex += 1;\n }\n\n return {\n from: startPos,\n to: endPos\n };\n}\n\nfunction getNodeAttrs(state, type) {\n const {\n from,\n to\n } = state.selection;\n let nodes = [];\n state.doc.nodesBetween(from, to, node => {\n nodes = [...nodes, node];\n });\n const node = nodes.reverse().find(nodeItem => nodeItem.type.name === type.name);\n\n if (node) {\n return node.attrs;\n }\n\n return {};\n}\n\nfunction markIsActive(state, type) {\n const {\n from,\n $from,\n to,\n empty\n } = state.selection;\n\n if (empty) {\n return !!type.isInSet(state.storedMarks || $from.marks());\n }\n\n return !!state.doc.rangeHasMark(from, to, type);\n}\n\nfunction nodeEqualsType({\n types,\n node\n}) {\n return Array.isArray(types) && types.includes(node.type) || node.type === types;\n}\n\nfunction nodeIsActive(state, type, attrs = {}) {\n const predicate = node => node.type === type;\n\n const node = findSelectedNodeOfType(type)(state.selection) || findParentNode(predicate)(state.selection);\n\n if (!Object.keys(attrs).length || !node) {\n return !!node;\n }\n\n return node.node.hasMarkup(type, { ...node.node.attrs,\n ...attrs\n });\n}\n\nexport { createCell, createTable, equalNodeType, findBlockNodes, findChildren, findParentNode, findParentNodeClosestToPos, findSelectedNodeOfType, flatten, getMarkAttrs, getMarkRange, getNodeAttrs, getTableNodeTypes, isNodeSelection, markIsActive, nodeEqualsType, nodeIsActive };\n","\n /*!\n * tiptap v1.32.1\n * (c) 2021 überdosis GbR (limited liability)\n * @license MIT\n */\n \nimport { EditorState, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nexport { NodeSelection, Plugin, PluginKey, TextSelection } from 'prosemirror-state';\nimport { EditorView } from 'prosemirror-view';\nimport { Schema, DOMParser, DOMSerializer } from 'prosemirror-model';\nimport { dropCursor } from 'prosemirror-dropcursor';\nimport { gapCursor } from 'prosemirror-gapcursor';\nimport { keymap } from 'prosemirror-keymap';\nimport { baseKeymap } from 'prosemirror-commands';\nimport { inputRules, undoInputRule } from 'prosemirror-inputrules';\nimport { getMarkRange, markIsActive, getMarkAttrs, nodeIsActive, getNodeAttrs } from 'tiptap-utils';\nimport Vue from 'vue';\nimport { setBlockType } from 'tiptap-commands';\n\nfunction camelCase (str) {\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) => index === 0 ? word.toLowerCase() : word.toUpperCase()).replace(/\\s+/g, '');\n}\n\nclass ComponentView {\n constructor(component, {\n editor,\n extension,\n parent,\n node,\n view,\n decorations,\n getPos\n }) {\n this.component = component;\n this.editor = editor;\n this.extension = extension;\n this.parent = parent;\n this.node = node;\n this.view = view;\n this.decorations = decorations;\n this.isNode = !!this.node.marks;\n this.isMark = !this.isNode;\n this.getPos = this.isMark ? this.getMarkPos : getPos;\n this.captureEvents = true;\n this.dom = this.createDOM();\n this.contentDOM = this.vm.$refs.content;\n }\n\n createDOM() {\n const Component = Vue.extend(this.component);\n const props = {\n editor: this.editor,\n node: this.node,\n view: this.view,\n getPos: () => this.getPos(),\n decorations: this.decorations,\n selected: false,\n options: this.extension.options,\n updateAttrs: attrs => this.updateAttrs(attrs)\n };\n\n if (typeof this.extension.setSelection === 'function') {\n this.setSelection = this.extension.setSelection;\n }\n\n if (typeof this.extension.update === 'function') {\n this.update = this.extension.update;\n }\n\n this.vm = new Component({\n parent: this.parent,\n propsData: props\n }).$mount();\n return this.vm.$el;\n }\n\n update(node, decorations) {\n if (node.type !== this.node.type) {\n return false;\n }\n\n if (node === this.node && this.decorations === decorations) {\n return true;\n }\n\n this.node = node;\n this.decorations = decorations;\n this.updateComponentProps({\n node,\n decorations\n });\n return true;\n }\n\n updateComponentProps(props) {\n if (!this.vm._props) {\n return;\n } // Update props in component\n // TODO: Avoid mutating a prop directly.\n // Maybe there is a better way to do this?\n\n\n const originalSilent = Vue.config.silent;\n Vue.config.silent = true;\n Object.entries(props).forEach(([key, value]) => {\n this.vm._props[key] = value;\n }); // this.vm._props.node = node\n // this.vm._props.decorations = decorations\n\n Vue.config.silent = originalSilent;\n }\n\n updateAttrs(attrs) {\n if (!this.view.editable) {\n return;\n }\n\n const {\n state\n } = this.view;\n const {\n type\n } = this.node;\n const pos = this.getPos();\n const newAttrs = { ...this.node.attrs,\n ...attrs\n };\n const transaction = this.isMark ? state.tr.removeMark(pos.from, pos.to, type).addMark(pos.from, pos.to, type.create(newAttrs)) : state.tr.setNodeMarkup(pos, null, newAttrs);\n this.view.dispatch(transaction);\n } // prevent a full re-render of the vue component on update\n // we'll handle prop updates in `update()`\n\n\n ignoreMutation(mutation) {\n // allow leaf nodes to be selected\n if (mutation.type === 'selection') {\n return false;\n }\n\n if (!this.contentDOM) {\n return true;\n }\n\n return !this.contentDOM.contains(mutation.target);\n } // disable (almost) all prosemirror event listener for node views\n\n\n stopEvent(event) {\n if (typeof this.extension.stopEvent === 'function') {\n return this.extension.stopEvent(event);\n }\n\n const draggable = !!this.extension.schema.draggable; // support a custom drag handle\n\n if (draggable && event.type === 'mousedown') {\n const dragHandle = event.target.closest && event.target.closest('[data-drag-handle]');\n const isValidDragHandle = dragHandle && (this.dom === dragHandle || this.dom.contains(dragHandle));\n\n if (isValidDragHandle) {\n this.captureEvents = false;\n document.addEventListener('dragend', () => {\n this.captureEvents = true;\n }, {\n once: true\n });\n }\n }\n\n const isCopy = event.type === 'copy';\n const isPaste = event.type === 'paste';\n const isCut = event.type === 'cut';\n const isDrag = event.type.startsWith('drag') || event.type === 'drop';\n\n if (draggable && isDrag || isCopy || isPaste || isCut) {\n return false;\n }\n\n return this.captureEvents;\n }\n\n selectNode() {\n this.updateComponentProps({\n selected: true\n });\n }\n\n deselectNode() {\n this.updateComponentProps({\n selected: false\n });\n }\n\n getMarkPos() {\n const pos = this.view.posAtDOM(this.dom);\n const resolvedPos = this.view.state.doc.resolve(pos);\n const range = getMarkRange(resolvedPos, this.node.type);\n return range;\n }\n\n destroy() {\n this.vm.$destroy();\n }\n\n}\n\nclass Emitter {\n // Add an event listener for given event\n on(event, fn) {\n this._callbacks = this._callbacks || {}; // Create namespace for this event\n\n if (!this._callbacks[event]) {\n this._callbacks[event] = [];\n }\n\n this._callbacks[event].push(fn);\n\n return this;\n }\n\n emit(event, ...args) {\n this._callbacks = this._callbacks || {};\n const callbacks = this._callbacks[event];\n\n if (callbacks) {\n callbacks.forEach(callback => callback.apply(this, args));\n }\n\n return this;\n } // Remove event listener for given event.\n // If fn is not provided, all event listeners for that event will be removed.\n // If neither is provided, all event listeners will be removed.\n\n\n off(event, fn) {\n if (!arguments.length) {\n this._callbacks = {};\n } else {\n // event listeners for the given event\n const callbacks = this._callbacks ? this._callbacks[event] : null;\n\n if (callbacks) {\n if (fn) {\n this._callbacks[event] = callbacks.filter(cb => cb !== fn); // remove specific handler\n } else {\n delete this._callbacks[event]; // remove all handlers\n }\n }\n }\n\n return this;\n }\n\n}\n\nclass Extension {\n constructor(options = {}) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n }\n\n init() {\n return null;\n }\n\n bindEditor(editor = null) {\n this.editor = editor;\n }\n\n get name() {\n return null;\n }\n\n get type() {\n return 'extension';\n }\n\n get defaultOptions() {\n return {};\n }\n\n get plugins() {\n return [];\n }\n\n inputRules() {\n return [];\n }\n\n pasteRules() {\n return [];\n }\n\n keys() {\n return {};\n }\n\n}\n\nclass ExtensionManager {\n constructor(extensions = [], editor) {\n extensions.forEach(extension => {\n extension.bindEditor(editor);\n extension.init();\n });\n this.extensions = extensions;\n }\n\n get nodes() {\n return this.extensions.filter(extension => extension.type === 'node').reduce((nodes, {\n name,\n schema\n }) => ({ ...nodes,\n [name]: schema\n }), {});\n }\n\n get options() {\n const {\n view\n } = this;\n return this.extensions.reduce((nodes, extension) => ({ ...nodes,\n [extension.name]: new Proxy(extension.options, {\n set(obj, prop, value) {\n const changed = obj[prop] !== value;\n Object.assign(obj, {\n [prop]: value\n });\n\n if (changed) {\n view.updateState(view.state);\n }\n\n return true;\n }\n\n })\n }), {});\n }\n\n get marks() {\n return this.extensions.filter(extension => extension.type === 'mark').reduce((marks, {\n name,\n schema\n }) => ({ ...marks,\n [name]: schema\n }), {});\n }\n\n get plugins() {\n return this.extensions.filter(extension => extension.plugins).reduce((allPlugins, {\n plugins\n }) => [...allPlugins, ...plugins], []);\n }\n\n keymaps({\n schema\n }) {\n const extensionKeymaps = this.extensions.filter(extension => ['extension'].includes(extension.type)).filter(extension => extension.keys).map(extension => extension.keys({\n schema\n }));\n const nodeMarkKeymaps = this.extensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.keys).map(extension => extension.keys({\n type: schema[`${extension.type}s`][extension.name],\n schema\n }));\n return [...extensionKeymaps, ...nodeMarkKeymaps].map(keys => keymap(keys));\n }\n\n inputRules({\n schema,\n excludedExtensions\n }) {\n if (!(excludedExtensions instanceof Array) && excludedExtensions) return [];\n const allowedExtensions = excludedExtensions instanceof Array ? this.extensions.filter(extension => !excludedExtensions.includes(extension.name)) : this.extensions;\n const extensionInputRules = allowedExtensions.filter(extension => ['extension'].includes(extension.type)).filter(extension => extension.inputRules).map(extension => extension.inputRules({\n schema\n }));\n const nodeMarkInputRules = allowedExtensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.inputRules).map(extension => extension.inputRules({\n type: schema[`${extension.type}s`][extension.name],\n schema\n }));\n return [...extensionInputRules, ...nodeMarkInputRules].reduce((allInputRules, inputRules) => [...allInputRules, ...inputRules], []);\n }\n\n pasteRules({\n schema,\n excludedExtensions\n }) {\n if (!(excludedExtensions instanceof Array) && excludedExtensions) return [];\n const allowedExtensions = excludedExtensions instanceof Array ? this.extensions.filter(extension => !excludedExtensions.includes(extension.name)) : this.extensions;\n const extensionPasteRules = allowedExtensions.filter(extension => ['extension'].includes(extension.type)).filter(extension => extension.pasteRules).map(extension => extension.pasteRules({\n schema\n }));\n const nodeMarkPasteRules = allowedExtensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.pasteRules).map(extension => extension.pasteRules({\n type: schema[`${extension.type}s`][extension.name],\n schema\n }));\n return [...extensionPasteRules, ...nodeMarkPasteRules].reduce((allPasteRules, pasteRules) => [...allPasteRules, ...pasteRules], []);\n }\n\n commands({\n schema,\n view\n }) {\n return this.extensions.filter(extension => extension.commands).reduce((allCommands, extension) => {\n const {\n name,\n type\n } = extension;\n const commands = {};\n const value = extension.commands({\n schema,\n ...(['node', 'mark'].includes(type) ? {\n type: schema[`${type}s`][name]\n } : {})\n });\n\n const apply = (cb, attrs) => {\n if (!view.editable) {\n return false;\n }\n\n view.focus();\n return cb(attrs)(view.state, view.dispatch, view);\n };\n\n const handle = (_name, _value) => {\n if (Array.isArray(_value)) {\n commands[_name] = attrs => _value.forEach(callback => apply(callback, attrs));\n } else if (typeof _value === 'function') {\n commands[_name] = attrs => apply(_value, attrs);\n }\n };\n\n if (typeof value === 'object') {\n Object.entries(value).forEach(([commandName, commandValue]) => {\n handle(commandName, commandValue);\n });\n } else {\n handle(name, value);\n }\n\n return { ...allCommands,\n ...commands\n };\n }, {});\n }\n\n}\n\nfunction injectCSS (css) {\n if (process.env.NODE_ENV !== 'test') {\n const style = document.createElement('style');\n style.type = 'text/css';\n style.textContent = css;\n const {\n head\n } = document;\n const {\n firstChild\n } = head;\n\n if (firstChild) {\n head.insertBefore(style, firstChild);\n } else {\n head.appendChild(style);\n }\n }\n}\n\nclass Mark extends Extension {\n constructor(options = {}) {\n super(options);\n }\n\n get type() {\n return 'mark';\n }\n\n get view() {\n return null;\n }\n\n get schema() {\n return null;\n }\n\n command() {\n return () => {};\n }\n\n}\n\nfunction minMax(value = 0, min = 0, max = 0) {\n return Math.min(Math.max(parseInt(value, 10), min), max);\n}\n\nclass Node extends Extension {\n constructor(options = {}) {\n super(options);\n }\n\n get type() {\n return 'node';\n }\n\n get view() {\n return null;\n }\n\n get schema() {\n return null;\n }\n\n command() {\n return () => {};\n }\n\n}\n\nclass Doc extends Node {\n get name() {\n return 'doc';\n }\n\n get schema() {\n return {\n content: 'block+'\n };\n }\n\n}\n\nclass Paragraph extends Node {\n get name() {\n return 'paragraph';\n }\n\n get schema() {\n return {\n content: 'inline*',\n group: 'block',\n draggable: false,\n parseDOM: [{\n tag: 'p'\n }],\n toDOM: () => ['p', 0]\n };\n }\n\n commands({\n type\n }) {\n return () => setBlockType(type);\n }\n\n}\n\nclass Text extends Node {\n get name() {\n return 'text';\n }\n\n get schema() {\n return {\n group: 'inline'\n };\n }\n\n}\n\nvar css = \".ProseMirror {\\n position: relative;\\n}\\n\\n.ProseMirror {\\n word-wrap: break-word;\\n white-space: pre-wrap;\\n -webkit-font-variant-ligatures: none;\\n font-variant-ligatures: none;\\n}\\n\\n.ProseMirror pre {\\n white-space: pre-wrap;\\n}\\n\\n.ProseMirror-gapcursor {\\n display: none;\\n pointer-events: none;\\n position: absolute;\\n}\\n\\n.ProseMirror-gapcursor:after {\\n content: \\\"\\\";\\n display: block;\\n position: absolute;\\n top: -2px;\\n width: 20px;\\n border-top: 1px solid black;\\n animation: ProseMirror-cursor-blink 1.1s steps(2, start) infinite;\\n}\\n\\n@keyframes ProseMirror-cursor-blink {\\n to {\\n visibility: hidden;\\n }\\n}\\n\\n.ProseMirror-hideselection *::selection {\\n background: transparent;\\n}\\n\\n.ProseMirror-hideselection *::-moz-selection {\\n background: transparent;\\n}\\n\\n.ProseMirror-hideselection * {\\n caret-color: transparent;\\n}\\n\\n.ProseMirror-focused .ProseMirror-gapcursor {\\n display: block;\\n}\\n\";\n\nclass Editor extends Emitter {\n constructor(options = {}) {\n super();\n this.defaultOptions = {\n editorProps: {},\n editable: true,\n autoFocus: null,\n extensions: [],\n content: '',\n topNode: 'doc',\n emptyDocument: {\n type: 'doc',\n content: [{\n type: 'paragraph'\n }]\n },\n useBuiltInExtensions: true,\n disableInputRules: false,\n disablePasteRules: false,\n dropCursor: {},\n enableDropCursor: true,\n enableGapCursor: true,\n parseOptions: {},\n injectCSS: true,\n onInit: () => {},\n onTransaction: () => {},\n onUpdate: () => {},\n onFocus: () => {},\n onBlur: () => {},\n onPaste: () => {},\n onDrop: () => {}\n };\n this.events = ['init', 'transaction', 'update', 'focus', 'blur', 'paste', 'drop'];\n this.init(options);\n }\n\n init(options = {}) {\n this.setOptions({ ...this.defaultOptions,\n ...options\n });\n this.focused = false;\n this.selection = {\n from: 0,\n to: 0\n };\n this.element = document.createElement('div');\n this.extensions = this.createExtensions();\n this.nodes = this.createNodes();\n this.marks = this.createMarks();\n this.schema = this.createSchema();\n this.plugins = this.createPlugins();\n this.keymaps = this.createKeymaps();\n this.inputRules = this.createInputRules();\n this.pasteRules = this.createPasteRules();\n this.view = this.createView();\n this.commands = this.createCommands();\n this.setActiveNodesAndMarks();\n\n if (this.options.injectCSS) {\n injectCSS(css);\n }\n\n if (this.options.autoFocus !== null) {\n this.focus(this.options.autoFocus);\n }\n\n this.events.forEach(name => {\n this.on(name, this.options[camelCase(`on ${name}`)] || (() => {}));\n });\n this.emit('init', {\n view: this.view,\n state: this.state\n }); // give extension manager access to our view\n\n this.extensions.view = this.view;\n }\n\n setOptions(options) {\n this.options = { ...this.options,\n ...options\n };\n\n if (this.view && this.state) {\n this.view.updateState(this.state);\n }\n }\n\n get builtInExtensions() {\n if (!this.options.useBuiltInExtensions) {\n return [];\n }\n\n return [new Doc(), new Text(), new Paragraph()];\n }\n\n get state() {\n return this.view ? this.view.state : null;\n }\n\n createExtensions() {\n return new ExtensionManager([...this.builtInExtensions, ...this.options.extensions], this);\n }\n\n createPlugins() {\n return this.extensions.plugins;\n }\n\n createKeymaps() {\n return this.extensions.keymaps({\n schema: this.schema\n });\n }\n\n createInputRules() {\n return this.extensions.inputRules({\n schema: this.schema,\n excludedExtensions: this.options.disableInputRules\n });\n }\n\n createPasteRules() {\n return this.extensions.pasteRules({\n schema: this.schema,\n excludedExtensions: this.options.disablePasteRules\n });\n }\n\n createCommands() {\n return this.extensions.commands({\n schema: this.schema,\n view: this.view\n });\n }\n\n createNodes() {\n return this.extensions.nodes;\n }\n\n createMarks() {\n return this.extensions.marks;\n }\n\n createSchema() {\n return new Schema({\n topNode: this.options.topNode,\n nodes: this.nodes,\n marks: this.marks\n });\n }\n\n createState() {\n return EditorState.create({\n schema: this.schema,\n doc: this.createDocument(this.options.content),\n plugins: [...this.plugins, inputRules({\n rules: this.inputRules\n }), ...this.pasteRules, ...this.keymaps, keymap({\n Backspace: undoInputRule\n }), keymap(baseKeymap), ...(this.options.enableDropCursor ? [dropCursor(this.options.dropCursor)] : []), ...(this.options.enableGapCursor ? [gapCursor()] : []), new Plugin({\n key: new PluginKey('editable'),\n props: {\n editable: () => this.options.editable\n }\n }), new Plugin({\n props: {\n attributes: {\n tabindex: 0\n },\n handleDOMEvents: {\n focus: (view, event) => {\n this.focused = true;\n this.emit('focus', {\n event,\n state: view.state,\n view\n });\n const transaction = this.state.tr.setMeta('focused', true);\n this.view.dispatch(transaction);\n },\n blur: (view, event) => {\n this.focused = false;\n this.emit('blur', {\n event,\n state: view.state,\n view\n });\n const transaction = this.state.tr.setMeta('focused', false);\n this.view.dispatch(transaction);\n }\n }\n }\n }), new Plugin({\n props: this.options.editorProps\n })]\n });\n }\n\n createDocument(content, parseOptions = this.options.parseOptions) {\n if (content === null) {\n return this.schema.nodeFromJSON(this.options.emptyDocument);\n }\n\n if (typeof content === 'object') {\n try {\n return this.schema.nodeFromJSON(content);\n } catch (error) {\n console.warn('[tiptap warn]: Invalid content.', 'Passed value:', content, 'Error:', error);\n return this.schema.nodeFromJSON(this.options.emptyDocument);\n }\n }\n\n if (typeof content === 'string') {\n const htmlString = `
${content}
`;\n const parser = new window.DOMParser();\n const element = parser.parseFromString(htmlString, 'text/html').body.firstElementChild;\n return DOMParser.fromSchema(this.schema).parse(element, parseOptions);\n }\n\n return false;\n }\n\n createView() {\n return new EditorView(this.element, {\n state: this.createState(),\n handlePaste: (...args) => {\n this.emit('paste', ...args);\n },\n handleDrop: (...args) => {\n this.emit('drop', ...args);\n },\n dispatchTransaction: this.dispatchTransaction.bind(this)\n });\n }\n\n setParentComponent(component = null) {\n if (!component) {\n return;\n }\n\n this.view.setProps({\n nodeViews: this.initNodeViews({\n parent: component,\n extensions: [...this.builtInExtensions, ...this.options.extensions]\n })\n });\n }\n\n initNodeViews({\n parent,\n extensions\n }) {\n return extensions.filter(extension => ['node', 'mark'].includes(extension.type)).filter(extension => extension.view).reduce((nodeViews, extension) => {\n const nodeView = (node, view, getPos, decorations) => {\n const component = extension.view;\n return new ComponentView(component, {\n editor: this,\n extension,\n parent,\n node,\n view,\n getPos,\n decorations\n });\n };\n\n return { ...nodeViews,\n [extension.name]: nodeView\n };\n }, {});\n }\n\n dispatchTransaction(transaction) {\n const newState = this.state.apply(transaction);\n this.view.updateState(newState);\n this.selection = {\n from: this.state.selection.from,\n to: this.state.selection.to\n };\n this.setActiveNodesAndMarks();\n this.emit('transaction', {\n getHTML: this.getHTML.bind(this),\n getJSON: this.getJSON.bind(this),\n state: this.state,\n transaction\n });\n\n if (!transaction.docChanged || transaction.getMeta('preventUpdate')) {\n return;\n }\n\n this.emitUpdate(transaction);\n }\n\n emitUpdate(transaction) {\n this.emit('update', {\n getHTML: this.getHTML.bind(this),\n getJSON: this.getJSON.bind(this),\n state: this.state,\n transaction\n });\n }\n\n resolveSelection(position = null) {\n if (this.selection && position === null) {\n return this.selection;\n }\n\n if (position === 'start' || position === true) {\n return {\n from: 0,\n to: 0\n };\n }\n\n if (position === 'end') {\n const {\n doc\n } = this.state;\n return {\n from: doc.content.size,\n to: doc.content.size\n };\n }\n\n return {\n from: position,\n to: position\n };\n }\n\n focus(position = null) {\n if (this.view.focused && position === null || position === false) {\n return;\n }\n\n const {\n from,\n to\n } = this.resolveSelection(position);\n this.setSelection(from, to);\n setTimeout(() => this.view.focus(), 10);\n }\n\n setSelection(from = 0, to = 0) {\n const {\n doc,\n tr\n } = this.state;\n const resolvedFrom = minMax(from, 0, doc.content.size);\n const resolvedEnd = minMax(to, 0, doc.content.size);\n const selection = TextSelection.create(doc, resolvedFrom, resolvedEnd);\n const transaction = tr.setSelection(selection);\n this.view.dispatch(transaction);\n }\n\n blur() {\n this.view.dom.blur();\n }\n\n getSchemaJSON() {\n return JSON.parse(JSON.stringify({\n nodes: this.extensions.nodes,\n marks: this.extensions.marks\n }));\n }\n\n getHTML() {\n const div = document.createElement('div');\n const fragment = DOMSerializer.fromSchema(this.schema).serializeFragment(this.state.doc.content);\n div.appendChild(fragment);\n return div.innerHTML;\n }\n\n getJSON() {\n return this.state.doc.toJSON();\n }\n\n setContent(content = {}, emitUpdate = false, parseOptions) {\n const {\n doc,\n tr\n } = this.state;\n const document = this.createDocument(content, parseOptions);\n const selection = TextSelection.create(doc, 0, doc.content.size);\n const transaction = tr.setSelection(selection).replaceSelectionWith(document, false).setMeta('preventUpdate', !emitUpdate);\n this.view.dispatch(transaction);\n }\n\n clearContent(emitUpdate = false) {\n this.setContent(this.options.emptyDocument, emitUpdate);\n }\n\n setActiveNodesAndMarks() {\n this.activeMarks = Object.entries(this.schema.marks).reduce((marks, [name, mark]) => ({ ...marks,\n [name]: (attrs = {}) => markIsActive(this.state, mark, attrs)\n }), {});\n this.activeMarkAttrs = Object.entries(this.schema.marks).reduce((marks, [name, mark]) => ({ ...marks,\n [name]: getMarkAttrs(this.state, mark)\n }), {});\n this.activeNodes = Object.entries(this.schema.nodes).reduce((nodes, [name, node]) => ({ ...nodes,\n [name]: (attrs = {}) => nodeIsActive(this.state, node, attrs)\n }), {});\n }\n\n getMarkAttrs(type = null) {\n return this.activeMarkAttrs[type];\n }\n\n getNodeAttrs(type = null) {\n return { ...getNodeAttrs(this.state, this.schema.nodes[type])\n };\n }\n\n get isActive() {\n return Object.entries({ ...this.activeMarks,\n ...this.activeNodes\n }).reduce((types, [name, value]) => ({ ...types,\n [name]: (attrs = {}) => value(attrs)\n }), {});\n }\n\n registerPlugin(plugin = null, handlePlugins) {\n const plugins = typeof handlePlugins === 'function' ? handlePlugins(plugin, this.state.plugins) : [plugin, ...this.state.plugins];\n const newState = this.state.reconfigure({\n plugins\n });\n this.view.updateState(newState);\n }\n\n unregisterPlugin(name = null) {\n if (!name || !this.view.docView) {\n return;\n }\n\n const newState = this.state.reconfigure({\n plugins: this.state.plugins.filter(plugin => !plugin.key.startsWith(`${name}$`))\n });\n this.view.updateState(newState);\n }\n\n destroy() {\n if (!this.view) {\n return;\n }\n\n this.view.destroy();\n }\n\n}\n\nvar EditorContent = {\n props: {\n editor: {\n default: null,\n type: Object\n }\n },\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor && editor.element) {\n this.$nextTick(() => {\n this.$el.appendChild(editor.element.firstChild);\n editor.setParentComponent(this);\n });\n }\n }\n\n }\n },\n\n render(createElement) {\n return createElement('div');\n },\n\n beforeDestroy() {\n this.editor.element = this.$el;\n }\n\n};\n\nclass Menu {\n constructor({\n options\n }) {\n this.options = options;\n this.preventHide = false; // the mousedown event is fired before blur so we can prevent it\n\n this.mousedownHandler = this.handleClick.bind(this);\n this.options.element.addEventListener('mousedown', this.mousedownHandler, {\n capture: true\n });\n\n this.blurHandler = () => {\n if (this.preventHide) {\n this.preventHide = false;\n return;\n }\n\n this.options.editor.emit('menubar:focusUpdate', false);\n };\n\n this.options.editor.on('blur', this.blurHandler);\n }\n\n handleClick() {\n this.preventHide = true;\n }\n\n destroy() {\n this.options.element.removeEventListener('mousedown', this.mousedownHandler);\n this.options.editor.off('blur', this.blurHandler);\n }\n\n}\n\nfunction MenuBar (options) {\n return new Plugin({\n key: new PluginKey('menu_bar'),\n\n view(editorView) {\n return new Menu({\n editorView,\n options\n });\n }\n\n });\n}\n\nvar EditorMenuBar = {\n props: {\n editor: {\n default: null,\n type: Object\n }\n },\n\n data() {\n return {\n focused: false\n };\n },\n\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor) {\n this.$nextTick(() => {\n editor.registerPlugin(MenuBar({\n editor,\n element: this.$el\n }));\n this.focused = editor.focused;\n editor.on('focus', () => {\n this.focused = true;\n });\n editor.on('menubar:focusUpdate', focused => {\n this.focused = focused;\n });\n });\n }\n }\n\n }\n },\n\n render() {\n if (!this.editor) {\n return null;\n }\n\n return this.$scopedSlots.default({\n focused: this.focused,\n focus: this.editor.focus,\n commands: this.editor.commands,\n isActive: this.editor.isActive,\n getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor),\n getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor)\n });\n }\n\n};\n\nfunction textRange(node, from, to) {\n const range = document.createRange();\n range.setEnd(node, to == null ? node.nodeValue.length : to);\n range.setStart(node, Math.max(from, 0));\n return range;\n}\n\nfunction singleRect(object, bias) {\n const rects = object.getClientRects();\n return !rects.length ? object.getBoundingClientRect() : rects[bias < 0 ? 0 : rects.length - 1];\n}\n\nfunction coordsAtPos(view, pos, end = false) {\n const {\n node,\n offset\n } = view.docView.domFromPos(pos);\n let side;\n let rect;\n\n if (node.nodeType === 3) {\n if (end && offset < node.nodeValue.length) {\n rect = singleRect(textRange(node, offset - 1, offset), -1);\n side = 'right';\n } else if (offset < node.nodeValue.length) {\n rect = singleRect(textRange(node, offset, offset + 1), -1);\n side = 'left';\n }\n } else if (node.firstChild) {\n if (offset < node.childNodes.length) {\n const child = node.childNodes[offset];\n rect = singleRect(child.nodeType === 3 ? textRange(child) : child, -1);\n side = 'left';\n }\n\n if ((!rect || rect.top === rect.bottom) && offset) {\n const child = node.childNodes[offset - 1];\n rect = singleRect(child.nodeType === 3 ? textRange(child) : child, 1);\n side = 'right';\n }\n } else {\n rect = node.getBoundingClientRect();\n side = 'left';\n }\n\n const x = rect[side];\n return {\n top: rect.top,\n bottom: rect.bottom,\n left: x,\n right: x\n };\n}\n\nclass Menu$1 {\n constructor({\n options,\n editorView\n }) {\n this.options = { ...{\n element: null,\n keepInBounds: true,\n onUpdate: () => false\n },\n ...options\n };\n this.editorView = editorView;\n this.isActive = false;\n this.left = 0;\n this.bottom = 0;\n this.top = 0;\n this.preventHide = false; // the mousedown event is fired before blur so we can prevent it\n\n this.mousedownHandler = this.handleClick.bind(this);\n this.options.element.addEventListener('mousedown', this.mousedownHandler, {\n capture: true\n });\n\n this.focusHandler = ({\n view\n }) => {\n this.update(view);\n };\n\n this.options.editor.on('focus', this.focusHandler);\n\n this.blurHandler = ({\n event\n }) => {\n if (this.preventHide) {\n this.preventHide = false;\n return;\n }\n\n this.hide(event);\n };\n\n this.options.editor.on('blur', this.blurHandler);\n }\n\n handleClick() {\n this.preventHide = true;\n }\n\n update(view, lastState) {\n const {\n state\n } = view;\n\n if (view.composing) {\n return;\n } // Don't do anything if the document/selection didn't change\n\n\n if (lastState && lastState.doc.eq(state.doc) && lastState.selection.eq(state.selection)) {\n return;\n } // Hide the tooltip if the selection is empty\n\n\n if (state.selection.empty) {\n this.hide();\n return;\n } // Otherwise, reposition it and update its content\n\n\n const {\n from,\n to\n } = state.selection; // These are in screen coordinates\n // We can't use EditorView.cordsAtPos here because it can't handle linebreaks correctly\n // See: https://github.com/ProseMirror/prosemirror-view/pull/47\n\n const start = coordsAtPos(view, from);\n const end = coordsAtPos(view, to, true); // The box in which the tooltip is positioned, to use as base\n\n const parent = this.options.element.offsetParent;\n\n if (!parent) {\n this.hide();\n return;\n }\n\n const box = parent.getBoundingClientRect();\n const el = this.options.element.getBoundingClientRect(); // Find a center-ish x position from the selection endpoints (when\n // crossing lines, end may be more to the left)\n\n const left = (start.left + end.left) / 2 - box.left; // Keep the menuBubble in the bounding box of the offsetParent i\n\n this.left = Math.round(this.options.keepInBounds ? Math.min(box.width - el.width / 2, Math.max(left, el.width / 2)) : left);\n this.bottom = Math.round(box.bottom - start.top);\n this.top = Math.round(end.bottom - box.top);\n this.isActive = true;\n this.sendUpdate();\n }\n\n sendUpdate() {\n this.options.onUpdate({\n isActive: this.isActive,\n left: this.left,\n bottom: this.bottom,\n top: this.top\n });\n }\n\n hide(event) {\n if (event && event.relatedTarget && this.options.element.parentNode && this.options.element.parentNode.contains(event.relatedTarget)) {\n return;\n }\n\n this.isActive = false;\n this.sendUpdate();\n }\n\n destroy() {\n this.options.element.removeEventListener('mousedown', this.mousedownHandler);\n this.options.editor.off('focus', this.focusHandler);\n this.options.editor.off('blur', this.blurHandler);\n }\n\n}\n\nfunction MenuBubble (options) {\n return new Plugin({\n key: new PluginKey('menu_bubble'),\n\n view(editorView) {\n return new Menu$1({\n editorView,\n options\n });\n }\n\n });\n}\n\nvar EditorMenuBubble = {\n props: {\n editor: {\n default: null,\n type: Object\n },\n keepInBounds: {\n default: true,\n type: Boolean\n }\n },\n\n data() {\n return {\n menu: {\n isActive: false,\n left: 0,\n bottom: 0\n }\n };\n },\n\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor) {\n this.$nextTick(() => {\n editor.registerPlugin(MenuBubble({\n editor,\n element: this.$el,\n keepInBounds: this.keepInBounds,\n onUpdate: menu => {\n // the second check ensures event is fired only once\n if (menu.isActive && this.menu.isActive === false) {\n this.$emit('show', menu);\n } else if (!menu.isActive && this.menu.isActive === true) {\n this.$emit('hide', menu);\n }\n\n this.menu = menu;\n }\n }));\n });\n }\n }\n\n }\n },\n\n render() {\n if (!this.editor) {\n return null;\n }\n\n return this.$scopedSlots.default({\n focused: this.editor.view.focused,\n focus: this.editor.focus,\n commands: this.editor.commands,\n isActive: this.editor.isActive,\n getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor),\n getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor),\n menu: this.menu\n });\n },\n\n beforeDestroy() {\n this.editor.unregisterPlugin('menu_bubble');\n }\n\n};\n\nclass Menu$2 {\n constructor({\n options,\n editorView\n }) {\n this.options = { ...{\n resizeObserver: true,\n element: null,\n onUpdate: () => false\n },\n ...options\n };\n this.preventHide = false;\n this.editorView = editorView;\n this.isActive = false;\n this.top = 0; // the mousedown event is fired before blur so we can prevent it\n\n this.mousedownHandler = this.handleClick.bind(this);\n this.options.element.addEventListener('mousedown', this.mousedownHandler, {\n capture: true\n });\n\n this.focusHandler = ({\n view\n }) => {\n this.update(view);\n };\n\n this.options.editor.on('focus', this.focusHandler);\n\n this.blurHandler = ({\n event\n }) => {\n if (this.preventHide) {\n this.preventHide = false;\n return;\n }\n\n this.hide(event);\n };\n\n this.options.editor.on('blur', this.blurHandler); // sometimes we have to update the position\n // because of a loaded images for example\n\n if (this.options.resizeObserver && window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver(() => {\n if (this.isActive) {\n this.update(this.editorView);\n }\n });\n this.resizeObserver.observe(this.editorView.dom);\n }\n }\n\n handleClick() {\n this.preventHide = true;\n }\n\n update(view, lastState) {\n const {\n state\n } = view; // Don't do anything if the document/selection didn't change\n\n if (lastState && lastState.doc.eq(state.doc) && lastState.selection.eq(state.selection)) {\n return;\n }\n\n if (!state.selection.empty) {\n this.hide();\n return;\n }\n\n const currentDom = view.domAtPos(state.selection.anchor);\n const isActive = currentDom.node.innerHTML === '
' && currentDom.node.tagName === 'P' && currentDom.node.parentNode === view.dom;\n\n if (!isActive) {\n this.hide();\n return;\n }\n\n const parent = this.options.element.offsetParent;\n\n if (!parent) {\n this.hide();\n return;\n }\n\n const editorBoundings = parent.getBoundingClientRect();\n const cursorBoundings = view.coordsAtPos(state.selection.anchor);\n const top = cursorBoundings.top - editorBoundings.top;\n this.isActive = true;\n this.top = top;\n this.sendUpdate();\n }\n\n sendUpdate() {\n this.options.onUpdate({\n isActive: this.isActive,\n top: this.top\n });\n }\n\n hide(event) {\n if (event && event.relatedTarget && this.options.element.parentNode && this.options.element.parentNode.contains(event.relatedTarget)) {\n return;\n }\n\n this.isActive = false;\n this.sendUpdate();\n }\n\n destroy() {\n this.options.element.removeEventListener('mousedown', this.mousedownHandler);\n\n if (this.resizeObserver) {\n this.resizeObserver.unobserve(this.editorView.dom);\n }\n\n this.options.editor.off('focus', this.focusHandler);\n this.options.editor.off('blur', this.blurHandler);\n }\n\n}\n\nfunction FloatingMenu (options) {\n return new Plugin({\n key: new PluginKey('floating_menu'),\n\n view(editorView) {\n return new Menu$2({\n editorView,\n options\n });\n }\n\n });\n}\n\nvar EditorFloatingMenu = {\n props: {\n editor: {\n default: null,\n type: Object\n }\n },\n\n data() {\n return {\n menu: {\n isActive: false,\n left: 0,\n bottom: 0\n }\n };\n },\n\n watch: {\n editor: {\n immediate: true,\n\n handler(editor) {\n if (editor) {\n this.$nextTick(() => {\n editor.registerPlugin(FloatingMenu({\n editor,\n element: this.$el,\n onUpdate: menu => {\n // the second check ensures event is fired only once\n if (menu.isActive && this.menu.isActive === false) {\n this.$emit('show', menu);\n } else if (!menu.isActive && this.menu.isActive === true) {\n this.$emit('hide', menu);\n }\n\n this.menu = menu;\n }\n }));\n });\n }\n }\n\n }\n },\n\n render() {\n if (!this.editor) {\n return null;\n }\n\n return this.$scopedSlots.default({\n focused: this.editor.view.focused,\n focus: this.editor.focus,\n commands: this.editor.commands,\n isActive: this.editor.isActive,\n getMarkAttrs: this.editor.getMarkAttrs.bind(this.editor),\n getNodeAttrs: this.editor.getNodeAttrs.bind(this.editor),\n menu: this.menu\n });\n },\n\n beforeDestroy() {\n this.editor.unregisterPlugin('floating_menu');\n }\n\n};\n\nexport { Doc, Editor, EditorContent, EditorFloatingMenu, EditorMenuBar, EditorMenuBubble, Extension, Mark, Node, Paragraph, Text };\n"],"names":["createCell","cellType","cellContent","createChecked","createAndFill","getTableNodeTypes","schema","cached","tableNodeTypes","roles","Object","keys","nodes","forEach","type","nodeType","spec","tableRole","createTable","rowsCount","colsCount","withHeaderRow","types","headerCells","cells","index","cell","push","headerCell","header_cell","rows","row","table","equalNodeType","node","Array","isArray","indexOf","findParentNodeClosestToPos","$pos","predicate","i","depth","pos","before","start","findParentNode","selection","$from","isNodeSelection","findSelectedNodeOfType","getMarkAttrs","state","from","to","marks","doc","nodesBetween","mark","find","markItem","name","attrs","getMarkRange","parent","childAfter","parentOffset","link","startIndex","startPos","offset","endIndex","endPos","nodeSize","isInSet","child","childCount","getNodeAttrs","reverse","nodeItem","markIsActive","empty","storedMarks","rangeHasMark","nodeIsActive","length","hasMarkup","camelCase","str","replace","word","toLowerCase","toUpperCase","ComponentView","constructor","component","editor","extension","view","decorations","getPos","this","isNode","isMark","getMarkPos","captureEvents","dom","createDOM","contentDOM","vm","$refs","content","Component","props","selected","options","updateAttrs","setSelection","update","propsData","$mount","$el","updateComponentProps","_props","originalSilent","entries","key","value","editable","newAttrs","transaction","tr","removeMark","addMark","create","setNodeMarkup","dispatch","ignoreMutation","mutation","contains","target","stopEvent","event","draggable","dragHandle","closest","isValidDragHandle","document","addEventListener","once","isCopy","isPaste","isCut","isDrag","startsWith","selectNode","deselectNode","posAtDOM","resolvedPos","resolve","range","destroy","$destroy","Emitter","on","fn","_callbacks","emit","args","callbacks","callback","apply","off","arguments","filter","cb","Extension","defaultOptions","init","bindEditor","plugins","inputRules","pasteRules","ExtensionManager","extensions","reduce","Proxy","set","obj","prop","changed","assign","updateState","allPlugins","keymaps","extensionKeymaps","includes","map","nodeMarkKeymaps","excludedExtensions","allowedExtensions","extensionInputRules","nodeMarkInputRules","allInputRules","extensionPasteRules","nodeMarkPasteRules","allPasteRules","commands","allCommands","focus","handle","_name","_value","commandName","commandValue","injectCSS","css","style","createElement","textContent","head","firstChild","insertBefore","appendChild","Mark","super","command","minMax","min","max","Math","parseInt","Node","Doc","Paragraph","group","parseDOM","tag","toDOM","Text","Editor","editorProps","autoFocus","topNode","emptyDocument","useBuiltInExtensions","disableInputRules","disablePasteRules","dropCursor","enableDropCursor","enableGapCursor","parseOptions","onInit","onTransaction","onUpdate","onFocus","onBlur","onPaste","onDrop","events","setOptions","focused","element","createExtensions","createNodes","createMarks","createSchema","createPlugins","createKeymaps","createInputRules","createPasteRules","createView","createCommands","setActiveNodesAndMarks","builtInExtensions","createState","createDocument","rules","Backspace","attributes","tabindex","handleDOMEvents","setMeta","blur","nodeFromJSON","error","console","warn","htmlString","parser","window","DOMParser","parseFromString","body","firstElementChild","parse","handlePaste","handleDrop","dispatchTransaction","bind","setParentComponent","setProps","nodeViews","initNodeViews","nodeView","newState","getHTML","getJSON","docChanged","getMeta","emitUpdate","resolveSelection","position","size","setTimeout","resolvedFrom","resolvedEnd","getSchemaJSON","JSON","stringify","div","fragment","serializeFragment","innerHTML","toJSON","setContent","replaceSelectionWith","clearContent","activeMarks","activeMarkAttrs","activeNodes","isActive","registerPlugin","plugin","handlePlugins","reconfigure","unregisterPlugin","docView","EditorContent","default","watch","immediate","handler","$nextTick","render","beforeDestroy","Menu","preventHide","mousedownHandler","handleClick","capture","blurHandler","removeEventListener","MenuBar","editorView","EditorMenuBar","data","$scopedSlots","textRange","createRange","setEnd","nodeValue","setStart","singleRect","object","bias","rects","getClientRects","getBoundingClientRect","coordsAtPos","end","domFromPos","side","rect","childNodes","top","bottom","x","left","right","Menu$1","keepInBounds","focusHandler","hide","lastState","composing","eq","offsetParent","box","el","round","width","sendUpdate","relatedTarget","parentNode","MenuBubble","EditorMenuBubble","Boolean","menu","$emit"],"sourceRoot":""}