phx-react 1.3.1798 → 1.3.1800

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.
Files changed (43) hide show
  1. package/dist/cjs/components/MainWrapV4/components/fixed-action.js +1 -1
  2. package/dist/cjs/components/MainWrapV4/components/fixed-action.js.map +1 -1
  3. package/dist/cjs/components/MainWrapV4/components/main-content.js +1 -1
  4. package/dist/cjs/components/MainWrapV4/components/main-content.js.map +1 -1
  5. package/dist/cjs/components/MainWrapV4/components/search/index.js +1 -1
  6. package/dist/cjs/components/MainWrapV4/components/search/index.js.map +1 -1
  7. package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.d.ts +4 -0
  8. package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.js +39 -0
  9. package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.js.map +1 -1
  10. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js +3 -3
  11. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js.map +1 -1
  12. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.d.ts +11 -1
  13. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js +100 -4
  14. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js.map +1 -1
  15. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.d.ts +44 -2
  16. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js +105 -16
  17. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js.map +1 -1
  18. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js +3 -3
  19. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js.map +1 -1
  20. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/index.js +24 -5
  21. package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/index.js.map +1 -1
  22. package/dist/esm/components/MainWrapV4/components/fixed-action.js +1 -1
  23. package/dist/esm/components/MainWrapV4/components/fixed-action.js.map +1 -1
  24. package/dist/esm/components/MainWrapV4/components/main-content.js +1 -1
  25. package/dist/esm/components/MainWrapV4/components/main-content.js.map +1 -1
  26. package/dist/esm/components/MainWrapV4/components/search/index.js +1 -1
  27. package/dist/esm/components/MainWrapV4/components/search/index.js.map +1 -1
  28. package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.d.ts +4 -0
  29. package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.js +40 -1
  30. package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.js.map +1 -1
  31. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js +3 -3
  32. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js.map +1 -1
  33. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.d.ts +11 -1
  34. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js +101 -5
  35. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js.map +1 -1
  36. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.d.ts +44 -2
  37. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js +102 -17
  38. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js.map +1 -1
  39. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js +3 -3
  40. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js.map +1 -1
  41. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/index.js +25 -6
  42. package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/index.js.map +1 -1
  43. package/package.json +1 -1
@@ -36,7 +36,7 @@ function FixedAction({ className = '' }) {
36
36
  react_2.default.createElement("p", { className: 'text-xxs text-[#F1F1F1]' }, "Thay \u0111\u1ED5i ch\u01B0a \u0111\u01B0\u1EE3c l\u01B0u")),
37
37
  react_2.default.createElement("div", { className: 'z-10 flex items-center gap-x-1.5' }, (_a = initData.buttons) === null || _a === void 0 ? void 0 : _a.map((button, index) => {
38
38
  const isDiscardBtn = button.type === 'discard';
39
- return (react_2.default.createElement(Button_1.PHXButton, { loading: button.loading, [isDiscardBtn ? 'tertiary' : 'secondary']: true, key: index, className: (0, types_1.classNames)(isDiscardBtn ? 'hover:!bg-[#ffffff1c] active:!bg-[#ffffff2b]' : ''), onClick: button.onClick, size: 'small' },
39
+ return (react_2.default.createElement(Button_1.PHXButton, { loading: button.loading, [isDiscardBtn ? 'tertiary' : 'secondary']: true, key: index, className: (0, types_1.classNames)(isDiscardBtn ? 'hover:!bg-[#1F2937] active:!bg-[#1b2430]' : ''), onClick: button.onClick, size: 'small' },
40
40
  react_2.default.createElement("span", { className: (0, types_1.classNames)('font-medium text-gray-900', isDiscardBtn ? '!text-gray-50' : '') }, button.text)));
41
41
  }))));
42
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fixed-action.js","sourceRoot":"","sources":["../../../../../src/components/MainWrapV4/components/fixed-action.tsx"],"names":[],"mappings":";;AAUA,8BA6DC;;AAvED,gDAA6C;AAC7C,iCAA2C;AAC3C,0CAAgD;AAChD,gDAA4C;AAC5C,0DAAyB;AAEzB,uCAAwC;AACxC,yCAAwC;AACxC,gCAAgD;AAEhD,SAAwB,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAA0B;;IAC5E,MAAM,QAAQ,GAAG,IAAA,wBAAW,GAAE,CAAA;IAC9B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAyB;QAC/D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;KACZ,CAAC,CAAA;IAEF,IAAA,yBAAqB,EAAC,6BAAkB,EAAE,CAAC,OAA+B,EAAE,EAAE;QAC5E,WAAW,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,mBAAQ,CAAC,IAAI,CAAC,6BAAkB,EAAE;YAChC,GAAG,QAAQ;YACX,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,kBAAU,EAAC,2EAA2E,EAAE,SAAS,CAAC;QAChH,uCAAK,SAAS,EAAC,gGAAgG,GAAG;QAClH,uCAAK,SAAS,EAAC,gCAAgC;YAC7C,uCAAK,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,4BAA4B;gBAC5F,wCACE,CAAC,EAAC,wNAAwN,EAC1N,IAAI,EAAC,SAAS,GACd;gBACF,wCACE,CAAC,EAAC,8MAA8M,EAChN,IAAI,EAAC,SAAS,GACd;gBACF,wCACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,gtBAAgtB,EACltB,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,GAClB,CACE;YACN,qCAAG,SAAS,EAAC,yBAAyB,gEAA2B,CAC7D;QACN,uCAAK,SAAS,EAAC,kCAAkC,IAC9C,MAAA,QAAQ,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAA;YAC9C,OAAO,CACL,8BAAC,kBAAS,IACR,OAAO,EAAE,MAAM,CAAC,OAAO,EACjB,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EACrD,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,EAAE,CAAC,EACzF,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,IAAI,EAAC,OAAO;gBAEZ,wCAAM,SAAS,EAAE,IAAA,kBAAU,EAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,IAC1F,MAAM,CAAC,IAAI,CACP,CACG,CACb,CAAA;QACH,CAAC,CAAC,CACE,CACF,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"fixed-action.js","sourceRoot":"","sources":["../../../../../src/components/MainWrapV4/components/fixed-action.tsx"],"names":[],"mappings":";;AAUA,8BA6DC;;AAvED,gDAA6C;AAC7C,iCAA2C;AAC3C,0CAAgD;AAChD,gDAA4C;AAC5C,0DAAyB;AAEzB,uCAAwC;AACxC,yCAAwC;AACxC,gCAAgD;AAEhD,SAAwB,WAAW,CAAC,EAAE,SAAS,GAAG,EAAE,EAA0B;;IAC5E,MAAM,QAAQ,GAAG,IAAA,wBAAW,GAAE,CAAA;IAC9B,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAyB;QAC/D,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,EAAE;KACZ,CAAC,CAAA;IAEF,IAAA,yBAAqB,EAAC,6BAAkB,EAAE,CAAC,OAA+B,EAAE,EAAE;QAC5E,WAAW,CAAC,OAAO,CAAC,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,mBAAQ,CAAC,IAAI,CAAC,6BAAkB,EAAE;YAChC,GAAG,QAAQ;YACX,IAAI,EAAE,KAAK;SACZ,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,kBAAU,EAAC,2EAA2E,EAAE,SAAS,CAAC;QAChH,uCAAK,SAAS,EAAC,gGAAgG,GAAG;QAClH,uCAAK,SAAS,EAAC,gCAAgC;YAC7C,uCAAK,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC,4BAA4B;gBAC5F,wCACE,CAAC,EAAC,wNAAwN,EAC1N,IAAI,EAAC,SAAS,GACd;gBACF,wCACE,CAAC,EAAC,8MAA8M,EAChN,IAAI,EAAC,SAAS,GACd;gBACF,wCACE,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,gtBAAgtB,EACltB,IAAI,EAAC,SAAS,EACd,QAAQ,EAAC,SAAS,GAClB,CACE;YACN,qCAAG,SAAS,EAAC,yBAAyB,gEAA2B,CAC7D;QACN,uCAAK,SAAS,EAAC,kCAAkC,IAC9C,MAAA,QAAQ,CAAC,OAAO,0CAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAA;YAC9C,OAAO,CACL,8BAAC,kBAAS,IACR,OAAO,EAAE,MAAM,CAAC,OAAO,EACjB,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EACrD,GAAG,EAAE,KAAK,EACV,SAAS,EAAE,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,EAAE,CAAC,EACrF,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,IAAI,EAAC,OAAO;gBAEZ,wCAAM,SAAS,EAAE,IAAA,kBAAU,EAAC,2BAA2B,EAAE,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,IAC1F,MAAM,CAAC,IAAI,CACP,CACG,CACb,CAAA;QACH,CAAC,CAAC,CACE,CACF,CACP,CAAA;AACH,CAAC"}
@@ -31,7 +31,7 @@ function MainContent({ children, currentCode, isLoadingPermission, perCode, show
31
31
  setIsShowFixAction(payload.show || false);
32
32
  }
33
33
  });
34
- return (react_1.default.createElement("main", { className: (0, types_1.classNames)('transition-all lg:absolute lg:inset-0 lg:right-2', showSubMenu ? mainClass[sideBarType].open : mainClass[sideBarType].close, isShowFixedAction ? 'mt-12 lg:mt-0' : '') }, isLoadingPermission ? (react_1.default.createElement("div", { className: contentClassname })) : (0, helper_1.enablePer)(currentCode, perCode) ? (react_1.default.createElement("div", { ref: contentRef, className: contentClassname }, children)) : (react_1.default.createElement("div", { className: contentClassname },
34
+ return (react_1.default.createElement("main", { className: (0, types_1.classNames)('transition-all lg:absolute lg:inset-0 lg:right-2', showSubMenu ? mainClass[sideBarType].open : mainClass[sideBarType].close, isShowFixedAction ? 'mt-8 lg:mt-0' : '') }, isLoadingPermission ? (react_1.default.createElement("div", { className: contentClassname })) : (0, helper_1.enablePer)(currentCode, perCode) ? (react_1.default.createElement("div", { ref: contentRef, className: contentClassname }, children)) : (react_1.default.createElement("div", { className: contentClassname },
35
35
  react_1.default.createElement(Card_1.PHXCard, null,
36
36
  react_1.default.createElement("div", { className: 'my-10 flex flex-col items-center justify-center' },
37
37
  react_1.default.createElement(outline_1.LockClosedIcon, { className: 'text-gray-400', height: 70, width: 70 }),
@@ -1 +1 @@
1
- {"version":3,"file":"main-content.js","sourceRoot":"","sources":["../../../../../src/components/MainWrapV4/components/main-content.tsx"],"names":[],"mappings":";;AAUA,8BAwEC;;AAlFD,yDAA4D;AAC5D,uDAAuC;AACvC,0CAA8D;AAC9D,sCAAqC;AAErC,uCAAwC;AACxC,qCAAoC;AACpC,gCAAgD;AAGhD,SAAwB,WAAW,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,WAAW,EACX,UAAU,GASX;IACC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,SAAS,GAA0D;QACvE,CAAC,uBAAY,CAAC,uBAAuB,CAAC,EAAE;YACtC,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,kBAAkB;SAC1B;QACD,CAAC,uBAAY,CAAC,SAAS,CAAC,EAAE;YACxB,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,mBAAmB;SAC3B;QACD,CAAC,uBAAY,CAAC,yBAAyB,CAAC,EAAE;YACxC,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,mBAAmB;SAC3B;KACF,CAAA;IACD,MAAM,gBAAgB,GAAG,IAAA,kBAAU,EACjC,gHAAgH,EAChH,WAAW,KAAK,uBAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAC/F,CAAA;IAED,IAAA,yBAAqB,EAAC,6BAAkB,EAAE,CAAC,OAA+B,EAAE,EAAE;QAC5E,IAAI,iBAAiB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,wCACE,SAAS,EAAE,IAAA,kBAAU,EACnB,kDAAkD,EAClD,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,EACxE,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CACzC,IAEA,mBAAmB,CAAC,CAAC,CAAC,CACrB,uCAAK,SAAS,EAAE,gBAAgB,GAAI,CACrC,CAAC,CAAC,CAAC,IAAA,kBAAS,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CACpC,uCAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,IAC9C,QAAQ,CACL,CACP,CAAC,CAAC,CAAC,CACF,uCAAK,SAAS,EAAE,gBAAgB;QAC9B,8BAAC,cAAO;YACN,uCAAK,SAAS,EAAC,kDAAkD;gBAC/D,8BAAC,wBAAc,IAAC,SAAS,EAAC,eAAe,EAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAI;gBAEnE,uCAAK,SAAS,EAAC,qFAAqF,2DAE9F,CACF,CACE,CACN,CACP,CACI,CACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"main-content.js","sourceRoot":"","sources":["../../../../../src/components/MainWrapV4/components/main-content.tsx"],"names":[],"mappings":";;AAUA,8BAwEC;;AAlFD,yDAA4D;AAC5D,uDAAuC;AACvC,0CAA8D;AAC9D,sCAAqC;AAErC,uCAAwC;AACxC,qCAAoC;AACpC,gCAAgD;AAGhD,SAAwB,WAAW,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,OAAO,EACP,WAAW,EACX,WAAW,EACX,UAAU,GASX;IACC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,SAAS,GAA0D;QACvE,CAAC,uBAAY,CAAC,uBAAuB,CAAC,EAAE;YACtC,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,kBAAkB;SAC1B;QACD,CAAC,uBAAY,CAAC,SAAS,CAAC,EAAE;YACxB,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,mBAAmB;SAC3B;QACD,CAAC,uBAAY,CAAC,yBAAyB,CAAC,EAAE;YACxC,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,mBAAmB;SAC3B;KACF,CAAA;IACD,MAAM,gBAAgB,GAAG,IAAA,kBAAU,EACjC,gHAAgH,EAChH,WAAW,KAAK,uBAAY,CAAC,yBAAyB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAC/F,CAAA;IAED,IAAA,yBAAqB,EAAC,6BAAkB,EAAE,CAAC,OAA+B,EAAE,EAAE;QAC5E,IAAI,iBAAiB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,wCACE,SAAS,EAAE,IAAA,kBAAU,EACnB,kDAAkD,EAClD,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,KAAK,EACxE,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CACxC,IAEA,mBAAmB,CAAC,CAAC,CAAC,CACrB,uCAAK,SAAS,EAAE,gBAAgB,GAAI,CACrC,CAAC,CAAC,CAAC,IAAA,kBAAS,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CACpC,uCAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,IAC9C,QAAQ,CACL,CACP,CAAC,CAAC,CAAC,CACF,uCAAK,SAAS,EAAE,gBAAgB;QAC9B,8BAAC,cAAO;YACN,uCAAK,SAAS,EAAC,kDAAkD;gBAC/D,8BAAC,wBAAc,IAAC,SAAS,EAAC,eAAe,EAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,GAAI;gBAEnE,uCAAK,SAAS,EAAC,qFAAqF,2DAE9F,CACF,CACE,CACN,CACP,CACI,CACR,CAAA;AACH,CAAC"}
@@ -36,7 +36,7 @@ function SearchBarHeader({ menu, perCode, sideBarType, unreadCount, userId, cont
36
36
  return (react_1.default.createElement(react_1.default.Fragment, null,
37
37
  react_1.default.createElement(fixed_action_1.default, { className: (0, types_1.classNames)(!hasVerticalScroll && 'lg:!hidden', isDesktop
38
38
  ? 'left-1/2 z-50 h-9 -translate-x-1/4 lg:w-[25rem] xl:w-[35.625rem]'
39
- : 'left-4 right-4 top-[3.5rem] h-11', 'transition-transform duration-200 ease-in-out', isShowFixedAction ? '' : isDesktop ? 'pointer-events-none -translate-y-14' : 'hidden') }),
39
+ : 'left-4 right-4 top-[3.5rem] h-9', 'transition-transform duration-200 ease-in-out', isShowFixedAction ? '' : isDesktop ? 'pointer-events-none -translate-y-14' : 'hidden') }),
40
40
  userId && menu.length > 0 && perCode.length > 0 && (react_1.default.createElement(react_1.default.Fragment, null, isDesktop ? (react_1.default.createElement(SearchBarHeaderDesktop, { hasVerticalScroll: hasVerticalScroll, menu: menu, perCode: perCode, sideBarType: sideBarType, userId: userId })) : (react_1.default.createElement(SearchBarMobile, { menu: menu, perCode: perCode, unreadCount: unreadCount }))))));
41
41
  }
42
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/MainWrapV4/components/search/index.tsx"],"names":[],"mappings":";;AAiBA,kCAmEC;;AApFD,mEAAkC;AAClC,uDAAkD;AAElD,2EAAyC;AACzC,0CAA2C;AAC3C,mCAAmD;AACnD,6CAAmD;AAEnD,+DAAyD;AAEzD,MAAM,sBAAsB,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,2DAAQ,oBAAoB,GAAC,EAAE;IACzE,GAAG,EAAE,KAAK;CACX,CAAC,CAAA;AACF,MAAM,eAAe,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,2DAAQ,mBAAmB,GAAC,EAAE;IACjE,GAAG,EAAE,KAAK;CACX,CAAC,CAAA;AAEF,SAAwB,eAAe,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,GAQX;IACC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,6BAAY,EAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAExE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;QAEnD,MAAM,OAAO,GAAG,CAAC,CAAuC,EAAE,EAAE;YAC1D,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC,CAAA;QAED,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC,cAAc;QAC1B,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEtC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAA,yBAAqB,EAAC,6BAAkB,EAAE,CAAC,OAA+B,EAAE,EAAE;QAC5E,IAAI,iBAAiB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL;QACE,8BAAC,sBAAW,IACV,SAAS,EAAE,IAAA,kBAAU,EACnB,CAAC,iBAAiB,IAAI,YAAY,EAClC,SAAS;gBACP,CAAC,CAAC,kEAAkE;gBACpE,CAAC,CAAC,kCAAkC,EACtC,+CAA+C,EAC/C,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,QAAQ,CACtF,GACD;QACD,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAClD,8DACG,SAAS,CAAC,CAAC,CAAC,CACX,8BAAC,sBAAsB,IACrB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACd,CACH,CAAC,CAAC,CAAC,CACF,8BAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAI,CAC5E,CACA,CACJ,CACA,CACJ,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/MainWrapV4/components/search/index.tsx"],"names":[],"mappings":";;AAiBA,kCAmEC;;AApFD,mEAAkC;AAClC,uDAAkD;AAElD,2EAAyC;AACzC,0CAA2C;AAC3C,mCAAmD;AACnD,6CAAmD;AAEnD,+DAAyD;AAEzD,MAAM,sBAAsB,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,2DAAQ,oBAAoB,GAAC,EAAE;IACzE,GAAG,EAAE,KAAK;CACX,CAAC,CAAA;AACF,MAAM,eAAe,GAAG,IAAA,iBAAO,EAAC,GAAG,EAAE,2DAAQ,mBAAmB,GAAC,EAAE;IACjE,GAAG,EAAE,KAAK;CACX,CAAC,CAAA;AAEF,SAAwB,eAAe,CAAC,EACtC,IAAI,EACJ,OAAO,EACP,WAAW,EACX,WAAW,EACX,MAAM,EACN,UAAU,GAQX;IACC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IAC/D,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAA,6BAAY,EAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAExE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAA;QAEnD,MAAM,OAAO,GAAG,CAAC,CAAuC,EAAE,EAAE;YAC1D,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC,CAAA;QAED,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC,cAAc;QAC1B,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QAEtC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAA,yBAAqB,EAAC,6BAAkB,EAAE,CAAC,OAA+B,EAAE,EAAE;QAC5E,IAAI,iBAAiB,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;YACvC,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,CACL;QACE,8BAAC,sBAAW,IACV,SAAS,EAAE,IAAA,kBAAU,EACnB,CAAC,iBAAiB,IAAI,YAAY,EAClC,SAAS;gBACP,CAAC,CAAC,kEAAkE;gBACpE,CAAC,CAAC,iCAAiC,EACrC,+CAA+C,EAC/C,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,QAAQ,CACtF,GACD;QACD,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAClD,8DACG,SAAS,CAAC,CAAC,CAAC,CACX,8BAAC,sBAAsB,IACrB,iBAAiB,EAAE,iBAAiB,EACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACd,CACH,CAAC,CAAC,CAAC,CACF,8BAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAI,CAC5E,CACA,CACJ,CACA,CACJ,CAAA;AACH,CAAC"}
@@ -1 +1,5 @@
1
+ /**
2
+ * Registers paste sanitization for the rich text editor.
3
+ * @returns Null because the plugin only registers editor commands.
4
+ */
1
5
  export default function SanitizePastePlugin(): null;
@@ -10,6 +10,10 @@ const LEXICAL_MIME_TYPE = 'application/x-lexical-editor';
10
10
  const PRESENTATIONAL_ATTRIBUTES = ['class', 'id', 'style'];
11
11
  const LEGACY_PRESENTATIONAL_ATTRIBUTES = ['align', 'bgcolor', 'color', 'face', 'size'];
12
12
  const REMOVED_TAGS = ['link', 'meta', 'script', 'style'];
13
+ /**
14
+ * Removes unsafe and presentational markup from pasted HTML.
15
+ * @param doc Parsed clipboard HTML document.
16
+ */
13
17
  function sanitizePastedHTMLDocument(doc) {
14
18
  REMOVED_TAGS.forEach((tagName) => {
15
19
  doc.querySelectorAll(tagName).forEach((node) => node.remove());
@@ -25,6 +29,36 @@ function sanitizePastedHTMLDocument(doc) {
25
29
  }
26
30
  });
27
31
  }
32
+ /**
33
+ * Inserts pasted plain text as separate paragraphs when it contains line breaks.
34
+ * @param text Plain text clipboard content.
35
+ * @returns True when text was handled as multiple paragraphs.
36
+ */
37
+ function insertMultilinePlainText(text) {
38
+ if (!/\r|\n/.test(text)) {
39
+ return false;
40
+ }
41
+ const selection = (0, lexical_1.$getSelection)();
42
+ if (!(0, lexical_1.$isRangeSelection)(selection)) {
43
+ return false;
44
+ }
45
+ const paragraphs = text
46
+ .replace(/\r\n?/g, '\n')
47
+ .split('\n')
48
+ .map((line) => {
49
+ const paragraph = (0, lexical_1.$createParagraphNode)();
50
+ if (line.length > 0) {
51
+ paragraph.append((0, lexical_1.$createTextNode)(line));
52
+ }
53
+ return paragraph;
54
+ });
55
+ selection.insertNodes(paragraphs);
56
+ return true;
57
+ }
58
+ /**
59
+ * Registers paste sanitization for the rich text editor.
60
+ * @returns Null because the plugin only registers editor commands.
61
+ */
28
62
  function SanitizePastePlugin() {
29
63
  const [editor] = (0, LexicalComposerContext_1.useLexicalComposerContext)();
30
64
  (0, react_1.useEffect)(() => editor.registerCommand(lexical_1.PASTE_COMMAND, (event) => {
@@ -35,6 +69,11 @@ function SanitizePastePlugin() {
35
69
  if (clipboardData.types.includes(LEXICAL_MIME_TYPE)) {
36
70
  return false;
37
71
  }
72
+ const text = clipboardData.getData('text/plain');
73
+ if (/\r|\n/.test(text)) {
74
+ event.preventDefault();
75
+ return insertMultilinePlainText(text);
76
+ }
38
77
  const html = clipboardData.getData('text/html');
39
78
  if (!html) {
40
79
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/TextEditorV2/plugins/SanitizePastePlugin/index.tsx"],"names":[],"mappings":";;AA6BA,sCAkDC;AA/ED,kDAA0D;AAC1D,wCAAqD;AACrD,kFAAiF;AACjF,qCAA6E;AAC7E,iCAAiC;AAEjC,MAAM,iBAAiB,GAAG,8BAA8B,CAAA;AACxD,MAAM,yBAAyB,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AAC1D,MAAM,gCAAgC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACtF,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AAExD,SAAS,0BAA0B,CAAC,GAAa;IAC/C,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACjD,yBAAyB,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAC9C,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC/B,gCAAgC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBACrD,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAwB,mBAAmB;IACzC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,kDAAyB,GAAE,CAAA;IAE5C,IAAA,iBAAS,EACP,GAAG,EAAE,CACH,MAAM,CAAC,eAAe,CACpB,uBAAa,EACb,CAAC,KAAK,EAAE,EAAE;QACR,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;QAE/B,IAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAA;QACd,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAA;QAEtB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,IAAA,uBAAa,GAAE,CAAA;YAEjC,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBACtB,OAAM;YACR,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAA;YAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;YAErD,0BAA0B,CAAC,GAAG,CAAC,CAAA;YAE/B,MAAM,KAAK,GAAG,IAAA,4BAAqB,EAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAChD,IAAA,iCAAqB,EAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;QAEF,OAAO,IAAI,CAAA;IACb,CAAC,EACD,+BAAqB,CACtB,EACH,CAAC,MAAM,CAAC,CACT,CAAA;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/TextEditorV2/plugins/SanitizePastePlugin/index.tsx"],"names":[],"mappings":"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"}
@@ -10,12 +10,12 @@ function Bullet({ editor, isActive }) {
10
10
  return (react_1.default.createElement("div", { className: 'flex items-center gap-x-2' },
11
11
  react_1.default.createElement("button", { type: 'button', "data-color-button": 'true', className: (0, types_1.classNames)('p-1 rounded-md duration-200 cursor-pointer', isActive ? 'bg-gray-200' : 'hover:bg-gray-200'), onClick: () => {
12
12
  if (!isActive) {
13
- const preservedFontSize = (0, heading_1.preserveHeadingFontSizeForList)(editor);
13
+ const preservedHeading = (0, heading_1.preserveHeadingFontSizeForList)(editor);
14
14
  editor.dispatchCommand(list_1.INSERT_UNORDERED_LIST_COMMAND, undefined);
15
- if (preservedFontSize !== null) {
15
+ if (preservedHeading !== null) {
16
16
  queueMicrotask(() => {
17
17
  editor.update(() => {
18
- (0, heading_1.applyListItemFontSize)(preservedFontSize);
18
+ (0, heading_1.applyListItemFontSize)(preservedHeading.fontSize, preservedHeading.headingTag);
19
19
  });
20
20
  });
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bullet.js","sourceRoot":"","sources":["../../../../../../../src/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.tsx"],"names":[],"mappings":";;AAWA,yBAqEC;;AAhFD,wCAAkF;AAElF,0DAAyB;AACzB,6CAA8C;AAC9C,uCAKkB;AAElB,SAAwB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAgD;IAC/F,OAAO,CACL,uCAAK,SAAS,EAAC,2BAA2B;QACxC,0CACE,IAAI,EAAC,QAAQ,uBACK,MAAM,EACxB,SAAS,EAAE,IAAA,kBAAU,EACnB,4CAA4C,EAC5C,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAC/C,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,iBAAiB,GAAG,IAAA,wCAA8B,EAAC,MAAM,CAAC,CAAA;oBAEhE,MAAM,CAAC,eAAe,CAAC,oCAA6B,EAAE,SAAS,CAAC,CAAA;oBAEhE,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;wBAC/B,cAAc,CAAC,GAAG,EAAE;4BAClB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gCACjB,IAAA,+BAAqB,EAAC,iBAAiB,CAAC,CAAA;4BAC1C,CAAC,CAAC,CAAA;wBACJ,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,IAAA,mCAAyB,EAAC,MAAM,CAAC,CAAA;oBAEpD,MAAM,CAAC,eAAe,CAAC,0BAAmB,EAAE,SAAS,CAAC,CAAA;oBAEtD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,cAAc,CAAC,GAAG,EAAE;4BAClB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gCACjB,IAAA,qCAA2B,EAAC,UAAU,CAAC,CAAA;4BACzC,CAAC,CAAC,CAAA;wBACJ,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED;gBACE,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;oBAC5F,wCACE,CAAC,EAAC,uGAAuG,EACzG,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,6GAA6G,EAC/G,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,gHAAgH,EAClH,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,0JAA0J,EAC5J,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,4JAA4J,EAC9J,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,mKAAmK,EACrK,IAAI,EAAC,SAAS,GACR,CACJ,CACD,CACA,CACL,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"bullet.js","sourceRoot":"","sources":["../../../../../../../src/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.tsx"],"names":[],"mappings":";;AAWA,yBAqEC;;AAhFD,wCAAkF;AAElF,0DAAyB;AACzB,6CAA8C;AAC9C,uCAKkB;AAElB,SAAwB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAgD;IAC/F,OAAO,CACL,uCAAK,SAAS,EAAC,2BAA2B;QACxC,0CACE,IAAI,EAAC,QAAQ,uBACK,MAAM,EACxB,SAAS,EAAE,IAAA,kBAAU,EACnB,4CAA4C,EAC5C,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAC/C,EACD,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,gBAAgB,GAAG,IAAA,wCAA8B,EAAC,MAAM,CAAC,CAAA;oBAE/D,MAAM,CAAC,eAAe,CAAC,oCAA6B,EAAE,SAAS,CAAC,CAAA;oBAEhE,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;wBAC9B,cAAc,CAAC,GAAG,EAAE;4BAClB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gCACjB,IAAA,+BAAqB,EAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAA;4BAC/E,CAAC,CAAC,CAAA;wBACJ,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,UAAU,GAAG,IAAA,mCAAyB,EAAC,MAAM,CAAC,CAAA;oBAEpD,MAAM,CAAC,eAAe,CAAC,0BAAmB,EAAE,SAAS,CAAC,CAAA;oBAEtD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;wBACxB,cAAc,CAAC,GAAG,EAAE;4BAClB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;gCACjB,IAAA,qCAA2B,EAAC,UAAU,CAAC,CAAA;4BACzC,CAAC,CAAC,CAAA;wBACJ,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED;gBACE,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;oBAC5F,wCACE,CAAC,EAAC,uGAAuG,EACzG,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,6GAA6G,EAC/G,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,gHAAgH,EAClH,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,0JAA0J,EAC5J,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,4JAA4J,EAC9J,IAAI,EAAC,SAAS,GACR;oBACR,wCACE,CAAC,EAAC,mKAAmK,EACrK,IAAI,EAAC,SAAS,GACR,CACJ,CACD,CACA,CACL,CACP,CAAA;AACH,CAAC"}
@@ -1,6 +1,16 @@
1
1
  import { LexicalEditor } from 'lexical';
2
2
  import React from 'react';
3
- export default function FontSize({ fontSize, editor }: {
3
+ import { type HeadingTagType } from '@lexical/rich-text';
4
+ /**
5
+ * Renders controls for applying inline font size to the current selection.
6
+ * @param props Font size control props.
7
+ * @param props.fontSize Current selected font size.
8
+ * @param props.editor Active Lexical editor.
9
+ * @param props.listHeadingTag Current list heading type that should survive font-size changes.
10
+ * @returns Font size toolbar controls.
11
+ */
12
+ export default function FontSize({ fontSize, editor, listHeadingTag, }: {
4
13
  fontSize: number | null;
5
14
  editor: LexicalEditor;
15
+ listHeadingTag: HeadingTagType | null;
6
16
  }): React.JSX.Element;
@@ -2,10 +2,102 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = FontSize;
4
4
  const tslib_1 = require("tslib");
5
+ const list_1 = require("@lexical/list");
6
+ const utils_1 = require("@lexical/utils");
5
7
  const lexical_1 = require("lexical");
6
8
  const react_1 = tslib_1.__importStar(require("react"));
7
9
  const selection_1 = require("@lexical/selection");
8
- function FontSize({ fontSize, editor }) {
10
+ const heading_1 = require("./heading");
11
+ /**
12
+ * Finds the list item that owns a node.
13
+ * @param node Node inside or equal to a list item.
14
+ * @returns Matching list item, or null when the node is not in a list item.
15
+ */
16
+ function getListItemNode(node) {
17
+ return (0, list_1.$isListItemNode)(node) ? node : (0, utils_1.$findMatchingParent)(node, (parent) => (0, list_1.$isListItemNode)(parent));
18
+ }
19
+ /**
20
+ * Gets selected list items from the current range.
21
+ * @param selection Current range selection.
22
+ * @returns Unique list item nodes touched by the selection.
23
+ */
24
+ function getSelectedListItems(selection) {
25
+ const listItemNodes = new Set();
26
+ const selectedNodes = [selection.anchor.getNode(), selection.focus.getNode(), ...selection.getNodes()];
27
+ for (const node of selectedNodes) {
28
+ const listItemNode = getListItemNode(node);
29
+ if (listItemNode !== null) {
30
+ listItemNodes.add(listItemNode);
31
+ }
32
+ }
33
+ return listItemNodes;
34
+ }
35
+ /**
36
+ * Reads heading metadata from selected list items.
37
+ * @param selection Current range selection.
38
+ * @returns Selected list heading tag, or null when the selection is normal list text.
39
+ */
40
+ function getSelectedListHeadingTag(selection) {
41
+ for (const listItemNode of getSelectedListItems(selection)) {
42
+ const headingTag = (0, heading_1.getListItemHeadingTag)(listItemNode);
43
+ if (headingTag !== null) {
44
+ return headingTag;
45
+ }
46
+ }
47
+ return null;
48
+ }
49
+ /**
50
+ * Applies font size to selected list items and their marker style.
51
+ * @param listItemNodes List items touched by the selection.
52
+ * @param fontSize Font size to apply.
53
+ * @param headingTag Heading type to preserve, or null for normal list text.
54
+ * @param shouldApplyMarkerStyle True when the list marker should receive the selected size.
55
+ */
56
+ function applyListItemFontSize(listItemNodes, fontSize, headingTag, shouldApplyMarkerStyle) {
57
+ for (const listItemNode of listItemNodes) {
58
+ (0, heading_1.setListItemHeadingTag)(listItemNode.getKey(), headingTag);
59
+ if (!shouldApplyMarkerStyle) {
60
+ continue;
61
+ }
62
+ const listItemStyle = {
63
+ ...(0, selection_1.getStyleObjectFromCSS)(listItemNode.getTextStyle()),
64
+ 'font-size': fontSize,
65
+ };
66
+ if (headingTag === null) {
67
+ delete listItemStyle['--phx-list-heading'];
68
+ }
69
+ else {
70
+ listItemStyle['--phx-list-heading'] = headingTag;
71
+ }
72
+ listItemNode.setTextStyle((0, selection_1.getCSSFromStyleObject)(listItemStyle));
73
+ }
74
+ }
75
+ /**
76
+ * Gets the active range selection, restoring the previous range when toolbar focus cleared it.
77
+ * @returns Current or restored range selection, or a root-end selection as a final fallback.
78
+ */
79
+ function getActiveRangeSelection() {
80
+ const selection = (0, lexical_1.$getSelection)();
81
+ if ((0, lexical_1.$isRangeSelection)(selection)) {
82
+ return selection;
83
+ }
84
+ const previousSelection = (0, lexical_1.$getPreviousSelection)();
85
+ if ((0, lexical_1.$isRangeSelection)(previousSelection)) {
86
+ const restoredSelection = previousSelection.clone();
87
+ (0, lexical_1.$setSelection)(restoredSelection);
88
+ return restoredSelection;
89
+ }
90
+ return (0, lexical_1.$getRoot)().selectEnd();
91
+ }
92
+ /**
93
+ * Renders controls for applying inline font size to the current selection.
94
+ * @param props Font size control props.
95
+ * @param props.fontSize Current selected font size.
96
+ * @param props.editor Active Lexical editor.
97
+ * @param props.listHeadingTag Current list heading type that should survive font-size changes.
98
+ * @returns Font size toolbar controls.
99
+ */
100
+ function FontSize({ fontSize, editor, listHeadingTag, }) {
9
101
  const FONT_SIZES = [
10
102
  12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72,
11
103
  80, 96,
@@ -20,11 +112,15 @@ function FontSize({ fontSize, editor }) {
20
112
  const handleChangeSize = (nextSize) => {
21
113
  const nextFontSize = `${nextSize}px`;
22
114
  editor.update(() => {
23
- const selection = (0, lexical_1.$getSelection)();
24
- const rangeSelection = (0, lexical_1.$isRangeSelection)(selection) ? selection : (0, lexical_1.$getRoot)().selectEnd();
115
+ const rangeSelection = getActiveRangeSelection();
116
+ const selectedListItems = getSelectedListItems(rangeSelection);
117
+ const selectedListHeadingTag = listHeadingTag !== null && listHeadingTag !== void 0 ? listHeadingTag : getSelectedListHeadingTag(rangeSelection);
25
118
  (0, selection_1.$patchStyleText)(rangeSelection, {
26
119
  'font-size': nextFontSize,
27
120
  });
121
+ if (selectedListItems.size > 0) {
122
+ applyListItemFontSize(selectedListItems, nextFontSize, selectedListHeadingTag, !rangeSelection.isCollapsed());
123
+ }
28
124
  if (rangeSelection.isCollapsed()) {
29
125
  const anchorNode = rangeSelection.anchor.getNode();
30
126
  const targetNode = (0, lexical_1.$isElementNode)(anchorNode)
@@ -52,7 +148,7 @@ function FontSize({ fontSize, editor }) {
52
148
  }
53
149
  });
54
150
  setShowDropDown(false);
55
- editor.focus(undefined, { defaultSelection: 'rootEnd' });
151
+ editor.focus();
56
152
  };
57
153
  const handleIncre = (value) => {
58
154
  if (!hasFontSize) {
@@ -1 +1 @@
1
- {"version":3,"file":"font-size.js","sourceRoot":"","sources":["../../../../../../../src/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"font-size.js","sourceRoot":"","sources":["../../../../../../../src/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,37 @@
1
1
  import React from 'react';
2
2
  import { HeadingTagType } from '@lexical/rich-text';
3
+ import { type ListItemNode } from '@lexical/list';
3
4
  import { LexicalEditor } from 'lexical';
4
5
  export declare const DEFAULT_HEADING_FONT_SIZES: Record<HeadingTagType, string>;
6
+ type ListItemBlockType = HeadingTagType | 'paragraph';
7
+ type PreservedListBlock = {
8
+ fontSize: string;
9
+ headingTag: HeadingTagType | null;
10
+ };
11
+ /**
12
+ * Stores block metadata for a list item during the current editor session.
13
+ * @param listItemKey List item node key.
14
+ * @param headingTag Heading type to store, or null to mark the list item as normal text.
15
+ */
16
+ export declare function setListItemHeadingTag(listItemKey: string, headingTag: HeadingTagType | null): void;
17
+ /**
18
+ * Gets the heading tag stored on a list item style.
19
+ * @param style List item text style.
20
+ * @returns Matching heading tag, or null when the style is normal text.
21
+ */
22
+ export declare function getListItemHeadingTagFromStyle(style: string): HeadingTagType | null;
23
+ /**
24
+ * Gets the block type stored for a list item.
25
+ * @param listItemNode List item whose block metadata should be read.
26
+ * @returns Matching block type, or null when no metadata can be inferred.
27
+ */
28
+ export declare function getListItemBlockType(listItemNode: ListItemNode): ListItemBlockType | null;
29
+ /**
30
+ * Gets the heading type stored for a list item.
31
+ * @param listItemNode List item whose heading metadata should be read.
32
+ * @returns Matching heading tag, or null when the list item is normal text.
33
+ */
34
+ export declare function getListItemHeadingTag(listItemNode: ListItemNode): HeadingTagType | null;
5
35
  /**
6
36
  * Gets the heading tag represented by the current selected list item font size.
7
37
  * @param editor Active Lexical editor.
@@ -13,9 +43,21 @@ export declare function getSelectedListHeadingTag(editor: LexicalEditor): Headin
13
43
  * @param headingTag Heading tag to apply.
14
44
  */
15
45
  export declare function applyHeadingTypeToSelection(headingTag: HeadingTagType): void;
16
- export declare function preserveHeadingFontSizeForList(editor: LexicalEditor): null;
17
- export declare function applyListItemFontSize(defaultFontSize: string): boolean;
46
+ /**
47
+ * Preserves block metadata before converting selected content to a list item.
48
+ * @param editor Active Lexical editor.
49
+ * @returns Preserved font size and heading tag, or paragraph metadata when no heading is selected.
50
+ */
51
+ export declare function preserveHeadingFontSizeForList(editor: LexicalEditor): PreservedListBlock | null;
52
+ /**
53
+ * Applies font size and optional heading metadata to selected list items.
54
+ * @param defaultFontSize Font size to apply to the list item content.
55
+ * @param headingTag Heading type to preserve on the list item, or null to reset to normal text.
56
+ * @returns True when at least one list item was updated.
57
+ */
58
+ export declare function applyListItemFontSize(defaultFontSize: string, headingTag?: HeadingTagType | null): boolean;
18
59
  export default function HeaderDropdown({ editor, value }: {
19
60
  editor: LexicalEditor;
20
61
  value: string;
21
62
  }): React.JSX.Element;
63
+ export {};
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_HEADING_FONT_SIZES = void 0;
4
+ exports.setListItemHeadingTag = setListItemHeadingTag;
5
+ exports.getListItemHeadingTagFromStyle = getListItemHeadingTagFromStyle;
6
+ exports.getListItemBlockType = getListItemBlockType;
7
+ exports.getListItemHeadingTag = getListItemHeadingTag;
4
8
  exports.getSelectedListHeadingTag = getSelectedListHeadingTag;
5
9
  exports.applyHeadingTypeToSelection = applyHeadingTypeToSelection;
6
10
  exports.preserveHeadingFontSizeForList = preserveHeadingFontSizeForList;
@@ -21,6 +25,29 @@ exports.DEFAULT_HEADING_FONT_SIZES = {
21
25
  h5: '18px',
22
26
  h6: '16px',
23
27
  };
28
+ const LIST_HEADING_STYLE_PROPERTY = '--phx-list-heading';
29
+ const listItemBlockTypeByKey = new Map();
30
+ /**
31
+ * Checks whether a style value is a supported heading tag.
32
+ * @param value Style value to test.
33
+ * @returns True when the value is a heading tag.
34
+ */
35
+ function isHeadingTag(value) {
36
+ return value !== undefined && value in exports.DEFAULT_HEADING_FONT_SIZES;
37
+ }
38
+ /**
39
+ * Stores block metadata for a list item during the current editor session.
40
+ * @param listItemKey List item node key.
41
+ * @param headingTag Heading type to store, or null to mark the list item as normal text.
42
+ */
43
+ function setListItemHeadingTag(listItemKey, headingTag) {
44
+ if (headingTag === null) {
45
+ listItemBlockTypeByKey.set(listItemKey, 'paragraph');
46
+ }
47
+ else {
48
+ listItemBlockTypeByKey.set(listItemKey, headingTag);
49
+ }
50
+ }
24
51
  /**
25
52
  * Applies the heading font size to every text node inside an element.
26
53
  * @param node Element whose text descendants should receive the font size.
@@ -51,6 +78,42 @@ function getListItemNode(node) {
51
78
  function getHeadingNode(node) {
52
79
  return (0, rich_text_1.$isHeadingNode)(node) ? node : (0, utils_1.$findMatchingParent)(node, (parent) => (0, rich_text_1.$isHeadingNode)(parent));
53
80
  }
81
+ /**
82
+ * Gets the heading tag stored on a list item style.
83
+ * @param style List item text style.
84
+ * @returns Matching heading tag, or null when the style is normal text.
85
+ */
86
+ function getListItemHeadingTagFromStyle(style) {
87
+ const styleObject = (0, selection_1.getStyleObjectFromCSS)(style);
88
+ const storedHeadingTag = styleObject[LIST_HEADING_STYLE_PROPERTY];
89
+ if (isHeadingTag(storedHeadingTag)) {
90
+ return storedHeadingTag;
91
+ }
92
+ const listItemFontSize = styleObject['font-size'];
93
+ const headingEntry = Object.entries(exports.DEFAULT_HEADING_FONT_SIZES).find(([, fontSize]) => fontSize === listItemFontSize);
94
+ return headingEntry !== undefined ? headingEntry[0] : null;
95
+ }
96
+ /**
97
+ * Gets the block type stored for a list item.
98
+ * @param listItemNode List item whose block metadata should be read.
99
+ * @returns Matching block type, or null when no metadata can be inferred.
100
+ */
101
+ function getListItemBlockType(listItemNode) {
102
+ const storedBlockType = listItemBlockTypeByKey.get(listItemNode.getKey());
103
+ if (storedBlockType !== undefined) {
104
+ return storedBlockType;
105
+ }
106
+ return getListItemHeadingTagFromStyle(listItemNode.getTextStyle());
107
+ }
108
+ /**
109
+ * Gets the heading type stored for a list item.
110
+ * @param listItemNode List item whose heading metadata should be read.
111
+ * @returns Matching heading tag, or null when the list item is normal text.
112
+ */
113
+ function getListItemHeadingTag(listItemNode) {
114
+ const blockType = getListItemBlockType(listItemNode);
115
+ return blockType === 'paragraph' ? null : blockType;
116
+ }
54
117
  /**
55
118
  * Checks whether the current range is only part of one top-level block.
56
119
  * @param selection Current range selection.
@@ -85,10 +148,9 @@ function getSelectedListHeadingTag(editor) {
85
148
  if (listItemNode === null) {
86
149
  continue;
87
150
  }
88
- const listItemFontSize = (0, selection_1.getStyleObjectFromCSS)(listItemNode.getTextStyle())['font-size'];
89
- const headingEntry = Object.entries(exports.DEFAULT_HEADING_FONT_SIZES).find(([, fontSize]) => fontSize === listItemFontSize);
90
- if (headingEntry !== undefined) {
91
- selectedHeadingTag = headingEntry[0];
151
+ const headingTag = getListItemHeadingTag(listItemNode);
152
+ if (headingTag !== null) {
153
+ selectedHeadingTag = headingTag;
92
154
  return;
93
155
  }
94
156
  }
@@ -106,13 +168,19 @@ function applyHeadingTypeToSelection(headingTag) {
106
168
  }
107
169
  (0, selection_1.$setBlocksType)(selection, () => (0, rich_text_1.$createHeadingNode)(headingTag), (prevNode) => applyHeadingFontSize(prevNode, exports.DEFAULT_HEADING_FONT_SIZES[headingTag]));
108
170
  }
171
+ /**
172
+ * Preserves block metadata before converting selected content to a list item.
173
+ * @param editor Active Lexical editor.
174
+ * @returns Preserved font size and heading tag, or paragraph metadata when no heading is selected.
175
+ */
109
176
  function preserveHeadingFontSizeForList(editor) {
110
- let preservedFontSize = null;
177
+ let preservedBlock = null;
111
178
  editor.update(() => {
112
179
  const selection = (0, lexical_1.$getSelection)();
113
180
  if (!(0, lexical_1.$isRangeSelection)(selection)) {
114
181
  return;
115
182
  }
183
+ const selectionFontSize = (0, selection_1.$getSelectionStyleValueForProperty)(selection, 'font-size', '14px');
116
184
  const headingNodes = new Set();
117
185
  const selectedNodes = [selection.anchor.getNode(), selection.focus.getNode(), ...selection.getNodes()];
118
186
  for (const node of selectedNodes) {
@@ -122,19 +190,29 @@ function preserveHeadingFontSizeForList(editor) {
122
190
  }
123
191
  }
124
192
  for (const headingNode of headingNodes) {
125
- const headingFontSize = exports.DEFAULT_HEADING_FONT_SIZES[headingNode.getTag()];
126
- preservedFontSize = headingFontSize;
193
+ const headingTag = headingNode.getTag();
194
+ const headingFontSize = exports.DEFAULT_HEADING_FONT_SIZES[headingTag];
195
+ preservedBlock = { fontSize: headingFontSize, headingTag };
127
196
  applyHeadingFontSize(headingNode, headingFontSize);
128
197
  }
129
- if (preservedFontSize !== null) {
198
+ if (preservedBlock === null) {
199
+ preservedBlock = { fontSize: selectionFontSize, headingTag: null };
200
+ }
201
+ if (preservedBlock !== null) {
130
202
  (0, selection_1.$patchStyleText)(selection, {
131
- 'font-size': preservedFontSize,
203
+ 'font-size': preservedBlock.fontSize,
132
204
  });
133
205
  }
134
206
  });
135
- return preservedFontSize;
207
+ return preservedBlock;
136
208
  }
137
- function applyListItemFontSize(defaultFontSize) {
209
+ /**
210
+ * Applies font size and optional heading metadata to selected list items.
211
+ * @param defaultFontSize Font size to apply to the list item content.
212
+ * @param headingTag Heading type to preserve on the list item, or null to reset to normal text.
213
+ * @returns True when at least one list item was updated.
214
+ */
215
+ function applyListItemFontSize(defaultFontSize, headingTag) {
138
216
  const selection = (0, lexical_1.$getSelection)();
139
217
  if (!(0, lexical_1.$isRangeSelection)(selection)) {
140
218
  return false;
@@ -151,11 +229,22 @@ function applyListItemFontSize(defaultFontSize) {
151
229
  return false;
152
230
  }
153
231
  for (const listItemNode of listItemNodes) {
154
- applyHeadingFontSize(listItemNode, defaultFontSize);
155
- listItemNode.setTextStyle((0, selection_1.getCSSFromStyleObject)({
232
+ const listItemStyle = {
156
233
  ...(0, selection_1.getStyleObjectFromCSS)(listItemNode.getTextStyle()),
157
234
  'font-size': defaultFontSize,
158
- }));
235
+ };
236
+ if (headingTag !== undefined) {
237
+ if (headingTag === null) {
238
+ setListItemHeadingTag(listItemNode.getKey(), null);
239
+ delete listItemStyle[LIST_HEADING_STYLE_PROPERTY];
240
+ }
241
+ else {
242
+ setListItemHeadingTag(listItemNode.getKey(), headingTag);
243
+ listItemStyle[LIST_HEADING_STYLE_PROPERTY] = headingTag;
244
+ }
245
+ }
246
+ applyHeadingFontSize(listItemNode, defaultFontSize);
247
+ listItemNode.setTextStyle((0, selection_1.getCSSFromStyleObject)(listItemStyle));
159
248
  }
160
249
  (0, selection_1.$patchStyleText)(selection, {
161
250
  'font-size': defaultFontSize,
@@ -203,7 +292,7 @@ function HeaderDropdown({ editor, value }) {
203
292
  });
204
293
  return;
205
294
  }
206
- if (applyListItemFontSize('14px')) {
295
+ if (applyListItemFontSize('14px', null)) {
207
296
  return;
208
297
  }
209
298
  (0, selection_1.$setBlocksType)(selection, () => (0, lexical_1.$createParagraphNode)(), (prevNode) => applyHeadingFontSize(prevNode, '14px'));
@@ -231,7 +320,7 @@ function HeaderDropdown({ editor, value }) {
231
320
  });
232
321
  return;
233
322
  }
234
- if (applyListItemFontSize(exports.DEFAULT_HEADING_FONT_SIZES[headingTag])) {
323
+ if (applyListItemFontSize(exports.DEFAULT_HEADING_FONT_SIZES[headingTag], headingTag)) {
235
324
  return;
236
325
  }
237
326
  (0, selection_1.$setBlocksType)(selection, () => (0, rich_text_1.$createHeadingNode)(headingTag), (prevNode) => applyHeadingFontSize(prevNode, exports.DEFAULT_HEADING_FONT_SIZES[headingTag]));