react-mail-inbox 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context/ThemeContext.tsx","../src/Components/GmailWrapper/EmailContext.tsx","../src/utils/toolbar.ts","../src/Components/core/Icon/helper.ts","../src/Components/core/Icon/index.tsx","../src/Components/core/MyPopup/index.tsx","../src/utils/core.ts","../src/Components/core/FontSelect/index.tsx","../src/Components/core/FontSize/index.tsx","../src/Components/core/ColorPicker/index.tsx","../src/Components/core/AlignmentSelect/index.tsx","../src/hook/useOnClickListener.tsx","../src/Components/core/FloatingLinkEditor/index.tsx","../src/hook/useFileUpload.ts","../src/Components/core/FileUploader/index.tsx","../src/Components/core/FileUploader/FilePreview.tsx","../src/Components/Editor/Toolbar/index.tsx","../src/Themes/lexicalEditortheme.ts","../src/plugins/SetInitialHTML.tsx","../src/plugins/OnChangePlugin.tsx","../src/Components/Editor/EditorWrapper/index.tsx","../src/utils/common.ts","../src/Components/GmailWrapper/ReceiptsHeading/InputWIthDropDown.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputForEmail.tsx","../src/Components/GmailWrapper/ReceiptsHeading/index.tsx","../src/Components/GmailWrapper/GmailHeading/index.tsx","../src/Components/GmailWrapper/GmailWrapperContent.tsx","../src/Components/GmailWrapper/index.tsx","../src/Components/GmailInbox/index.tsx"],"names":["createContext","useContext","useState","useEffect","jsx","MdUndo","MdRedo","MdFormatBold","MdFormatItalic","MdFormatUnderlined","MdTextFormat","MdFormatAlignLeft","MdFormatAlignRight","MdFormatAlignCenter","MdFormatListBulleted","MdFormatListNumbered","MdFormatIndentDecrease","MdOutlineFormatIndentIncrease","MdFormatClear","MdStrikethroughS","MdFormatQuote","MdArrowDropDown","MdAttachFile","MdLink","MdImage","MdCheck","MdTextFields","MdEdit","MdClose","useRef","Popup","jsxs","OPTIONS","match","useLexicalComposerContext","useCallback","$getSelection","$isRangeSelection","$isListNode","$getNearestNodeOfType","ListNode","getSelectedNode","$isLinkNode","mergeRegister","SELECTION_CHANGE_COMMAND","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","UNDO_COMMAND","REDO_COMMAND","INDENT_CONTENT_COMMAND","selection","$patchStyleText","TOGGLE_LINK_COMMAND","OUTDENT_CONTENT_COMMAND","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$isAtNodeEnd","useDropzone","heic2any","useMemo","index","createPortal","$generateNodesFromDOM","$getRoot","html","$generateHtmlFromNodes","LinkNode","ListItemNode","AutoLinkNode","LexicalComposer","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin","ListPlugin","LinkPlugin","Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAM,YAAA,GAAeA,oBAA4C,MAAS,CAAA;AAEnE,IAAM,WAAW,MAAM;AAC5B,EAAA,MAAM,OAAA,GAAUC,iBAAW,YAAY,CAAA;AACvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,EAChE;AACA,EAAA,OAAO,OAAA;AACT;AAQO,IAAM,gBAA8C,CAAC;AAAA,EAC1D,QAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,eAAgB,YAAY,CAAA;AAEtD,EAAAC,eAAA,CAAU,MAAM;AAEd,IAAA,QAAA,CAAS,eAAA,CAAgB,YAAA,CAAa,YAAA,EAAc,KAAK,CAAA;AAEzD,IAAA,IAAI,aAAA,EAAe;AACjB,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,aAAa,CAAC,CAAA;AAEzB,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,QAAA,CAAS,CAAC,IAAA,KAAU,IAAA,KAAS,OAAA,GAAU,SAAS,OAAQ,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAA,uBACEC,cAAA,CAAC,aAAa,QAAA,EAAb,EAAsB,OAAO,EAAE,KAAA,EAAO,WAAA,EAAY,EAChD,QAAA,EACH,CAAA;AAEJ,CAAA;ACjBA,IAAM,YAAA,GAAeJ,oBAA4C,MAAS,CAAA;AAEnE,IAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,OAAA,GAAUC,iBAAW,YAAY,CAAA;AACvC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,sDAAsD,CAAA;AAAA,EACxE;AACA,EAAA,OAAO,OAAA;AACT,CAAA;AAMO,IAAM,aAAA,GAA8C,CAAC,EAAE,QAAA,EAAS,KAAM;AAC3E,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIC,cAAAA,CAAgB;AAAA,IAC1C,IAAI,EAAC;AAAA,IACL,IAAI,EAAC;AAAA,IACL,KAAK;AAAC,GACP,CAAA;AACD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,EAAE,CAAA;AACzC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC1C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC5C,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,cAAAA,CAAiB,EAAE,CAAA;AAGzD,EAAAC,gBAAU,MAAM;AACd,IAAA,OAAA,CAAQ,GAAA,CAAI,iCAAiC,MAAM,CAAA;AAAA,EACrD,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEC,cAAAA;AAAA,IAAC,YAAA,CAAa,QAAA;AAAA,IAAb;AAAA,MACC,KAAA,EAAO;AAAA,QACL,MAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,OAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,cAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC;AAAA;AAAA,GACH;AAEJ,CAAA;;;ACpFO,IAAM,UAAA,GAAa;AAAA,EAWxB,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,MAAA,EAAQ,QAAA;AAAA,EACR,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,QAER,CAAA;AAAA,EACA,IAAA,EAAM,MAAA;AAAA,EAEN,IAAA,EAAM,MAAA;AAAA,EAEN,UAAA,EAAY,YAAA;AAAA,EACZ,UAAA,EAAY,YAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,OAER,CAAA;AAAA,EACA,MAAA,EAAQ,QAAA;AAAA,EACR,cAAA,EAAgB,gBAAA;AAAA,EAEhB,MAAA,EAAQ,QAAA;AAAA,EACR,UAAA,EAAY,YAAA;AAAA,EAEZ,QAAA,EAAU,UAAA;AAAA,EACV,UAAA,EAAY;AACd,CAAA;AACO,IAAM,oBAAA,GAAuB;AAAA,EAClC,OAAA,EAAS,SAAA;AAAA,EACT,OAAA,EAAS,SAAA;AAAA,EACT,SAAA,EAAW;AACb,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB;AAAA,IACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,IACpC,IAAA,EAAM,SAAA;AAAA,IACN,EAAA,EAAI,sCAAA;AAAA,IACJ,OAAA,EAAS;AAAA,MACP;AAAA,QACE,IAAA,EAAM,WAAW,MAAM,CAAA;AAAA,QACvB,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,MAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,MAAM,CAAA;AAAA,QACvB,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,MAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,YAAY,CAAA;AAAA,QAC7B,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,UAAU,CAAA;AAAA,QAC3B,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,MAAM,CAAA;AAAA,QACvB,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,MAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,QAAQ,CAAA;AAAA,QACzB,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,QAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,WAAW,CAAA;AAAA,QAC5B,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,WAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,UAAA,CAAW,OAAO,CAAA,CAAE,IAAA;AAAA,QAC1B,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,OAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,KAAA,CAAM,IAAA;AAAA,QACvB,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,YAAY,CAAA;AAAA,QAC7B,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,aAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,YAAY,CAAA;AAAA,QAC7B,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,eAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,qBAAqB,SAAS,CAAA;AAAA,QACpC,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,gBAAgB,CAAA;AAAA,QACjC,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,YAAA;AAAA,QACN,EAAA,EAAI;AAAA,OACN;AAAA,MACA;AAAA,QACE,IAAA,EAAM,WAAW,QAAQ,CAAA;AAAA,QACzB,IAAA,EAAM,qBAAqB,WAAW,CAAA;AAAA,QACtC,IAAA,EAAM,YAAA;AAAA,QACN,EAAA,EAAI;AAAA;AACN;AACF,GACF;AAAA,EACA;AAAA,IACE,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,WAAW,YAAY,CAAA;AAAA,IAC7B,IAAA,EAAM,QAAA;AAAA,IACN,EAAA,EAAI;AAAA,GACN;AAAA,EACA;AAAA,IACE,IAAA,EAAM,WAAA;AAAA,IACN,IAAA,EAAM,WAAW,MAAM,CAAA;AAAA,IACvB,IAAA,EAAM,MAAA;AAAA,IACN,EAAA,EAAI;AAAA;AACN;AAAA;AAAA;AAAA;AAAA;AAAA;AAOF,CAAA;AC/IA,IAAM,KAAA,GAAQ;AAAA,EACZ,IAAA,EAAMC,SAAA;AAAA,EACN,IAAA,EAAMC,SAAA;AAAA,EACN,IAAA,EAAMC,eAAA;AAAA,EACN,MAAA,EAAQC,iBAAA;AAAA,EACR,SAAA,EAAWC,qBAAA;AAAA,EACX,KAAA,EAAOC,eAAA;AAAA,EACP,SAAA,EAAWC,oBAAA;AAAA,EACX,UAAA,EAAYC,qBAAA;AAAA,EACZ,WAAA,EAAaC,sBAAA;AAAA,EACb,aAAA,EAAeC,uBAAA;AAAA,EACf,WAAA,EAAaC,uBAAA;AAAA,EACb,UAAA,EAAYC,yBAAA;AAAA,EACZ,UAAA,EAAYC,gCAAA;AAAA,EACZ,YAAA,EAAcC,gBAAA;AAAA,EACd,aAAA,EAAeC,mBAAA;AAAA,EACf,SAAA,EAAWC,gBAAA;AAAA,EACX,SAAA,EAAWC,kBAAA;AAAA,EACX,OAAA,EAASX,eAAA;AAAA,EACT,MAAA,EAAQY,eAAA;AAAA,EACR,IAAA,EAAMC,SAAA;AAAA,EACN,KAAA,EAAOC,UAAA;AAAA,EACP,KAAA,EAAOC,UAAA;AAAA,EACP,UAAA,EAAYC,eAAA;AAAA,EACZ,IAAA,EAAMC,SAAA;AAAA,EACN,KAAA,EAAOC;AACT,CAAA;AAEA,IAAO,cAAA,GAAQ,KAAA;ACjBf,IAAM,IAAA,GAA4B,CAAC,EAAE,IAAA,EAAM,OAAO,EAAA,EAAI,KAAA,EAAO,WAAU,KAAM;AAG3E,EAAA,MAAM,aAAA,GAAgB,eAAM,IAAI,CAAA;AAEhC,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,MAAA,EAAS,IAAI,CAAA,YAAA,CAAc,CAAA;AACxC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBAAOxB,cAAAA,CAAC,aAAA,EAAA,EAAc,IAAA,EAAY,OAAc,SAAA,EAAsB,CAAA;AACxE,CAAA;AAEA,IAAO,YAAA,GAAQ,IAAA;ACzCf,IAAM,UAAkC,CAAC;AAAA,EACvC,OAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA,GAAiB;AACnB,CAAA,KAAM;AACJ,EAAA,MAAM,QAAA,GAAWyB,aAAY,IAAI,CAAA;AAEjC,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,SAAS,OAAA,IAAW,OAAO,QAAA,CAAS,OAAA,CAAQ,UAAU,UAAA,EAAY;AACpE,MAAA,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,IACzB;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAsB;AAC3C,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,KAAA,IAAQ;AACR,MAAA,WAAA,EAAY;AAAA,IACd,CAAA;AACA,IAAA,OAAO,QAAA,CAAS,EAAE,KAAA,EAAO,aAAA,EAAe,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,uBACEzB,cAAAA;AAAA,IAAC0B,sBAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,OAAA;AAAA,MACA,oBAAA,EAAoB,IAAA;AAAA,MACpB,kBAAA,EAAkB,IAAA;AAAA,MAClB,QAAA,EAAU,cAAA;AAAA,MACV,SAAA,EAAU,cAAA;AAAA,MACT,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ,CAAA;AAEA,IAAO,eAAA,GAAQ,OAAA;;;AC5Cf,IAAM,WAAA,GAAc;AAAA,EAClB;AAAA,IACE,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,YAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,YAAA;AAAa,GACpC;AAAA,EACA,EAAE,OAAO,OAAA,EAAS,KAAA,EAAO,SAAS,KAAA,EAAO,EAAE,UAAA,EAAY,OAAA,EAAQ,EAAE;AAAA,EACjE;AAAA,IACE,KAAA,EAAO,aAAA;AAAA,IACP,KAAA,EAAO,WAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,WAAA;AAAY,GACnC;AAAA,EACA;AAAA,IACE,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,MAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,MAAA,EAAQ,eAAe,QAAA;AAAS,GACvD;AAAA,EACA,EAAE,OAAO,QAAA,EAAU,KAAA,EAAO,UAAU,KAAA,EAAO,EAAE,WAAA,EAAa,WAAA,EAAY,EAAE;AAAA,EACxE;AAAA,IACE,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO,eAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,wBAAA;AAAyB,GAChD;AAAA,EACA;AAAA,IACE,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,UAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,iBAAA;AAAkB,GACzC;AAAA,EACA;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,gBAAA;AAAiB,GACxC;AAAA,EACA;AAAA,IACE,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,QAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,oBAAA;AAAqB,GAC5C;AAAA,EACA;AAAA,IACE,KAAA,EAAO,cAAA;AAAA,IACP,KAAA,EAAO,cAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,0BAAA;AAA2B,GAClD;AAAA,EACA;AAAA,IACE,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO,EAAE,UAAA,EAAY,qBAAA;AAAsB;AAE/C,CAAA;AACO,IAAM,OAAA,GAAU;AAAA,EACrB,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,QAAQ,EAAA,EAAG;AAAA,EAC3C,EAAE,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,QAAA,EAAU,QAAQ,EAAA,EAAG;AAAA,EAC7C,EAAE,GAAA,EAAK,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,QAAQ,EAAA,EAAG;AAAA,EAC3C,EAAE,GAAA,EAAK,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,QAAQ,EAAA;AACxC,CAAA;AACO,IAAM,KAAA,GAAQ;AAAA,EACnB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AACO,IAAM,OAAA,GAAU;AAAA,EACrB,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA;AAEO,IAAM,OAAA,GAAU;AAAA,EACrB;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA;AAEJ,CAAA;AACA,IAAO,YAAA,GAAQ,WAAA;ACjIA,SAAR,UAAA,CAA4B,EAAE,KAAA,GAAQ,OAAA,EAAS,UAAS,EAAoB;AACjF,EAAA,uBACE1B,cAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,OAAA,kBACE2B,eAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,qBAAA,EACf,QAAA,EAAA;AAAA,QAAA,YAAA,EAAa,KAAK,CAAC,CAAA,KAAM,CAAA,CAAE,KAAA,KAAU,KAAK,CAAA,EAAG,KAAA;AAAA,wBAC9C3B,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,WAAA,EAAY;AAAA,OAAA,EACzB,CAAA;AAAA,MAED,WAAC,EAAE,KAAA,uBACFA,cAAAA,CAAC,SAAI,SAAA,EAAU,KAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,SAAI,SAAA,EAAU,cAAA,EACZ,uBAAY,GAAA,CAAI,CAAC,yBAChBA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,KAAA;AAAA,UAEV,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,KAAK,KAAK,CAAA;AACnB,YAAA,KAAA,EAAM;AAAA,UACR,CAAA;AAAA,UACA,KAAA,EAAO,EAAE,GAAG,IAAA,CAAK,KAAA,EAAM;AAAA,UACvB,QAAA,kBAAA2B,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,KAAU,KAAK,KAAA,oBAAS3B,cAAAA,CAAC,YAAA,EAAA,EAAK,MAAK,OAAA,EAAQ,CAAA;AAAA,YAC3C,IAAA,CAAK;AAAA,WAAA,EACR;AAAA,SAAA;AAAA,QATK,IAAA,CAAK;AAAA,OAWb,GACH,CAAA,EACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;AC5Be,SAAR,cAAA,CAAgC;AAAA,EACrC,KAAA,GAAQ,QAAA;AAAA,EACR,WAAW,MAAM;AAAA,EAAC;AACpB,CAAA,EAAwB;AACtB,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,OAAA,kBACE2B,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAU,qBAAA,EAChB,QAAA,EAAA;AAAA,wBAAA3B,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,YAAA,EAAa,CAAA;AAAA,wBACxBA,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,WAAA,EAAY;AAAA,OAAA,EACzB,CAAA;AAAA,MAED,WAAC,EAAE,KAAA,uBACFA,cAAAA,CAAC,SAAI,SAAA,EAAU,KAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,SAAI,SAAA,EAAU,cAAA,EACZ,kBAAQ,GAAA,CAAI,CAAC,yBACZA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,KAAA;AAAA,UAEV,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,KAAK,GAAG,CAAA;AACjB,YAAA,KAAA,EAAM;AAAA,UACR,CAAA;AAAA,UACA,OAAO,EAAE,QAAA,EAAU,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,EAAA,CAAA,EAAK;AAAA,UACtC,QAAA,kBAAA2B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACZ,QAAA,EAAA;AAAA,YAAA,KAAA,KAAU,KAAK,GAAA,oBAAO3B,cAAAA,CAAC,YAAA,EAAA,EAAK,MAAK,OAAA,EAAQ,CAAA;AAAA,YACzC,IAAA,CAAK;AAAA,WAAA,EACR;AAAA,SAAA;AAAA,QATK,IAAA,CAAK;AAAA,OAWb,GACH,CAAA,EACF;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;ACnCA,SAAS,OAAO,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,EAAS,OAAM,EAAgB;AAChE,EAAA,uBACEA,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAU,QAAA;AAAA,MACV,OAAO,KAAA,IAAS,KAAA;AAAA,MAChB,cAAA,EAAc,QAAA;AAAA,MACd,OAAA,EAAS,MAAM,OAAA,CAAQ,KAAK,CAAA;AAAA,MAC5B,KAAA,EAAO,EAAE,UAAA,EAAY,KAAA,EAAM;AAAA,MAC1B,QAAA,EAAA,QAAA,oBACCA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAQ,OAAA,EAAQ,WAAA,EAAY,aAAA,EAAW,IAAA,EACpD,QAAA,kBAAAA,cAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,iBAAA;AAAA,UACF,MAAA,EAAO,OAAA;AAAA,UACP,WAAA,EAAY,GAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe,OAAA;AAAA,UACf,IAAA,EAAK;AAAA;AAAA,OACP,EACF;AAAA;AAAA,GAEJ;AAEJ;AAYe,SAAR,WAAA,CAA6B;AAAA,EAClC,KAAA,GAAQ,EAAE,UAAA,EAAY,SAAA,EAAW,MAAM,SAAA,EAAU;AAAA,EACjD,WAAW,MAAM;AAAA,EAAC;AACpB,CAAA,EAAqB;AACnB,EAAA,SAAS,MAAA,CAAO,OAAyB,KAAA,EAAe;AACtD,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,EAAO,CAAC,KAAK,GAAG,OAAO,CAAA;AAAA,EACvC;AAEA,EAAA,uBACEA,cAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,OAAA,kBACE2B,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAU,qBAAA,EAChB,QAAA,EAAA;AAAA,wBAAA3B,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,SAAA,EAAU,CAAA;AAAA,wBACrBA,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,WAAA,EAAY;AAAA,OAAA,EACzB,CAAA;AAAA,MAED,QAAA,EAAA,CAAC,EAAE,KAAA,EAAM,qBACRA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAU,eAAA;AAAA,UACV,IAAA,EAAK,QAAA;AAAA,UACL,YAAA,EAAW,eAAA;AAAA,UACX,QAAA,kBAAA2B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,eAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,mBAAgB,UAAA,EAChD,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC,IAAA,EAAA,EAAG,EAAA,EAAG,UAAA,EAAW,QAAA,EAAA,kBAAA,EAAgB,CAAA;AAAA,8BAElCA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,OACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,CAAA;AAAA,kBACP,QAAA,EAAU,MAAM,UAAA,KAAe,CAAA;AAAA,kBAC/B,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,oBAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AACxB,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBAPF,CAAA,GAAI;AAAA,eASZ,CAAA,EACH,CAAA;AAAA,8BAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACZA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,CAAA;AAAA,kBACP,QAAA,EAAU,MAAM,UAAA,KAAe,CAAA;AAAA,kBAC/B,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,oBAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AACxB,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBAPF,CAAA,GAAI;AAAA,eASZ,CAAA,EACH,CAAA;AAAA,8BAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,SAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,EAAG,sBACfA,cAAAA,CAAC,SAAI,SAAA,EAAU,aAAA,EACZ,YAAE,GAAA,CAAI,CAAC,sBACNA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,CAAA;AAAA,kBACP,QAAA,EAAU,MAAM,UAAA,KAAe,CAAA;AAAA,kBAC/B,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,oBAAA,MAAA,CAAO,cAAc,GAAG,CAAA;AACxB,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBAPF,IAAI,KAAA,GAAQ;AAAA,eASpB,CAAA,EAAA,EAZ+B,KAAA,GAAQ,CAa1C,CACD,CAAA,EACH;AAAA,aAAA,EACF,CAAA;AAAA,4BAEA2B,eAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAU,cAAA,EAAe,mBAAgB,YAAA,EAChD,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC,IAAA,EAAA,EAAG,EAAA,EAAG,YAAA,EAAa,QAAA,EAAA,YAAA,EAAU,CAAA;AAAA,8BAE9BA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,OACZ,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACVA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,CAAA;AAAA,kBACP,QAAA,EAAU,MAAM,IAAA,KAAS,CAAA;AAAA,kBACzB,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,oBAAA,MAAA,CAAO,QAAQ,GAAG,CAAA;AAClB,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBAPF,CAAA,GAAI;AAAA,eASZ,CAAA,EACH,CAAA;AAAA,8BAEAA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBACZ,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,qBACZA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,CAAA;AAAA,kBACP,QAAA,EAAU,MAAM,IAAA,KAAS,CAAA;AAAA,kBACzB,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,oBAAA,MAAA,CAAO,QAAQ,GAAG,CAAA;AAClB,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBAPF,CAAA,GAAI;AAAA,eASZ,CAAA,EACH,CAAA;AAAA,8BAEAA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,SAAA,EACZ,QAAA,EAAA,OAAA,CAAQ,IAAI,CAAC,CAAA,EAAG,sBACfA,cAAAA,CAAC,SAAI,SAAA,EAAU,aAAA,EACZ,YAAE,GAAA,CAAI,CAAC,sBACNA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBAEC,KAAA,EAAO,CAAA;AAAA,kBACP,QAAA,EAAU,MAAM,IAAA,KAAS,CAAA;AAAA,kBACzB,OAAA,EAAS,CAAC,GAAA,KAAQ;AAChB,oBAAA,MAAA,CAAO,QAAQ,GAAG,CAAA;AAClB,oBAAA,KAAA,EAAM;AAAA,kBACR,CAAA;AAAA,kBACA,KAAA,EAAO;AAAA,iBAAA;AAAA,gBAPF,IAAI,KAAA,GAAQ;AAAA,eASpB,CAAA,EAAA,EAZ+B,OAAA,GAAU,CAa5C,CACD,CAAA,EACH;AAAA,aAAA,EACF;AAAA,WAAA,EACF;AAAA;AAAA;AACF;AAAA,GAEJ,EACF,CAAA;AAEJ;ACjLA,IAAM4B,QAAAA,GAAmE;AAAA,EACvE,EAAE,GAAA,EAAK,MAAA,EAAQ,QAAA,EAAU,WAAA,EAAa,OAAO,YAAA,EAAa;AAAA,EAC1D,EAAE,GAAA,EAAK,QAAA,EAAU,QAAA,EAAU,aAAA,EAAe,OAAO,cAAA,EAAe;AAAA,EAChE,EAAE,GAAA,EAAK,OAAA,EAAS,QAAA,EAAU,YAAA,EAAc,OAAO,aAAA;AACjD,CAAA;AAQe,SAAR,eAAA,CAAiC;AAAA,EACtC,KAAA,GAAQ,MAAA;AAAA,EACR,WAAW,MAAM;AAAA,EAAC;AACpB,CAAA,EAAU;AACR,EAAA,SAAS,SAAS,GAAA,EAAgB;AAChC,IAAA,QAAA,CAAS,GAAG,CAAA;AAAA,EACd;AAEA,EAAA,uBACE5B,cAAAA,CAAC,KAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,eAAA;AAAA,IAAA;AAAA,MACC,OAAA,kBACE2B,eAAAA,CAAC,QAAA,EAAA,EAAO,WAAU,qBAAA,EAChB,QAAA,EAAA;AAAA,wBAAA3B,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAM4B,QAAAA,EAAS,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,GAAA,KAAQ,KAAK,CAAA,EAAG,QAAA,IAAY,WAAA,EAAa,CAAA;AAAA,wBAC5E5B,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,WAAA,EAAY;AAAA,OAAA,EACzB,CAAA;AAAA,MAED,QAAA,EAAA,CAAC,EAAE,KAAA,EAAM,qBACRA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA4B,QAAAA,CAAQ,GAAA,CAAI,CAAC,GAAA,KAAQ;AACpB,QAAA,MAAM,MAAA,GAAS,IAAI,GAAA,KAAQ,KAAA;AAC3B,QAAA,uBACED,eAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,eAAA;AAAA,YACL,cAAA,EAAc,MAAA;AAAA,YACd,QAAA,EAAU,CAAA;AAAA,YACV,SAAA,EAAW,CAAA,iBAAA,EAAoB,MAAA,GAAS,QAAA,GAAW,EAAE,CAAA,CAAA;AAAA,YACrD,SAAS,MAAM;AACb,cAAA,QAAA,CAAS,IAAI,GAAG,CAAA;AAChB,cAAA,KAAA,EAAM;AAAA,YACR,CAAA;AAAA,YACA,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAM,GAAA,CAAI,QAAA,EAAU,IAAA,EAAM,EAAA,EAAI,CAAA,EACtC,CAAA;AAAA,8BAEAA,cAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,CAAA,aAAA,EAAgB,MAAA,GAAS,EAAA,GAAK,QAAQ,CAAA,CAAA;AAAA,kBACjD,aAAA,EAAW,IAAA;AAAA,kBACX,QAAA,kBAAAA,eAAC,KAAA,EAAA,EAAI,KAAA,EAAM,MAAK,MAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,WAAA,EAClC,QAAA,kBAAAA,cAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,CAAA,EAAE,iBAAA;AAAA,sBACF,IAAA,EAAK,MAAA;AAAA,sBACL,MAAA,EAAO,cAAA;AAAA,sBACP,WAAA,EAAY,GAAA;AAAA,sBACZ,aAAA,EAAc,OAAA;AAAA,sBACd,cAAA,EAAe;AAAA;AAAA,mBACjB,EACF;AAAA;AAAA;AACF;AAAA,WAAA;AAAA,UA1BK,GAAA,CAAI;AAAA,SA2BX;AAAA,MAEJ,CAAC,CAAA,EACH;AAAA;AAAA,GAEJ,EACF,CAAA;AAEJ;ACpDA,IAAM,WAAA,GAAc,CAAA;AAGpB,SAAS,SAAS,GAAA,EAAqB;AACrC,EAAA,IAAI,CAAC,KAAK,OAAO,GAAA;AAGjB,EAAA,IAAI,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,EAAG,OAAO,GAAA;AAGhC,EAAA,IAAI,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA,EAAG;AAC1B,IAAA,MAAM6B,MAAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,gDAAgD,CAAA;AACxE,IAAA,IAAIA,MAAAA,EAAO;AACT,MAAA,MAAM,GAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,GAAIA,MAAAA;AAEvB,MAAA,IAAI,CAAA,KAAM,KAAK,OAAO,aAAA;AAEtB,MAAA,OAAO,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,IAAI,CAAA,CAAA,KAAK;AAC9B,QAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,EAAE,CAAA;AACnC,QAAA,OAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA,MACxC,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,IACZ;AAAA,EACF;AAGA,EAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,KAAA,CAAM,gCAAgC,CAAA;AACxD,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,MAAM,GAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,GAAI,KAAA;AACpB,IAAA,OAAO,MAAM,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,IAAI,CAAA,CAAA,KAAK;AAC9B,MAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAC,CAAA,CAAE,SAAS,EAAE,CAAA;AACnC,MAAA,OAAO,GAAA,CAAI,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,GAAA,GAAM,GAAA;AAAA,IACxC,CAAC,CAAA,CAAE,IAAA,CAAK,EAAE,CAAA;AAAA,EACZ;AAEA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,kBAAA,GAAqB;AAC5B,EAAA,MAAM,CAAC,MAAM,CAAA,GAAIC,gDAAA,EAA0B;AAC3C,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIhC,eAAS,WAAW,CAAA;AACtD,EAAA,MAAM,CAAC,kBAAA,EAAoB,qBAAqB,CAAA,GAAIA,cAAAA,CAAc;AAAA,IAChE,CAAC,UAAA,CAAW,UAAU,GAAG,YAAA;AAAA,IACzB,CAAC,UAAA,CAAW,QAAQ,GAAG,EAAA;AAAA,IACvB,CAAC,UAAA,CAAW,KAAA,CAAM,IAAI,GAAG;AAAA,GAC1B,CAAA;AACD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,aAAA,GAAgBiC,kBAAY,MAAM;AACtC,IAAA,MAAM,YAAYC,qBAAA,EAAc;AAChC,IAAA,MAAM,QAAA,GAAgB;AAAA;AAAA,MAEpB,CAAC,UAAA,CAAW,UAAU,GAAG,YAAA;AAAA,MACzB,CAAC,UAAA,CAAW,QAAQ,GAAG,EAAA;AAAA,MACvB,CAAC,UAAA,CAAW,KAAA,CAAM,IAAI,GAAG;AAAA,KAC3B;AAGA,IAAA,IAAIC,yBAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,MAAA,MAAM,UAAA,GAAa,SAAA,CAAU,MAAA,CAAO,OAAA,EAAQ;AAC5C,MAAA,MAAM,UACJ,UAAA,CAAW,MAAA,OAAa,MAAA,GACpB,UAAA,GACA,WAAW,yBAAA,EAA0B;AAE3C,MAAA,MAAM,UAAA,GAAa,QAAQ,MAAA,EAAO;AAClC,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,eAAA,CAAgB,UAAU,CAAA;AAEpD,MAAA,IAAI,eAAe,IAAA,EAAM;AACvB,QAAA,IAAIC,gBAAA,CAAY,OAAO,CAAA,EAAG;AACxB,UAAA,MAAM,UAAA,GAAaC,2BAAA,CAAsB,UAAA,EAAYC,aAAQ,CAAA;AAC7D,UAAA,MAAM,OAAO,UAAA,GAAa,UAAA,CAAW,MAAA,EAAO,GAAI,QAAQ,MAAA,EAAO;AAC/D,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACnB,CAAA,MAAO;AACL,UAAA,MAAM,IAAA,GAAO,QAAQ,OAAA,EAAQ;AAC7B,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACnB;AAAA,MACF;AAGA,MAAA,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,GAAI,SAAA,CAAU,UAAU,MAAM,CAAA;AACtD,MAAA,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,GAAI,SAAA,CAAU,UAAU,QAAQ,CAAA;AAC1D,MAAA,QAAA,CAAS,UAAA,CAAW,SAAS,CAAA,GAAI,SAAA,CAAU,UAAU,WAAW,CAAA;AAChE,MAAA,QAAA,CAAS,UAAA,CAAW,MAAM,CAAA,GAAI,SAAA,CAAU,UAAU,eAAe,CAAA;AACjE,MAAA,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,GAAI,SAAA,CAAU,UAAU,MAAM,CAAA;AAGtD,MAAA,MAAM,IAAA,GAAOC,iBAAgB,SAAS,CAAA;AACtC,MAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAG9B,MAAA,IAAIC,gBAAA,CAAY,MAAM,CAAA,IAAKA,gBAAA,CAAY,IAAI,CAAA,EAAG;AAC5C,QAAA,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,GAAI,IAAA;AAC5B,QAAA,SAAA,CAAU,IAAI,CAAA;AAAA,MAChB,CAAA,MAAO;AACL,QAAA,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA,GAAI,KAAA;AAC5B,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA,MACjB;AAGA,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,eAAA,CAAgB,IAAA,CAAK,QAAQ,CAAA;AACxD,MAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,eAAA,CAAgB,MAAA,CAAO,QAAQ,CAAA;AAG5D,MAAA,MAAM,YAAA,GAAe,eAAe,aAAA,IAAiB,UAAA;AAGrD,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,gBAAA,CAAiB,YAAY,CAAA;AAG1D,QAAA,MAAM,UAAA,GAAa,aAAA,CAAc,gBAAA,CAAiB,aAAa,CAAA;AAC/D,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,IAAI,SAAA,GAAY,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA;AAEnE,UAAA,IAAI,SAAA,KAAc,eAAA,IAAmB,SAAA,KAAc,oBAAA,IAAwB,cAAc,WAAA,EAAa;AACpG,YAAA,SAAA,GAAY,YAAA;AAAA,UACd;AACA,UAAA,QAAA,CAAS,UAAA,CAAW,UAAU,CAAA,GAAI,SAAA;AAAA,QACpC;AAGA,QAAA,MAAM,QAAA,GAAW,aAAA,CAAc,gBAAA,CAAiB,WAAW,CAAA;AAC3D,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,MAAM,WAAA,GAAc,QAAA,CAAS,QAAA,EAAU,EAAE,CAAA;AACzC,UAAA,QAAA,CAAS,UAAA,CAAW,QAAQ,CAAA,GAAI,WAAA,IAAe,EAAA;AAAA,QACjD;AAIA,QAAA,IAAI,KAAA,GAAQ,IAAA;AACZ,QAAA,IAAI,eAAA,GAAkB,IAAA;AAEtB,QAAA,IAAI,YAAA,YAAwB,WAAA,IAAe,YAAA,CAAa,KAAA,EAAO;AAE7D,UAAA,KAAA,GAAQ,YAAA,CAAa,MAAM,KAAA,IAAS,IAAA;AACpC,UAAA,eAAA,GAAkB,YAAA,CAAa,MAAM,eAAA,IAAmB,IAAA;AAAA,QAC1D;AAGA,QAAA,IAAI,CAAC,KAAA,EAAO;AACV,UAAA,KAAA,GAAQ,aAAA,CAAc,iBAAiB,OAAO,CAAA;AAAA,QAChD;AACA,QAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,UAAA,eAAA,GAAkB,aAAA,CAAc,iBAAiB,kBAAkB,CAAA;AAAA,QACrE;AAEA,QAAA,OAAA,CAAQ,IAAI,4BAAA,EAAuB;AAAA,UACjC,WAAA,EAAa,YAAA,YAAwB,WAAA,GAAc,YAAA,CAAa,MAAM,KAAA,GAAQ,KAAA;AAAA,UAC9E,QAAA,EAAU,YAAA,YAAwB,WAAA,GAAc,YAAA,CAAa,MAAM,eAAA,GAAkB,KAAA;AAAA,UACrF,aAAA,EAAe,KAAA;AAAA,UACf,UAAA,EAAY,eAAA;AAAA,UACZ,OAAA,EAAS;AAAA,SACV,CAAA;AAGD,QAAA,MAAM,QAAA,GAAW,KAAA,GAAQ,QAAA,CAAS,KAAK,CAAA,GAAI,IAAA;AAC3C,QAAA,MAAM,UAAA,GAAa,mBAAmB,eAAA,KAAoB,kBAAA,IAAsB,oBAAoB,aAAA,GAChG,QAAA,CAAS,eAAe,CAAA,GACxB,IAAA;AAEJ,QAAA,IAAI,YAAY,UAAA,EAAY;AAC1B,UAAA,QAAA,CAAS,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,GAAI;AAAA,YAChC,MAAM,QAAA,IAAY,SAAA;AAAA,YAClB,YAAY,UAAA,IAAc;AAAA,WAC5B;AAAA,QACF;AAGA,QAAA,IAAI,SAAA,GAAY,aAAA,CAAc,gBAAA,CAAiB,YAAY,CAAA,IAAK,MAAA;AAChE,QAAA,IAAI,cAAc,OAAA,EAAS;AACzB,UAAA,SAAA,GAAY,MAAA;AAAA,QACd;AACA,QAAA,QAAA,CAAS,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,GAAI,SAAA;AAAA,MACpC;AAEA,MAAA,qBAAA,CAAsB,QAAQ,CAAA;AAAA,IAChC;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAAvC,gBAAU,MAAM;AACd,IAAA,OAAOwC,mBAAA;AAAA,MACL,MAAA,CAAO,sBAAA,CAAuB,CAAC,EAAE,aAAY,KAAM;AACjD,QAAA,WAAA,CAAY,KAAK,MAAM;AACrB,UAAA,aAAA,EAAc;AAAA,QAChB,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,MACD,MAAA,CAAO,eAAA;AAAA,QACLC,gCAAA;AAAA,QACA,MAAM;AACJ,UAAA,aAAA,EAAc;AACd,UAAA,OAAO,KAAA;AAAA,QACT,CAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,aAAa,CAAC,CAAA;AAC1B,EAAA,SAAS,QAAA,CAAS,MAAc,KAAA,EAAgB;AAC9C,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,UAAA,CAAW,IAAA;AACd,QAAA,MAAA,CAAO,eAAA,CAAgBC,6BAAqB,MAAM,CAAA;AAClD,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,MAAA;AACd,QAAA,MAAA,CAAO,eAAA,CAAgBA,6BAAqB,QAAQ,CAAA;AACpD,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,SAAA;AACd,QAAA,MAAA,CAAO,eAAA,CAAgBA,6BAAqB,WAAW,CAAA;AACvD,QAAA;AAAA,MACF,KAAK,WAAW,KAAA,CAAM,IAAA;AACpB,QAAA,MAAA,CAAO,eAAA,CAAgBC,gCAAwB,KAAY,CAAA;AAC3D,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,IAAA;AACd,QAAA,MAAA,CAAO,eAAA,CAAgBC,sBAAc,MAAS,CAAA;AAC9C,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,IAAA;AACd,QAAA,MAAA,CAAO,eAAA,CAAgBC,sBAAc,MAAS,CAAA;AAC9C,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,UAAA;AACd,QAAA,kBAAA,EAAmB;AACnB,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,UAAA;AACd,QAAA,gBAAA,EAAiB;AACjB,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,MAAA;AACd,QAAA,SAAA,EAAU;AACV,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,cAAA;AACd,QAAA,YAAA,EAAa;AACb,QAAA;AAAA,MACF,KAAK,WAAW,KAAA,CAAM,IAAA;AACpB,QAAA,cAAA,CAAe,KAA6C,CAAA;AAC5D,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,UAAA;AACd,QAAA,eAAA,CAAgB,KAAe,CAAA;AAC/B,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,QAAA;AACd,QAAA,aAAA,CAAc,KAAe,CAAA;AAC7B,QAAA;AAAA,MACF,KAAK,UAAA,CAAW,IAAA;AACd,QAAA,UAAA,EAAW;AACX,QAAA;AAGA;AACJ,EACF;AAEA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,MAAA,CAAO,eAAA,CAAgBC,gCAAwB,MAAS,CAAA;AAAA,EAC1D,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,CAAC,UAAA,KAAuB;AAC9C,IAAA,MAAA,CAAO,OAAO,MAAM;AAClB,MAAA,MAAMC,cAAYd,qBAAA,EAAc;AAChC,MAAA,IAAIC,yBAAA,CAAkBa,WAAS,CAAA,EAAG;AAChC,QAAAC,yBAAA,CAAgBD,WAAA,EAAW,EAAE,aAAA,EAAe,UAAA,EAAY,CAAA;AAAA,MAC1D;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,QAAA,KAAqB;AAC1C,IAAA,MAAM,gBAAA,GACJ,QAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,GAAA,KAAQ,QAAQ,CAAA,EAAG,MAAA,IAAU,EAAA;AACrD,IAAA,MAAA,CAAO,OAAO,MAAM;AAClB,MAAA,MAAMA,cAAYd,qBAAA,EAAc;AAChC,MAAA,IAAIC,yBAAA,CAAkBa,WAAS,CAAA,EAAG;AAChC,QAAAC,yBAAA,CAAgBD,aAAW,EAAE,WAAA,EAAa,CAAA,EAAG,gBAAgB,MAAM,CAAA;AAAA,MACrE;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,QAAA,KAAmD;AACzE,IAAA,MAAA,CAAO,OAAO,MAAM;AAClB,MAAA,MAAMA,cAAYd,qBAAA,EAAc;AAChC,MAAA,IAAIC,yBAAA,CAAkBa,WAAS,CAAA,EAAG;AAChC,QAAAC,yBAAA,CAAgBD,WAAA,EAAW;AAAA,UACzB,oBAAoB,QAAA,CAAS,UAAA;AAAA,UAC7B,OAAO,QAAA,CAAS;AAAA,SACjB,CAAA;AAAA,MACH;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,MAAM,UAAA,GAAaf,kBAAY,MAAM;AACnC,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAA,CAAO,eAAA,CAAgBiB,0BAAqB,UAAU,CAAA;AAAA,IACxD,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,eAAA,CAAgBA,0BAAqB,IAAI,CAAA;AAAA,IAClD;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,MAAM,CAAC,CAAA;AAEnB,EAAA,MAAM,eAAe,MAAM;AACzB,IAAA,MAAA,CAAO,eAAA,CAAgBC,iCAAyB,MAAS,CAAA;AAAA,EAC3D,CAAA;AAEA,EAAA,MAAM,mBAAmB,MAAM;AAC7B,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,MAAA,CAAO,eAAA,CAAgBC,oCAA+B,MAAS,CAAA;AAAA,IACjE,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,eAAA,CAAgBC,0BAAqB,MAAS,CAAA;AAAA,IACvD;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,qBAAqB,MAAM;AAC/B,IAAA,IAAI,cAAc,IAAA,EAAM;AACtB,MAAA,MAAA,CAAO,eAAA,CAAgBC,kCAA6B,MAAS,CAAA;AAAA,IAC/D,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,eAAA,CAAgBD,0BAAqB,MAAS,CAAA;AAAA,IACvD;AAAA,EACF,CAAA;AACA,EAAA,SAASd,iBAAgBS,WAAA,EAAgB;AACvC,IAAA,MAAM,SAASA,WAAA,CAAU,MAAA;AACzB,IAAA,MAAM,QAAQA,WAAA,CAAU,KAAA;AACxB,IAAA,MAAM,UAAA,GAAaA,WAAA,CAAU,MAAA,CAAO,OAAA,EAAQ;AAC5C,IAAA,MAAM,SAAA,GAAYA,WAAA,CAAU,KAAA,CAAM,OAAA,EAAQ;AAC1C,IAAA,IAAI,eAAe,SAAA,EAAW;AAC5B,MAAA,OAAO,UAAA;AAAA,IACT;AACA,IAAA,MAAM,UAAA,GAAaA,YAAU,UAAA,EAAW;AACxC,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,OAAOO,sBAAA,CAAa,KAAK,CAAA,GAAI,UAAA,GAAa,SAAA;AAAA,IAC5C,CAAA,MAAO;AACL,MAAA,OAAOA,sBAAA,CAAa,MAAM,CAAA,GAAI,SAAA,GAAY,UAAA;AAAA,IAC5C;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAQ,oBAAoB,SAAA,EAAU;AACnE;AAEA,IAAO,0BAAA,GAAQ,kBAAA;AC/Uf,SAAS,kBAAA,CAAmB,EAAE,MAAA,EAAO,EAA4B;AAC/D,EAAA,MAAM,SAAA,GAAY5B,aAAuB,IAAI,CAAA;AAC7C,EAAA,MAAM,QAAA,GAAWA,aAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,YAAA,GAAeA,aAAO,KAAK,CAAA;AACjC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI3B,eAAS,EAAE,CAAA;AACzC,EAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAA+B,IAAI,CAAA;AAE7E,EAAA,MAAM,gBAAA,GAAmBiC,kBAAY,MAAM;AACzC,IAAA,MAAM,eAAA,GAAkB,OAAO,YAAA,EAAa;AAC5C,IAAA,MAAM,YAAYC,qBAAAA,EAAc;AAChC,IAAA,IAAIC,yBAAAA,CAAkB,SAAS,CAAA,EAAG;AAChC,MAAA,MAAM,IAAA,GAAO,gBAAgB,SAAS,CAAA;AACtC,MAAA,MAAM,MAAA,GAAS,KAAK,SAAA,EAAU;AAC9B,MAAA,IAAIK,gBAAAA,CAAY,MAAM,CAAA,EAAG;AACvB,QAAA,UAAA,CAAW,MAAA,CAAO,QAAQ,CAAA;AAAA,MAC5B,CAAA,MAAA,IAAWA,gBAAAA,CAAY,IAAI,CAAA,EAAG;AAC5B,QAAA,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA;AAAA,MAC1B,CAAA,MAAO;AACL,QAAA,UAAA,CAAW,EAAE,CAAA;AAAA,MACf;AAAA,IACF;AAEA,IAAA,MAAM,aAAa,SAAA,CAAU,OAAA;AAE7B,IAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAE/B,IAAA,IAAI,CAAC,UAAA,EAAY;AAEjB,IAAA,MAAM,WAAA,GAAc,OAAO,cAAA,EAAe;AAE1C,IAAA,IACE,SAAA,IACA,eAAA,IACA,CAAC,eAAA,CAAgB,WAAA,IACjB,eACA,WAAA,CAAY,QAAA,CAAS,eAAA,CAAgB,UAAU,CAAA,EAC/C;AACA,MAAA,MAAM,QAAA,GAAW,eAAA,CAAgB,UAAA,CAAW,CAAC,CAAA;AAC7C,MAAA,IAAI,IAAA;AACJ,MAAA,IAAI,eAAA,CAAgB,eAAe,WAAA,EAAa;AAC9C,QAAA,IAAI,KAAA,GAA+B,WAAA;AACnC,QAAA,OAAO,KAAA,CAAM,iBAAA,IAAqB,IAAA,EAAM,KAAA,GAAQ,KAAA,CAAM,iBAAA;AACtD,QAAA,IAAA,GAAO,MAAM,qBAAA,EAAsB;AAAA,MACrC,CAAA,MAAO;AACL,QAAA,IAAA,GAAO,SAAS,qBAAA,EAAsB;AAAA,MACxC;AAEA,MAAA,IAAI,CAAC,aAAa,OAAA,EAAS;AACzB,QAAA,qBAAA,CAAsB,YAAY,IAAI,CAAA;AAAA,MACxC;AACA,MAAA,gBAAA,CAAiB,SAAS,CAAA;AAAA,IAC5B,CAAA,MAAA,IAAW,CAAC,aAAA,IAAiB,aAAA,CAAc,cAAc,YAAA,EAAc;AACrE,MAAA,qBAAA,CAAsB,YAAY,IAAI,CAAA;AACtC,MAAA,gBAAA,CAAiB,IAAI,CAAA;AACrB,MAAA,WAAA,CAAY,KAAK,CAAA;AACjB,MAAA,UAAA,CAAW,EAAE,CAAA;AAAA,IACf;AAEA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAAvC,gBAAU,MAAM;AACd,IAAA,OAAOwC,mBAAAA;AAAA,MACL,MAAA,CAAO,sBAAA,CAAuB,CAAC,EAAE,aAAY,KAA4B;AACvE,QAAA,WAAA,CAAY,KAAK,MAAM;AACrB,UAAA,gBAAA,EAAiB;AAAA,QACnB,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,MAED,MAAA,CAAO,eAAA;AAAA,QACLC,gCAAAA;AAAA,QACA,MAAM;AACJ,UAAA,gBAAA,EAAiB;AACjB,UAAA,OAAO,IAAA;AAAA,QACT,CAAA;AAAA,QACA;AAAA;AACF,KACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,gBAAgB,CAAC,CAAA;AAE7B,EAAAzC,gBAAU,MAAM;AACd,IAAA,MAAA,CAAO,cAAA,EAAe,CAAE,IAAA,CAAK,MAAM;AACjC,MAAA,gBAAA,EAAiB;AAAA,IACnB,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,MAAA,EAAQ,gBAAgB,CAAC,CAAA;AAE7B,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,UAAA,IAAc,SAAS,OAAA,EAAS;AAClC,MAAA,QAAA,CAAS,QAAQ,KAAA,EAAM;AAAA,IACzB;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,uBACE4B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAuB,KAAK,SAAA,EACxC,QAAA,EAAA;AAAA,IAAA,UAAA,mBACC3B,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,YAAA;AAAA,QACV,KAAA,EAAO,OAAA;AAAA,QACP,UAAU,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,QAC1C,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,UAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,IAAI,aAAA,IAAiB,YAAY,EAAA,EAAI;AACnC,cAAA,MAAA,CAAO,eAAA,CAAgBgD,0BAAqB,OAAO,CAAA;AAAA,YACrD;AACA,YAAA,WAAA,CAAY,KAAK,CAAA;AAAA,UACnB,CAAA,MAAA,IAAW,CAAA,CAAE,GAAA,KAAQ,QAAA,EAAU;AAC7B,YAAA,CAAA,CAAE,cAAA,EAAe;AACjB,YAAA,WAAA,CAAY,KAAK,CAAA;AAAA,UACnB;AAAA,QACF,CAAA;AAAA,QACA,WAAA,EAAY;AAAA;AAAA,wBAGdhD,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBACb,QAAA,kBAAAA,cAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,SAAS,MAAA,EAAO,QAAA,EAAS,KAAI,qBAAA,EACnC,QAAA,EAAA,OAAA,IAAW,oBACd,CAAA,EACF,CAAA;AAAA,oBAGFA,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,aAAA;AAAA,QACV,WAAA,EAAa,CAAC,CAAA,KAAM,CAAA,CAAE,cAAA,EAAe;AAAA,QACrC,SAAS,MAAM;AACb,UAAA,OAAA,CAAQ,GAAA,CAAI,wBAAwB,UAAU,CAAA;AAC9C,UAAA,IAAI,UAAA,EAAY,MAAA,CAAO,eAAA,CAAgBgD,wBAAAA,EAAqB,OAAO,CAAA;AACnE,UAAA,WAAA,CAAY,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AAAA,QAC7B,CAAA;AAAA,QACA,0BAAAhD,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAM,UAAA,GAAa,UAAU,MAAA,EAAQ;AAAA;AAAA;AAC7C,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,gBAAgB8C,WAAA,EAA2B;AAClD,EAAA,MAAM,UAAA,GAAaA,WAAA,CAAU,MAAA,CAAO,OAAA,EAAQ;AAC5C,EAAA,MAAM,SAAA,GAAYA,WAAA,CAAU,KAAA,CAAM,OAAA,EAAQ;AAC1C,EAAA,IAAI,UAAA,KAAe,WAAW,OAAO,UAAA;AAErC,EAAA,MAAM,UAAA,GAAaA,YAAU,UAAA,EAAW;AACxC,EAAA,OAAO,UAAA,GACHO,sBAAAA,CAAaP,WAAA,CAAU,KAAK,CAAA,GAC1B,UAAA,GACA,SAAA,GACFO,sBAAAA,CAAaP,WAAA,CAAU,MAAM,CAAA,GAC3B,SAAA,GACA,UAAA;AACR;AAGA,SAAS,qBAAA,CAAsB,QAAqB,IAAA,EAAsB;AACxE,EAAA,IAAI,CAAC,IAAA,EAAM;AACT,IAAA,MAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AACvB,IAAA,MAAA,CAAO,MAAM,GAAA,GAAM,SAAA;AACnB,IAAA,MAAA,CAAO,MAAM,IAAA,GAAO,SAAA;AACpB,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,cAAc,MAAA,CAAO,WAAA;AAC3B,EAAA,MAAM,eAAe,MAAA,CAAO,YAAA;AAC5B,EAAA,MAAM,gBAAgB,MAAA,CAAO,UAAA;AAC7B,EAAA,MAAM,iBAAiB,MAAA,CAAO,WAAA;AAG9B,EAAA,IAAI,MAAM,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,MAAA,GAAS,OAAO,WAAA,GAAc,EAAA;AACxD,EAAA,IAAI,IAAA,GAAO,KAAK,IAAA,GAAO,MAAA,CAAO,cAAc,WAAA,GAAc,CAAA,GAAI,KAAK,KAAA,GAAQ,CAAA;AAG3E,EAAA,IAAI,IAAA,GAAO,GAAG,IAAA,GAAO,CAAA;AACrB,EAAA,IAAI,IAAA,GAAO,cAAc,aAAA,GAAgB,CAAA;AACvC,IAAA,IAAA,GAAO,gBAAgB,WAAA,GAAc,CAAA;AAGvC,EAAA,IAAI,GAAA,GAAM,YAAA,GAAe,cAAA,GAAiB,CAAA,EAAG;AAC3C,IAAA,GAAA,GAAM,IAAA,CAAK,GAAA,GAAM,MAAA,CAAO,WAAA,GAAc,YAAA,GAAe,EAAA;AAAA,EACvD;AACA,EAAA,IAAI,GAAA,GAAM,GAAG,GAAA,GAAM,CAAA;AAEnB,EAAA,MAAA,CAAO,MAAM,OAAA,GAAU,GAAA;AACvB,EAAA,MAAA,CAAO,KAAA,CAAM,GAAA,GAAM,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA;AACzB,EAAA,MAAA,CAAO,KAAA,CAAM,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA;AAC7B;AAEA,IAAO,0BAAA,GAAQ,kBAAA;ACvMR,IAAM,iBAAA,GAAoB;AAAA,EAC/B,iBAAA,EAAmB,mBAAA;AAAA,EACnB,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,gBAAA;AAAA,EAChB,qBAAA,EAAuB;AACzB,CAAA;AAEO,IAAM,2BAAA,GAA8B,EAAA;AACpC,IAAM,2BAAA,GAA8B,EAAA;AAIpC,IAAM,QAAQ,MACnB,IAAA,CAAK,MAAA,EAAO,CAAE,SAAS,EAAE,CAAA,CAAE,SAAA,CAAU,CAAA,EAAG,EAAE,CAAA,GAAI,IAAA,CAAK,GAAA,EAAI,CAAE,SAAS,EAAE,CAAA;AAE/D,IAAM,MAAA,GAAS,CAAC,KAAA,KAAmD;AACxE,EAAA,IAAI,KAAA,GAAQ,MAAM,OAAO,EAAE,OAAO,KAAA,CAAM,QAAA,EAAS,EAAG,IAAA,EAAM,OAAA,EAAQ;AAClE,EAAA,MAAM,KAAK,KAAA,GAAQ,IAAA;AACnB,EAAA,IAAI,EAAA,GAAK,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,GAAG,OAAA,CAAQ,CAAC,CAAA,EAAG,IAAA,EAAM,IAAA,EAAK;AACzD,EAAA,MAAM,KAAK,EAAA,GAAK,IAAA;AAChB,EAAA,IAAI,EAAA,GAAK,IAAA,EAAM,OAAO,EAAE,KAAA,EAAO,GAAG,OAAA,CAAQ,CAAC,CAAA,EAAG,IAAA,EAAM,IAAA,EAAK;AACzD,EAAA,MAAM,KAAK,EAAA,GAAK,IAAA;AAChB,EAAA,OAAO,EAAE,KAAA,EAAO,EAAA,CAAG,QAAQ,CAAC,CAAA,EAAG,MAAM,IAAA,EAAK;AAC5C,CAAA;AA0CO,IAAM,gBAAgB,CAAC;AAAA,EAC5B,MAAA,GAAS;AAAA,IACP,SAAA,EAAW,CAAC,MAAA,EAAQ,MAAA,EAAQ,SAAS,MAAM,CAAA;AAAA,IAC3C,iBAAA,EAAmB,CAAC,MAAM;AAAA,GAC5B;AAAA,EACA,OAAA,GAAU,8BAA8B,IAAA,GAAO,IAAA;AAAA,EAC/C,QAAA,GAAW,2BAAA;AAAA,EACX,QAAA,GAAW,IAAA;AAAA,EACX,UAAA,GAAa,KAAA;AAAA,EACb,kBAAA,GAAqB,KAAA;AAAA,EACrB,QAAQ,EAAC;AAAA,EACT,mBAAmB,MAAM;AAAA,EAAC;AAC5B,CAAA,KAAiD;AAC/C,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAIhD,eAAS,KAAK,CAAA;AAC9D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,IAAIA,cAAAA,CAAyB,KAAA,IAAS,EAAE,CAAA;AAC5E,EAAA,MAAM,CAAC,aAAA,EAAe,eAAe,CAAA,GAAIA,cAAAA;AAAA,IACvC;AAAC,GACH;AAGA,EAAA,MAAM,YAAA,GAAe,CAAC,SAAA,KAA8B;AAClD,IAAA,QAAQ,SAAA;AAAW,MACjB,KAAK,iBAAA,CAAkB,iBAAA;AACrB,QAAA,OAAO,sDAAA;AAAA,MACT,KAAK,kBAAkB,cAAA,EAAgB;AACrC,QAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,OAAO,OAAO,CAAA;AACtC,QAAA,OAAO,CAAA,wCAAA,EAA2C,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AAAA,MACjE;AAAA,MACA,KAAK,iBAAA,CAAkB,cAAA;AACrB,QAAA,OAAO,6CAA6C,QAAQ,CAAA,CAAA,CAAA;AAAA,MAC9D,KAAK,iBAAA,CAAkB,qBAAA;AACrB,QAAA,OAAO,oEAAA;AAAA,MACT;AACE,QAAA,OAAO,iCAAA;AAAA;AACX,EACF,CAAA;AAGA,EAAAC,gBAAU,MAAM;AACd,IAAA,gBAAA,CAAiB,YAAY,CAAA;AAAA,EAC/B,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAGjB,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAe,YAAA,EAAc,IAAA,KAASuD,yBAAA,CAAY;AAAA,IACtE,MAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA,EAAU,UAAA;AAAA,IACV,OAAA,EAAS,IAAA;AAAA,IACT,kBAAA,EAAoB,MAAM,mBAAA,CAAoB,KAAK,CAAA;AAAA,IACnD,kBAAkB,MAAM;AACtB,MAAA,IAAI,CAAC,UAAA,EAAY,mBAAA,CAAoB,IAAI,CAAA;AAAA,IAC3C,CAAA;AAAA,IACA,MAAA,EAAQ,OAAO,cAAA,EAAgB,cAAA,KAAmB;AAChD,MAAA,MAAM,aAAA,GAAgB,MAAM,OAAA,CAAQ,GAAA;AAAA,QAClC,cAAA,CAAe,GAAA,CAAI,OAAO,IAAA,KAAS;AACjC,UAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAGlB,UAAA,IAAI,IAAA,CAAK,SAAS,YAAA,EAAc;AAC9B,YAAA,IAAI;AACF,cAAA,MAAM,IAAA,GAAO,MAAMC,yBAAA,CAAS,EAAE,MAAM,IAAA,EAAM,MAAA,EAAQ,cAAc,CAAA;AAChE,cAAA,MAAM,YAAY,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,GAAI,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA;AAClD,cAAA,MAAM,gBAAgB,IAAI,IAAA;AAAA,gBACxB,CAAC,SAAS,CAAA;AAAA,gBACV,GAAG,IAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAA,KAAA,CAAA;AAAA,gBACpC,EAAE,MAAM,YAAA;AAAa,eACvB;AACA,cAAA,OAAO,MAAA,CAAO,OAAO,aAAA,EAAe;AAAA,gBAClC,MAAM,KAAA,EAAM;AAAA,gBACZ,OAAA,EAAS,GAAA,CAAI,eAAA,CAAgB,aAAa;AAAA,eAC3C,CAAA;AAAA,YACH,SAAS,GAAA,EAAK;AACZ,cAAA,OAAA,CAAQ,KAAA,CAAM,0BAA0B,GAAG,CAAA;AAC3C,cAAA,MAAM,GAAA,GAAM,YAAA,CAAa,iBAAA,CAAkB,qBAAqB,CAAA;AAChE,cAAA,eAAA,CAAgB,CAAC,IAAA,KAAS;AAAA,gBACxB,GAAG,IAAA;AAAA,gBACH;AAAA,kBACE,IAAA;AAAA,kBACA,OAAA,EAAS,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAA;AAAA,kBACjC,cAAA,EAAgB,CAAC,GAAG,CAAA;AAAA,kBACpB,MAAA,EAAQ;AAAA,oBACN;AAAA,sBACE,MAAM,iBAAA,CAAkB,qBAAA;AAAA,sBACxB,OAAA,EAAS;AAAA;AACX;AACF;AACF,eACD,CAAA;AACD,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF;AAGA,UAAA,OAAO,MAAA,CAAO,OAAO,IAAA,EAAM;AAAA,YACzB,MAAM,KAAA,EAAM;AAAA,YACZ,OAAA,EAAS,GAAA,CAAI,eAAA,CAAgB,IAAI;AAAA,WAClC,CAAA;AAAA,QACH,CAAC;AAAA,OACH;AAEA,MAAA,MAAM,UAAA,GAAa,aAAA,CAAc,MAAA,CAAO,OAAO,CAAA;AAE/C,MAAA,IAAI,CAAC,UAAA,EAAY;AACf,QAAA,IAAI,WAAW,kBAAA,GAAqB,EAAC,GAAI,CAAC,GAAG,YAAY,CAAA;AACzD,QAAA,QAAA,GAAW,CAAC,GAAG,QAAA,EAAU,GAAG,UAAU,CAAA;AAEtC,QAAA,MAAM,mBAAmB,cAAA,CAAe,GAAA;AAAA,UACtC,CAAC,IAAA,KAAS;AACR,YAAA,MAAM,cAAA,GAAiB,KAAK,MAAA,CAAO,GAAA;AAAA,cAAI,CAAC,GAAA,KACtC,YAAA,CAAa,GAAA,CAAI,IAAI;AAAA,aACvB;AACA,YAAA,OAAO;AAAA,cACL,MAAM,IAAA,CAAK,IAAA;AAAA,cACX,MAAA,EAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,CAAC,GAAA,MAAS,EAAE,IAAA,EAAM,GAAA,CAAI,IAAA,EAAM,OAAA,EAAS,GAAA,CAAI,SAAQ,CAAE,CAAA;AAAA,cAC3E,OAAA,EAAS,GAAA,CAAI,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AAAA,cACtC;AAAA,aACF;AAAA,UACF;AAAA,SACF;AAEA,QAAA,eAAA,CAAgB,CAAC,IAAA,KAAS,CAAC,GAAG,IAAA,EAAM,GAAG,gBAAgB,CAAC,CAAA;AACxD,QAAA,eAAA,CAAgB,QAAQ,CAAA;AACxB,QAAA,OAAO,QAAA;AAAA,MACT;AAEA,MAAA,OAAO,YAAA;AAAA,IACT,CAAA;AAAA,IACA,SAAA,EAAW,CAAC,IAAA,KAAS;AACnB,MAAA,MAAM,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAK,GAAI,IAAA;AACjC,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,MAAM,MAAM,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,IAAO,WAAA,EAAY;AACnD,QAAA,IACE,UACA,MAAA,GAAS,IAAI,CAAA,IACb,MAAA,GAAS,IAAI,CAAA,CAAE,MAAA,IACf,CAAC,MAAA,GAAS,IAAI,CAAA,CAAE,QAAA,CAAS,CAAA,CAAA,EAAI,GAAG,EAAE,CAAA,EAClC;AACA,UAAA,OAAO;AAAA,YACL,MAAM,iBAAA,CAAkB,iBAAA;AAAA,YACxB,OAAA,EAAS,YAAA,CAAa,iBAAA,CAAkB,iBAAiB;AAAA,WAC3D;AAAA,QACF;AAAA,MACF;AACA,MAAA,OAAO,IAAA;AAAA,IACT;AAAA,GACD,CAAA;AAGD,EAAA,MAAM,UAAA,GAAaxB,iBAAAA;AAAA,IACjB,CAAC,IAAA,KAAiB;AAChB,MAAA,eAAA,CAAgB,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,IAAA,KAAS,IAAI,CAAC,CAAA;AAAA,IACrE,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GAClB;AAGA,EAAA,MAAM,kBAAA,GAAqBA,kBAAY,MAAM;AAC3C,IAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,EACpB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAhC,gBAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,GAAA,CAAI,eAAA,CAAgB,CAAA,CAAE,OAAO,CAAC,CAAA;AACvE,MAAA,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,GAAA,CAAI,eAAA,CAAgB,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,IAC1E,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA,EAAgB,IAAA;AAAA,IAChB,UAAA;AAAA,IACA;AAAA,GACF;AACF,CAAA;ACnPA,IAAM,YAAA,GAA4C,CAAC,EAAE,gBAAA,EAAiB,KAAM;AAC1E,EAAA,MAAM;AAAA,IACJ,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,MACE,aAAA,CAAc;AAAA,IAChB,QAAA,EAAU,IAAA;AAAA,IACV,QAAA,EAAU,CAAA;AAAA,IACV,OAAA,EAAS,IAAI,IAAA,GAAO,IAAA;AAAA;AAAA,IACpB,gBAAA,EAAkB,CAAC,KAAA,KAAU;AAC3B,MAAA,gBAAA,CAAiB,KAAK,CAAA;AAAA,IACxB;AAAA,GACD,CAAA;AAED,EAAA,uBACEC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EAEb,0BAAA2B,eAAAA,CAAC,KAAA,EAAA,EAAK,GAAG,YAAA,EAAa,EACpB,QAAA,EAAA;AAAA,oBAAA3B,cAAAA,CAAC,OAAA,EAAA,EAAO,GAAG,aAAA,EAAc,EAAG,CAAA;AAAA,oBAC5BA,cAAAA,CAAC,QAAA,EAAA,EAAO,OAAA,EAAS,cAAA,EACf,QAAA,kBAAAA,cAAAA,CAAC,YAAA,EAAA,EAAK,SAAA,EAAU,aAAA,EAAc,IAAA,EAAK,QAAA,EAAS,CAAA,EAC9C;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ,CAAA;AAEA,IAAO,oBAAA,GAAQ,YAAA;ACbA,SAAR,YAA6B,EAAE,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,QAAO,EAAqB;AACvF,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAElB,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,IAAQ,SAAA;AAC3B,EAAA,MAAM,YACJ,IAAA,YAAgB,IAAA,GACZ,KAAK,IAAA,GACJ,MAAA,IAAU,QAAQ,IAAA,CAAK,IAAA,KAAS,MAAA,GAC/B,IAAA,CAAK,OACJ,OAAA,IAAW,IAAA,IAAQ,KAAK,KAAA,KAAU,MAAA,GAAY,KAAK,KAAA,GAAQ,IAAA;AACpE,EAAA,MAAM,WAAA,GAAA,CAAe,KAAA,IAAS,IAAA,GAAO,IAAA,EAAM,MAAM,IAAA,KAAS,IAAA;AAG1D,EAAA,MAAM,GAAA,GAAMwD,cAAQ,MAAM;AACxB,IAAA,IAAI,aAAa,OAAO,WAAA;AACxB,IAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,IAAA,YAAgB,IAAA,EAAM;AACzD,MAAA,IAAI;AACF,QAAA,OAAO,GAAA,CAAI,gBAAgB,IAAI,CAAA;AAAA,MACjC,SAAS,CAAA,EAAG;AACV,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AACA,IAAA,OAAO,IAAA;AAAA,EACT,CAAA,EAAG,CAAC,IAAA,EAAM,WAAW,CAAC,CAAA;AAEtB,EAAA,MAAM,eAAA,GAAkB,CAAC,KAAA,KAAyB;AAChD,IAAA,IAAI,CAAC,KAAA,IAAS,KAAA,KAAU,CAAA,EAAG,OAAO,EAAA;AAClC,IAAA,MAAM,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,KAAA,GAAQ,IAAI,CAAA;AAClC,IAAA,IAAI,EAAA,GAAK,IAAA,EAAM,OAAO,CAAA,EAAG,EAAE,CAAA,CAAA,CAAA;AAC3B,IAAA,MAAM,KAAK,IAAA,CAAK,KAAA,CAAO,QAAQ,IAAA,GAAO,IAAA,GAAQ,EAAE,CAAA,GAAI,EAAA;AACpD,IAAA,OAAO,GAAG,EAAE,CAAA,CAAA,CAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CAAC,CAAA,KAAwB;AAC1C,IAAA,CAAA,CAAE,cAAA,EAAe;AACjB,IAAA,IAAI,MAAA,EAAQ,OAAO,MAAA,CAAO,GAAA,IAAO,IAAI,CAAA;AACrC,IAAA,IAAI,GAAA,EAAK,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,UAAU,UAAU,CAAA;AAAA,EAChD,CAAA;AAEA,EAAA,MAAM,YAAA,GAAe,CAACC,MAAAA,KAAmB;AACvC,IAAA,IAAI,QAAA,WAAmBA,MAAK,CAAA;AAAA,EAC9B,CAAA;AAEA,EAAA,uBACE9B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EAAU,MAAK,OAAA,EAAQ,YAAA,EAAY,CAAA,WAAA,EAAc,IAAI,CAAA,CAAA,EAClE,QAAA,EAAA;AAAA,oBAAAA,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,UAAA,EACb,QAAA,EAAA;AAAA,sBAAA3B,cAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,MAAM,GAAA,IAAO,GAAA;AAAA,UACb,SAAA,EAAU,cAAA;AAAA,UACV,OAAA,EAAS,UAAA;AAAA,UACT,KAAA,EAAO,IAAA;AAAA,UACP,MAAA,EAAO,QAAA;AAAA,UACP,GAAA,EAAI,qBAAA;AAAA,UACH,QAAA,EAAA;AAAA;AAAA,OACH;AAAA,MACC,aAAa,IAAA,oBACZ2B,eAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,UAAA,EAAW,QAAA,EAAA;AAAA,QAAA,OAAA;AAAA,QAAQ,gBAAgB,SAAS,CAAA;AAAA,QAAE;AAAA,OAAA,EAAC;AAAA,KAAA,EAEnE,CAAA;AAAA,oBAEA3B,cAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,SAAA,EAAU,WAAA;AAAA,QACV,YAAA,EAAY,UAAU,IAAI,CAAA,CAAA;AAAA,QAC1B,OAAA,EAAS,MAAM,YAAA,CAAa,KAAK,CAAA;AAAA,QAAG,QAAA,EAAA;AAAA;AAAA;AAEtC,GAAA,EACF,CAAA;AAEJ;AC/DA,IAAM,mBAAA,GAAsB,CAC1B,MAAA,EACA,EAAE,QAAA,EAAU,OAAO,QAAA,EAAU,kBAAA,EAAoB,SAAA,EAAW,cAAA,EAAe,KACxE;AACH,EAAA,QAAQ,OAAO,IAAA;AAAM,IACnB,KAAK,UAAA,CAAW,IAAA;AAAA,IAChB,KAAK,UAAA,CAAW,IAAA;AAAA,IAChB,KAAK,UAAA,CAAW,IAAA;AAAA,IAChB,KAAK,UAAA,CAAW,MAAA;AAAA,IAChB,KAAK,UAAA,CAAW,SAAA;AAAA,IAChB,KAAK,UAAA,CAAW,cAAA;AAAA,IAChB,KAAK,UAAA,CAAW,MAAA;AAAA,IAChB,KAAK,UAAA,CAAW,IAAA;AACd,MAAA,uBACEA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,WAAW,CAAA,gBAAA,EAAmB,kBAAA,GAAqB,OAAO,IAAI,CAAA,GAAI,uBAAuB,EAAE,CAAA,CAAA;AAAA,UAC3F,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,UAC5B,CAAA;AAAA,UACA,0BAAAA,cAAAA,CAAC,YAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,SAAA;AAAA,QALrD,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA,OAMpC;AAAA,IAEJ,KAAK,UAAA,CAAW,UAAA;AACd,MAAA,uBACEA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,SAAA,KAAc,IAAA,GAAO,oBAAA,GAAuB,EAAA;AAAA,UACvD,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,UAC5B,CAAA;AAAA,UACA,0BAAAA,cAAAA,CAAC,YAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,SAAA;AAAA,QALrD,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA,OAMpC;AAAA,IAEJ,KAAK,UAAA,CAAW,UAAA;AACd,MAAA,uBACEA,cAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAW,SAAA,KAAc,IAAA,GAAO,oBAAA,GAAuB,EAAA;AAAA,UACvD,SAAS,MAAM;AACb,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,UAC5B,CAAA;AAAA,UACA,0BAAAA,cAAAA,CAAC,YAAA,EAAA,EAAK,WAAU,sBAAA,EAAuB,IAAA,EAAM,OAAO,IAAA,EAAM;AAAA,SAAA;AAAA,QALrD,CAAA,EAAG,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA,OAMpC;AAAA,IAEJ,KAAK,UAAA,CAAW,UAAA;AACd,MAAA,uBACEA,cAAAA;AAAA,QAAC,oBAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,KAAA,GAAQ,MAAA,CAAO,IAAI,CAAA;AAAA,UAC1B,gBAAA,EAAkB,CAAC,CAAA,KAAM;AACvB,YAAA,OAAA,CAAQ,GAAA,CAAI,wCAAiC,CAAC,CAAA;AAC9C,YAAA,QAAA,CAAS,CAAC,IAAA,KAAS;AACjB,cAAA,OAAO,EAAE,GAAG,IAAA,EAAM,CAAC,MAAA,CAAO,IAAI,GAAG,CAAA,EAAE;AAAA,YACrC,CAAC,CAAA;AAED,YAAA,cAAA,CAAe,CAAC,CAAA;AAAA,UAClB;AAAA;AAAA,OACF;AAAA,IAEJ,KAAK,UAAA,CAAW,UAAA;AACd,MAAA,uBACEA,cAAAA;AAAA,QAAC,UAAA;AAAA,QAAA;AAAA,UACC,OAAO,kBAAA,GAAqB,MAAA,CAAO,IAAI,CAAA,IAAK,KAAA,GAAQ,OAAO,IAAI,CAAA;AAAA,UAC/D,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,UACzB;AAAA;AAAA,OACF;AAAA,IAEJ,KAAK,UAAA,CAAW,QAAA;AACd,MAAA,uBACEA,cAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,OAAO,kBAAA,GAAqB,MAAA,CAAO,IAAI,CAAA,IAAK,KAAA,GAAQ,OAAO,IAAI,CAAA;AAAA,UAC/D,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,UACzB;AAAA;AAAA,OACF;AAAA,IAEJ,KAAK,WAAW,KAAA,CAAM,IAAA;AACpB,MAAA,uBACEA,cAAAA;AAAA,QAAC,WAAA;AAAA,QAAA;AAAA,UACC,OAAO,kBAAA,GAAqB,MAAA,CAAO,IAAI,CAAA,IAAK,KAAA,GAAQ,OAAO,IAAI,CAAA;AAAA,UAC/D,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,UACzB;AAAA;AAAA,OACF;AAAA,IAEJ,KAAK,WAAW,KAAA,CAAM,IAAA;AACpB,MAAA,uBACEA,cAAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,OAAO,kBAAA,GAAqB,MAAA,CAAO,IAAI,CAAA,IAAK,KAAA,GAAQ,OAAO,IAAI,CAAA;AAAA,UAC/D,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,YAAA,QAAA,CAAS,MAAA,CAAO,MAAM,CAAC,CAAA;AAAA,UACzB;AAAA;AAAA,OACF;AAIF;AAEJ,EAAA,IAAI,MAAA,CAAO,SAAS,oBAAA,CAAqB,OAAA;AACvC,IAAA,uBAAOA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,OAC9B,OAAO,GAAA;AACd,CAAA;AAMA,IAAM,YAAA,GAAe,CACnB,MAAA,EAKA;AAAA,EACE,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,kBAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,KACG;AACH,EAAA,QAAQ,OAAO,IAAA;AAAM,IACnB,KAAK,oBAAA,CAAqB,OAAA;AACxB,MAAA,uBACEA,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU;AAAA,SAAA;AAAA,QADL,CAAA,QAAA,EAAW,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA,OAE5C;AAAA,IAEJ,KAAK,oBAAA,CAAqB,SAAA;AACxB,MAAA,OAAO,oBAAoB,MAAA,EAAQ;AAAA,QACjC,QAAA;AAAA,QACA,KAAA;AAAA,QACA,QAAA;AAAA,QACA,kBAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACD,CAAA;AAAA,IACH,KAAK,oBAAA,CAAqB,OAAA;AACxB,MAAA,uBACE2B,eAAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UAEC,SAAA,EAAU,iBAAA;AAAA,UACT,QAAA,EAAA;AAAA,YAAA,MAAA,mBACC3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBACZ,QAAA,EAAA,MAAA,CAAO,OAAA,EAAS,MAAA,IAAU,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,GACnD,OAAO,OAAA,EAAS,GAAA;AAAA,cAAI,CAAC,MAAA,KACnB,mBAAA,CAAoB,MAAA,EAAQ;AAAA,gBAC1B,QAAA;AAAA,gBACA,KAAA;AAAA,gBACA,QAAA;AAAA,gBACA,kBAAA;AAAA,gBACA,SAAA;AAAA,gBACA;AAAA,eACD;AAAA,aACH,GACA,MACN,CAAA,GACE,IAAA;AAAA,4BACJA,cAAAA,CAAC,QAAA,EAAA,EAAO,SAAS,MAAM,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA,EAC9C,QAAA,kBAAAA,eAAC,YAAA,EAAA,EAAK,SAAA,EAAU,wBAAuB,IAAA,EAAM,MAAA,CAAO,MAAa,CAAA,EACnE;AAAA;AAAA,SAAA;AAAA,QApBK,CAAA,QAAA,EAAW,MAAA,CAAO,IAAI,CAAA,CAAA,EAAI,OAAO,IAAI,CAAA;AAAA,OAqB5C;AAGF;AAEJ,EAAA,OAAO,GAAA;AACT,CAAA;AAMA,SAAS,OAAA,CAAQ,EAAE,aAAA,EAAe,YAAA,EAAa,EAAiB;AAC9D,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIF,eAAS,IAAI,CAAA;AACzC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,cAAAA,CAA8B,EAAE,CAAA;AAC1D,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,eAAA,EAAgB;AAC3C,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,QAAQ,kBAAA,EAAoB,SAAA,KACpD,0BAAA,EAAmB;AACrB,EAAA,OAAA,CAAQ,GAAA,CAAI,6CAAsC,kBAAkB,CAAA;AACpE,EAAA,uBACE6B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,WAAW,UAAU,CAAA,EAAG,MAAA,mBAC7B3B,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA,KAAA,CAAM,WAAW,UAAU,CAAA,EAAG,IAAI,CAAC,IAAA,EAAY,0BAC9CA,cAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAM,IAAA;AAAA,QACN,KAAA;AAAA,QACA,QAAA,EAAU,CAACyD,MAAAA,KAAU;AACnB,UAAA,QAAA,CAAS,CAAC,IAAA,KAAc;AACtB,YAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,CAAW,UAAU,CAAA,CAAE,MAAA;AAAA,cAC/C,CAAC,KAAA,EAAa,CAAA,KAAc,CAAA,KAAMA;AAAA,aACpC;AAEA,YAAA,cAAA,CAAe,YAAY,CAAA;AAC3B,YAAA,OAAO;AAAA,cACL,GAAG,IAAA;AAAA,cACH,CAAC,UAAA,CAAW,UAAU,GAAG;AAAA,aAC3B;AAAA,UACF,CAAC,CAAA;AAAA,QACH;AAAA,OAAA;AAAA,MAfK;AAAA,KAiBR,GACH,CAAA,GACE,IAAA;AAAA,oBACJ9B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,YAAA;AAAA,MACA,UAAA,EAAY,GAAA;AAAA,QAAI,CAAC,MAAA,KAChB,YAAA,CAAa,MAAA,EAAQ;AAAA,UACnB,SAAA;AAAA,UACA,KAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA;AAAA,UACA,QAAA;AAAA,UACA,kBAAA;AAAA,UACA,SAAA;AAAA,UACA;AAAA,SACD;AAAA,OACH;AAAA,MACC,aAAA;AAAA,MACA,MAAA,GACG+B,sCAAa1D,cAAAA,CAAC,8BAAmB,MAAA,EAAgB,CAAA,EAAI,QAAA,CAAS,IAAI,CAAA,GAClE;AAAA,KAAA,EACN;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,IAAO,eAAA,GAAQ,OAAA;;;ACvQf,IAAM,kBAAA,GAAqB;AAAA,EACzB,GAAA,EAAK,KAAA;AAAA,EACL,GAAA,EAAK,KAAA;AAAA,EACL,WAAA,EAAa,oBAAA;AAAA,EACb,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,cAAA;AAAA,EACP,OAAA,EAAS;AAAA,IACP,EAAA,EAAI,mBAAA;AAAA,IACJ,EAAA,EAAI,mBAAA;AAAA,IACJ,EAAA,EAAI,mBAAA;AAAA,IACJ,EAAA,EAAI,mBAAA;AAAA,IACJ,EAAA,EAAI;AAAA,GACN;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,MAAA,EAAQ;AAAA,MACN,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,EAAA,EAAI,gBAAA;AAAA,IACJ,EAAA,EAAI,gBAAA;AAAA,IACJ,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,KAAA,EAAO,cAAA;AAAA,EACP,IAAA,EAAM,aAAA;AAAA,EACN,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,kBAAA;AAAA,IACN,MAAA,EAAQ,oBAAA;AAAA,IACR,UAAA,EAAY,wBAAA;AAAA,IACZ,OAAA,EAAS,qBAAA;AAAA,IACT,SAAA,EAAW,uBAAA;AAAA,IACX,aAAA,EAAe,2BAAA;AAAA,IACf,sBAAA,EAAwB,oCAAA;AAAA,IACxB,IAAA,EAAM;AAAA,GACR;AAAA,EACA,IAAA,EAAM,aAAA;AAAA,EACN,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ,kBAAA;AAAA,IACR,IAAA,EAAM,kBAAA;AAAA,IACN,OAAA,EAAS,sBAAA;AAAA,IACT,OAAA,EAAS,sBAAA;AAAA,IACT,KAAA,EAAO,qBAAA;AAAA,IACP,IAAA,EAAM,sBAAA;AAAA,IACN,KAAA,EAAO,sBAAA;AAAA,IACP,YAAA,EAAc,sBAAA;AAAA,IACd,OAAA,EAAS,qBAAA;AAAA,IACT,QAAA,EAAU,sBAAA;AAAA,IACV,OAAA,EAAS,sBAAA;AAAA,IACT,OAAA,EAAS,qBAAA;AAAA,IACT,MAAA,EAAQ,sBAAA;AAAA,IACR,QAAA,EAAU,sBAAA;AAAA,IACV,SAAA,EAAW,sBAAA;AAAA,IACX,QAAA,EAAU,sBAAA;AAAA,IACV,OAAA,EAAS,kBAAA;AAAA,IACT,SAAA,EAAW,sBAAA;AAAA,IACX,MAAA,EAAQ,sBAAA;AAAA,IACR,QAAA,EAAU,sBAAA;AAAA,IACV,MAAA,EAAQ,qBAAA;AAAA,IACR,QAAA,EAAU,sBAAA;AAAA,IACV,WAAA,EAAa,yBAAA;AAAA,IACb,KAAA,EAAO,sBAAA;AAAA,IACP,QAAA,EAAU,sBAAA;AAAA,IACV,MAAA,EAAQ,sBAAA;AAAA,IACR,MAAA,EAAQ,sBAAA;AAAA,IACR,GAAA,EAAK,sBAAA;AAAA,IACL,GAAA,EAAK,sBAAA;AAAA,IACL,QAAA,EAAU;AAAA;AAEd,CAAA;AACA,IAAO,0BAAA,GAAQ,kBAAA;AC1Df,SAAS,cAAA,CAAe,EAAE,WAAA,EAAY,EAAwB;AAC5D,EAAA,MAAM,CAAC,MAAM,CAAA,GAAI8B,gDAAAA,EAA0B;AAE3C,EAAA/B,gBAAU,MAAM;AACd,IAAA,MAAA,CAAO,OAAO,MAAM;AAClB,MAAA,MAAM,MAAA,GAAS,IAAI,SAAA,EAAU;AAC7B,MAAA,MAAM,GAAA,GAAM,MAAA,CAAO,eAAA,CAAgB,WAAA,EAAa,WAAW,CAAA;AAC3D,MAAA,MAAM,KAAA,GAAQ4D,0BAAA,CAAsB,MAAA,EAAQ,GAAG,CAAA;AAC/C,MAAA,MAAM,OAAOC,gBAAA,EAAS;AAEtB,MAAA,IAAA,CAAK,KAAA,EAAM;AACX,MAAA,IAAA,CAAK,MAAA,CAAO,GAAG,KAAK,CAAA;AAAA,IACtB,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,MAAA,EAAQ,WAAW,CAAC,CAAA;AAExB,EAAA,OAAO,IAAA;AACT;AAEA,IAAO,sBAAA,GAAQ,cAAA;ACvBA,SAAR,cAAA,CAAgC;AAAA,EACrC;AACF,CAAA,EAEG;AACD,EAAA,MAAM,CAAC,MAAM,CAAA,GAAI9B,gDAAAA,EAA0B;AAE3C,EAAA/B,gBAAU,MAAM;AACd,IAAA,OAAO,MAAA,CAAO,sBAAA,CAAuB,CAAC,EAAE,aAAY,KAAM;AACxD,MAAA,WAAA,CAAY,KAAK,MAAM;AACrB,QAAA,MAAM8D,MAAA,GAAOC,2BAAA,CAAuB,MAAA,EAAQ,IAAI,CAAA;AAChD,QAAA,QAAA,CAASD,MAAI,CAAA;AAAA,MACf,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,MAAA,EAAQ,QAAQ,CAAC,CAAA;AAErB,EAAA,OAAO,IAAA;AACT;ACFA,SAAS,QAAQ,KAAA,EAAc;AAC7B,EAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACrB;AAWA,SAAS,aAAA,CAAc;AAAA,EACrB,WAAA,GAAc,sBAAA;AAAA,EACd,WAAA,GAAc,EAAA;AAAA,EACd,aAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,QAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA,GAAkB;AACpB,CAAA,EAAuB;AACrB,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,SAAA,EAAW,UAAA;AAAA,IACX,KAAA,EAAO,0BAAA;AAAA,IACP,KAAA,EAAO,CAACE,aAAA,EAAU3B,aAAAA,EAAU4B,mBAAcC,iBAAY,CAAA;AAAA,IACtD;AAAA,GACF;AAEA,EAAA,uBACEjE,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBACb,QAAA,kBAAA2B,eAAAA,CAACuC,mCAAgB,aAAA,EACd,QAAA,EAAA;AAAA,IAAA,eAAA,mBACClE,cAAAA;AAAA,MAACmE,oCAAA;AAAA,MAAA;AAAA,QACC,iCACEnE,cAAAA;AAAA,UAACoE,sCAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAO,EAAE,SAAA,EAAU;AAAA,YACnB,SAAA,EAAU,mBAAA;AAAA,YACV,kBAAA,EAAkB,WAAA;AAAA,YAClB,6BACEpE,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAyB,QAAA,EAAA,WAAA,EAAY;AAAA;AAAA,SAExD;AAAA,QAEF,aAAA,EAAeqE;AAAA;AAAA,KACjB,GAEA,cAAA;AAAA,oBAEFrE,cAAAA,CAAC,eAAA,EAAA,EAAQ,aAAA,EAA8B,YAAA,EAA4B,CAAA;AAAA,oBACnEA,eAACsE,kCAAA,EAAA,EAAc,CAAA;AAAA,oBACftE,cAAAA,CAAC,sBAAA,EAAA,EAAe,WAAA,EAA0B,CAAA;AAAA,oBAC1CA,eAACuE,sCAAA,EAAA,EAAgB,CAAA;AAAA,oBACjBvE,eAACwE,4BAAA,EAAA,EAAW,CAAA;AAAA,oBACZxE,eAACyE,4BAAA,EAAA,EAAW,CAAA;AAAA,IACX,QAAA,oBAAYzE,cAAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAoB;AAAA,GAAA,EACnD,CAAA,EACF,CAAA;AAEJ;AAEA,IAAO,qBAAA,GAAQ,aAAA;;;ACjFf,SAAS,aAAa,KAAA,EAAwB;AAC5C,EAAA,OAAO,4BAAA,CAA6B,KAAK,KAAK,CAAA;AAChD;ACIA,SAAS,kBAAkB,EAAE,MAAA,GAAS,EAAC,EAAG,SAAA,EAAW,cAAa,EAI/D;AACD,EAAA,MAAM,QAAA,GAAWyB,aAAY,IAAI,CAAA;AACjC,EAAA,MAAM,QAAA,GAAWA,aAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI3B,eAAS,EAAE,CAAA;AACnD,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,eAAS,EAAE,CAAA;AACrD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,cAAAA,CAAwB,EAAE,CAAA;AACxD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAG5C,EAAA,MAAM,SAAA,GAAY2B,YAAAA,CAAkC,EAAE,CAAA;AAEtD,EAAA,MAAM,UAAA,GAAaA,YAAAA,CAAqC,EAAE,CAAA;AAG1D,EAAA1B,gBAAU,MAAM;AACd,IAAA,SAAA,CAAU,UAAU,SAAA,CAAU,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,OAAO,MAAM,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,MAAA,CAAO,MAAM,CAAC,CAAA;AAGlB,EAAAA,gBAAU,MAAM;AACd,IAAA,UAAA,CAAW,UAAU,UAAA,CAAW,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,QAAQ,MAAM,CAAA;AAAA,EACjE,CAAA,EAAG,CAAC,OAAA,CAAQ,MAAM,CAAC,CAAA;AAGnB,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,YAAA,CAAa,YAAY,CAAA,EAAG;AAC9B,MAAA,MAAM,cAAc,YAAY;AAC9B,QAAA,UAAA,CAAW,IAAI,CAAA;AACf,QAAA,IAAI;AACF,UAAA,MAAM,IAAA,GAAO,MAAM,YAAA,CAAa,YAAY,CAAA;AAC5C,UAAA,UAAA,CAAW,IAAI,CAAA;AAAA,QACjB,SAAS,GAAA,EAAK;AACZ,UAAA,OAAA,CAAQ,KAAA,CAAM,iCAAiC,GAAG,CAAA;AAClD,UAAA,UAAA,CAAW,EAAE,CAAA;AAAA,QACf,CAAA,SAAE;AACA,UAAA,UAAA,CAAW,KAAK,CAAA;AAAA,QAClB;AAAA,MACF,CAAA;AAEA,MAAA,WAAA,EAAY;AAAA,IACd,CAAA,MAAO;AACL,MAAA,UAAA,CAAW,EAAE,CAAA;AACb,MAAA,UAAA,CAAW,KAAK,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,YAAY,CAAC,CAAA;AAG/B,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,CAAC,SAAA,EAAW;AACd,MAAA,gBAAA,CAAiB,EAAE,CAAA;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAGd,EAAAA,gBAAU,MAAM;AACd,IAAA,IAAI,aAAA,IAAiB,CAAA,IAAK,aAAA,GAAgB,UAAA,CAAW,QAAQ,MAAA,EAAQ;AACnE,MAAA,UAAA,CAAW,OAAA,CAAQ,aAAa,CAAA,EAAG,cAAA,CAAe;AAAA,QAChD,KAAA,EAAO,SAAA;AAAA,QACP,QAAA,EAAU;AAAA,OACX,CAAA;AAAA,IACH;AAAA,EACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,QAAA,GAAW,CAAC,MAAA,KAAwB;AACxC,IAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AACxB,IAAA,eAAA,CAAgB,EAAE,CAAA;AAClB,IAAA,SAAA,CAAU,CAAC,IAAA,KAAwB,CAAC,GAAG,IAAA,EAAM,MAAM,CAAC,CAAA;AACpD,IAAA,gBAAA,CAAiB,EAAE,CAAA;AAEnB,IAAA,qBAAA,CAAsB,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,EACvD,CAAA;AAEA,EAAA,MAAM,kBAAA,GAAqB,CAAC,CAAA,KAA6C;AAEvE,IAAA,IAAI,aAAa,YAAA,CAAa,YAAY,CAAA,IAAK,OAAA,CAAQ,SAAS,CAAA,EAAG;AACjE,MAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,gBAAA;AAAA,UAAiB,CAAC,IAAA,KAChB,IAAA,GAAO,QAAQ,MAAA,GAAS,CAAA,GAAI,OAAO,CAAA,GAAI;AAAA,SACzC;AACA,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,QAAQ,SAAA,EAAW;AACvB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,gBAAA,CAAiB,CAAC,IAAA,KAAU,IAAA,GAAO,CAAA,GAAI,IAAA,GAAO,IAAI,EAAG,CAAA;AACrD,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,aAAA,IAAiB,CAAA,EAAG;AAC3C,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,QAAA,CAAS,OAAA,CAAQ,aAAa,CAAC,CAAA;AAC/B,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,QAAA,CAAS,SAAS,KAAA,EAAM;AACxB,QAAA,gBAAA,CAAiB,EAAE,CAAA;AACnB,QAAA;AAAA,MACF;AAAA,IACF;AAEA,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,WAAA,IAAe,YAAA,KAAiB,EAAA,EAAI;AAEhD,MAAA,MAAM,OAAA,GAAU,OAAO,MAAA,GAAS,CAAA;AAChC,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AAC1C,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,QAAA,CAAS,KAAA,EAAM;AACf,QAAA,CAAA,CAAE,cAAA,EAAe;AAAA,MACnB;AAAA,IACF;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAAkB;AACvC,IAAA,SAAA,CAAU,CAAC,IAAA,KAAS;AAClB,MAAA,MAAM,IAAA,GAAO,CAAC,GAAG,IAAI,CAAA;AACrB,MAAA,IAAA,CAAK,MAAA,CAAO,OAAO,CAAC,CAAA;AACpB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,qBAAA,CAAsB,MAAM;AAC1B,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAA,GAAQ,CAAC,CAAA,EAAG,MAAA,CAAO,MAAA,GAAS,CAAC,CAAA;AAClE,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,OAAA,CAAQ,OAAO,CAAA;AAC1C,MAAA,IAAI,QAAA,WAAmB,KAAA,EAAM;AAAA,WACxB,UAAA,EAAW;AAAA,IAClB,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,uBACEC,cAAAA,CAAA0E,mBAAA,EAAA,EACE,QAAA,kBAAA1E,cAAAA;AAAA,IAAC0B,sBAAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,OAAA,kBACEC,eAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,oBAAA,EACZ,QAAA,EAAA;AAAA,QAAA,MAAA,EAAQ,MAAA,mBACP3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,KAAA,EAAO,GAAA,qBAClB2B,eAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,SAAA,EAAU,QAAA;AAAA,YACV,QAAA,EAAU,CAAA;AAAA,YACV,GAAA,EAAK,CAAC,EAAA,KAAO;AACX,cAAA,SAAA,CAAU,OAAA,CAAQ,GAAG,CAAA,GAAI,EAAA;AAAA,YAC3B,CAAA;AAAA,YACA,SAAA,EAAW,CAAC,CAAA,KAAM;AAChB,cAAA,IAAI,CAAA,CAAE,QAAQ,WAAA,EAAa;AACzB,gBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,gBAAA,aAAA,CAAc,GAAG,CAAA;AAAA,cACnB;AACA,cAAA,IAAI,CAAA,CAAE,QAAQ,OAAA,EAAS;AACrB,gBAAA,CAAA,CAAE,cAAA,EAAe;AACjB,gBAAA,aAAA,CAAc,GAAG,CAAA;AACjB,gBAAA,UAAA,EAAW;AAAA,cACb;AAAA,YACF,CAAA;AAAA,YACA,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAY,CAAA,MAAA,EAAS,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,YAChC,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC,UAAK,KAAA,EAAO,EAAE,aAAa,CAAA,EAAE,EAAI,gBAAM,KAAA,EAAM,CAAA;AAAA,8BAC9CA,cAAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAU,cAAA;AAAA,kBACV,OAAA,EAAS,CAAC,EAAA,KAAO;AACf,oBAAA,EAAA,CAAG,eAAA,EAAgB;AACnB,oBAAA,aAAA,CAAc,GAAG,CAAA;AAAA,kBACnB,CAAA;AAAA,kBACA,YAAA,EAAY,CAAA,OAAA,EAAU,KAAA,CAAM,KAAK,CAAA,CAAA;AAAA,kBACjC,QAAA,kBAAAA,cAAAA,CAAC,YAAA,EAAA,EAAK,IAAA,EAAK,OAAA,EAAQ;AAAA;AAAA;AACrB;AAAA,WAAA;AAAA,UA5BK,MAAM,KAAA,IAAS;AAAA,SA8BvB,GACH,CAAA,GACE,IAAA;AAAA,wBACJA,cAAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,QAAA;AAAA,YACL,IAAA,EAAK,MAAA;AAAA,YACL,SAAA,EAAU,cAAA;AAAA,YACV,KAAA,EAAO,YAAA;AAAA,YACP,SAAA,EAAS,IAAA;AAAA,YACT,SAAA,EAAW,kBAAA;AAAA,YAEX,QAAA,EAAU,CAAC,CAAA,KAAM;AACf,cAAA,MAAM,GAAA,GAAM,EAAE,MAAA,CAAO,KAAA;AAErB,cAAA,IAAI,YAAA,CAAa,GAAG,CAAA,EAAG;AACrB,gBAAA,QAAA,CAAS,SAAS,IAAA,EAAK;AAAA,cACzB;AACA,cAAA,eAAA,CAAgB,GAAG,CAAA;AAAA,YACrB;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,MAEF,oBAAA,EAAoB,IAAA;AAAA,MACpB,kBAAA,EAAkB,IAAA;AAAA,MAClB,QAAA,EAAU,aAAA;AAAA,MACV,SAAA,EAAU,cAAA;AAAA,MACV,QAAQ,MAAM;AACZ,QAAA,YAAA,CAAa,IAAI,CAAA;AAEjB,QAAA,qBAAA,CAAsB,MAAM,QAAA,CAAS,OAAA,EAAS,KAAA,EAAO,CAAA;AAAA,MACvD,CAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,YAAA,CAAa,KAAK,CAAA;AAAA,MACpB,CAAA;AAAA,MACC,uBAAa,YAAY,CAAA,mBACxBA,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kBAAA,EACZ,QAAA,EAAA,OAAA;AAAA;AAAA,wBAECA,cAAAA,CAAA0E,mBAAA,EAAA,EACG,QAAA,EAAA,CAAC,GAAG,CAAA,EAAG,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,qBACd/C,eAAAA,CAAC,KAAA,EAAA,EAAY,WAAU,iCAAA,EACrB,QAAA,EAAA;AAAA,0BAAA3B,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,6BAAA,EAA8B,CAAA;AAAA,0BAC7CA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BAAA,EAA+B;AAAA,SAAA,EAAA,EAFtC,CAGV,CACD,CAAA,EACH;AAAA,UACE,QAAQ,MAAA,GAAS,CAAA,GACnB,QAAQ,GAAA,CAAI,CAAC,KAAK,GAAA,KAAQ;AACxB,QAAA,uBACE2B,eAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,CAAC,EAAA,KAAO;AACX,cAAA,UAAA,CAAW,OAAA,CAAQ,GAAG,CAAA,GAAI,EAAA;AAAA,YAC5B,CAAA;AAAA,YACA,SAAA,EAAW,CAAA,gBAAA,EAAmB,aAAA,KAAkB,GAAA,GAAM,aAAa,EAAE,CAAA,CAAA;AAAA,YAErE,MAAA,EAAQ,CAAC,CAAA,KAAM;AACb,cAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,YACpB,CAAA;AAAA,YACA,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,YACpB,CAAA;AAAA,YACA,YAAA,EAAc,MAAM,gBAAA,CAAiB,GAAG,CAAA;AAAA,YACxC,YAAA,EAAc,MAAM,gBAAA,CAAiB,EAAE,CAAA;AAAA,YACvC,OAAA,EAAS,CAAC,CAAA,KAAM;AACd,cAAA,CAAA,CAAE,eAAA,EAAgB;AAClB,cAAA,QAAA,CAAS,GAAG,CAAA;AAAA,YACd,CAAA;AAAA,YACA,iBAAe,aAAA,KAAkB,GAAA;AAAA,YACjC,QAAA,EAAA;AAAA,8BAAA3B,cAAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,GAAA,CAAI,IAAA,EAAK,CAAA;AAAA,cACb,GAAA,CAAI;AAAA;AAAA,WAAA;AAAA,UAfA;AAAA,SAgBP;AAAA,MAEJ,CAAC,CAAA,GACC,IAAA,EACN,CAAA,GACE;AAAA;AAAA,GACN,EACF,CAAA;AAEJ;AAEA,IAAO,yBAAA,GAAQ,iBAAA;AClQf,SAAS,aAAA,CAAc;AAAA,EACrB,IAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAYG;AACD,EAAA,uBACE2B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oBAAA,EACb,QAAA,EAAA;AAAA,oBAAA3B,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yCAAA,EAA2C,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,oBAEjEA,cAAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,SAAA,EAAW,YAAA;AAAA,QACX;AAAA;AAAA,KACF;AAAA,IACC,gBAAgB,CAAC,MAAA,mBAChBA,cAAAA,CAAC,YAAO,SAAA,EAAU,KAAA,EAAM,OAAA,EAAS,MAAM,YAAY,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA,EAAG,gBAErE,CAAA,GACE,IAAA;AAAA,IACH,gBAAgB,CAAC,OAAA,mBAChBA,cAAAA,CAAC,YAAO,SAAA,EAAU,KAAA,EAAM,OAAA,EAAS,MAAM,aAAa,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA,EAAG,iBAEtE,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,IAAO,qBAAA,GAAQ,aAAA;AC9Cf,SAAS,eAAA,CAAgB,EAAE,iBAAA,EAAkB,EAE1C;AACD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIF,eAAS,KAAK,CAAA;AACtC,EAAA,MAAM,UAAA,GAAa2B,aAAuB,IAAI,CAAA;AAC9C,EAAA,MAAM,EAAE,QAAQ,SAAA,EAAW,MAAA,EAAQ,WAAW,OAAA,EAAS,UAAA,KACrD,eAAA,EAAgB;AAGlB,EAAA1B,gBAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM;AACR,MAAA,SAAA,CAAU,MAAA,CAAO,EAAA,CAAG,MAAA,GAAS,CAAC,CAAA;AAC9B,MAAA,UAAA,CAAW,MAAA,CAAO,GAAA,CAAI,MAAA,GAAS,CAAC,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,MAAA,CAAO,GAAG,MAAA,EAAQ,MAAA,CAAO,GAAA,CAAI,MAAM,CAAC,CAAA;AAE9C,EAAAA,gBAAU,MAAM;AACd,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAE3B,IAAA,IAAI,CAAC,OAAA,EAAS;AAGd,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,OAAA,CAAQ,IAAI,CAAA;AAAA,IACd,CAAA;AAGA,IAAA,MAAM,cAAA,GAAiB,CAAC,CAAA,KAAkB;AACxC,MAAA,OAAA,CAAQ,GAAA,CAAI,mCAA4B,CAAC,CAAA;AACzC,MAAA,MAAM,OAAO,CAAA,CAAE,aAAA;AAEf,MAAA,IACG,IAAA,IACC,IAAA,CAAK,SAAA,IACL,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,iBAAiB,CAAA,IAC1C,IAAA,IAAQ,OAAA,CAAQ,QAAA,CAAS,IAAI,CAAA;AAE9B,QAAA;AACF,MAAA,OAAA,CAAQ,GAAA,CAAI,WAAA,EAAa,IAAA,EAAM,SAAS,CAAA;AACxC,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf,CAAA;AAEA,IAAA,OAAA,CAAQ,gBAAA,CAAiB,WAAW,aAAa,CAAA;AACjD,IAAA,OAAA,CAAQ,gBAAA,CAAiB,YAAY,cAAc,CAAA;AAEnD,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,mBAAA,CAAoB,WAAW,aAAa,CAAA;AACpD,MAAA,OAAA,CAAQ,mBAAA,CAAoB,YAAY,cAAc,CAAA;AAAA,IACxD,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,IACE,MAAA,CAAO,EAAA,CAAG,MAAA,KAAW,CAAA,IACrB,MAAA,CAAO,EAAA,CAAG,MAAA,KAAW,CAAA,IACrB,MAAA,CAAO,GAAA,CAAI,MAAA,KAAW,CAAA,EACtB;AACA,MAAA,OAAO,YAAA;AAAA,IACT;AAEA,IAAA,MAAM,QAAQ,EAAC;AAGf,IAAA,IAAI,MAAA,CAAO,EAAA,CAAG,MAAA,GAAS,CAAA,EAAG;AACxB,MAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACrD;AAGA,IAAA,IAAI,MAAA,CAAO,EAAA,CAAG,MAAA,GAAS,CAAA,EAAG;AACxB,MAAA,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IACrD;AAGA,IAAA,IAAI,MAAA,CAAO,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AACzB,MAAA,KAAA,CAAM,IAAA,CAAK,OAAA,GAAU,MAAA,CAAO,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,IAChE;AAEA,IAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,EACxB,CAAA;AAEA,EAAA,uBACEC,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EAAY,QAAA,EAAU,EAAA,EAAI,SAAA,EAAU,UAAA,EAC3C,QAAA,EAAA,CAAC,IAAA,mBACAA,cAAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,MAAA;AAAA,MACL,WAAA,EAAY,YAAA;AAAA,MACZ,SAAA,EAAU,cAAA;AAAA,MACV,OAAO,cAAA,EAAe;AAAA,MACtB,QAAA,EAAQ;AAAA;AAAA,GACV,mBAEA2B,eAAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA3B,cAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,IAAA;AAAA,QACL,YAAA,EAAY,IAAA;AAAA,QACZ,SAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAQ,MAAA,CAAO,EAAA;AAAA,QACf,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,UAAA,SAAA,CAAU,CAAC,IAAA,MAAU;AAAA,YACnB,GAAG,IAAA;AAAA,YACH,IAAI,OAAO,KAAA,KAAU,aAAa,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,GAAI;AAAA,WACrD,CAAE,CAAA;AAAA,QACJ,CAAA;AAAA,QACA,YAAA,EAAc;AAAA;AAAA,KAChB;AAAA,IACC,yBACCA,cAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,IAAA;AAAA,QACL,YAAA,EAAc,KAAA;AAAA,QACd,SAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAQ,MAAA,CAAO,EAAA;AAAA,QACf,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,UAAA,SAAA,CAAU,CAAC,IAAA,MAAU;AAAA,YACnB,GAAG,IAAA;AAAA,YACH,IAAI,OAAO,KAAA,KAAU,aAAa,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,GAAI;AAAA,WACrD,CAAE,CAAA;AAAA,QACJ,CAAA;AAAA,QACA,YAAA,EAAc;AAAA;AAAA,KAChB,GACE,IAAA;AAAA,IACH,0BACCA,cAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,YAAA,EAAc,KAAA;AAAA,QACd,SAAA;AAAA,QACA,UAAA;AAAA,QACA,OAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAQ,MAAA,CAAO,GAAA;AAAA,QACf,YAAA,EAAc,CAAC,KAAA,KAAU;AACvB,UAAA,SAAA,CAAU,CAAC,IAAA,MAAU;AAAA,YACnB,GAAG,IAAA;AAAA,YACH,KAAK,OAAO,KAAA,KAAU,aAAa,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,GAAI;AAAA,WACvD,CAAE,CAAA;AAAA,QACJ,CAAA;AAAA,QACA,YAAA,EAAc;AAAA;AAAA,KAChB,GACE;AAAA,GAAA,EACN,CAAA,EAEJ,CAAA;AAEJ;AAEA,IAAO,uBAAA,GAAQ,eAAA;ACxJf,SAAS,YAAA,CAAa;AAAA,EACpB;AACF,CAAA,EAEG;AACD,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAY,OAAA,KAAY,eAAA,EAAgB;AAEzD,EAAA,uBACE2B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,cAAA,EACb,QAAA,EAAA;AAAA,oBAAA3B,cAAAA,CAAC,2BAAgB,iBAAA,EAAsC,CAAA;AAAA,oBACvDA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,MAAA;AAAA,QACL,WAAA,EAAY,SAAA;AAAA,QACZ,SAAA,EAAU,cAAA;AAAA,QACV,KAAA,EAAO,WAAW,CAAC,OAAA,CAAQ,WAAW,MAAM,CAAA,GAAI,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,GAAK,OAAA;AAAA,QACnE,UAAU,CAAC,CAAA,KAAM,UAAA,CAAW,CAAA,CAAE,OAAO,KAAK;AAAA;AAAA;AAC5C,GAAA,EACF,CAAA;AAEJ;AAEA,IAAO,oBAAA,GAAQ,YAAA;AClBf,SAAS,mBAAA,CAAoB;AAAA,EAC3B,WAAA;AAAA,EACA,OAAA;AAAA,EACA,iBAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA,GAAkB;AACpB,CAAA,EASG;AACD,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,MACE,eAAA,EAAgB;AACpB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,IAAIF,cAAAA,CAAS,WAAA,EAAa,QAAQ,EAAE,CAAA;AAChE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,cAAAA,CAAoB;AAAA,IACpD,EAAA,EAAI,WAAA,EAAa,EAAA,IAAM,EAAC;AAAA,IACxB,EAAA,EAAI,WAAA,EAAa,EAAA,IAAM,EAAC;AAAA,IACxB,GAAA,EAAK,WAAA,EAAa,GAAA,IAAO,EAAC;AAAA,IAC1B,OAAA,EAAS,aAAa,OAAA,IAAW,EAAA;AAAA,IACjC,IAAA,EAAM,aAAa,IAAA,IAAQ,EAAA;AAAA,IAC3B,WAAA,EAAa,WAAA,EAAa,WAAA,IAAe,EAAC;AAAA,IAC1C,SAAS,OAAA,IAAW;AAAA,GACrB,CAAA;AAGD,EAAAC,gBAAU,MAAM;AACd,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,IAAI,WAAA,CAAY,EAAA,IAAM,WAAA,CAAY,EAAA,IAAM,YAAY,GAAA,EAAK;AACvD,QAAA,SAAA,CAAU;AAAA,UACR,EAAA,EAAI,WAAA,CAAY,EAAA,IAAM,EAAC;AAAA,UACvB,EAAA,EAAI,WAAA,CAAY,EAAA,IAAM,EAAC;AAAA,UACvB,GAAA,EAAK,WAAA,CAAY,GAAA,IAAO;AAAC,SAC1B,CAAA;AAAA,MACH;AACA,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,UAAA,CAAW,YAAY,OAAO,CAAA;AAAA,MAChC;AACA,MAAA,IAAI,YAAY,WAAA,EAAa;AAC3B,QAAA,cAAA,CAAe,YAAY,WAAW,CAAA;AAAA,MACxC;AACA,MAAA,IAAI,YAAY,IAAA,EAAM;AACpB,QAAA,WAAA,CAAY,YAAY,IAAI,CAAA;AAAA,MAC9B;AAAA,IACF;AACA,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,UAAA,CAAW,OAAO,CAAA;AAAA,IACpB;AAAA,EAEF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,kBAAA,GAAqB,CAAC,IAAA,KAAiB;AAC3C,IAAA,WAAA,CAAY,IAAI,CAAA;AAAA,EAClB,CAAA;AAEA,EAAAA,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,CAAC,IAAA,MAAU;AAAA,MACtB,GAAG,IAAA;AAAA,MACH,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,IAAI,MAAA,CAAO,EAAA;AAAA,MACX,KAAK,MAAA,CAAO;AAAA,KACd,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAAA,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,CAAC,IAAA,MAAU;AAAA,MACtB,GAAG,IAAA;AAAA,MACH;AAAA,KACF,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAAA,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,CAAC,IAAA,MAAU;AAAA,MACtB,GAAG,IAAA;AAAA,MACH,IAAA,EAAM;AAAA,KACR,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAAA,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,CAAC,IAAA,MAAU;AAAA,MACtB,GAAG,IAAA;AAAA,MACH;AAAA,KACF,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA;AAEhB,EAAAA,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,CAAC,IAAA,MAAU;AAAA,MACtB,GAAG,IAAA;AAAA,MACH;AAAA,KACF,CAAE,CAAA;AAAA,EACJ,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAAA,gBAAU,MAAM;AACd,IAAA,YAAA,CAAa,SAAS,CAAA;AAAA,EACxB,CAAA,EAAG,CAAC,SAAA,EAAW,YAAY,CAAC,CAAA;AAE5B,EAAA,uBACE4B,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACZ,QAAA,EAAA;AAAA,IAAA,YAAA;AAAA,oBACD3B,cAAAA,CAAC,oBAAA,EAAA,EAAa,iBAAA,EAAsC,CAAA;AAAA,oBACpDA,cAAAA;AAAA,MAAC,qBAAA;AAAA,MAAA;AAAA,QACC,aAAa,WAAA,EAAa,IAAA;AAAA,QAC1B,QAAA,EAAU,kBAAA;AAAA,QACV,cAAA;AAAA,QACA;AAAA;AAAA,KACF;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,IAAO,2BAAA,GAAQ,mBAAA;ACpHf,SAAS,YAAA,CAAa;AAAA,EACpB,iBAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,uBACEA,cAAAA,CAAC,aAAA,EAAA,EACC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,2BAAA;AAAA,IAAA;AAAA,MACC,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,IAAO,oBAAA,GAAQ,YAAA;AC1Bf,SAAS,UAAA,CAAW;AAAA,EAClB,iBAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA,GAAe,MAAA;AAAA,EACf,aAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACEA,cAAAA,CAAC,aAAA,EAAA,EAAc,YAAA,EAA4B,eACzC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,oBAAA;AAAA,IAAA;AAAA,MACC,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,IAAO,kBAAA,GAAQ","file":"index.js","sourcesContent":["import React, { createContext, useContext, useState, useEffect } from \"react\";\nimport type { ReactNode } from \"react\";\n\nexport type Theme = \"light\" | \"dark\";\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme = \"dark\",\n onThemeChange\n}) => {\n const [theme, setTheme] = useState<Theme>(initialTheme);\n\n useEffect(() => {\n // Apply theme to document root\n document.documentElement.setAttribute(\"data-theme\", theme);\n // Call the callback if provided\n if (onThemeChange) {\n onThemeChange(theme);\n }\n }, [theme, onThemeChange]);\n\n const toggleTheme = () => {\n setTheme((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n","import {\n createContext,\n useContext,\n useState,\n type ReactNode,\n useEffect,\n} from \"react\";\n\nexport interface EmailOption {\n name: string;\n email: string;\n}\n\ninterface Email {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n}\n\ninterface EmailContextType {\n emails: Email;\n setEmails: React.Dispatch<React.SetStateAction<Email>>;\n subject: string;\n setSubject: React.Dispatch<React.SetStateAction<string>>;\n showCC: boolean;\n setShowCC: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC: boolean;\n setShowBCC: React.Dispatch<React.SetStateAction<boolean>>;\n attachments: File[];\n setAttachments: React.Dispatch<React.SetStateAction<File[]>>;\n isReply: boolean;\n setIsReply: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst EmailContext = createContext<EmailContextType | undefined>(undefined);\n\nexport const useEmailContext = () => {\n const context = useContext(EmailContext);\n if (!context) {\n throw new Error(\"useEmailContext must be used within an EmailProvider\");\n }\n return context;\n};\n\ninterface EmailProviderProps {\n children: ReactNode;\n}\n\nexport const EmailProvider: React.FC<EmailProviderProps> = ({ children }) => {\n const [emails, setEmails] = useState<Email>({\n to: [],\n cc: [],\n bcc: [],\n });\n const [isReply, setIsReply] = useState(false);\n const [subject, setSubject] = useState(\"\");\n const [showCC, setShowCC] = useState(false);\n const [showBCC, setShowBCC] = useState(false);\n const [attachments, setAttachments] = useState<File[]>([]);\n\n // Log emails whenever they change\n useEffect(() => {\n console.log(\"EmailProvider emails updated:\", emails);\n }, [emails]);\n\n return (\n <EmailContext.Provider\n value={{\n emails,\n setEmails,\n subject,\n setSubject,\n showCC,\n setShowCC,\n showBCC,\n setShowBCC,\n attachments,\n setAttachments,\n isReply,\n setIsReply,\n }}>\n {children}\n </EmailContext.Provider>\n );\n};\n","export const eventTypes = {\n sizes: {\n base: \"sizes\",\n options: {\n normal: \"normal\",\n small: \"small\",\n large: \"large\",\n huge: \"huge\",\n },\n },\n quote: \"quote\",\n undo: \"undo\",\n redo: \"redo\",\n bold: \"bold\",\n italic: \"italic\",\n underline: \"underline\",\n color: {\n base: \"colors\",\n options: { text: \"color\", background: \"background\" },\n },\n code: \"code\",\n image: \"image\",\n link: \"link\",\n list: \"list\",\n listNumber: \"listNumber\",\n listBullet: \"listBullet\",\n align: {\n base: \"align\",\n options: { left: \"alignLeft\", center: \"alignCenter\", right: \"alignRight\" },\n },\n indent: \"indent\",\n indentDecrease: \"indentDecrease\",\n removeFormat: \"removeFormat\",\n strike: \"strike\",\n attachFile: \"attachFile\",\n insertPhoto: \"insertPhoto\",\n fontSize: \"fontSize\",\n fontFamily: \"fontFamily\",\n};\nexport const toolbarComponentType = {\n styling: \"styling\",\n divider: \"divider\",\n component: \"component\",\n};\n\nexport const pluginList = [\n {\n type: toolbarComponentType[\"styling\"],\n icon: \"Styling\",\n id: \"4bc66ea9-2e35-4a7b-a674-be7e4ee163c5\",\n options: [\n {\n name: eventTypes[\"undo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Undo\",\n id: \"29cf5eb3-37cd-482f-9a15-c358faf19cc2\",\n },\n {\n name: eventTypes[\"redo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Redo\",\n id: \"8744f7ab-5818-46ce-9417-2fec87123afe\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"ed0104fd-3507-43f6-80c1-813fbdf04479\",\n },\n {\n name: eventTypes[\"fontFamily\"],\n type: toolbarComponentType[\"component\"],\n id: \"1c12d7e2-aa6a-42b4-b25c-b55fe3bcf524\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"d0f67d01-0731-411a-b448-e1dca47014f4\",\n },\n {\n name: eventTypes[\"fontSize\"],\n type: toolbarComponentType[\"component\"],\n id: \"82e31b62-5441-4052-887c-faa02d0b7075\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"2e3558e4-3ad4-422b-8502-ea3c58fb8c2e\",\n },\n {\n name: eventTypes[\"bold\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Bold\",\n id: \"ac2b5b54-7323-44a4-bc6d-8bae6e48efe2\",\n },\n {\n name: eventTypes[\"italic\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Italic\",\n id: \"6a927c2a-2230-4dc7-af71-47fbe9fb784d\",\n },\n {\n name: eventTypes[\"underline\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Underline\",\n id: \"f07b3a6f-ffaa-4153-beae-79a36acb6a08\",\n },\n {\n name: eventTypes[\"color\"].base,\n type: toolbarComponentType[\"component\"],\n icon: \"Color\",\n id: \"e14ec25f-3dd3-4ed5-b33a-a033684d248b\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"93e60297-206f-4f31-bc29-11daff2052bd\",\n },\n {\n name: eventTypes.align.base,\n type: toolbarComponentType[\"component\"],\n id: \"30da93ea-efa6-4642-bfa5-28fd4dc9c5b3\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"9bad0563-6118-4855-9286-402bf98e00ad\",\n },\n {\n name: eventTypes[\"listNumber\"],\n type: toolbarComponentType[\"component\"],\n icon: \"OrderedList\",\n id: \"d37865e1-ff54-4118-a5cc-fa147d222471\",\n },\n {\n name: eventTypes[\"listBullet\"],\n type: toolbarComponentType[\"component\"],\n icon: \"UnOrderedList\",\n id: \"ed77e7c9-b89c-41c5-a749-e68ea0b30497\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"e5ecd77b-44cc-42fe-badb-48cadf3ddfb1\",\n },\n {\n name: eventTypes[\"indentDecrease\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentLess\",\n id: \"2dc6a5e4-b1b5-47d1-ac2f-5d0becb02d33\",\n },\n {\n name: eventTypes[\"indent\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentMore\",\n id: \"6903a3d1-a83f-4bc6-9bd9-f673feffe84f\",\n },\n ],\n },\n {\n type: \"component\",\n name: eventTypes[\"attachFile\"],\n icon: \"Attach\",\n id: \"f43a284e-113e-4095-b001-9d00a1dddc4c\",\n },\n {\n type: \"component\",\n name: eventTypes[\"link\"],\n icon: \"Link\",\n id: \"580db61e-7939-4efe-914c-304b271998ec\",\n },\n // {\n // type: \"component\",\n // name: eventTypes[\"insertPhoto\"],\n // icon: \"Image\",\n // id: \"d032ba91-3e78-4ed5-8561-033cd1c49cae\",\n // },\n];\n","import {\n MdArrowDropDown,\n MdAttachFile,\n MdCheck,\n MdClose,\n MdEdit,\n MdFormatAlignCenter,\n MdFormatAlignLeft,\n MdFormatAlignRight,\n MdFormatBold,\n MdFormatClear,\n MdFormatIndentDecrease,\n MdFormatItalic,\n MdFormatListBulleted,\n MdFormatListNumbered,\n MdFormatQuote,\n MdFormatUnderlined,\n MdImage,\n MdLink,\n MdOutlineFormatIndentIncrease,\n MdRedo,\n MdStrikethroughS,\n MdTextFields,\n MdTextFormat,\n MdUndo,\n} from \"react-icons/md\";\n\nconst icons = {\n Undo: MdUndo,\n Redo: MdRedo,\n Bold: MdFormatBold,\n Italic: MdFormatItalic,\n Underline: MdFormatUnderlined,\n Color: MdTextFormat,\n LeftAlign: MdFormatAlignLeft,\n RightAlign: MdFormatAlignRight,\n CenterAlign: MdFormatAlignCenter,\n UnOrderedList: MdFormatListBulleted,\n OrderedList: MdFormatListNumbered,\n IndentLess: MdFormatIndentDecrease,\n IndentMore: MdOutlineFormatIndentIncrease,\n RemoveFormat: MdFormatClear,\n StrikeThrough: MdStrikethroughS,\n CodeQuote: MdFormatQuote,\n DownArrow: MdArrowDropDown,\n Styling: MdTextFormat,\n Attach: MdAttachFile,\n Link: MdLink,\n Image: MdImage,\n Check: MdCheck,\n TextFields: MdTextFields,\n Edit: MdEdit,\n Close: MdClose,\n};\n\nexport default icons;\n","// src/components/Icon.tsx\nimport React from \"react\";\nimport icons from \"./helper\";\n\ntype IconName =\n | \"Undo\"\n | \"Redo\"\n | \"Bold\"\n | \"Italic\"\n | \"Underline\"\n | \"Color\"\n | \"LeftAlign\"\n | \"RightAlign\"\n | \"CenterAlign\"\n | \"UnOrderedList\"\n | \"OrderedList\"\n | \"IndentLess\"\n | \"IndentMore\"\n | \"RemoveFormat\"\n | \"StrikeThrough\"\n | \"CodeQuote\"\n | \"DownArrow\"\n | \"Styling\"\n | \"Attach\"\n | \"Link\"\n | \"Image\"\n | \"Check\"\n | \"TextFields\"\n | \"Edit\"\n | \"Close\";\n\ninterface IconProps {\n name: IconName;\n size?: number;\n color?: string;\n className?: string;\n}\n\nconst Icon: React.FC<IconProps> = ({ name, size = 24, color, className }) => {\n // ✅ Map each icon to a name\n\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found.`);\n return null;\n }\n\n return <IconComponent size={size} color={color} className={className} />;\n};\n\nexport default Icon;\n","import React, { useRef } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport type { PopupPosition } from \"reactjs-popup/dist/types\";\n\ninterface MyPopupProps {\n trigger: React.ReactElement;\n children: ((args: { close: () => void }) => React.ReactNode);\n popUpDirection?: PopupPosition | PopupPosition[];\n}\n\nconst MyPopup: React.FC<MyPopupProps> = ({\n trigger,\n children,\n popUpDirection = \"top center\",\n}) => {\n const popupRef = useRef<any>(null);\n\n const handleClose = () => {\n if (popupRef.current && typeof popupRef.current.close === \"function\") {\n popupRef.current.close();\n }\n };\n\n const renderContent = (close: () => void) => {\n const combinedClose = () => {\n close?.();\n handleClose();\n };\n return children({ close: combinedClose });\n };\n\n return (\n <Popup\n ref={popupRef}\n trigger={trigger}\n closeOnDocumentClick\n repositionOnResize\n position={popUpDirection}\n className=\"filter-popup\">\n {renderContent as any}\n </Popup>\n );\n};\n\nexport default MyPopup;\n","const fontOptions = [\n {\n label: \"Sans Serif\",\n value: \"sans-serif\",\n style: { fontFamily: \"sans-serif\" },\n },\n { label: \"Serif\", value: \"serif\", style: { fontFamily: \"serif\" } },\n {\n label: \"Fixed Width\",\n value: \"monospace\",\n style: { fontFamily: \"monospace\" },\n },\n {\n label: \"Wide\",\n value: \"wide\",\n style: { fontWeight: \"bold\", letterSpacing: \"0.05em\" },\n },\n { label: \"Narrow\", value: \"narrow\", style: { fontStretch: \"condensed\" } },\n {\n label: \"Comic Sans MS\",\n value: \"Comic Sans MS\",\n style: { fontFamily: \"Comic Sans MS, cursive\" },\n },\n {\n label: \"Garamond\",\n value: \"Garamond\",\n style: { fontFamily: \"Garamond, serif\" },\n },\n {\n label: \"Georgia\",\n value: \"Georgia\",\n style: { fontFamily: \"Georgia, serif\" },\n },\n {\n label: \"Tahoma\",\n value: \"Tahoma\",\n style: { fontFamily: \"Tahoma, sans-serif\" },\n },\n {\n label: \"Trebuchet MS\",\n value: \"Trebuchet MS\",\n style: { fontFamily: \"Trebuchet MS, sans-serif\" },\n },\n {\n label: \"Verdana\",\n value: \"Verdana\",\n style: { fontFamily: \"Verdana, sans-serif\" },\n },\n];\nexport const OPTIONS = [\n { key: \"small\", label: \"Small\", sizePx: 12 },\n { key: \"normal\", label: \"Normal\", sizePx: 18 },\n { key: \"large\", label: \"Large\", sizePx: 28 },\n { key: \"huge\", label: \"Huge\", sizePx: 56 },\n];\nexport const GREYS = [\n \"#000000\",\n \"#3a3a3a\",\n \"#5a5a5a\",\n \"#8a8a8a\",\n \"#bfbfbf\",\n \"#dedede\",\n \"#f3f3f3\",\n \"#ffffff\",\n];\nexport const ACCENTS = [\n \"#e53935\",\n \"#fb8c00\",\n \"#ffee58\",\n \"#66ff66\",\n \"#4dd0e1\",\n \"#1e88e5\",\n \"#9c27b0\",\n \"#ff3bd6\",\n];\n// a multi-row palette (example block similar to screenshot)\nexport const PALETTE = [\n [\n \"#f7d7d7\",\n \"#f3d0c8\",\n \"#f0c5c5\",\n \"#efc9d8\",\n \"#f7e6e9\",\n \"#f3edf7\",\n \"#f0eaf6\",\n \"#f8f0f6\",\n ],\n [\n \"#f0b9b9\",\n \"#f0d4c2\",\n \"#e6f0d2\",\n \"#e4f7e8\",\n \"#d8eef8\",\n \"#dbe1ff\",\n \"#e9d9f6\",\n \"#f5d9f7\",\n ],\n [\n \"#e69a9a\",\n \"#e6caa3\",\n \"#d7e6b0\",\n \"#c8f0e6\",\n \"#bfe3ff\",\n \"#cbd8ff\",\n \"#d6c3f3\",\n \"#f0c2f3\",\n ],\n [\n \"#d16464\",\n \"#d09a6a\",\n \"#a8cf7b\",\n \"#7fd6c0\",\n \"#73b7ff\",\n \"#7a9cff\",\n \"#b483f1\",\n \"#f08cf2\",\n ],\n [\n \"#b23a3a\",\n \"#b26a3a\",\n \"#7aa04a\",\n \"#3fb092\",\n \"#296f94\",\n \"#2a4177\",\n \"#452a68\",\n \"#6e1f4d\",\n ],\n [\n \"#7a1d1d\",\n \"#7a4a1e\",\n \"#556a2a\",\n \"#195b47\",\n \"#123f5a\",\n \"#182840\",\n \"#2a1836\",\n \"#3a1026\",\n ],\n];\nexport default fontOptions;\n","import MyPopup from \"../MyPopup\";\nimport fontOptions from \"../../../utils/core\";\nimport Icon from \"../Icon\";\n\ninterface FontSelectProps {\n value?: string;\n onChange: (value: string) => void;\n}\n\nexport default function FontSelect({ value = \"serif\", onChange }: FontSelectProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n {fontOptions?.find((o) => o.value === value)?.label}\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {fontOptions.map((font) => (\n <button\n className=\"btn\"\n key={font.value}\n onClick={() => {\n onChange(font.value);\n close();\n }}\n style={{ ...font.style }}>\n <div className=\"font-option\">\n {value === font.value && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { OPTIONS } from \"../../../utils/core\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n\n/**\n * Props:\n * - value: \"small\" | \"normal\" | \"large\" | \"huge\"\n * - onChange: (newValue) => void\n */\n\ninterface FontSizePickerProps {\n value?: string;\n onChange?: (value: string) => void;\n}\n\nexport default function FontSizePicker({\n value = \"normal\",\n onChange = () => {},\n}: FontSizePickerProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"TextFields\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {OPTIONS.map((font) => (\n <button\n className=\"btn\"\n key={font.key}\n onClick={() => {\n onChange(font.key);\n close();\n }}\n style={{ fontSize: `${font.sizePx}px` }}>\n <div className=\"font-option\">\n {value === font.key && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { ACCENTS, GREYS, PALETTE } from \"../../../utils/core\";\nimport \"./style.css\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n/**\n * Props:\n * - value: { background: \"#ffffff\", text: \"#000000\" }\n * - onChange: (newValue) => void\n */\n\ninterface SwatchProps {\n color: string;\n selected: boolean;\n onClick: (color: string) => void;\n label?: string;\n}\n\nfunction Swatch({ color, selected, onClick, label }: SwatchProps) {\n return (\n <button\n className=\"swatch\"\n title={label || color}\n aria-pressed={selected}\n onClick={() => onClick(color)}\n style={{ background: color }}>\n {selected && (\n <svg className=\"check\" viewBox=\"0 0 24 24\" aria-hidden>\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n )}\n </button>\n );\n}\n\ninterface ColorValue {\n background: string;\n text: string;\n}\n\ninterface ColorPickerProps {\n value?: ColorValue;\n onChange?: (value: ColorValue) => void;\n}\n\nexport default function ColorPicker({\n value = { background: \"#ffffff\", text: \"#000000\" },\n onChange = () => {},\n}: ColorPickerProps) {\n function update(which: keyof ColorValue, color: string) {\n onChange({ ...value, [which]: color });\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"Styling\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div\n className=\"color-popover\"\n role=\"dialog\"\n aria-label=\"Choose colors\">\n <div className=\"color-columns\">\n <section className=\"color-column\" aria-labelledby=\"bg-label\">\n <h4 id=\"bg-label\">Background color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"bg\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"bgacc\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"row\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"bgp\" + i}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n\n <section className=\"color-column\" aria-labelledby=\"text-label\">\n <h4 id=\"text-label\">Text color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"tx\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"txacc\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"txrow\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"txp\" + i}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import \"./style.css\";\nimport Icon from \"../Icon\";\nimport MyPopup from \"../MyPopup\";\n\nexport type Alignment = \"left\" | \"center\" | \"right\";\n\ntype IconName = \"LeftAlign\" | \"CenterAlign\" | \"RightAlign\" | \"DownArrow\";\n\nconst OPTIONS: { key: Alignment; iconName: IconName; label: string }[] = [\n { key: \"left\", iconName: \"LeftAlign\", label: \"Left align\" },\n { key: \"center\", iconName: \"CenterAlign\", label: \"Center align\" },\n { key: \"right\", iconName: \"RightAlign\", label: \"Right align\" },\n];\n\ninterface Props {\n value?: Alignment;\n onChange?: (next: Alignment) => void;\n className?: string;\n}\n\nexport default function AlignmentSelect({\n value = \"left\",\n onChange = () => {},\n}: Props) {\n function onSelect(key: Alignment) {\n onChange(key);\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name={OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"} />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"wrapper-alignment\">\n {OPTIONS.map((opt) => {\n const active = opt.key === value;\n return (\n <button\n key={opt.key}\n role=\"menuitemradio\"\n aria-checked={active}\n tabIndex={0}\n className={`alignment-option ${active ? \"active\" : \"\"}`}\n onClick={() => {\n onSelect(opt.key);\n close();\n }}>\n <div className=\"option-icon\">\n <Icon name={opt.iconName} size={20} />\n </div>\n\n <div\n className={`option-check ${active ? \"\" : \"hidden\"}`}\n aria-hidden>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\n <path\n d=\"M20 6L9 17l-5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { eventTypes } from \"../utils/toolbar\";\nimport {\n FORMAT_TEXT_COMMAND,\n FORMAT_ELEMENT_COMMAND,\n UNDO_COMMAND,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n} from \"lexical\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n ListNode,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $getNearestNodeOfType, mergeRegister } from \"@lexical/utils\";\nimport { $isAtNodeEnd, $patchStyleText } from \"@lexical/selection\";\nimport { OPTIONS } from \"../utils/core\";\n\nconst LowPriority = 1;\n\n// Helper function to convert RGB to Hex\nfunction rgbToHex(rgb: string): string {\n if (!rgb) return rgb;\n\n // If already hex, return as is\n if (rgb.startsWith('#')) return rgb;\n\n // If rgba with transparency, return as is (can't convert to simple hex)\n if (rgb.startsWith('rgba')) {\n const match = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),?\\s*([\\d.]+)?\\)/);\n if (match) {\n const [, r, g, b, a] = match;\n // If fully transparent, return transparent\n if (a === '0') return 'transparent';\n // Convert to hex (ignoring alpha for now)\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n }\n\n // Handle rgb format\n const match = rgb.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const [, r, g, b] = match;\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n\n return rgb;\n}\n\nfunction useOnClickListener() {\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState(\"paragraph\");\n const [selectedEventTypes, setSelectedEventTypes] = useState<any>({\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n });\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n const newState: any = {\n // Set default values\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n };\n\n // range selection ( e.g like to bold only the particular area of the text)\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : anchorNode.getTopLevelElementOrThrow();\n\n const elementKey = element.getKey();\n const elementDOM = editor.getElementByKey(elementKey);\n\n if (elementDOM !== null) {\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType(anchorNode, ListNode);\n const type = parentList ? parentList.getTag() : element.getTag();\n setBlockType(type);\n } else {\n const type = element.getType();\n setBlockType(type);\n }\n }\n\n // Check formatting and add to selected events\n newState[eventTypes.bold] = selection.hasFormat(\"bold\");\n newState[eventTypes.italic] = selection.hasFormat(\"italic\");\n newState[eventTypes.underline] = selection.hasFormat(\"underline\");\n newState[eventTypes.strike] = selection.hasFormat(\"strikethrough\");\n newState[eventTypes.code] = selection.hasFormat(\"code\");\n\n // Get inline styles from selection\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n\n // Check for link\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n newState[eventTypes.link] = true;\n setIsLink(true);\n } else {\n newState[eventTypes.link] = false;\n setIsLink(false);\n }\n\n // Get the actual text node's DOM element for accurate style reading\n const textNodeDOM = editor.getElementByKey(node.getKey());\n const parentElement = editor.getElementByKey(parent.getKey());\n\n // Try multiple elements to find inline styles (Lexical wraps text in spans)\n const styleElement = textNodeDOM || parentElement || elementDOM;\n\n // Get computed styles from the node\n if (styleElement) {\n const computedStyle = window.getComputedStyle(styleElement);\n\n // Get font family - extract first font from the list\n const fontFamily = computedStyle.getPropertyValue(\"font-family\");\n if (fontFamily) {\n let firstFont = fontFamily.split(',')[0].trim().replace(/['\"]/g, '');\n // Normalize system fonts to sans-serif\n if (firstFont === \"-apple-system\" || firstFont === \"BlinkMacSystemFont\" || firstFont === \"system-ui\") {\n firstFont = \"sans-serif\";\n }\n newState[eventTypes.fontFamily] = firstFont;\n }\n\n // Get font size - extract only the number\n const fontSize = computedStyle.getPropertyValue(\"font-size\");\n if (fontSize) {\n const fontSizeNum = parseInt(fontSize, 10);\n newState[eventTypes.fontSize] = fontSizeNum || 16; // Default to 16 if parsing fails\n }\n\n // Get text color and background color\n // First try to get inline styles from the element itself\n let color = null;\n let backgroundColor = null;\n\n if (styleElement instanceof HTMLElement && styleElement.style) {\n // Check inline styles first (more accurate for Lexical's inline formatting)\n color = styleElement.style.color || null;\n backgroundColor = styleElement.style.backgroundColor || null;\n }\n\n // Fallback to computed styles if inline styles not found\n if (!color) {\n color = computedStyle.getPropertyValue(\"color\");\n }\n if (!backgroundColor) {\n backgroundColor = computedStyle.getPropertyValue(\"background-color\");\n }\n\n console.log(\"🎨 Color detection:\", {\n inlineColor: styleElement instanceof HTMLElement ? styleElement.style.color : 'N/A',\n inlineBg: styleElement instanceof HTMLElement ? styleElement.style.backgroundColor : 'N/A',\n computedColor: color,\n computedBg: backgroundColor,\n element: styleElement\n });\n\n // Only set if we have actual colors (not transparent/initial)\n const hexColor = color ? rgbToHex(color) : null;\n const hexBgColor = backgroundColor && backgroundColor !== 'rgba(0, 0, 0, 0)' && backgroundColor !== 'transparent'\n ? rgbToHex(backgroundColor)\n : null;\n\n if (hexColor || hexBgColor) {\n newState[eventTypes.color.base] = {\n text: hexColor || '#000000',\n background: hexBgColor || '#ffffff'\n };\n }\n\n // Get text alignment - normalize \"start\" to \"left\"\n let textAlign = computedStyle.getPropertyValue(\"text-align\") || \"left\";\n if (textAlign === \"start\") {\n textAlign = \"left\";\n }\n newState[eventTypes.align.base] = textAlign;\n }\n\n setSelectedEventTypes(newState);\n }\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n LowPriority\n )\n );\n }, [editor, updateToolbar]);\n function onChange(type: string, event: unknown) {\n switch (type) {\n case eventTypes.bold:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n break;\n case eventTypes.italic:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n break;\n case eventTypes.underline:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n break;\n case eventTypes.align.base:\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, event as any);\n break;\n case eventTypes.undo:\n editor.dispatchCommand(UNDO_COMMAND, undefined);\n break;\n case eventTypes.redo:\n editor.dispatchCommand(REDO_COMMAND, undefined);\n break;\n case eventTypes.listNumber:\n formatNumberedList();\n break;\n case eventTypes.listBullet:\n formatBulletList();\n break;\n case eventTypes.indent:\n addIndent();\n break;\n case eventTypes.indentDecrease:\n removeIndent();\n break;\n case eventTypes.color.base:\n applyFontColor(event as { background: string; text: string });\n break;\n case eventTypes.fontFamily:\n applyFontFamily(event as string);\n break;\n case eventTypes.fontSize:\n applyFontSize(event as string);\n break;\n case eventTypes.link:\n insertLink();\n break;\n\n default:\n break;\n }\n }\n\n const addIndent = () => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n };\n\n const applyFontFamily = (fontFamily: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-family\": fontFamily });\n }\n });\n };\n\n const applyFontSize = (fontSize: string) => {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.sizePx ?? 16;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-size\": `${selectedFontSize}px` });\n }\n });\n };\n\n const applyFontColor = (colorObj: { background: string; text: string }) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n \"background-color\": colorObj.background,\n color: colorObj.text,\n });\n }\n });\n };\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n } else {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [editor, isLink]);\n\n const removeIndent = () => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n };\n\n const formatBulletList = () => {\n if (blockType !== \"ul\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"ol\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n function getSelectedNode(selection: any) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) {\n return anchorNode;\n }\n const isBackward = selection.isBackward();\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode;\n } else {\n return $isAtNodeEnd(anchor) ? focusNode : anchorNode;\n }\n }\n\n return { onChange, isLink, editor, selectedEventTypes, blockType };\n}\n\nexport default useOnClickListener;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n type LexicalEditor,\n type BaseSelection,\n type RangeSelection,\n} from \"lexical\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $isAtNodeEnd } from \"@lexical/selection\";\nimport \"./index.css\";\nimport Icon from \"../Icon\";\n\ninterface FloatingLinkEditorProps {\n editor: LexicalEditor;\n}\n\nfunction FloatingLinkEditor({ editor }: FloatingLinkEditorProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const mouseDownRef = useRef(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(null);\n\n const updateLinkEditor = useCallback(() => {\n const nativeSelection = window.getSelection();\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkUrl(node.getURL());\n } else {\n setLinkUrl(\"\");\n }\n }\n\n const editorElem = editorRef.current;\n\n const activeElement = document.activeElement;\n\n if (!editorElem) return;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection &&\n nativeSelection &&\n !nativeSelection.isCollapsed &&\n rootElement &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner: HTMLElement | Element = rootElement;\n while (inner.firstElementChild != null) inner = inner.firstElementChild;\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n if (!mouseDownRef.current) {\n positionEditorElement(editorElem, rect);\n }\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n positionEditorElement(editorElem, null);\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl(\"\");\n }\n\n return true;\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }: { editorState: any }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n 1\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div className=\"floating-link-editor\" ref={editorRef}>\n {isEditMode ? (\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (lastSelection && linkUrl !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n }\n setEditMode(false);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n setEditMode(false);\n }\n }}\n placeholder=\"Enter link...\"\n />\n ) : (\n <div className=\"link-display\">\n <a href={linkUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl || \"No link selected\"}\n </a>\n </div>\n )}\n\n <button\n className=\"link-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n console.log(\"floating link editor\", isEditMode);\n if (isEditMode) editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n setEditMode((prev) => !prev);\n }}>\n <Icon name={isEditMode ? \"Check\" : \"Edit\"} />\n </button>\n </div>\n );\n}\n\nfunction getSelectedNode(selection: RangeSelection) {\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) return anchorNode;\n\n const isBackward = selection.isBackward();\n return isBackward\n ? $isAtNodeEnd(selection.focus)\n ? anchorNode\n : focusNode\n : $isAtNodeEnd(selection.anchor)\n ? focusNode\n : anchorNode;\n}\n\n// 🧭 Smart position logic to prevent going off-screen\nfunction positionEditorElement(editor: HTMLElement, rect: DOMRect | null) {\n if (!rect) {\n editor.style.opacity = \"0\";\n editor.style.top = \"-1000px\";\n editor.style.left = \"-1000px\";\n return;\n }\n\n const editorWidth = editor.offsetWidth;\n const editorHeight = editor.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Default position (below selection)\n let top = rect.top + rect.height + window.pageYOffset + 10;\n let left = rect.left + window.pageXOffset - editorWidth / 2 + rect.width / 2;\n\n // 🧩 Clamp horizontally\n if (left < 8) left = 8;\n if (left + editorWidth > viewportWidth - 8)\n left = viewportWidth - editorWidth - 8;\n\n // 🧩 Clamp vertically\n if (top + editorHeight > viewportHeight - 8) {\n top = rect.top + window.pageYOffset - editorHeight - 10; // place above\n }\n if (top < 8) top = 8;\n\n editor.style.opacity = \"1\";\n editor.style.top = `${top}px`;\n editor.style.left = `${left}px`;\n}\n\nexport default FloatingLinkEditor;\n","import { useState, useCallback, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport heic2any from \"heic2any\";\n\n/** ------------------ CONSTANTS ------------------ **/\n\nexport const FILE_UPLOAD_ERROR = {\n FILE_INVALID_TYPE: \"file-invalid-type\",\n FILE_TOO_LARGE: \"file-too-large\",\n TOO_MANY_FILES: \"too-many-files\",\n HEIC_CONVERSION_ERROR: \"heic-conversion-error\",\n};\n\nexport const MAX_NUMBER_OF_FILES_ALLOWED = 10;\nexport const MAX_SIZE_OF_FILE_ALLOWED_MB = 10; // 10 MB\n\n/** ------------------ UTILITIES ------------------ **/\n\nexport const getId = (): string =>\n Math.random().toString(36).substring(2, 10) + Date.now().toString(36);\n\nexport const getMBs = (bytes: number): { value: string; type: string } => {\n if (bytes < 1024) return { value: bytes.toString(), type: \"bytes\" };\n const kb = bytes / 1024;\n if (kb < 1024) return { value: kb.toFixed(1), type: \"KB\" };\n const mb = kb / 1024;\n if (mb < 1024) return { value: mb.toFixed(1), type: \"MB\" };\n const gb = mb / 1024;\n return { value: gb.toFixed(1), type: \"GB\" };\n};\n\n/** ------------------ TYPE DEFINITIONS ------------------ **/\n\nexport interface UploadedFile extends File {\n uuid: string;\n preview: string;\n}\n\nexport interface RejectedFileWithPreview {\n file: File;\n preview: string;\n readableErrors: string[];\n errors: { code: string; message: string }[];\n}\n\nexport interface UseFileUploadOptions {\n accept?: Record<string, string[]>;\n maxSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n isDisabled?: boolean;\n replaceAfterUpload?: boolean;\n files?: UploadedFile[];\n name?: string;\n insideForm?: boolean;\n handleFileChange?: (value: any) => void;\n}\n\nexport interface UseFileUploadReturn {\n getRootProps: any;\n getInputProps: any;\n isDragActive: boolean;\n isFileDialogOpen: boolean;\n rejectedFiles: RejectedFileWithPreview[];\n openFileDialog: () => void;\n removeFile: (uuid: string) => void;\n clearRejectedFiles: () => void;\n}\n\n/** ------------------ MAIN HOOK ------------------ **/\n\nexport const useFileUpload = ({\n accept = {\n \"image/*\": [\".png\", \".gif\", \".jpeg\", \".jpg\"],\n \"application/pdf\": [\".pdf\"],\n },\n maxSize = MAX_SIZE_OF_FILE_ALLOWED_MB * 1024 * 1024,\n maxFiles = MAX_NUMBER_OF_FILES_ALLOWED,\n multiple = true,\n isDisabled = false,\n replaceAfterUpload = false,\n files = [],\n handleFileChange = () => {},\n}: UseFileUploadOptions): UseFileUploadReturn => {\n const [isFileDialogOpen, setIsFileDialogOpen] = useState(false);\n const [fileUploaded, setFileUploaded] = useState<UploadedFile[]>(files ?? []);\n const [rejectedFiles, setRejectedFile] = useState<RejectedFileWithPreview[]>(\n []\n );\n\n /** User-friendly error text generator */\n const getErrorText = (errorCode: string): string => {\n switch (errorCode) {\n case FILE_UPLOAD_ERROR.FILE_INVALID_TYPE:\n return \"Invalid file type. Please upload a supported format.\";\n case FILE_UPLOAD_ERROR.FILE_TOO_LARGE: {\n const { value, type } = getMBs(maxSize);\n return `File too large. Maximum allowed size is ${value} ${type}.`;\n }\n case FILE_UPLOAD_ERROR.TOO_MANY_FILES:\n return `Too many files selected. Maximum allowed: ${maxFiles}.`;\n case FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR:\n return \"Failed to convert HEIC image. Please upload a JPEG or PNG instead.\";\n default:\n return \"An unknown file error occurred.\";\n }\n };\n\n /** Update form or callback on change */\n useEffect(() => {\n handleFileChange(fileUploaded);\n }, [fileUploaded]);\n\n /** Setup Dropzone */\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n accept,\n maxSize,\n multiple,\n maxFiles,\n disabled: isDisabled,\n noClick: true,\n onFileDialogCancel: () => setIsFileDialogOpen(false),\n onFileDialogOpen: () => {\n if (!isDisabled) setIsFileDialogOpen(true);\n },\n onDrop: async (_acceptedFiles, fileRejections) => {\n const acceptedFiles = await Promise.all(\n _acceptedFiles.map(async (file) => {\n if (!file) return null;\n\n // Handle HEIC conversion\n if (file.type === \"image/heic\") {\n try {\n const blob = await heic2any({ blob: file, toType: \"image/jpeg\" });\n const blobArray = Array.isArray(blob) ? blob[0] : blob;\n const convertedFile = new File(\n [blobArray],\n `${file.name.replace(/\\.heic$/i, \"\")}.jpeg`,\n { type: \"image/jpeg\" }\n );\n return Object.assign(convertedFile, {\n uuid: getId(),\n preview: URL.createObjectURL(convertedFile),\n });\n } catch (err) {\n console.error(\"HEIC conversion error:\", err);\n const msg = getErrorText(FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR);\n setRejectedFile((prev) => [\n ...prev,\n {\n file,\n preview: URL.createObjectURL(file),\n readableErrors: [msg],\n errors: [\n {\n code: FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR,\n message: msg,\n },\n ],\n },\n ]);\n return null;\n }\n }\n\n // Normal file\n return Object.assign(file, {\n uuid: getId(),\n preview: URL.createObjectURL(file),\n });\n })\n );\n\n const validFiles = acceptedFiles.filter(Boolean) as UploadedFile[];\n\n if (!isDisabled) {\n let newFiles = replaceAfterUpload ? [] : [...fileUploaded];\n newFiles = [...newFiles, ...validFiles];\n\n const mappedRejections = fileRejections.map<RejectedFileWithPreview>(\n (item) => {\n const readableErrors = item.errors.map((err) =>\n getErrorText(err.code)\n );\n return {\n file: item.file,\n errors: item.errors.map((err) => ({ code: err.code, message: err.message })),\n preview: URL.createObjectURL(item.file),\n readableErrors,\n };\n }\n );\n\n setRejectedFile((prev) => [...prev, ...mappedRejections]);\n setFileUploaded(newFiles);\n return newFiles;\n }\n\n return fileUploaded;\n },\n validator: (item) => {\n const { name: fileName, type } = item;\n if (fileName) {\n const ext = fileName.split(\".\").pop()?.toLowerCase();\n if (\n accept &&\n accept?.[type] &&\n accept?.[type].length &&\n !accept?.[type].includes(`.${ext}`)\n ) {\n return {\n code: FILE_UPLOAD_ERROR.FILE_INVALID_TYPE,\n message: getErrorText(FILE_UPLOAD_ERROR.FILE_INVALID_TYPE),\n };\n }\n }\n return null;\n },\n });\n\n /** Remove a specific file */\n const removeFile = useCallback(\n (uuid: string) => {\n setFileUploaded((prev) => prev.filter((file) => file.uuid !== uuid));\n },\n [setFileUploaded]\n );\n\n /** Clear rejected files */\n const clearRejectedFiles = useCallback(() => {\n setRejectedFile([]);\n }, []);\n\n /** Cleanup memory leaks */\n useEffect(() => {\n return () => {\n fileUploaded.forEach((f) => f.preview && URL.revokeObjectURL(f.preview));\n rejectedFiles.forEach((r) => r.preview && URL.revokeObjectURL(r.preview));\n };\n }, []);\n\n /** Return all handlers and states */\n return {\n getRootProps,\n getInputProps,\n isDragActive,\n isFileDialogOpen,\n rejectedFiles,\n openFileDialog: open,\n removeFile,\n clearRejectedFiles,\n };\n};\n","import React from \"react\";\nimport Icon from \"../Icon\";\nimport { useFileUpload } from \"../../../hook/useFileUpload\";\n\ninterface FileUploaderProps {\n value?: File[];\n handleFileChange: (files: File[]) => void;\n}\n\nconst FileUploader: React.FC<FileUploaderProps> = ({ handleFileChange }) => {\n const {\n getRootProps,\n getInputProps,\n openFileDialog,\n } = useFileUpload({\n multiple: true,\n maxFiles: 5,\n maxSize: 5 * 1024 * 1024, // 5 MB\n handleFileChange: (files) => {\n handleFileChange(files);\n },\n });\n\n return (\n <div className=\"uploader-container\">\n {/* Upload area */}\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n <button onClick={openFileDialog}>\n <Icon className=\"upload-icon\" name=\"Attach\" />\n </button>\n </div>\n </div>\n );\n};\n\nexport default FileUploader;\n","import { useMemo } from \"react\";\nimport \"./FilePreview.css\";\n\n/**\n * Props:\n * - file: File | { name, size, type?, url? }\n * - index?: number // shown as (index)\n * - onRemove?: () => void\n * - onView?: (url) => void\n *\n * Behavior:\n * - If `file` is a native File object and no url provided, component creates an object URL for view/download.\n * - Renders like: (70) WhatsApp.html (505K) [×]\n * - No icons, minimal markup to match screenshot.\n */\n\ninterface FilePreviewProps {\n file: File | { name: string; size?: number; bytes?: number; type?: string; url?: string };\n index?: number;\n onRemove?: (index?: number) => void;\n onView?: (url: string | null) => void;\n}\n\nexport default function FilePreview({ file, index, onRemove, onView }: FilePreviewProps) {\n if (!file) return null;\n\n const name = file?.name ?? \"unknown\";\n const sizeBytes: number | null =\n file instanceof File\n ? file.size\n : ('size' in file && file.size !== undefined\n ? file.size\n : ('bytes' in file && file.bytes !== undefined ? file.bytes : null));\n const urlFromProp = ('url' in file ? file?.url : null) ?? null;\n\n // If file is a native File and no url provided, createObjectURL.\n const url = useMemo(() => {\n if (urlFromProp) return urlFromProp;\n if (typeof window !== \"undefined\" && file instanceof File) {\n try {\n return URL.createObjectURL(file);\n } catch (e) {\n return null;\n }\n }\n return null;\n }, [file, urlFromProp]);\n\n const formatSizeShort = (bytes: number | null) => {\n if (!bytes && bytes !== 0) return \"\";\n const kb = Math.round(bytes / 1024);\n if (kb < 1024) return `${kb}K`;\n const mb = Math.round((bytes / 1024 / 1024) * 10) / 10;\n return `${mb}M`;\n };\n\n const handleView = (e: React.MouseEvent) => {\n e.preventDefault();\n if (onView) return onView(url ?? null);\n if (url) window.open(url, \"_blank\", \"noopener\");\n };\n\n const handleRemove = (index?: number) => {\n if (onRemove) onRemove(index);\n };\n\n return (\n <div className=\"fps-row\" role=\"group\" aria-label={`Attachment ${name}`}>\n <div className=\"fps-left\">\n <a\n href={url ?? \"#\"}\n className=\"fps-filename\"\n onClick={handleView}\n title={name}\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {name}\n </a>\n {sizeBytes != null && (\n <span className=\"fps-size\">&nbsp;({formatSizeShort(sizeBytes)})</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"fps-close\"\n aria-label={`Remove ${name}`}\n onClick={() => handleRemove(index)}>\n ×\n </button>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n eventTypes,\n pluginList,\n toolbarComponentType,\n} from \"../../../utils/toolbar\";\nimport Icon from \"../../core/Icon\";\nimport FontSelect from \"../../core/FontSelect\";\nimport FontSizePicker from \"../../core/FontSize\";\nimport ColorPicker from \"../../core/ColorPicker\";\nimport AlignmentSelect from \"../../core/AlignmentSelect\";\nimport \"./style.css\";\n\nimport useOnClickListener from \"../../../hook/useOnClickListener\";\nimport FloatingLinkEditor from \"../../core/FloatingLinkEditor\";\nimport FileUploader from \"../../core/FileUploader\";\nimport FilePreview from \"../../core/FileUploader/FilePreview\";\nimport { useEmailContext } from \"../../GmailWrapper/EmailContext\";\n\ninterface ToolbarComponentProps {\n onChange: (name: string, value: any) => void;\n state: Record<string, any>;\n setState: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n selectedEventTypes: Record<string, any>;\n blockType: string;\n setAttachments: (files: File[]) => void;\n}\n\nconst getToolbarComponent = (\n plugin: any,\n { onChange, state, setState, selectedEventTypes, blockType, setAttachments }: ToolbarComponentProps\n) => {\n switch (plugin.name) {\n case eventTypes.undo:\n case eventTypes.redo:\n case eventTypes.bold:\n case eventTypes.italic:\n case eventTypes.underline:\n case eventTypes.indentDecrease:\n case eventTypes.indent:\n case eventTypes.link:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listNumber:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ol\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listBullet:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ul\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.attachFile:\n return (\n <FileUploader\n value={state?.[plugin.name]}\n handleFileChange={(e) => {\n console.log(\"🚀 ~ getToolbarComponent ~ e:\", e);\n setState((prev) => {\n return { ...prev, [plugin.name]: e };\n });\n // Update the EmailContext with the new attachments\n setAttachments(e);\n }}\n />\n );\n case eventTypes.fontFamily:\n return (\n <FontSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.fontSize:\n return (\n <FontSizePicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.color.base:\n return (\n <ColorPicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.align.base:\n return (\n <AlignmentSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n\n default:\n break;\n }\n if (plugin.type === toolbarComponentType.divider)\n return <span className=\"divider\" />;\n else return \"-\";\n};\ninterface GetComponentProps extends ToolbarComponentProps {\n toggle: boolean;\n setToggle: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getComponent = (\n plugin: {\n type: string;\n icon?: string;\n options?: any[];\n },\n {\n setToggle,\n toggle,\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n }: GetComponentProps\n) => {\n switch (plugin.type) {\n case toolbarComponentType.divider:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"divider\"\n />\n );\n case toolbarComponentType.component:\n return getToolbarComponent(plugin, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n });\n case toolbarComponentType.styling:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"styling-toolbar\">\n {toggle ? (\n <div className=\"styling-options\">\n {plugin.options?.length && Array.isArray(plugin.options)\n ? plugin.options?.map((option: string) =>\n getToolbarComponent(option, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )\n : null}\n </div>\n ) : null}\n <button onClick={() => setToggle((prev) => !prev)}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon as any} />\n </button>\n </div>\n );\n default:\n break;\n }\n return \"-\";\n};\ninterface ToolBarProps {\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n}\n\nfunction ToolBar({ rightChildren, leftChildren }: ToolBarProps) {\n const [toggle, setToggle] = useState(true);\n const [state, setState] = useState<Record<string, any>>({});\n const { setAttachments } = useEmailContext();\n const { onChange, isLink, editor, selectedEventTypes, blockType } =\n useOnClickListener();\n console.log(\"🚀 ~ ToolBar ~ selectedEventTypes:\", selectedEventTypes);\n return (\n <div className=\"toolbar-container\">\n {state[eventTypes.attachFile]?.length ? (\n <div className=\"file-upload-container\">\n {state[eventTypes.attachFile]?.map((item: File, index: number) => (\n <FilePreview\n key={index}\n file={item}\n index={index}\n onRemove={(index) => {\n setState((prev: any) => {\n const updatedFiles = prev[eventTypes.attachFile].filter(\n (_file: File, i: number) => i !== index\n );\n // Update EmailContext with the new attachments list\n setAttachments(updatedFiles);\n return {\n ...prev,\n [eventTypes.attachFile]: updatedFiles,\n };\n });\n }}\n />\n ))}\n </div>\n ) : null}\n <div className=\"toolbar-wrapper\">\n {leftChildren}\n {pluginList?.map((plugin) =>\n getComponent(plugin, {\n setToggle,\n state,\n setState,\n toggle,\n onChange,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )}\n {rightChildren}\n {isLink\n ? createPortal(<FloatingLinkEditor editor={editor} />, document.body)\n : null}\n </div>\n </div>\n );\n}\n\nexport default ToolBar;\n","const lexicalEditorTheme = {\n ltr: \"ltr\",\n rtl: \"rtl\",\n placeholder: \"editor-placeholder\",\n paragraph: \"editor-paragraph\",\n quote: \"editor-quote\",\n heading: {\n h1: \"editor-heading-h1\",\n h2: \"editor-heading-h2\",\n h3: \"editor-heading-h3\",\n h4: \"editor-heading-h4\",\n h5: \"editor-heading-h5\",\n },\n list: {\n nested: {\n listitem: \"editor-nested-listitem\",\n },\n ol: \"editor-list-ol\",\n ul: \"editor-list-ul\",\n listitem: \"editor-listitem\",\n },\n image: \"editor-image\",\n link: \"editor-link\",\n text: {\n bold: \"editor-text-bold\",\n italic: \"editor-text-italic\",\n overflowed: \"editor-text-overflowed\",\n hashtag: \"editor-text-hashtag\",\n underline: \"editor-text-underline\",\n strikethrough: \"editor-text-strikethrough\",\n underlineStrikethrough: \"editor-text-underlineStrikethrough\",\n code: \"editor-text-code\",\n },\n code: \"editor-code\",\n codeHighlight: {\n atrule: \"editor-tokenAttr\",\n attr: \"editor-tokenAttr\",\n boolean: \"editor-tokenProperty\",\n builtin: \"editor-tokenSelector\",\n cdata: \"editor-tokenComment\",\n char: \"editor-tokenSelector\",\n class: \"editor-tokenFunction\",\n \"class-name\": \"editor-tokenFunction\",\n comment: \"editor-tokenComment\",\n constant: \"editor-tokenProperty\",\n deleted: \"editor-tokenProperty\",\n doctype: \"editor-tokenComment\",\n entity: \"editor-tokenOperator\",\n function: \"editor-tokenFunction\",\n important: \"editor-tokenVariable\",\n inserted: \"editor-tokenSelector\",\n keyword: \"editor-tokenAttr\",\n namespace: \"editor-tokenVariable\",\n number: \"editor-tokenProperty\",\n operator: \"editor-tokenOperator\",\n prolog: \"editor-tokenComment\",\n property: \"editor-tokenProperty\",\n punctuation: \"editor-tokenPunctuation\",\n regex: \"editor-tokenVariable\",\n selector: \"editor-tokenSelector\",\n string: \"editor-tokenSelector\",\n symbol: \"editor-tokenProperty\",\n tag: \"editor-tokenProperty\",\n url: \"editor-tokenOperator\",\n variable: \"editor-tokenVariable\",\n },\n};\nexport default lexicalEditorTheme;\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { $getRoot } from \"lexical\";\n\ninterface SetInitialHTMLProps {\n initialHTML: string;\n}\n\nfunction SetInitialHTML({ initialHTML }: SetInitialHTMLProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const parser = new DOMParser();\n const dom = parser.parseFromString(initialHTML, \"text/html\");\n const nodes = $generateNodesFromDOM(editor, dom);\n const root = $getRoot();\n\n root.clear(); // Clear existing content\n root.append(...nodes); // Insert parsed HTML\n });\n }, [editor, initialHTML]);\n\n return null;\n}\n\nexport default SetInitialHTML;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { useEffect } from \"react\";\n\nexport default function OnChangePlugin({\n onChange\n}: {\n onChange: (html: string) => void\n}) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const html = $generateHtmlFromNodes(editor, null);\n onChange(html);\n });\n });\n }, [editor, onChange]);\n\n return null;\n}\n","import { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport \"./editor.css\";\nimport ToolBar from \"../Toolbar\";\nimport lexicalEditorTheme from \"../../../Themes/lexicalEditortheme\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport SetInitialHTML from \"../../../plugins/SetInitialHTML\";\nimport OnChangePlugin from \"../../../plugins/OnChangePlugin\";\n\n// Catch any errors that occur during Lexical updates and log them\n// or throw them as needed. If you don't throw them, Lexical will\n// try to recover gracefully without losing user data.\nfunction onError(error: Error) {\n console.error(error);\n}\ntype EditorWrapperProps = {\n placeholder?: string;\n minHeight?: string;\n initialHTML?: string;\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n onChange?: (html: string) => void;\n editorChildren?: React.ReactNode;\n isEditorVisible?: boolean;\n};\nfunction EditorWrapper({\n placeholder = \"Enter some text here\",\n initialHTML = \"\",\n rightChildren,\n leftChildren,\n minHeight = \"\",\n onChange,\n editorChildren,\n isEditorVisible = true,\n}: EditorWrapperProps) {\n const initialConfig = {\n namespace: \"MyEditor\",\n theme: lexicalEditorTheme,\n nodes: [LinkNode, ListNode, ListItemNode, AutoLinkNode],\n onError,\n };\n\n return (\n <div className=\"my-editor-wrapper\">\n <LexicalComposer initialConfig={initialConfig}>\n {isEditorVisible ? (\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n style={{ minHeight }}\n className=\"my-editor-content\"\n aria-placeholder={placeholder}\n placeholder={\n <div className=\"my-editor-placeholder\">{placeholder}</div>\n }\n />\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n ) : (\n editorChildren\n )}\n <ToolBar rightChildren={rightChildren} leftChildren={leftChildren} />\n <HistoryPlugin />\n <SetInitialHTML initialHTML={initialHTML} />\n <AutoFocusPlugin />\n <ListPlugin />\n <LinkPlugin />\n {onChange && <OnChangePlugin onChange={onChange} />}\n </LexicalComposer>\n </div>\n );\n}\n\nexport default EditorWrapper;\n","function isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nexport { isValidEmail };\n","import { useEffect, useRef, useState } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport { isValidEmail } from \"../../../utils/common\";\nimport Icon from \"../../core/Icon\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputWithDropDown({ emails = [], setEmails, fetchOptions }: {\n emails?: EmailOption[];\n setEmails: (emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const popupRef = useRef<any>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [currentEmail, setCurrentEmail] = useState(\"\");\n const [popupOpen, setPopupOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n const [options, setOptions] = useState<EmailOption[]>([]);\n const [loading, setLoading] = useState(false);\n\n // store refs for each email chip\n const emailRefs = useRef<(HTMLDivElement | null)[]>([]);\n // store refs for dropdown options\n const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // keep refs array length consistent\n useEffect(() => {\n emailRefs.current = emailRefs.current.slice(0, emails.length);\n }, [emails.length]);\n\n // keep option refs array length consistent\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n // Fetch options when a valid email is entered\n useEffect(() => {\n if (isValidEmail(currentEmail)) {\n const loadOptions = async () => {\n setLoading(true);\n try {\n const data = await fetchOptions(currentEmail);\n setOptions(data);\n } catch (err) {\n console.error(\"Error fetching email options:\", err);\n setOptions([]);\n } finally {\n setLoading(false);\n }\n };\n\n loadOptions();\n } else {\n setOptions([]);\n setLoading(false);\n }\n }, [currentEmail, fetchOptions]);\n\n // reset selected index when popup closes or options change\n useEffect(() => {\n if (!popupOpen) {\n setSelectedIndex(-1);\n }\n }, [popupOpen]);\n\n // scroll selected option into view\n useEffect(() => {\n if (selectedIndex >= 0 && selectedIndex < optionRefs.current.length) {\n optionRefs.current[selectedIndex]?.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }\n }, [selectedIndex]);\n\n const focusInput = () => {\n inputRef.current?.focus();\n };\n\n const addEmail = (option: EmailOption) => {\n popupRef.current?.close();\n setCurrentEmail(\"\");\n setEmails((prev: EmailOption[]) => [...prev, option]);\n setSelectedIndex(-1);\n // refocus input after adding\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Handle dropdown navigation when popup is open\n if (popupOpen && isValidEmail(currentEmail) && options.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectedIndex((prev) =>\n prev < options.length - 1 ? prev + 1 : prev\n );\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectedIndex((prev) => (prev > 0 ? prev - 1 : -1));\n return;\n }\n if (e.key === \"Enter\" && selectedIndex >= 0) {\n e.preventDefault();\n addEmail(options[selectedIndex]);\n return;\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n popupRef.current?.close();\n setSelectedIndex(-1);\n return;\n }\n }\n\n if (e.key === \"Backspace\" && currentEmail === \"\") {\n // focus last email chip if exists\n const lastIdx = emails.length - 1;\n const lastChip = emailRefs.current[lastIdx];\n if (lastChip) {\n lastChip.focus();\n e.preventDefault();\n }\n }\n };\n\n const removeEmailAt = (index: number) => {\n setEmails((prev) => {\n const next = [...prev];\n next.splice(index, 1);\n return next;\n });\n // next tick: focus previous chip if exists else the input\n requestAnimationFrame(() => {\n const prevIdx = Math.min(Math.max(0, index - 1), emails.length - 2);\n const prevChip = emailRefs.current[prevIdx];\n if (prevChip) prevChip.focus();\n else focusInput();\n });\n };\n\n return (\n <>\n <Popup\n ref={popupRef}\n trigger={\n <div className=\"container-receipts\">\n {emails?.length ? (\n <div className=\"emails-container\">\n {emails.map((email, idx) => (\n <div\n key={email.email ?? idx}\n className=\"emails\"\n tabIndex={0} // make it focusable\n ref={(el) => {\n emailRefs.current[idx] = el;\n }}\n onKeyDown={(e) => {\n if (e.key === \"Backspace\") {\n e.preventDefault();\n removeEmailAt(idx);\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n removeEmailAt(idx);\n focusInput();\n }\n }}\n role=\"button\"\n aria-label={`Email ${email.email}`}>\n <span style={{ marginRight: 8 }}>{email.email}</span>\n <button\n className=\"emails-close\"\n onClick={(ev) => {\n ev.stopPropagation();\n removeEmailAt(idx);\n }}\n aria-label={`Remove ${email.email}`}>\n <Icon name=\"Close\" />\n </button>\n </div>\n ))}\n </div>\n ) : null}\n <input\n ref={inputRef}\n type=\"text\"\n className=\"input-header\"\n value={currentEmail}\n autoFocus\n onKeyDown={handleInputKeyDown}\n // DON'T forcibly close popup here\n onChange={(e) => {\n const val = e.target.value;\n // open popup when the email becomes valid\n if (isValidEmail(val)) {\n popupRef.current?.open();\n }\n setCurrentEmail(val);\n }}\n />\n </div>\n }\n closeOnDocumentClick\n repositionOnResize\n position={\"bottom left\"}\n className=\"filter-popup\"\n onOpen={() => {\n setPopupOpen(true);\n // ensure input stays focused (some popup implementations steal focus)\n requestAnimationFrame(() => inputRef.current?.focus());\n }}\n onClose={() => {\n setPopupOpen(false);\n }}>\n {isValidEmail(currentEmail) ? (\n <div className=\"options-dropdown\">\n {loading ? (\n // Skeleton loader\n <>\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"option-dropdown skeleton-loader\">\n <div className=\"skeleton-line skeleton-name\"></div>\n <div className=\"skeleton-line skeleton-email\"></div>\n </div>\n ))}\n </>\n ) : options.length > 0 ? (\n options.map((opt, idx) => {\n return (\n <button\n ref={(el) => {\n optionRefs.current[idx] = el;\n }}\n className={`option-dropdown ${selectedIndex === idx ? \"selected\" : \"\"}`}\n key={idx}\n onBlur={(e) => {\n e.stopPropagation();\n }}\n onFocus={(e) => {\n e.stopPropagation();\n }}\n onMouseEnter={() => setSelectedIndex(idx)}\n onMouseLeave={() => setSelectedIndex(-1)}\n onClick={(e) => {\n e.stopPropagation();\n addEmail(opt);\n }}\n aria-selected={selectedIndex === idx}>\n <h4>{opt.name}</h4>\n {opt.email}\n </button>\n );\n })\n ) : null}\n </div>\n ) : null}\n </Popup>\n </>\n );\n}\n\nexport default InputWithDropDown;\n","import React from \"react\";\nimport InputWithDropDown from \"./InputWIthDropDown\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputForEmail({\n name,\n needCCAndBCC,\n setShowCC,\n setShowBCC,\n showBCC,\n showCC,\n emails,\n handleChange,\n fetchOptions,\n}: {\n name: string;\n needCCAndBCC?: boolean;\n setShowCC?: React.Dispatch<React.SetStateAction<boolean>>;\n setShowBCC?: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC?: boolean;\n showCC?: boolean;\n emails: EmailOption[];\n handleChange: (\n emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])\n ) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n return (\n <div className=\"container-receipts\">\n <label className=\"block text-sm font-medium text-gray-700\">{name}</label>\n\n <InputWithDropDown\n emails={emails}\n setEmails={handleChange}\n fetchOptions={fetchOptions}\n />\n {needCCAndBCC && !showCC ? (\n <button className=\"btn\" onClick={() => setShowCC?.((prev) => !prev)}>\n CC\n </button>\n ) : null}\n {needCCAndBCC && !showBCC ? (\n <button className=\"btn\" onClick={() => setShowBCC?.((prev) => !prev)}>\n BCC\n </button>\n ) : null}\n </div>\n );\n}\n\nexport default InputForEmail;\n","import { useRef, useState, useEffect } from \"react\";\nimport InputForEmail from \"./InputForEmail\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction ReceiptsHeading({ fetchEmailOptions }: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const { emails, setEmails, showCC, setShowCC, showBCC, setShowBCC } =\n useEmailContext();\n\n // Show CC/BCC fields when opening if they have values\n useEffect(() => {\n if (open) {\n setShowCC(emails.cc.length > 0);\n setShowBCC(emails.bcc.length > 0);\n }\n }, [open, emails.cc.length, emails.bcc.length]);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n if (!wrapper) return;\n\n // Focus in event (bubbles unlike React's onFocus)\n const handleFocusIn = () => {\n setOpen(true);\n };\n\n // Focus out event (bubbles unlike React's onBlur)\n const handleFocusOut = (e: FocusEvent) => {\n console.log(\"🚀 ~ handleFocusOut ~ e:\", e);\n const next = e.relatedTarget as HTMLElement | null;\n // Only close if the next focused element is outside the wrapper\n if (\n (next &&\n next.classList &&\n next.classList.contains(\"option-dropdown\")) ||\n (next && wrapper.contains(next))\n )\n return;\n console.log(\"why this \", next?.classList);\n setOpen(false);\n };\n\n wrapper.addEventListener(\"focusin\", handleFocusIn);\n wrapper.addEventListener(\"focusout\", handleFocusOut);\n\n return () => {\n wrapper.removeEventListener(\"focusin\", handleFocusIn);\n wrapper.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, []);\n\n // Helper to display email recipients in collapsed view\n const getDisplayText = () => {\n if (\n emails.to.length === 0 &&\n emails.cc.length === 0 &&\n emails.bcc.length === 0\n ) {\n return \"Recipients\";\n }\n\n const parts = [];\n\n // Add TO recipients\n if (emails.to.length > 0) {\n parts.push(emails.to.map((e) => e.email).join(\", \"));\n }\n\n // Add CC recipients with \"cc:\" prefix\n if (emails.cc.length > 0) {\n parts.push(emails.cc.map((e) => e.email).join(\", \"));\n }\n\n // Add BCC recipients with \"bcc:\" prefix\n if (emails.bcc.length > 0) {\n parts.push(\"bcc: \" + emails.bcc.map((e) => e.email).join(\", \"));\n }\n\n return parts.join(\", \");\n };\n\n return (\n <div ref={wrapperRef} tabIndex={-1} className=\"relative\">\n {!open ? (\n <input\n type=\"text\"\n placeholder=\"Recipients\"\n className=\"input-header\"\n value={getDisplayText()}\n readOnly\n />\n ) : (\n <div>\n <InputForEmail\n name=\"To\"\n needCCAndBCC\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.to}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n to: typeof value === \"function\" ? value(prev.to) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n {showCC ? (\n <InputForEmail\n name=\"CC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.cc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n cc: typeof value === \"function\" ? value(prev.cc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n {showBCC ? (\n <InputForEmail\n name=\"BCC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.bcc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n bcc: typeof value === \"function\" ? value(prev.bcc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n </div>\n )}\n </div>\n );\n}\n\nexport default ReceiptsHeading;\n","import ReceiptsHeading from \"../ReceiptsHeading\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction GmailHeading({\n fetchEmailOptions,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const { subject, setSubject, isReply } = useEmailContext();\n\n return (\n <div className=\"gmail-header\">\n <ReceiptsHeading fetchEmailOptions={fetchEmailOptions} />\n <input\n type=\"text\"\n placeholder=\"Subject\"\n className=\"input-header\"\n value={isReply && !subject.startsWith(\"Re: \") ? `Re: ${subject}` : subject}\n onChange={(e) => setSubject(e.target.value)}\n />\n </div>\n );\n}\n\nexport default GmailHeading;\n","import { useEffect, useState, type ReactNode } from \"react\";\nimport EditorWrapper from \"../Editor/EditorWrapper\";\nimport GmailHeading from \"./GmailHeading\";\nimport { useEmailContext, type EmailOption } from \"./EmailContext\";\nimport type { EmailData } from \"./index\";\n\nfunction GmailWrapperContent({\n initialData,\n isReply,\n fetchEmailOptions,\n handleChange,\n leftChildren,\n rightChildren,\n editorChildren,\n isEditorVisible = true,\n}: {\n initialData?: Partial<EmailData>;\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n editorChildren?: ReactNode;\n isEditorVisible?: boolean;\n}) {\n const {\n emails,\n subject,\n attachments,\n setEmails,\n setSubject,\n setAttachments,\n setIsReply,\n } = useEmailContext();\n const [bodyHTML, setBodyHTML] = useState(initialData?.body || \"\");\n const [emailData, setEmailData] = useState<EmailData>({\n to: initialData?.to || [],\n cc: initialData?.cc || [],\n bcc: initialData?.bcc || [],\n subject: initialData?.subject || \"\",\n body: initialData?.body || \"\",\n attachments: initialData?.attachments || [],\n isReply: isReply || false,\n });\n\n // Initialize context values from initialData on mount\n useEffect(() => {\n if (initialData) {\n if (initialData.to || initialData.cc || initialData.bcc) {\n setEmails({\n to: initialData.to || [],\n cc: initialData.cc || [],\n bcc: initialData.bcc || [],\n });\n }\n if (initialData.subject) {\n setSubject(initialData.subject);\n }\n if (initialData.attachments) {\n setAttachments(initialData.attachments);\n }\n if (initialData.body) {\n setBodyHTML(initialData.body);\n }\n }\n if (isReply !== undefined) {\n setIsReply(isReply);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleEditorChange = (html: string) => {\n setBodyHTML(html);\n };\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n to: emails.to,\n cc: emails.cc,\n bcc: emails.bcc,\n }));\n }, [emails]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n subject,\n }));\n }, [subject]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n body: bodyHTML,\n }));\n }, [bodyHTML]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n attachments,\n }));\n }, [attachments]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n isReply,\n }));\n }, [isReply]);\n\n useEffect(() => {\n handleChange(emailData);\n }, [emailData, handleChange]);\n\n return (\n <div className=\"gmail-wrapper\">\n {leftChildren}\n <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n <EditorWrapper\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n isEditorVisible={isEditorVisible}\n />\n {rightChildren}\n </div>\n );\n}\n\nexport default GmailWrapperContent;\n","import { type ReactNode } from \"react\";\nimport { EmailProvider, type EmailOption } from \"./EmailContext\";\nimport GmailWrapperContent from \"./GmailWrapperContent\";\nimport \"./index.css\";\n\nexport interface EmailData {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n subject: string;\n body: string;\n attachments: File[];\n isReply?: boolean;\n}\n\nfunction GmailWrapper({\n fetchEmailOptions,\n handleChange,\n initialData,\n leftChildren,\n rightChildren,\n isReply,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n}) {\n return (\n <EmailProvider>\n <GmailWrapperContent\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n isReply={isReply}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </EmailProvider>\n );\n}\n\nexport default GmailWrapper;\n","import { type ReactNode } from \"react\";\nimport { ThemeProvider, type Theme } from \"../../context/ThemeContext\";\nimport GmailWrapper, { type EmailData } from \"../GmailWrapper\";\nimport type { EmailOption } from \"../GmailWrapper/EmailContext\";\n\nexport { useTheme, type Theme } from \"../../context/ThemeContext\";\nexport type { EmailData, EmailOption };\n\ninterface GmailInboxProps {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n}\n\nfunction GmailInbox({\n fetchEmailOptions,\n handleChange,\n initialData,\n initialTheme = \"dark\",\n onThemeChange,\n leftChildren,\n rightChildren,\n}: GmailInboxProps) {\n return (\n <ThemeProvider initialTheme={initialTheme} onThemeChange={onThemeChange}>\n <GmailWrapper\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </ThemeProvider>\n );\n}\n\nexport default GmailInbox;\n"]}
1
+ {"version":3,"sources":["../src/context/ThemeContext.tsx","../src/Components/GmailWrapper/EmailContext.tsx","../src/utils/toolbar.ts","../src/Components/core/Icon/helper.ts","../src/Components/core/Icon/index.tsx","../src/Components/core/MyPopup/index.tsx","../src/utils/core.ts","../src/Components/core/FontSelect/index.tsx","../src/Components/core/FontSize/index.tsx","../src/Components/core/ColorPicker/index.tsx","../src/Components/core/AlignmentSelect/index.tsx","../src/hook/useOnClickListener.tsx","../src/Components/core/FloatingLinkEditor/index.tsx","../src/hook/useFileUpload.ts","../src/Components/core/FileUploader/index.tsx","../src/Components/core/FileUploader/FilePreview.tsx","../src/Components/Editor/Toolbar/index.tsx","../src/Themes/lexicalEditortheme.ts","../src/plugins/SetInitialHTML.tsx","../src/plugins/OnChangePlugin.tsx","../src/Components/Editor/EditorWrapper/index.tsx","../src/utils/common.ts","../src/Components/GmailWrapper/ReceiptsHeading/InputWIthDropDown.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputForEmail.tsx","../src/Components/GmailWrapper/ReceiptsHeading/index.tsx","../src/Components/GmailWrapper/GmailHeading/index.tsx","../src/Components/GmailWrapper/GmailWrapperContent.tsx","../src/Components/GmailWrapper/index.tsx","../src/Components/GmailInbox/index.tsx","../src/index.tsx"],"names":["createContext","useContext","useState","useEffect","jsx","MdUndo","MdRedo","MdFormatBold","MdFormatItalic","MdFormatUnderlined","MdTextFormat","MdFormatAlignLeft","MdFormatAlignRight","MdFormatAlignCenter","MdFormatListBulleted","MdFormatListNumbered","MdFormatIndentDecrease","MdOutlineFormatIndentIncrease","MdFormatClear","MdStrikethroughS","MdFormatQuote","MdArrowDropDown","MdAttachFile","MdLink","MdImage","MdCheck","MdTextFields","MdEdit","MdClose","useRef","Popup","jsxs","OPTIONS","match","useLexicalComposerContext","useCallback","$getSelection","$isRangeSelection","$isListNode","$getNearestNodeOfType","ListNode","getSelectedNode","$isLinkNode","mergeRegister","SELECTION_CHANGE_COMMAND","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","UNDO_COMMAND","REDO_COMMAND","INDENT_CONTENT_COMMAND","selection","$patchStyleText","TOGGLE_LINK_COMMAND","OUTDENT_CONTENT_COMMAND","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$isAtNodeEnd","useDropzone","heic2any","useMemo","index","createPortal","$generateNodesFromDOM","$getRoot","html","$generateHtmlFromNodes","LinkNode","ListItemNode","AutoLinkNode","LexicalComposer","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin","ListPlugin","LinkPlugin","Fragment"],"mappings":"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","file":"index.js","sourcesContent":["import React, { createContext, useContext, useState, useEffect } from \"react\";\nimport type { ReactNode } from \"react\";\n\nexport type Theme = \"light\" | \"dark\";\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme = \"dark\",\n onThemeChange\n}) => {\n const [theme, setTheme] = useState<Theme>(initialTheme);\n\n useEffect(() => {\n // Call the callback if provided\n if (onThemeChange) {\n onThemeChange(theme);\n }\n }, [theme, onThemeChange]);\n\n const toggleTheme = () => {\n setTheme((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n","import {\n createContext,\n useContext,\n useState,\n type ReactNode,\n useEffect,\n} from \"react\";\n\nexport interface EmailOption {\n name: string;\n email: string;\n}\n\ninterface Email {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n}\n\ninterface EmailContextType {\n emails: Email;\n setEmails: React.Dispatch<React.SetStateAction<Email>>;\n subject: string;\n setSubject: React.Dispatch<React.SetStateAction<string>>;\n showCC: boolean;\n setShowCC: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC: boolean;\n setShowBCC: React.Dispatch<React.SetStateAction<boolean>>;\n attachments: File[];\n setAttachments: React.Dispatch<React.SetStateAction<File[]>>;\n isReply: boolean;\n setIsReply: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst EmailContext = createContext<EmailContextType | undefined>(undefined);\n\nexport const useEmailContext = () => {\n const context = useContext(EmailContext);\n if (!context) {\n throw new Error(\"useEmailContext must be used within an EmailProvider\");\n }\n return context;\n};\n\ninterface EmailProviderProps {\n children: ReactNode;\n}\n\nexport const EmailProvider: React.FC<EmailProviderProps> = ({ children }) => {\n const [emails, setEmails] = useState<Email>({\n to: [],\n cc: [],\n bcc: [],\n });\n const [isReply, setIsReply] = useState(false);\n const [subject, setSubject] = useState(\"\");\n const [showCC, setShowCC] = useState(false);\n const [showBCC, setShowBCC] = useState(false);\n const [attachments, setAttachments] = useState<File[]>([]);\n\n // Log emails whenever they change\n useEffect(() => {\n console.log(\"EmailProvider emails updated:\", emails);\n }, [emails]);\n\n return (\n <EmailContext.Provider\n value={{\n emails,\n setEmails,\n subject,\n setSubject,\n showCC,\n setShowCC,\n showBCC,\n setShowBCC,\n attachments,\n setAttachments,\n isReply,\n setIsReply,\n }}>\n {children}\n </EmailContext.Provider>\n );\n};\n","export const eventTypes = {\n sizes: {\n base: \"sizes\",\n options: {\n normal: \"normal\",\n small: \"small\",\n large: \"large\",\n huge: \"huge\",\n },\n },\n quote: \"quote\",\n undo: \"undo\",\n redo: \"redo\",\n bold: \"bold\",\n italic: \"italic\",\n underline: \"underline\",\n color: {\n base: \"colors\",\n options: { text: \"color\", background: \"background\" },\n },\n code: \"code\",\n image: \"image\",\n link: \"link\",\n list: \"list\",\n listNumber: \"listNumber\",\n listBullet: \"listBullet\",\n align: {\n base: \"align\",\n options: { left: \"alignLeft\", center: \"alignCenter\", right: \"alignRight\" },\n },\n indent: \"indent\",\n indentDecrease: \"indentDecrease\",\n removeFormat: \"removeFormat\",\n strike: \"strike\",\n attachFile: \"attachFile\",\n insertPhoto: \"insertPhoto\",\n fontSize: \"fontSize\",\n fontFamily: \"fontFamily\",\n};\nexport const toolbarComponentType = {\n styling: \"styling\",\n divider: \"divider\",\n component: \"component\",\n};\n\nexport const pluginList = [\n {\n type: toolbarComponentType[\"styling\"],\n icon: \"Styling\",\n id: \"4bc66ea9-2e35-4a7b-a674-be7e4ee163c5\",\n options: [\n {\n name: eventTypes[\"undo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Undo\",\n id: \"29cf5eb3-37cd-482f-9a15-c358faf19cc2\",\n },\n {\n name: eventTypes[\"redo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Redo\",\n id: \"8744f7ab-5818-46ce-9417-2fec87123afe\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"ed0104fd-3507-43f6-80c1-813fbdf04479\",\n },\n {\n name: eventTypes[\"fontFamily\"],\n type: toolbarComponentType[\"component\"],\n id: \"1c12d7e2-aa6a-42b4-b25c-b55fe3bcf524\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"d0f67d01-0731-411a-b448-e1dca47014f4\",\n },\n {\n name: eventTypes[\"fontSize\"],\n type: toolbarComponentType[\"component\"],\n id: \"82e31b62-5441-4052-887c-faa02d0b7075\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"2e3558e4-3ad4-422b-8502-ea3c58fb8c2e\",\n },\n {\n name: eventTypes[\"bold\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Bold\",\n id: \"ac2b5b54-7323-44a4-bc6d-8bae6e48efe2\",\n },\n {\n name: eventTypes[\"italic\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Italic\",\n id: \"6a927c2a-2230-4dc7-af71-47fbe9fb784d\",\n },\n {\n name: eventTypes[\"underline\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Underline\",\n id: \"f07b3a6f-ffaa-4153-beae-79a36acb6a08\",\n },\n {\n name: eventTypes[\"color\"].base,\n type: toolbarComponentType[\"component\"],\n icon: \"Color\",\n id: \"e14ec25f-3dd3-4ed5-b33a-a033684d248b\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"93e60297-206f-4f31-bc29-11daff2052bd\",\n },\n {\n name: eventTypes.align.base,\n type: toolbarComponentType[\"component\"],\n id: \"30da93ea-efa6-4642-bfa5-28fd4dc9c5b3\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"9bad0563-6118-4855-9286-402bf98e00ad\",\n },\n {\n name: eventTypes[\"listNumber\"],\n type: toolbarComponentType[\"component\"],\n icon: \"OrderedList\",\n id: \"d37865e1-ff54-4118-a5cc-fa147d222471\",\n },\n {\n name: eventTypes[\"listBullet\"],\n type: toolbarComponentType[\"component\"],\n icon: \"UnOrderedList\",\n id: \"ed77e7c9-b89c-41c5-a749-e68ea0b30497\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"e5ecd77b-44cc-42fe-badb-48cadf3ddfb1\",\n },\n {\n name: eventTypes[\"indentDecrease\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentLess\",\n id: \"2dc6a5e4-b1b5-47d1-ac2f-5d0becb02d33\",\n },\n {\n name: eventTypes[\"indent\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentMore\",\n id: \"6903a3d1-a83f-4bc6-9bd9-f673feffe84f\",\n },\n ],\n },\n {\n type: \"component\",\n name: eventTypes[\"attachFile\"],\n icon: \"Attach\",\n id: \"f43a284e-113e-4095-b001-9d00a1dddc4c\",\n },\n {\n type: \"component\",\n name: eventTypes[\"link\"],\n icon: \"Link\",\n id: \"580db61e-7939-4efe-914c-304b271998ec\",\n },\n // {\n // type: \"component\",\n // name: eventTypes[\"insertPhoto\"],\n // icon: \"Image\",\n // id: \"d032ba91-3e78-4ed5-8561-033cd1c49cae\",\n // },\n];\n","import {\n MdArrowDropDown,\n MdAttachFile,\n MdCheck,\n MdClose,\n MdEdit,\n MdFormatAlignCenter,\n MdFormatAlignLeft,\n MdFormatAlignRight,\n MdFormatBold,\n MdFormatClear,\n MdFormatIndentDecrease,\n MdFormatItalic,\n MdFormatListBulleted,\n MdFormatListNumbered,\n MdFormatQuote,\n MdFormatUnderlined,\n MdImage,\n MdLink,\n MdOutlineFormatIndentIncrease,\n MdRedo,\n MdStrikethroughS,\n MdTextFields,\n MdTextFormat,\n MdUndo,\n} from \"react-icons/md\";\n\nconst icons = {\n Undo: MdUndo,\n Redo: MdRedo,\n Bold: MdFormatBold,\n Italic: MdFormatItalic,\n Underline: MdFormatUnderlined,\n Color: MdTextFormat,\n LeftAlign: MdFormatAlignLeft,\n RightAlign: MdFormatAlignRight,\n CenterAlign: MdFormatAlignCenter,\n UnOrderedList: MdFormatListBulleted,\n OrderedList: MdFormatListNumbered,\n IndentLess: MdFormatIndentDecrease,\n IndentMore: MdOutlineFormatIndentIncrease,\n RemoveFormat: MdFormatClear,\n StrikeThrough: MdStrikethroughS,\n CodeQuote: MdFormatQuote,\n DownArrow: MdArrowDropDown,\n Styling: MdTextFormat,\n Attach: MdAttachFile,\n Link: MdLink,\n Image: MdImage,\n Check: MdCheck,\n TextFields: MdTextFields,\n Edit: MdEdit,\n Close: MdClose,\n};\n\nexport default icons;\n","// src/components/Icon.tsx\nimport React from \"react\";\nimport icons from \"./helper\";\n\ntype IconName =\n | \"Undo\"\n | \"Redo\"\n | \"Bold\"\n | \"Italic\"\n | \"Underline\"\n | \"Color\"\n | \"LeftAlign\"\n | \"RightAlign\"\n | \"CenterAlign\"\n | \"UnOrderedList\"\n | \"OrderedList\"\n | \"IndentLess\"\n | \"IndentMore\"\n | \"RemoveFormat\"\n | \"StrikeThrough\"\n | \"CodeQuote\"\n | \"DownArrow\"\n | \"Styling\"\n | \"Attach\"\n | \"Link\"\n | \"Image\"\n | \"Check\"\n | \"TextFields\"\n | \"Edit\"\n | \"Close\";\n\ninterface IconProps {\n name: IconName;\n size?: number;\n color?: string;\n className?: string;\n}\n\nconst Icon: React.FC<IconProps> = ({ name, size = 24, color, className }) => {\n // ✅ Map each icon to a name\n\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found.`);\n return null;\n }\n\n return <IconComponent size={size} color={color} className={className} />;\n};\n\nexport default Icon;\n","import React, { useRef } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport type { PopupPosition } from \"reactjs-popup/dist/types\";\n\ninterface MyPopupProps {\n trigger: React.ReactElement;\n children: ((args: { close: () => void }) => React.ReactNode);\n popUpDirection?: PopupPosition | PopupPosition[];\n}\n\nconst MyPopup: React.FC<MyPopupProps> = ({\n trigger,\n children,\n popUpDirection = \"top center\",\n}) => {\n const popupRef = useRef<any>(null);\n\n const handleClose = () => {\n if (popupRef.current && typeof popupRef.current.close === \"function\") {\n popupRef.current.close();\n }\n };\n\n const renderContent = (close: () => void) => {\n const combinedClose = () => {\n close?.();\n handleClose();\n };\n return children({ close: combinedClose });\n };\n\n return (\n <Popup\n ref={popupRef}\n trigger={trigger}\n closeOnDocumentClick\n repositionOnResize\n position={popUpDirection}\n className=\"filter-popup\">\n {renderContent as any}\n </Popup>\n );\n};\n\nexport default MyPopup;\n","const fontOptions = [\n {\n label: \"Sans Serif\",\n value: \"sans-serif\",\n style: { fontFamily: \"sans-serif\" },\n },\n { label: \"Serif\", value: \"serif\", style: { fontFamily: \"serif\" } },\n {\n label: \"Fixed Width\",\n value: \"monospace\",\n style: { fontFamily: \"monospace\" },\n },\n {\n label: \"Wide\",\n value: \"wide\",\n style: { fontWeight: \"bold\", letterSpacing: \"0.05em\" },\n },\n { label: \"Narrow\", value: \"narrow\", style: { fontStretch: \"condensed\" } },\n {\n label: \"Comic Sans MS\",\n value: \"Comic Sans MS\",\n style: { fontFamily: \"Comic Sans MS, cursive\" },\n },\n {\n label: \"Garamond\",\n value: \"Garamond\",\n style: { fontFamily: \"Garamond, serif\" },\n },\n {\n label: \"Georgia\",\n value: \"Georgia\",\n style: { fontFamily: \"Georgia, serif\" },\n },\n {\n label: \"Tahoma\",\n value: \"Tahoma\",\n style: { fontFamily: \"Tahoma, sans-serif\" },\n },\n {\n label: \"Trebuchet MS\",\n value: \"Trebuchet MS\",\n style: { fontFamily: \"Trebuchet MS, sans-serif\" },\n },\n {\n label: \"Verdana\",\n value: \"Verdana\",\n style: { fontFamily: \"Verdana, sans-serif\" },\n },\n];\nexport const OPTIONS = [\n { key: \"small\", label: \"Small\", sizePx: 12 },\n { key: \"normal\", label: \"Normal\", sizePx: 18 },\n { key: \"large\", label: \"Large\", sizePx: 28 },\n { key: \"huge\", label: \"Huge\", sizePx: 56 },\n];\nexport const GREYS = [\n \"#000000\",\n \"#3a3a3a\",\n \"#5a5a5a\",\n \"#8a8a8a\",\n \"#bfbfbf\",\n \"#dedede\",\n \"#f3f3f3\",\n \"#ffffff\",\n];\nexport const ACCENTS = [\n \"#e53935\",\n \"#fb8c00\",\n \"#ffee58\",\n \"#66ff66\",\n \"#4dd0e1\",\n \"#1e88e5\",\n \"#9c27b0\",\n \"#ff3bd6\",\n];\n// a multi-row palette (example block similar to screenshot)\nexport const PALETTE = [\n [\n \"#f7d7d7\",\n \"#f3d0c8\",\n \"#f0c5c5\",\n \"#efc9d8\",\n \"#f7e6e9\",\n \"#f3edf7\",\n \"#f0eaf6\",\n \"#f8f0f6\",\n ],\n [\n \"#f0b9b9\",\n \"#f0d4c2\",\n \"#e6f0d2\",\n \"#e4f7e8\",\n \"#d8eef8\",\n \"#dbe1ff\",\n \"#e9d9f6\",\n \"#f5d9f7\",\n ],\n [\n \"#e69a9a\",\n \"#e6caa3\",\n \"#d7e6b0\",\n \"#c8f0e6\",\n \"#bfe3ff\",\n \"#cbd8ff\",\n \"#d6c3f3\",\n \"#f0c2f3\",\n ],\n [\n \"#d16464\",\n \"#d09a6a\",\n \"#a8cf7b\",\n \"#7fd6c0\",\n \"#73b7ff\",\n \"#7a9cff\",\n \"#b483f1\",\n \"#f08cf2\",\n ],\n [\n \"#b23a3a\",\n \"#b26a3a\",\n \"#7aa04a\",\n \"#3fb092\",\n \"#296f94\",\n \"#2a4177\",\n \"#452a68\",\n \"#6e1f4d\",\n ],\n [\n \"#7a1d1d\",\n \"#7a4a1e\",\n \"#556a2a\",\n \"#195b47\",\n \"#123f5a\",\n \"#182840\",\n \"#2a1836\",\n \"#3a1026\",\n ],\n];\nexport default fontOptions;\n","import MyPopup from \"../MyPopup\";\nimport fontOptions from \"../../../utils/core\";\nimport Icon from \"../Icon\";\n\ninterface FontSelectProps {\n value?: string;\n onChange: (value: string) => void;\n}\n\nexport default function FontSelect({ value = \"serif\", onChange }: FontSelectProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n {fontOptions?.find((o) => o.value === value)?.label}\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {fontOptions.map((font) => (\n <button\n className=\"btn\"\n key={font.value}\n onClick={() => {\n onChange(font.value);\n close();\n }}\n style={{ ...font.style }}>\n <div className=\"font-option\">\n {value === font.value && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { OPTIONS } from \"../../../utils/core\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n\n/**\n * Props:\n * - value: \"small\" | \"normal\" | \"large\" | \"huge\"\n * - onChange: (newValue) => void\n */\n\ninterface FontSizePickerProps {\n value?: string;\n onChange?: (value: string) => void;\n}\n\nexport default function FontSizePicker({\n value = \"normal\",\n onChange = () => {},\n}: FontSizePickerProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"TextFields\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {OPTIONS.map((font) => (\n <button\n className=\"btn\"\n key={font.key}\n onClick={() => {\n onChange(font.key);\n close();\n }}\n style={{ fontSize: `${font.sizePx}px` }}>\n <div className=\"font-option\">\n {value === font.key && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { ACCENTS, GREYS, PALETTE } from \"../../../utils/core\";\nimport \"./style.css\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n/**\n * Props:\n * - value: { background: \"#ffffff\", text: \"#000000\" }\n * - onChange: (newValue) => void\n */\n\ninterface SwatchProps {\n color: string;\n selected: boolean;\n onClick: (color: string) => void;\n label?: string;\n}\n\nfunction Swatch({ color, selected, onClick, label }: SwatchProps) {\n return (\n <button\n className=\"swatch\"\n title={label || color}\n aria-pressed={selected}\n onClick={() => onClick(color)}\n style={{ background: color }}>\n {selected && (\n <svg className=\"check\" viewBox=\"0 0 24 24\" aria-hidden>\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n )}\n </button>\n );\n}\n\ninterface ColorValue {\n background: string;\n text: string;\n}\n\ninterface ColorPickerProps {\n value?: ColorValue;\n onChange?: (value: ColorValue) => void;\n}\n\nexport default function ColorPicker({\n value = { background: \"#ffffff\", text: \"#000000\" },\n onChange = () => {},\n}: ColorPickerProps) {\n function update(which: keyof ColorValue, color: string) {\n onChange({ ...value, [which]: color });\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"Styling\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div\n className=\"color-popover\"\n role=\"dialog\"\n aria-label=\"Choose colors\">\n <div className=\"color-columns\">\n <section className=\"color-column\" aria-labelledby=\"bg-label\">\n <h4 id=\"bg-label\">Background color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"bg\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"bgacc\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"row\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"bgp\" + i}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n\n <section className=\"color-column\" aria-labelledby=\"text-label\">\n <h4 id=\"text-label\">Text color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"tx\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"txacc\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"txrow\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"txp\" + i}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import \"./style.css\";\nimport Icon from \"../Icon\";\nimport MyPopup from \"../MyPopup\";\n\nexport type Alignment = \"left\" | \"center\" | \"right\";\n\ntype IconName = \"LeftAlign\" | \"CenterAlign\" | \"RightAlign\" | \"DownArrow\";\n\nconst OPTIONS: { key: Alignment; iconName: IconName; label: string }[] = [\n { key: \"left\", iconName: \"LeftAlign\", label: \"Left align\" },\n { key: \"center\", iconName: \"CenterAlign\", label: \"Center align\" },\n { key: \"right\", iconName: \"RightAlign\", label: \"Right align\" },\n];\n\ninterface Props {\n value?: Alignment;\n onChange?: (next: Alignment) => void;\n className?: string;\n}\n\nexport default function AlignmentSelect({\n value = \"left\",\n onChange = () => {},\n}: Props) {\n function onSelect(key: Alignment) {\n onChange(key);\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name={OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"} />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"wrapper-alignment\">\n {OPTIONS.map((opt) => {\n const active = opt.key === value;\n return (\n <button\n key={opt.key}\n role=\"menuitemradio\"\n aria-checked={active}\n tabIndex={0}\n className={`alignment-option ${active ? \"active\" : \"\"}`}\n onClick={() => {\n onSelect(opt.key);\n close();\n }}>\n <div className=\"option-icon\">\n <Icon name={opt.iconName} size={20} />\n </div>\n\n <div\n className={`option-check ${active ? \"\" : \"hidden\"}`}\n aria-hidden>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\n <path\n d=\"M20 6L9 17l-5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { eventTypes } from \"../utils/toolbar\";\nimport {\n FORMAT_TEXT_COMMAND,\n FORMAT_ELEMENT_COMMAND,\n UNDO_COMMAND,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n} from \"lexical\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n ListNode,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $getNearestNodeOfType, mergeRegister } from \"@lexical/utils\";\nimport { $isAtNodeEnd, $patchStyleText } from \"@lexical/selection\";\nimport { OPTIONS } from \"../utils/core\";\n\nconst LowPriority = 1;\n\n// Helper function to convert RGB to Hex\nfunction rgbToHex(rgb: string): string {\n if (!rgb) return rgb;\n\n // If already hex, return as is\n if (rgb.startsWith('#')) return rgb;\n\n // If rgba with transparency, return as is (can't convert to simple hex)\n if (rgb.startsWith('rgba')) {\n const match = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),?\\s*([\\d.]+)?\\)/);\n if (match) {\n const [, r, g, b, a] = match;\n // If fully transparent, return transparent\n if (a === '0') return 'transparent';\n // Convert to hex (ignoring alpha for now)\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n }\n\n // Handle rgb format\n const match = rgb.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const [, r, g, b] = match;\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n\n return rgb;\n}\n\nfunction useOnClickListener() {\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState(\"paragraph\");\n const [selectedEventTypes, setSelectedEventTypes] = useState<any>({\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n });\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n const newState: any = {\n // Set default values\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n };\n\n // range selection ( e.g like to bold only the particular area of the text)\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : anchorNode.getTopLevelElementOrThrow();\n\n const elementKey = element.getKey();\n const elementDOM = editor.getElementByKey(elementKey);\n\n if (elementDOM !== null) {\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType(anchorNode, ListNode);\n const type = parentList ? parentList.getTag() : element.getTag();\n setBlockType(type);\n } else {\n const type = element.getType();\n setBlockType(type);\n }\n }\n\n // Check formatting and add to selected events\n newState[eventTypes.bold] = selection.hasFormat(\"bold\");\n newState[eventTypes.italic] = selection.hasFormat(\"italic\");\n newState[eventTypes.underline] = selection.hasFormat(\"underline\");\n newState[eventTypes.strike] = selection.hasFormat(\"strikethrough\");\n newState[eventTypes.code] = selection.hasFormat(\"code\");\n\n // Get inline styles from selection\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n\n // Check for link\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n newState[eventTypes.link] = true;\n setIsLink(true);\n } else {\n newState[eventTypes.link] = false;\n setIsLink(false);\n }\n\n // Get the actual text node's DOM element for accurate style reading\n const textNodeDOM = editor.getElementByKey(node.getKey());\n const parentElement = editor.getElementByKey(parent.getKey());\n\n // Try multiple elements to find inline styles (Lexical wraps text in spans)\n const styleElement = textNodeDOM || parentElement || elementDOM;\n\n // Get computed styles from the node\n if (styleElement) {\n const computedStyle = window.getComputedStyle(styleElement);\n\n // Get font family - extract first font from the list\n const fontFamily = computedStyle.getPropertyValue(\"font-family\");\n if (fontFamily) {\n let firstFont = fontFamily.split(',')[0].trim().replace(/['\"]/g, '');\n // Normalize system fonts to sans-serif\n if (firstFont === \"-apple-system\" || firstFont === \"BlinkMacSystemFont\" || firstFont === \"system-ui\") {\n firstFont = \"sans-serif\";\n }\n newState[eventTypes.fontFamily] = firstFont;\n }\n\n // Get font size - extract only the number\n const fontSize = computedStyle.getPropertyValue(\"font-size\");\n if (fontSize) {\n const fontSizeNum = parseInt(fontSize, 10);\n newState[eventTypes.fontSize] = fontSizeNum || 16; // Default to 16 if parsing fails\n }\n\n // Get text color and background color\n // First try to get inline styles from the element itself\n let color = null;\n let backgroundColor = null;\n\n if (styleElement instanceof HTMLElement && styleElement.style) {\n // Check inline styles first (more accurate for Lexical's inline formatting)\n color = styleElement.style.color || null;\n backgroundColor = styleElement.style.backgroundColor || null;\n }\n\n // Fallback to computed styles if inline styles not found\n if (!color) {\n color = computedStyle.getPropertyValue(\"color\");\n }\n if (!backgroundColor) {\n backgroundColor = computedStyle.getPropertyValue(\"background-color\");\n }\n\n console.log(\"🎨 Color detection:\", {\n inlineColor: styleElement instanceof HTMLElement ? styleElement.style.color : 'N/A',\n inlineBg: styleElement instanceof HTMLElement ? styleElement.style.backgroundColor : 'N/A',\n computedColor: color,\n computedBg: backgroundColor,\n element: styleElement\n });\n\n // Only set if we have actual colors (not transparent/initial)\n const hexColor = color ? rgbToHex(color) : null;\n const hexBgColor = backgroundColor && backgroundColor !== 'rgba(0, 0, 0, 0)' && backgroundColor !== 'transparent'\n ? rgbToHex(backgroundColor)\n : null;\n\n if (hexColor || hexBgColor) {\n newState[eventTypes.color.base] = {\n text: hexColor || '#000000',\n background: hexBgColor || '#ffffff'\n };\n }\n\n // Get text alignment - normalize \"start\" to \"left\"\n let textAlign = computedStyle.getPropertyValue(\"text-align\") || \"left\";\n if (textAlign === \"start\") {\n textAlign = \"left\";\n }\n newState[eventTypes.align.base] = textAlign;\n }\n\n setSelectedEventTypes(newState);\n }\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n LowPriority\n )\n );\n }, [editor, updateToolbar]);\n function onChange(type: string, event: unknown) {\n switch (type) {\n case eventTypes.bold:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n break;\n case eventTypes.italic:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n break;\n case eventTypes.underline:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n break;\n case eventTypes.align.base:\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, event as any);\n break;\n case eventTypes.undo:\n editor.dispatchCommand(UNDO_COMMAND, undefined);\n break;\n case eventTypes.redo:\n editor.dispatchCommand(REDO_COMMAND, undefined);\n break;\n case eventTypes.listNumber:\n formatNumberedList();\n break;\n case eventTypes.listBullet:\n formatBulletList();\n break;\n case eventTypes.indent:\n addIndent();\n break;\n case eventTypes.indentDecrease:\n removeIndent();\n break;\n case eventTypes.color.base:\n applyFontColor(event as { background: string; text: string });\n break;\n case eventTypes.fontFamily:\n applyFontFamily(event as string);\n break;\n case eventTypes.fontSize:\n applyFontSize(event as string);\n break;\n case eventTypes.link:\n insertLink();\n break;\n\n default:\n break;\n }\n }\n\n const addIndent = () => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n };\n\n const applyFontFamily = (fontFamily: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-family\": fontFamily });\n }\n });\n };\n\n const applyFontSize = (fontSize: string) => {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.sizePx ?? 16;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-size\": `${selectedFontSize}px` });\n }\n });\n };\n\n const applyFontColor = (colorObj: { background: string; text: string }) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n \"background-color\": colorObj.background,\n color: colorObj.text,\n });\n }\n });\n };\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n } else {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [editor, isLink]);\n\n const removeIndent = () => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n };\n\n const formatBulletList = () => {\n if (blockType !== \"ul\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"ol\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n function getSelectedNode(selection: any) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) {\n return anchorNode;\n }\n const isBackward = selection.isBackward();\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode;\n } else {\n return $isAtNodeEnd(anchor) ? focusNode : anchorNode;\n }\n }\n\n return { onChange, isLink, editor, selectedEventTypes, blockType };\n}\n\nexport default useOnClickListener;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n type LexicalEditor,\n type BaseSelection,\n type RangeSelection,\n} from \"lexical\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $isAtNodeEnd } from \"@lexical/selection\";\nimport \"./index.css\";\nimport Icon from \"../Icon\";\n\ninterface FloatingLinkEditorProps {\n editor: LexicalEditor;\n}\n\nfunction FloatingLinkEditor({ editor }: FloatingLinkEditorProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const mouseDownRef = useRef(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(null);\n\n const updateLinkEditor = useCallback(() => {\n const nativeSelection = window.getSelection();\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkUrl(node.getURL());\n } else {\n setLinkUrl(\"\");\n }\n }\n\n const editorElem = editorRef.current;\n\n const activeElement = document.activeElement;\n\n if (!editorElem) return;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection &&\n nativeSelection &&\n !nativeSelection.isCollapsed &&\n rootElement &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner: HTMLElement | Element = rootElement;\n while (inner.firstElementChild != null) inner = inner.firstElementChild;\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n if (!mouseDownRef.current) {\n positionEditorElement(editorElem, rect);\n }\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n positionEditorElement(editorElem, null);\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl(\"\");\n }\n\n return true;\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }: { editorState: any }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n 1\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div className=\"floating-link-editor\" ref={editorRef}>\n {isEditMode ? (\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (lastSelection && linkUrl !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n }\n setEditMode(false);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n setEditMode(false);\n }\n }}\n placeholder=\"Enter link...\"\n />\n ) : (\n <div className=\"link-display\">\n <a href={linkUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl || \"No link selected\"}\n </a>\n </div>\n )}\n\n <button\n className=\"link-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n console.log(\"floating link editor\", isEditMode);\n if (isEditMode) editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n setEditMode((prev) => !prev);\n }}>\n <Icon name={isEditMode ? \"Check\" : \"Edit\"} />\n </button>\n </div>\n );\n}\n\nfunction getSelectedNode(selection: RangeSelection) {\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) return anchorNode;\n\n const isBackward = selection.isBackward();\n return isBackward\n ? $isAtNodeEnd(selection.focus)\n ? anchorNode\n : focusNode\n : $isAtNodeEnd(selection.anchor)\n ? focusNode\n : anchorNode;\n}\n\n// 🧭 Smart position logic to prevent going off-screen\nfunction positionEditorElement(editor: HTMLElement, rect: DOMRect | null) {\n if (!rect) {\n editor.style.opacity = \"0\";\n editor.style.top = \"-1000px\";\n editor.style.left = \"-1000px\";\n return;\n }\n\n const editorWidth = editor.offsetWidth;\n const editorHeight = editor.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Default position (below selection)\n let top = rect.top + rect.height + window.pageYOffset + 10;\n let left = rect.left + window.pageXOffset - editorWidth / 2 + rect.width / 2;\n\n // 🧩 Clamp horizontally\n if (left < 8) left = 8;\n if (left + editorWidth > viewportWidth - 8)\n left = viewportWidth - editorWidth - 8;\n\n // 🧩 Clamp vertically\n if (top + editorHeight > viewportHeight - 8) {\n top = rect.top + window.pageYOffset - editorHeight - 10; // place above\n }\n if (top < 8) top = 8;\n\n editor.style.opacity = \"1\";\n editor.style.top = `${top}px`;\n editor.style.left = `${left}px`;\n}\n\nexport default FloatingLinkEditor;\n","import { useState, useCallback, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport heic2any from \"heic2any\";\n\n/** ------------------ CONSTANTS ------------------ **/\n\nexport const FILE_UPLOAD_ERROR = {\n FILE_INVALID_TYPE: \"file-invalid-type\",\n FILE_TOO_LARGE: \"file-too-large\",\n TOO_MANY_FILES: \"too-many-files\",\n HEIC_CONVERSION_ERROR: \"heic-conversion-error\",\n};\n\nexport const MAX_NUMBER_OF_FILES_ALLOWED = 10;\nexport const MAX_SIZE_OF_FILE_ALLOWED_MB = 10; // 10 MB\n\n/** ------------------ UTILITIES ------------------ **/\n\nexport const getId = (): string =>\n Math.random().toString(36).substring(2, 10) + Date.now().toString(36);\n\nexport const getMBs = (bytes: number): { value: string; type: string } => {\n if (bytes < 1024) return { value: bytes.toString(), type: \"bytes\" };\n const kb = bytes / 1024;\n if (kb < 1024) return { value: kb.toFixed(1), type: \"KB\" };\n const mb = kb / 1024;\n if (mb < 1024) return { value: mb.toFixed(1), type: \"MB\" };\n const gb = mb / 1024;\n return { value: gb.toFixed(1), type: \"GB\" };\n};\n\n/** ------------------ TYPE DEFINITIONS ------------------ **/\n\nexport interface UploadedFile extends File {\n uuid: string;\n preview: string;\n}\n\nexport interface RejectedFileWithPreview {\n file: File;\n preview: string;\n readableErrors: string[];\n errors: { code: string; message: string }[];\n}\n\nexport interface UseFileUploadOptions {\n accept?: Record<string, string[]>;\n maxSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n isDisabled?: boolean;\n replaceAfterUpload?: boolean;\n files?: UploadedFile[];\n name?: string;\n insideForm?: boolean;\n handleFileChange?: (value: any) => void;\n}\n\nexport interface UseFileUploadReturn {\n getRootProps: any;\n getInputProps: any;\n isDragActive: boolean;\n isFileDialogOpen: boolean;\n rejectedFiles: RejectedFileWithPreview[];\n openFileDialog: () => void;\n removeFile: (uuid: string) => void;\n clearRejectedFiles: () => void;\n}\n\n/** ------------------ MAIN HOOK ------------------ **/\n\nexport const useFileUpload = ({\n accept = {\n \"image/*\": [\".png\", \".gif\", \".jpeg\", \".jpg\"],\n \"application/pdf\": [\".pdf\"],\n },\n maxSize = MAX_SIZE_OF_FILE_ALLOWED_MB * 1024 * 1024,\n maxFiles = MAX_NUMBER_OF_FILES_ALLOWED,\n multiple = true,\n isDisabled = false,\n replaceAfterUpload = false,\n files = [],\n handleFileChange = () => {},\n}: UseFileUploadOptions): UseFileUploadReturn => {\n const [isFileDialogOpen, setIsFileDialogOpen] = useState(false);\n const [fileUploaded, setFileUploaded] = useState<UploadedFile[]>(files ?? []);\n const [rejectedFiles, setRejectedFile] = useState<RejectedFileWithPreview[]>(\n []\n );\n\n /** User-friendly error text generator */\n const getErrorText = (errorCode: string): string => {\n switch (errorCode) {\n case FILE_UPLOAD_ERROR.FILE_INVALID_TYPE:\n return \"Invalid file type. Please upload a supported format.\";\n case FILE_UPLOAD_ERROR.FILE_TOO_LARGE: {\n const { value, type } = getMBs(maxSize);\n return `File too large. Maximum allowed size is ${value} ${type}.`;\n }\n case FILE_UPLOAD_ERROR.TOO_MANY_FILES:\n return `Too many files selected. Maximum allowed: ${maxFiles}.`;\n case FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR:\n return \"Failed to convert HEIC image. Please upload a JPEG or PNG instead.\";\n default:\n return \"An unknown file error occurred.\";\n }\n };\n\n /** Update form or callback on change */\n useEffect(() => {\n handleFileChange(fileUploaded);\n }, [fileUploaded]);\n\n /** Setup Dropzone */\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n accept,\n maxSize,\n multiple,\n maxFiles,\n disabled: isDisabled,\n noClick: true,\n onFileDialogCancel: () => setIsFileDialogOpen(false),\n onFileDialogOpen: () => {\n if (!isDisabled) setIsFileDialogOpen(true);\n },\n onDrop: async (_acceptedFiles, fileRejections) => {\n const acceptedFiles = await Promise.all(\n _acceptedFiles.map(async (file) => {\n if (!file) return null;\n\n // Handle HEIC conversion\n if (file.type === \"image/heic\") {\n try {\n const blob = await heic2any({ blob: file, toType: \"image/jpeg\" });\n const blobArray = Array.isArray(blob) ? blob[0] : blob;\n const convertedFile = new File(\n [blobArray],\n `${file.name.replace(/\\.heic$/i, \"\")}.jpeg`,\n { type: \"image/jpeg\" }\n );\n return Object.assign(convertedFile, {\n uuid: getId(),\n preview: URL.createObjectURL(convertedFile),\n });\n } catch (err) {\n console.error(\"HEIC conversion error:\", err);\n const msg = getErrorText(FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR);\n setRejectedFile((prev) => [\n ...prev,\n {\n file,\n preview: URL.createObjectURL(file),\n readableErrors: [msg],\n errors: [\n {\n code: FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR,\n message: msg,\n },\n ],\n },\n ]);\n return null;\n }\n }\n\n // Normal file\n return Object.assign(file, {\n uuid: getId(),\n preview: URL.createObjectURL(file),\n });\n })\n );\n\n const validFiles = acceptedFiles.filter(Boolean) as UploadedFile[];\n\n if (!isDisabled) {\n let newFiles = replaceAfterUpload ? [] : [...fileUploaded];\n newFiles = [...newFiles, ...validFiles];\n\n const mappedRejections = fileRejections.map<RejectedFileWithPreview>(\n (item) => {\n const readableErrors = item.errors.map((err) =>\n getErrorText(err.code)\n );\n return {\n file: item.file,\n errors: item.errors.map((err) => ({ code: err.code, message: err.message })),\n preview: URL.createObjectURL(item.file),\n readableErrors,\n };\n }\n );\n\n setRejectedFile((prev) => [...prev, ...mappedRejections]);\n setFileUploaded(newFiles);\n return newFiles;\n }\n\n return fileUploaded;\n },\n validator: (item) => {\n const { name: fileName, type } = item;\n if (fileName) {\n const ext = fileName.split(\".\").pop()?.toLowerCase();\n if (\n accept &&\n accept?.[type] &&\n accept?.[type].length &&\n !accept?.[type].includes(`.${ext}`)\n ) {\n return {\n code: FILE_UPLOAD_ERROR.FILE_INVALID_TYPE,\n message: getErrorText(FILE_UPLOAD_ERROR.FILE_INVALID_TYPE),\n };\n }\n }\n return null;\n },\n });\n\n /** Remove a specific file */\n const removeFile = useCallback(\n (uuid: string) => {\n setFileUploaded((prev) => prev.filter((file) => file.uuid !== uuid));\n },\n [setFileUploaded]\n );\n\n /** Clear rejected files */\n const clearRejectedFiles = useCallback(() => {\n setRejectedFile([]);\n }, []);\n\n /** Cleanup memory leaks */\n useEffect(() => {\n return () => {\n fileUploaded.forEach((f) => f.preview && URL.revokeObjectURL(f.preview));\n rejectedFiles.forEach((r) => r.preview && URL.revokeObjectURL(r.preview));\n };\n }, []);\n\n /** Return all handlers and states */\n return {\n getRootProps,\n getInputProps,\n isDragActive,\n isFileDialogOpen,\n rejectedFiles,\n openFileDialog: open,\n removeFile,\n clearRejectedFiles,\n };\n};\n","import React from \"react\";\nimport Icon from \"../Icon\";\nimport { useFileUpload } from \"../../../hook/useFileUpload\";\n\ninterface FileUploaderProps {\n value?: File[];\n handleFileChange: (files: File[]) => void;\n}\n\nconst FileUploader: React.FC<FileUploaderProps> = ({ handleFileChange }) => {\n const {\n getRootProps,\n getInputProps,\n openFileDialog,\n } = useFileUpload({\n multiple: true,\n maxFiles: 5,\n maxSize: 5 * 1024 * 1024, // 5 MB\n handleFileChange: (files) => {\n handleFileChange(files);\n },\n });\n\n return (\n <div className=\"uploader-container\">\n {/* Upload area */}\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n <button onClick={openFileDialog}>\n <Icon className=\"upload-icon\" name=\"Attach\" />\n </button>\n </div>\n </div>\n );\n};\n\nexport default FileUploader;\n","import { useMemo } from \"react\";\nimport \"./FilePreview.css\";\n\n/**\n * Props:\n * - file: File | { name, size, type?, url? }\n * - index?: number // shown as (index)\n * - onRemove?: () => void\n * - onView?: (url) => void\n *\n * Behavior:\n * - If `file` is a native File object and no url provided, component creates an object URL for view/download.\n * - Renders like: (70) WhatsApp.html (505K) [×]\n * - No icons, minimal markup to match screenshot.\n */\n\ninterface FilePreviewProps {\n file: File | { name: string; size?: number; bytes?: number; type?: string; url?: string };\n index?: number;\n onRemove?: (index?: number) => void;\n onView?: (url: string | null) => void;\n}\n\nexport default function FilePreview({ file, index, onRemove, onView }: FilePreviewProps) {\n if (!file) return null;\n\n const name = file?.name ?? \"unknown\";\n const sizeBytes: number | null =\n file instanceof File\n ? file.size\n : ('size' in file && file.size !== undefined\n ? file.size\n : ('bytes' in file && file.bytes !== undefined ? file.bytes : null));\n const urlFromProp = ('url' in file ? file?.url : null) ?? null;\n\n // If file is a native File and no url provided, createObjectURL.\n const url = useMemo(() => {\n if (urlFromProp) return urlFromProp;\n if (typeof window !== \"undefined\" && file instanceof File) {\n try {\n return URL.createObjectURL(file);\n } catch (e) {\n return null;\n }\n }\n return null;\n }, [file, urlFromProp]);\n\n const formatSizeShort = (bytes: number | null) => {\n if (!bytes && bytes !== 0) return \"\";\n const kb = Math.round(bytes / 1024);\n if (kb < 1024) return `${kb}K`;\n const mb = Math.round((bytes / 1024 / 1024) * 10) / 10;\n return `${mb}M`;\n };\n\n const handleView = (e: React.MouseEvent) => {\n e.preventDefault();\n if (onView) return onView(url ?? null);\n if (url) window.open(url, \"_blank\", \"noopener\");\n };\n\n const handleRemove = (index?: number) => {\n if (onRemove) onRemove(index);\n };\n\n return (\n <div className=\"fps-row\" role=\"group\" aria-label={`Attachment ${name}`}>\n <div className=\"fps-left\">\n <a\n href={url ?? \"#\"}\n className=\"fps-filename\"\n onClick={handleView}\n title={name}\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {name}\n </a>\n {sizeBytes != null && (\n <span className=\"fps-size\">&nbsp;({formatSizeShort(sizeBytes)})</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"fps-close\"\n aria-label={`Remove ${name}`}\n onClick={() => handleRemove(index)}>\n ×\n </button>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n eventTypes,\n pluginList,\n toolbarComponentType,\n} from \"../../../utils/toolbar\";\nimport Icon from \"../../core/Icon\";\nimport FontSelect from \"../../core/FontSelect\";\nimport FontSizePicker from \"../../core/FontSize\";\nimport ColorPicker from \"../../core/ColorPicker\";\nimport AlignmentSelect from \"../../core/AlignmentSelect\";\nimport \"./style.css\";\n\nimport useOnClickListener from \"../../../hook/useOnClickListener\";\nimport FloatingLinkEditor from \"../../core/FloatingLinkEditor\";\nimport FileUploader from \"../../core/FileUploader\";\nimport FilePreview from \"../../core/FileUploader/FilePreview\";\nimport { useEmailContext } from \"../../GmailWrapper/EmailContext\";\n\ninterface ToolbarComponentProps {\n onChange: (name: string, value: any) => void;\n state: Record<string, any>;\n setState: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n selectedEventTypes: Record<string, any>;\n blockType: string;\n setAttachments: (files: File[]) => void;\n}\n\nconst getToolbarComponent = (\n plugin: any,\n { onChange, state, setState, selectedEventTypes, blockType, setAttachments }: ToolbarComponentProps\n) => {\n switch (plugin.name) {\n case eventTypes.undo:\n case eventTypes.redo:\n case eventTypes.bold:\n case eventTypes.italic:\n case eventTypes.underline:\n case eventTypes.indentDecrease:\n case eventTypes.indent:\n case eventTypes.link:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listNumber:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ol\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listBullet:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ul\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.attachFile:\n return (\n <FileUploader\n value={state?.[plugin.name]}\n handleFileChange={(e) => {\n console.log(\"🚀 ~ getToolbarComponent ~ e:\", e);\n setState((prev) => {\n return { ...prev, [plugin.name]: e };\n });\n // Update the EmailContext with the new attachments\n setAttachments(e);\n }}\n />\n );\n case eventTypes.fontFamily:\n return (\n <FontSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.fontSize:\n return (\n <FontSizePicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.color.base:\n return (\n <ColorPicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.align.base:\n return (\n <AlignmentSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n\n default:\n break;\n }\n if (plugin.type === toolbarComponentType.divider)\n return <span className=\"divider\" />;\n else return \"-\";\n};\ninterface GetComponentProps extends ToolbarComponentProps {\n toggle: boolean;\n setToggle: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getComponent = (\n plugin: {\n type: string;\n icon?: string;\n options?: any[];\n },\n {\n setToggle,\n toggle,\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n }: GetComponentProps\n) => {\n switch (plugin.type) {\n case toolbarComponentType.divider:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"divider\"\n />\n );\n case toolbarComponentType.component:\n return getToolbarComponent(plugin, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n });\n case toolbarComponentType.styling:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"styling-toolbar\">\n {toggle ? (\n <div className=\"styling-options\">\n {plugin.options?.length && Array.isArray(plugin.options)\n ? plugin.options?.map((option: string) =>\n getToolbarComponent(option, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )\n : null}\n </div>\n ) : null}\n <button onClick={() => setToggle((prev) => !prev)}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon as any} />\n </button>\n </div>\n );\n default:\n break;\n }\n return \"-\";\n};\ninterface ToolBarProps {\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n}\n\nfunction ToolBar({ rightChildren, leftChildren }: ToolBarProps) {\n const [toggle, setToggle] = useState(true);\n const [state, setState] = useState<Record<string, any>>({});\n const { setAttachments } = useEmailContext();\n const { onChange, isLink, editor, selectedEventTypes, blockType } =\n useOnClickListener();\n console.log(\"🚀 ~ ToolBar ~ selectedEventTypes:\", selectedEventTypes);\n return (\n <div className=\"toolbar-container\">\n {state[eventTypes.attachFile]?.length ? (\n <div className=\"file-upload-container\">\n {state[eventTypes.attachFile]?.map((item: File, index: number) => (\n <FilePreview\n key={index}\n file={item}\n index={index}\n onRemove={(index) => {\n setState((prev: any) => {\n const updatedFiles = prev[eventTypes.attachFile].filter(\n (_file: File, i: number) => i !== index\n );\n // Update EmailContext with the new attachments list\n setAttachments(updatedFiles);\n return {\n ...prev,\n [eventTypes.attachFile]: updatedFiles,\n };\n });\n }}\n />\n ))}\n </div>\n ) : null}\n <div className=\"toolbar-wrapper\">\n {leftChildren}\n {pluginList?.map((plugin) =>\n getComponent(plugin, {\n setToggle,\n state,\n setState,\n toggle,\n onChange,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )}\n {rightChildren}\n {isLink\n ? createPortal(<FloatingLinkEditor editor={editor} />, document.body)\n : null}\n </div>\n </div>\n );\n}\n\nexport default ToolBar;\n","const lexicalEditorTheme = {\n ltr: \"ltr\",\n rtl: \"rtl\",\n placeholder: \"editor-placeholder\",\n paragraph: \"editor-paragraph\",\n quote: \"editor-quote\",\n heading: {\n h1: \"editor-heading-h1\",\n h2: \"editor-heading-h2\",\n h3: \"editor-heading-h3\",\n h4: \"editor-heading-h4\",\n h5: \"editor-heading-h5\",\n },\n list: {\n nested: {\n listitem: \"editor-nested-listitem\",\n },\n ol: \"editor-list-ol\",\n ul: \"editor-list-ul\",\n listitem: \"editor-listitem\",\n },\n image: \"editor-image\",\n link: \"editor-link\",\n text: {\n bold: \"editor-text-bold\",\n italic: \"editor-text-italic\",\n overflowed: \"editor-text-overflowed\",\n hashtag: \"editor-text-hashtag\",\n underline: \"editor-text-underline\",\n strikethrough: \"editor-text-strikethrough\",\n underlineStrikethrough: \"editor-text-underlineStrikethrough\",\n code: \"editor-text-code\",\n },\n code: \"editor-code\",\n codeHighlight: {\n atrule: \"editor-tokenAttr\",\n attr: \"editor-tokenAttr\",\n boolean: \"editor-tokenProperty\",\n builtin: \"editor-tokenSelector\",\n cdata: \"editor-tokenComment\",\n char: \"editor-tokenSelector\",\n class: \"editor-tokenFunction\",\n \"class-name\": \"editor-tokenFunction\",\n comment: \"editor-tokenComment\",\n constant: \"editor-tokenProperty\",\n deleted: \"editor-tokenProperty\",\n doctype: \"editor-tokenComment\",\n entity: \"editor-tokenOperator\",\n function: \"editor-tokenFunction\",\n important: \"editor-tokenVariable\",\n inserted: \"editor-tokenSelector\",\n keyword: \"editor-tokenAttr\",\n namespace: \"editor-tokenVariable\",\n number: \"editor-tokenProperty\",\n operator: \"editor-tokenOperator\",\n prolog: \"editor-tokenComment\",\n property: \"editor-tokenProperty\",\n punctuation: \"editor-tokenPunctuation\",\n regex: \"editor-tokenVariable\",\n selector: \"editor-tokenSelector\",\n string: \"editor-tokenSelector\",\n symbol: \"editor-tokenProperty\",\n tag: \"editor-tokenProperty\",\n url: \"editor-tokenOperator\",\n variable: \"editor-tokenVariable\",\n },\n};\nexport default lexicalEditorTheme;\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { $getRoot } from \"lexical\";\n\ninterface SetInitialHTMLProps {\n initialHTML: string;\n}\n\nfunction SetInitialHTML({ initialHTML }: SetInitialHTMLProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const parser = new DOMParser();\n const dom = parser.parseFromString(initialHTML, \"text/html\");\n const nodes = $generateNodesFromDOM(editor, dom);\n const root = $getRoot();\n\n root.clear(); // Clear existing content\n root.append(...nodes); // Insert parsed HTML\n });\n }, [editor, initialHTML]);\n\n return null;\n}\n\nexport default SetInitialHTML;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { useEffect } from \"react\";\n\nexport default function OnChangePlugin({\n onChange\n}: {\n onChange: (html: string) => void\n}) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const html = $generateHtmlFromNodes(editor, null);\n onChange(html);\n });\n });\n }, [editor, onChange]);\n\n return null;\n}\n","import { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport \"./editor.css\";\nimport ToolBar from \"../Toolbar\";\nimport lexicalEditorTheme from \"../../../Themes/lexicalEditortheme\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport SetInitialHTML from \"../../../plugins/SetInitialHTML\";\nimport OnChangePlugin from \"../../../plugins/OnChangePlugin\";\n\n// Catch any errors that occur during Lexical updates and log them\n// or throw them as needed. If you don't throw them, Lexical will\n// try to recover gracefully without losing user data.\nfunction onError(error: Error) {\n console.error(error);\n}\ntype EditorWrapperProps = {\n placeholder?: string;\n minHeight?: string;\n initialHTML?: string;\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n onChange?: (html: string) => void;\n editorChildren?: React.ReactNode;\n isEditorVisible?: boolean;\n};\nfunction EditorWrapper({\n placeholder = \"Enter some text here\",\n initialHTML = \"\",\n rightChildren,\n leftChildren,\n minHeight = \"\",\n onChange,\n editorChildren,\n isEditorVisible = true,\n}: EditorWrapperProps) {\n const initialConfig = {\n namespace: \"MyEditor\",\n theme: lexicalEditorTheme,\n nodes: [LinkNode, ListNode, ListItemNode, AutoLinkNode],\n onError,\n };\n\n return (\n <div className=\"my-editor-wrapper\">\n <LexicalComposer initialConfig={initialConfig}>\n {isEditorVisible ? (\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n style={{ minHeight }}\n className=\"my-editor-content\"\n aria-placeholder={placeholder}\n placeholder={\n <div className=\"my-editor-placeholder\">{placeholder}</div>\n }\n />\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n ) : (\n editorChildren\n )}\n <ToolBar rightChildren={rightChildren} leftChildren={leftChildren} />\n <HistoryPlugin />\n <SetInitialHTML initialHTML={initialHTML} />\n <AutoFocusPlugin />\n <ListPlugin />\n <LinkPlugin />\n {onChange && <OnChangePlugin onChange={onChange} />}\n </LexicalComposer>\n </div>\n );\n}\n\nexport default EditorWrapper;\n","function isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nexport { isValidEmail };\n","import { useEffect, useRef, useState } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport { isValidEmail } from \"../../../utils/common\";\nimport Icon from \"../../core/Icon\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputWithDropDown({ emails = [], setEmails, fetchOptions }: {\n emails?: EmailOption[];\n setEmails: (emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const popupRef = useRef<any>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [currentEmail, setCurrentEmail] = useState(\"\");\n const [popupOpen, setPopupOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n const [options, setOptions] = useState<EmailOption[]>([]);\n const [loading, setLoading] = useState(false);\n\n // store refs for each email chip\n const emailRefs = useRef<(HTMLDivElement | null)[]>([]);\n // store refs for dropdown options\n const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // keep refs array length consistent\n useEffect(() => {\n emailRefs.current = emailRefs.current.slice(0, emails.length);\n }, [emails.length]);\n\n // keep option refs array length consistent\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n // Fetch options when a valid email is entered\n useEffect(() => {\n if (isValidEmail(currentEmail)) {\n const loadOptions = async () => {\n setLoading(true);\n try {\n const data = await fetchOptions(currentEmail);\n setOptions(data);\n } catch (err) {\n console.error(\"Error fetching email options:\", err);\n setOptions([]);\n } finally {\n setLoading(false);\n }\n };\n\n loadOptions();\n } else {\n setOptions([]);\n setLoading(false);\n }\n }, [currentEmail, fetchOptions]);\n\n // reset selected index when popup closes or options change\n useEffect(() => {\n if (!popupOpen) {\n setSelectedIndex(-1);\n }\n }, [popupOpen]);\n\n // scroll selected option into view\n useEffect(() => {\n if (selectedIndex >= 0 && selectedIndex < optionRefs.current.length) {\n optionRefs.current[selectedIndex]?.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }\n }, [selectedIndex]);\n\n const focusInput = () => {\n inputRef.current?.focus();\n };\n\n const addEmail = (option: EmailOption) => {\n popupRef.current?.close();\n setCurrentEmail(\"\");\n setEmails((prev: EmailOption[]) => [...prev, option]);\n setSelectedIndex(-1);\n // refocus input after adding\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Handle dropdown navigation when popup is open\n if (popupOpen && isValidEmail(currentEmail) && options.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectedIndex((prev) =>\n prev < options.length - 1 ? prev + 1 : prev\n );\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectedIndex((prev) => (prev > 0 ? prev - 1 : -1));\n return;\n }\n if (e.key === \"Enter\" && selectedIndex >= 0) {\n e.preventDefault();\n addEmail(options[selectedIndex]);\n return;\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n popupRef.current?.close();\n setSelectedIndex(-1);\n return;\n }\n }\n\n if (e.key === \"Backspace\" && currentEmail === \"\") {\n // focus last email chip if exists\n const lastIdx = emails.length - 1;\n const lastChip = emailRefs.current[lastIdx];\n if (lastChip) {\n lastChip.focus();\n e.preventDefault();\n }\n }\n };\n\n const removeEmailAt = (index: number) => {\n setEmails((prev) => {\n const next = [...prev];\n next.splice(index, 1);\n return next;\n });\n // next tick: focus previous chip if exists else the input\n requestAnimationFrame(() => {\n const prevIdx = Math.min(Math.max(0, index - 1), emails.length - 2);\n const prevChip = emailRefs.current[prevIdx];\n if (prevChip) prevChip.focus();\n else focusInput();\n });\n };\n\n return (\n <>\n <Popup\n ref={popupRef}\n trigger={\n <div className=\"container-receipts\">\n {emails?.length ? (\n <div className=\"emails-container\">\n {emails.map((email, idx) => (\n <div\n key={email.email ?? idx}\n className=\"emails\"\n tabIndex={0} // make it focusable\n ref={(el) => {\n emailRefs.current[idx] = el;\n }}\n onKeyDown={(e) => {\n if (e.key === \"Backspace\") {\n e.preventDefault();\n removeEmailAt(idx);\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n removeEmailAt(idx);\n focusInput();\n }\n }}\n role=\"button\"\n aria-label={`Email ${email.email}`}>\n <span style={{ marginRight: 8 }}>{email.email}</span>\n <button\n className=\"emails-close\"\n onClick={(ev) => {\n ev.stopPropagation();\n removeEmailAt(idx);\n }}\n aria-label={`Remove ${email.email}`}>\n <Icon name=\"Close\" />\n </button>\n </div>\n ))}\n </div>\n ) : null}\n <input\n ref={inputRef}\n type=\"text\"\n className=\"input-header\"\n value={currentEmail}\n autoFocus\n onKeyDown={handleInputKeyDown}\n // DON'T forcibly close popup here\n onChange={(e) => {\n const val = e.target.value;\n // open popup when the email becomes valid\n if (isValidEmail(val)) {\n popupRef.current?.open();\n }\n setCurrentEmail(val);\n }}\n />\n </div>\n }\n closeOnDocumentClick\n repositionOnResize\n position={\"bottom left\"}\n className=\"filter-popup\"\n onOpen={() => {\n setPopupOpen(true);\n // ensure input stays focused (some popup implementations steal focus)\n requestAnimationFrame(() => inputRef.current?.focus());\n }}\n onClose={() => {\n setPopupOpen(false);\n }}>\n {isValidEmail(currentEmail) ? (\n <div className=\"options-dropdown\">\n {loading ? (\n // Skeleton loader\n <>\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"option-dropdown skeleton-loader\">\n <div className=\"skeleton-line skeleton-name\"></div>\n <div className=\"skeleton-line skeleton-email\"></div>\n </div>\n ))}\n </>\n ) : options.length > 0 ? (\n options.map((opt, idx) => {\n return (\n <button\n ref={(el) => {\n optionRefs.current[idx] = el;\n }}\n className={`option-dropdown ${selectedIndex === idx ? \"selected\" : \"\"}`}\n key={idx}\n onBlur={(e) => {\n e.stopPropagation();\n }}\n onFocus={(e) => {\n e.stopPropagation();\n }}\n onMouseEnter={() => setSelectedIndex(idx)}\n onMouseLeave={() => setSelectedIndex(-1)}\n onClick={(e) => {\n e.stopPropagation();\n addEmail(opt);\n }}\n aria-selected={selectedIndex === idx}>\n <h4>{opt.name}</h4>\n {opt.email}\n </button>\n );\n })\n ) : null}\n </div>\n ) : null}\n </Popup>\n </>\n );\n}\n\nexport default InputWithDropDown;\n","import React from \"react\";\nimport InputWithDropDown from \"./InputWIthDropDown\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputForEmail({\n name,\n needCCAndBCC,\n setShowCC,\n setShowBCC,\n showBCC,\n showCC,\n emails,\n handleChange,\n fetchOptions,\n}: {\n name: string;\n needCCAndBCC?: boolean;\n setShowCC?: React.Dispatch<React.SetStateAction<boolean>>;\n setShowBCC?: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC?: boolean;\n showCC?: boolean;\n emails: EmailOption[];\n handleChange: (\n emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])\n ) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n return (\n <div className=\"container-receipts\">\n <label className=\"block text-sm font-medium text-gray-700\">{name}</label>\n\n <InputWithDropDown\n emails={emails}\n setEmails={handleChange}\n fetchOptions={fetchOptions}\n />\n {needCCAndBCC && !showCC ? (\n <button className=\"btn\" onClick={() => setShowCC?.((prev) => !prev)}>\n CC\n </button>\n ) : null}\n {needCCAndBCC && !showBCC ? (\n <button className=\"btn\" onClick={() => setShowBCC?.((prev) => !prev)}>\n BCC\n </button>\n ) : null}\n </div>\n );\n}\n\nexport default InputForEmail;\n","import { useRef, useState, useEffect } from \"react\";\nimport InputForEmail from \"./InputForEmail\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction ReceiptsHeading({ fetchEmailOptions }: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const { emails, setEmails, showCC, setShowCC, showBCC, setShowBCC } =\n useEmailContext();\n\n // Show CC/BCC fields when opening if they have values\n useEffect(() => {\n if (open) {\n setShowCC(emails.cc.length > 0);\n setShowBCC(emails.bcc.length > 0);\n }\n }, [open, emails.cc.length, emails.bcc.length]);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n if (!wrapper) return;\n\n // Focus in event (bubbles unlike React's onFocus)\n const handleFocusIn = () => {\n setOpen(true);\n };\n\n // Focus out event (bubbles unlike React's onBlur)\n const handleFocusOut = (e: FocusEvent) => {\n console.log(\"🚀 ~ handleFocusOut ~ e:\", e);\n const next = e.relatedTarget as HTMLElement | null;\n // Only close if the next focused element is outside the wrapper\n if (\n (next &&\n next.classList &&\n next.classList.contains(\"option-dropdown\")) ||\n (next && wrapper.contains(next))\n )\n return;\n console.log(\"why this \", next?.classList);\n setOpen(false);\n };\n\n wrapper.addEventListener(\"focusin\", handleFocusIn);\n wrapper.addEventListener(\"focusout\", handleFocusOut);\n\n return () => {\n wrapper.removeEventListener(\"focusin\", handleFocusIn);\n wrapper.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, []);\n\n // Helper to display email recipients in collapsed view\n const getDisplayText = () => {\n if (\n emails.to.length === 0 &&\n emails.cc.length === 0 &&\n emails.bcc.length === 0\n ) {\n return \"Recipients\";\n }\n\n const parts = [];\n\n // Add TO recipients\n if (emails.to.length > 0) {\n parts.push(emails.to.map((e) => e.email).join(\", \"));\n }\n\n // Add CC recipients with \"cc:\" prefix\n if (emails.cc.length > 0) {\n parts.push(emails.cc.map((e) => e.email).join(\", \"));\n }\n\n // Add BCC recipients with \"bcc:\" prefix\n if (emails.bcc.length > 0) {\n parts.push(\"bcc: \" + emails.bcc.map((e) => e.email).join(\", \"));\n }\n\n return parts.join(\", \");\n };\n\n return (\n <div ref={wrapperRef} tabIndex={-1} className=\"relative\">\n {!open ? (\n <input\n type=\"text\"\n placeholder=\"Recipients\"\n className=\"input-header\"\n value={getDisplayText()}\n readOnly\n />\n ) : (\n <div>\n <InputForEmail\n name=\"To\"\n needCCAndBCC\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.to}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n to: typeof value === \"function\" ? value(prev.to) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n {showCC ? (\n <InputForEmail\n name=\"CC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.cc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n cc: typeof value === \"function\" ? value(prev.cc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n {showBCC ? (\n <InputForEmail\n name=\"BCC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.bcc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n bcc: typeof value === \"function\" ? value(prev.bcc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n </div>\n )}\n </div>\n );\n}\n\nexport default ReceiptsHeading;\n","import ReceiptsHeading from \"../ReceiptsHeading\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction GmailHeading({\n fetchEmailOptions,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const { subject, setSubject, isReply } = useEmailContext();\n\n return (\n <div className=\"gmail-header\">\n <ReceiptsHeading fetchEmailOptions={fetchEmailOptions} />\n <input\n type=\"text\"\n placeholder=\"Subject\"\n className=\"input-header\"\n value={isReply && !subject.startsWith(\"Re: \") ? `Re: ${subject}` : subject}\n onChange={(e) => setSubject(e.target.value)}\n />\n </div>\n );\n}\n\nexport default GmailHeading;\n","import { useEffect, useState, type ReactNode } from \"react\";\nimport EditorWrapper from \"../Editor/EditorWrapper\";\nimport GmailHeading from \"./GmailHeading\";\nimport { useEmailContext, type EmailOption } from \"./EmailContext\";\nimport type { EmailData } from \"./index\";\nimport { useTheme } from \"../../context/ThemeContext\";\n\nfunction GmailWrapperContent({\n initialData,\n isReply,\n fetchEmailOptions,\n handleChange,\n leftChildren,\n rightChildren,\n editorChildren,\n isEditorVisible = true,\n}: {\n initialData?: Partial<EmailData>;\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n editorChildren?: ReactNode;\n isEditorVisible?: boolean;\n}) {\n const {\n emails,\n subject,\n attachments,\n setEmails,\n setSubject,\n setAttachments,\n setIsReply,\n } = useEmailContext();\n const { theme } = useTheme();\n const [bodyHTML, setBodyHTML] = useState(initialData?.body || \"\");\n const [emailData, setEmailData] = useState<EmailData>({\n to: initialData?.to || [],\n cc: initialData?.cc || [],\n bcc: initialData?.bcc || [],\n subject: initialData?.subject || \"\",\n body: initialData?.body || \"\",\n attachments: initialData?.attachments || [],\n isReply: isReply || false,\n });\n\n // Initialize context values from initialData on mount\n useEffect(() => {\n if (initialData) {\n if (initialData.to || initialData.cc || initialData.bcc) {\n setEmails({\n to: initialData.to || [],\n cc: initialData.cc || [],\n bcc: initialData.bcc || [],\n });\n }\n if (initialData.subject) {\n setSubject(initialData.subject);\n }\n if (initialData.attachments) {\n setAttachments(initialData.attachments);\n }\n if (initialData.body) {\n setBodyHTML(initialData.body);\n }\n }\n if (isReply !== undefined) {\n setIsReply(isReply);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleEditorChange = (html: string) => {\n setBodyHTML(html);\n };\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n to: emails.to,\n cc: emails.cc,\n bcc: emails.bcc,\n }));\n }, [emails]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n subject,\n }));\n }, [subject]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n body: bodyHTML,\n }));\n }, [bodyHTML]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n attachments,\n }));\n }, [attachments]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n isReply,\n }));\n }, [isReply]);\n\n useEffect(() => {\n handleChange(emailData);\n }, [emailData, handleChange]);\n\n return (\n <div className=\"react-mail-inbox-root gmail-wrapper\" data-theme={theme}>\n {leftChildren}\n <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n <EditorWrapper\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n isEditorVisible={isEditorVisible}\n />\n {rightChildren}\n </div>\n );\n}\n\nexport default GmailWrapperContent;\n","import { type ReactNode } from \"react\";\nimport { EmailProvider, type EmailOption } from \"./EmailContext\";\nimport GmailWrapperContent from \"./GmailWrapperContent\";\nimport \"./index.css\";\n\nexport interface EmailData {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n subject: string;\n body: string;\n attachments: File[];\n isReply?: boolean;\n}\n\nfunction GmailWrapper({\n fetchEmailOptions,\n handleChange,\n initialData,\n leftChildren,\n rightChildren,\n isReply,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n}) {\n return (\n <EmailProvider>\n <GmailWrapperContent\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n isReply={isReply}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </EmailProvider>\n );\n}\n\nexport default GmailWrapper;\n","import { type ReactNode } from \"react\";\nimport { ThemeProvider, type Theme } from \"../../context/ThemeContext\";\nimport GmailWrapper, { type EmailData } from \"../GmailWrapper\";\nimport type { EmailOption } from \"../GmailWrapper/EmailContext\";\n\nexport { useTheme, type Theme } from \"../../context/ThemeContext\";\nexport type { EmailData, EmailOption };\n\ninterface GmailInboxProps {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n}\n\nfunction GmailInbox({\n fetchEmailOptions,\n handleChange,\n initialData,\n initialTheme = \"dark\",\n onThemeChange,\n leftChildren,\n rightChildren,\n}: GmailInboxProps) {\n return (\n <ThemeProvider initialTheme={initialTheme} onThemeChange={onThemeChange}>\n <GmailWrapper\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </ThemeProvider>\n );\n}\n\nexport default GmailInbox;\n","// Main component export\nimport GmailInboxComponent from './Components/GmailInbox';\nexport { GmailInboxComponent as GmailInbox };\nexport default GmailInboxComponent;\n\n// Type exports\nexport type { EmailData, EmailOption } from './Components/GmailInbox';\nexport { useTheme, type Theme } from './context/ThemeContext';\n\n// Re-export types for convenience\nexport type { Alignment } from './Components/core/AlignmentSelect';\n"]}