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.
- package/dist/cjs/components/MainWrapV4/components/fixed-action.js +1 -1
- package/dist/cjs/components/MainWrapV4/components/fixed-action.js.map +1 -1
- package/dist/cjs/components/MainWrapV4/components/main-content.js +1 -1
- package/dist/cjs/components/MainWrapV4/components/main-content.js.map +1 -1
- package/dist/cjs/components/MainWrapV4/components/search/index.js +1 -1
- package/dist/cjs/components/MainWrapV4/components/search/index.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.d.ts +4 -0
- package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.js +39 -0
- package/dist/cjs/components/TextEditorV2/plugins/SanitizePastePlugin/index.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js +3 -3
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.d.ts +11 -1
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js +100 -4
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.d.ts +44 -2
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js +105 -16
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js +3 -3
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js.map +1 -1
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/index.js +24 -5
- package/dist/cjs/components/TextEditorV2/plugins/ToolbarPlugin/index.js.map +1 -1
- package/dist/esm/components/MainWrapV4/components/fixed-action.js +1 -1
- package/dist/esm/components/MainWrapV4/components/fixed-action.js.map +1 -1
- package/dist/esm/components/MainWrapV4/components/main-content.js +1 -1
- package/dist/esm/components/MainWrapV4/components/main-content.js.map +1 -1
- package/dist/esm/components/MainWrapV4/components/search/index.js +1 -1
- package/dist/esm/components/MainWrapV4/components/search/index.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.d.ts +4 -0
- package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.js +40 -1
- package/dist/esm/components/TextEditorV2/plugins/SanitizePastePlugin/index.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js +3 -3
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/bullet.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.d.ts +11 -1
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js +101 -5
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.d.ts +44 -2
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js +102 -17
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/heading.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js +3 -3
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/components/number-bullet.js.map +1 -1
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/index.js +25 -6
- package/dist/esm/components/TextEditorV2/plugins/ToolbarPlugin/index.js.map +1 -1
- 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-[#
|
|
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,
|
|
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-
|
|
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,
|
|
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-
|
|
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,
|
|
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"}
|
|
@@ -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":";;
|
|
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
|
|
13
|
+
const preservedHeading = (0, heading_1.preserveHeadingFontSizeForList)(editor);
|
|
14
14
|
editor.dispatchCommand(list_1.INSERT_UNORDERED_LIST_COMMAND, undefined);
|
|
15
|
-
if (
|
|
15
|
+
if (preservedHeading !== null) {
|
|
16
16
|
queueMicrotask(() => {
|
|
17
17
|
editor.update(() => {
|
|
18
|
-
(0, heading_1.applyListItemFontSize)(
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
24
|
-
const
|
|
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(
|
|
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":";;
|
|
1
|
+
{"version":3,"file":"font-size.js","sourceRoot":"","sources":["../../../../../../../src/components/TextEditorV2/plugins/ToolbarPlugin/components/font-size.tsx"],"names":[],"mappings":";;AAoIA,2BAsLC;;AA1TD,wCAAkE;AAClE,0CAAoD;AACpD,qCAWgB;AAChB,uDAA0D;AAC1D,kDAAkG;AAElG,uCAAwE;AAExE;;;;GAIG;AACH,SAAS,eAAe,CAAC,IAAiB;IACxC,OAAO,IAAA,sBAAe,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,2BAAmB,EAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,sBAAe,EAAC,MAAM,CAAC,CAAC,CAAA;AACtG,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,SAAyB;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAgB,CAAA;IAC7C,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEtG,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,eAAe,CAAC,IAAI,CAAC,CAAA;QAE1C,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAA;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,SAAyB;IAC1D,KAAK,MAAM,YAAY,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,IAAA,+BAAqB,EAAC,YAAY,CAAC,CAAA;QAEtD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,UAAU,CAAA;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAC5B,aAAgC,EAChC,QAAgB,EAChB,UAAiC,EACjC,sBAA+B;IAE/B,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,IAAA,+BAAqB,EAAC,YAAY,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAA;QAExD,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,SAAQ;QACV,CAAC;QAED,MAAM,aAAa,GAA2B;YAC5C,GAAG,IAAA,iCAAqB,EAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YACrD,WAAW,EAAE,QAAQ;SACtB,CAAA;QAED,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC,oBAAoB,CAAC,CAAA;QAC5C,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,oBAAoB,CAAC,GAAG,UAAU,CAAA;QAClD,CAAC;QAED,YAAY,CAAC,YAAY,CAAC,IAAA,iCAAqB,EAAC,aAAa,CAAC,CAAC,CAAA;IACjE,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB;IAC9B,MAAM,SAAS,GAAG,IAAA,uBAAa,GAAE,CAAA;IAEjC,IAAI,IAAA,2BAAiB,EAAC,SAAS,CAAC,EAAE,CAAC;QACjC,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAA,+BAAqB,GAAE,CAAA;IAEjD,IAAI,IAAA,2BAAiB,EAAC,iBAAiB,CAAC,EAAE,CAAC;QACzC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAEnD,IAAA,uBAAa,EAAC,iBAAiB,CAAC,CAAA;QAEhC,OAAO,iBAAiB,CAAA;IAC1B,CAAC;IAED,OAAO,IAAA,kBAAQ,GAAE,CAAC,SAAS,EAAE,CAAA;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,SAAwB,QAAQ,CAAC,EAC/B,QAAQ,EACR,MAAM,EACN,cAAc,GAKf;IACC,MAAM,UAAU,GAAG;QACjB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAClH,EAAE,EAAE,EAAE;KACP,CAAA;IACD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACrD,MAAM,WAAW,GAAG,QAAQ,KAAK,IAAI,CAAA;IACrC,MAAM,gBAAgB,GAAG,CAAC,WAAW,IAAI,QAAQ,IAAI,WAAW,CAAA;IAChE,MAAM,gBAAgB,GAAG,CAAC,WAAW,IAAI,QAAQ,IAAI,WAAW,CAAA;IAChE,MAAM,GAAG,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAA;IAExC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAA;IACvD,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAE,EAAE;QAC5C,MAAM,YAAY,GAAG,GAAG,QAAQ,IAAI,CAAA;QAEpC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,cAAc,GAAG,uBAAuB,EAAE,CAAA;YAChD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAA;YAC9D,MAAM,sBAAsB,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,yBAAyB,CAAC,cAAc,CAAC,CAAA;YAE1F,IAAA,2BAAe,EAAC,cAAc,EAAE;gBAC9B,WAAW,EAAE,YAAY;aAC1B,CAAC,CAAA;YAEF,IAAI,iBAAiB,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC/B,qBAAqB,CAAC,iBAAiB,EAAE,YAAY,EAAE,sBAAsB,EAAE,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAA;YAC/G,CAAC;YAED,IAAI,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;gBAClD,MAAM,UAAU,GAAG,IAAA,wBAAc,EAAC,UAAU,CAAC;oBAC3C,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,IAAA,qBAAW,EAAC,UAAU,CAAC;wBACzB,CAAC,CAAC,UAAU,CAAC,kBAAkB,EAAE;wBACjC,CAAC,CAAC,IAAI,CAAA;gBAER,IAAI,IAAA,wBAAc,EAAC,UAAU,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;oBACvD,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,CAAA;oBACzC,MAAM,MAAM,GAAG,IAAA,iCAAqB,EAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;oBAE3D,UAAU,CAAC,QAAQ,CACjB,IAAA,iCAAqB,EAAC;wBACpB,GAAG,MAAM;wBACT,WAAW,EAAE,YAAY;qBAC1B,CAAC,CACH,CAAA;oBACD,UAAU,CAAC,YAAY,CAAC,IAAA,iCAAqB,EAAC,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,CAAA;oBAE7E,MAAM,4BAA4B,GAAG,GAAG,EAAE;wBACxC,MAAM,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;wBAE3D,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;oBAC7D,CAAC,CAAA;oBAED,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;wBACzC,cAAc,CAAC,4BAA4B,CAAC,CAAA;oBAC9C,CAAC;oBAED,qBAAqB,CAAC,4BAA4B,CAAC,CAAA;gBACrD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;QACF,eAAe,CAAC,KAAK,CAAC,CAAA;QACtB,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,QAAQ,GAAG,KAAK,CAAA;QACrC,IAAI,YAAY,GAAG,WAAW,IAAI,YAAY,GAAG,WAAW,EAAE,CAAC;YAC7D,OAAM;QACR,CAAC;QACD,gBAAgB,CAAC,YAAY,CAAC,CAAA;IAChC,CAAC,CAAA;IAED,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,SAAS,kBAAkB,CAAC,KAAiB;YAC3C,IAAI,CAAC,GAAG,CAAC,OAAO;gBAAE,OAAM;YAExB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE,CAAC;gBAChD,eAAe,CAAC,KAAK,CAAC,CAAA;YACxB,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAE1D,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA;QAC/D,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,uCAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,eAAe;QACrC,YAAY,IAAI,CACf,uCAAK,SAAS,EAAC,gGAAgG,IAC5G,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvB,OAAO,CACL,0CACE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACrC,GAAG,EAAE,IAAI,EACT,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,0DAA0D;gBAEnE,IAAI;qBACE,CACV,CAAA;QACH,CAAC,CAAC,CACE,CACP;QACD,uCAAK,SAAS,EAAC,2BAA2B;YACxC,0CACE,IAAI,EAAC,QAAQ,uBACK,MAAM,EACxB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,+BACT,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,kCACvD,EAAE,EACF,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAE9B;oBACE,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wBAC5F,wCACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,oJAAoJ,EACtJ,IAAI,EAAC,SAAS,GACR,CACJ,CACD,CACA,CACL;QAEN,uCAAK,SAAS,EAAC,2BAA2B;YACxC,uCAAK,SAAS,EAAC,4BAA4B;gBACzC,0CACE,IAAI,EAAC,QAAQ,EACb,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAC/C,SAAS,EAAC,iLAAiL,IAE1L,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,CACR,CACL,CACF;QACN,uCAAK,SAAS,EAAC,2BAA2B;YACxC,0CACE,IAAI,EAAC,QAAQ,uBACK,MAAM,EACxB,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,+BACT,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,kCACvD,EAAE,EACF,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBAE7B;oBACE,uCAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B;wBAC5F,wCACE,CAAC,EAAC,sUAAsU,EACxU,IAAI,EAAC,SAAS,GACR,CACJ,CACD,CACA;YACT,uCAAK,SAAS,EAAC,yBAAyB,GAAO,CAC3C,CACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -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
|
-
|
|
17
|
-
|
|
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
|
|
89
|
-
|
|
90
|
-
|
|
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
|
|
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
|
|
126
|
-
|
|
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 (
|
|
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':
|
|
203
|
+
'font-size': preservedBlock.fontSize,
|
|
132
204
|
});
|
|
133
205
|
}
|
|
134
206
|
});
|
|
135
|
-
return
|
|
207
|
+
return preservedBlock;
|
|
136
208
|
}
|
|
137
|
-
|
|
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
|
-
|
|
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]));
|