@frontify/guideline-blocks-settings 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/dist/components/Attachments/AttachmentItem.es.js +83 -83
  2. package/dist/components/Attachments/AttachmentItem.es.js.map +1 -1
  3. package/dist/components/Attachments/Attachments.es.js +51 -54
  4. package/dist/components/Attachments/Attachments.es.js.map +1 -1
  5. package/dist/components/BlockInjectButton/BlockInjectButton.es.js +56 -57
  6. package/dist/components/BlockInjectButton/BlockInjectButton.es.js.map +1 -1
  7. package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js +25 -25
  8. package/dist/components/BlockItemWrapper/BlockItemWrapper.es.js.map +1 -1
  9. package/dist/components/BlockItemWrapper/Toolbar/context/MultiFlyoutContext.es.js +3 -3
  10. package/dist/components/Link/LinkInput.es.js +35 -35
  11. package/dist/components/Link/LinkInput.es.js.map +1 -1
  12. package/dist/components/Link/LinkSelector/LinkSelector.es.js +31 -31
  13. package/dist/components/Link/LinkSelector/LinkSelector.es.js.map +1 -1
  14. package/dist/components/Link/helpers/filterDocumentSectionsWithUnreadableTitles.es.js +2 -5
  15. package/dist/components/Link/helpers/filterDocumentSectionsWithUnreadableTitles.es.js.map +1 -1
  16. package/dist/components/Link/utils/getUrl.es.js +9 -15
  17. package/dist/components/Link/utils/getUrl.es.js.map +1 -1
  18. package/dist/components/RichTextEditor/RichTextEditor.es.js +39 -39
  19. package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -1
  20. package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.es.js +24 -25
  21. package/dist/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.es.js.map +1 -1
  22. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.es.js +6 -6
  23. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.es.js.map +1 -1
  24. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js +25 -25
  25. package/dist/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.es.js.map +1 -1
  26. package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js +29 -33
  27. package/dist/components/RichTextEditor/plugins/ButtonPlugin/createButtonPlugin.es.js.map +1 -1
  28. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.es.js +6 -6
  29. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/submitFloatingButton.es.js.map +1 -1
  30. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.es.js +22 -23
  31. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/unwrapButton.es.js.map +1 -1
  32. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.es.js +61 -63
  33. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButton.es.js.map +1 -1
  34. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.es.js +6 -6
  35. package/dist/components/RichTextEditor/plugins/ButtonPlugin/transforms/upsertButtonText.es.js.map +1 -1
  36. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.es.js +6 -7
  37. package/dist/components/RichTextEditor/plugins/ButtonPlugin/utils/getButtonStyle.es.js.map +1 -1
  38. package/dist/components/RichTextEditor/plugins/ButtonPlugin/withButton.es.js +21 -21
  39. package/dist/components/RichTextEditor/plugins/ButtonPlugin/withButton.es.js.map +1 -1
  40. package/dist/components/RichTextEditor/plugins/ColumnBreakPlugin/ColumnBreakPlugin.es.js +15 -19
  41. package/dist/components/RichTextEditor/plugins/ColumnBreakPlugin/ColumnBreakPlugin.es.js.map +1 -1
  42. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/CustomFloatingLink.es.js +5 -5
  43. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js +13 -13
  44. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/InsertModal.es.js.map +1 -1
  45. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js +23 -23
  46. package/dist/components/RichTextEditor/plugins/LinkPlugin/FloatingLink/InsertLinkModal/useInsertModal.es.js.map +1 -1
  47. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js +7 -8
  48. package/dist/components/RichTextEditor/plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js.map +1 -1
  49. package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js +23 -27
  50. package/dist/components/RichTextEditor/plugins/LinkPlugin/index.es.js.map +1 -1
  51. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js +6 -9
  52. package/dist/components/RichTextEditor/plugins/LinkPlugin/utils/getUrl.es.js.map +1 -1
  53. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.es.js +24 -28
  54. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom1Plugin.es.js.map +1 -1
  55. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.es.js +24 -28
  56. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom2Plugin.es.js.map +1 -1
  57. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.es.js +24 -28
  58. package/dist/components/RichTextEditor/plugins/TextStylePlugins/custom3Plugin.es.js.map +1 -1
  59. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.es.js +24 -28
  60. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading1Plugin.es.js.map +1 -1
  61. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.es.js +24 -28
  62. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading2Plugin.es.js.map +1 -1
  63. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.es.js +24 -28
  64. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading3Plugin.es.js.map +1 -1
  65. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.es.js +24 -28
  66. package/dist/components/RichTextEditor/plugins/TextStylePlugins/heading4Plugin.es.js.map +1 -1
  67. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.es.js +25 -29
  68. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageCaptionPlugin.es.js.map +1 -1
  69. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.es.js +25 -29
  70. package/dist/components/RichTextEditor/plugins/TextStylePlugins/imageTitlePlugin.es.js.map +1 -1
  71. package/dist/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.es.js +26 -30
  72. package/dist/components/RichTextEditor/plugins/TextStylePlugins/paragraphPlugin.es.js.map +1 -1
  73. package/dist/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.es.js +26 -30
  74. package/dist/components/RichTextEditor/plugins/TextStylePlugins/quotePlugin.es.js.map +1 -1
  75. package/dist/helpers/customCoordinatesGetterFactory.es.js +18 -18
  76. package/dist/helpers/customCoordinatesGetterFactory.es.js.map +1 -1
  77. package/dist/hooks/useAttachments.es.js +6 -6
  78. package/dist/hooks/useAttachments.es.js.map +1 -1
  79. package/dist/index.cjs.js +7 -7
  80. package/dist/index.cjs.js.map +1 -1
  81. package/dist/index.d.ts +0 -15
  82. package/dist/index.es.js +208 -208
  83. package/dist/index.umd.js +7 -7
  84. package/dist/index.umd.js.map +1 -1
  85. package/dist/settings/background.es.js +4 -4
  86. package/dist/settings/background.es.js.map +1 -1
  87. package/dist/settings/border.es.js +17 -17
  88. package/dist/settings/border.es.js.map +1 -1
  89. package/dist/settings/borderRadius.es.js +12 -15
  90. package/dist/settings/borderRadius.es.js.map +1 -1
  91. package/dist/settings/borderRadiusExtended.es.js +25 -28
  92. package/dist/settings/borderRadiusExtended.es.js.map +1 -1
  93. package/dist/settings/gutter.es.js +17 -20
  94. package/dist/settings/gutter.es.js.map +1 -1
  95. package/dist/settings/margin.es.js +14 -14
  96. package/dist/settings/margin.es.js.map +1 -1
  97. package/dist/settings/marginExtended.es.js +29 -29
  98. package/dist/settings/marginExtended.es.js.map +1 -1
  99. package/dist/settings/padding.es.js +14 -14
  100. package/dist/settings/padding.es.js.map +1 -1
  101. package/dist/settings/paddingExtended.es.js +28 -28
  102. package/dist/settings/paddingExtended.es.js.map +1 -1
  103. package/dist/settings/securityDownloadable.es.js +8 -11
  104. package/dist/settings/securityDownloadable.es.js.map +1 -1
  105. package/dist/styles.css +1 -1
  106. package/dist/utilities/color/getReadableColor.es.js +6 -6
  107. package/dist/utilities/color/getReadableColor.es.js.map +1 -1
  108. package/dist/utilities/color/isDark.es.js +4 -4
  109. package/dist/utilities/color/isDark.es.js.map +1 -1
  110. package/package.json +16 -16
@@ -1 +1 @@
1
- {"version":3,"file":"LinkSelector.es.js","sources":["../../../../src/components/Link/LinkSelector/LinkSelector.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type Document, type DocumentPage, type DocumentSection } from '@frontify/app-bridge';\nimport { Button, Dialog, ScrollArea } from '@frontify/fondue/components';\nimport { IconLink } from '@frontify/fondue/icons';\nimport { type KeyboardEvent, type ReactElement, useEffect, useState } from 'react';\n\nimport './LinkSelector.css';\nimport { DocumentLinks } from './DocumentLinks';\n\ntype LinkSelectorProps = {\n url: string;\n onUrlChange?: (value: string) => void;\n buttonSize?: 'small' | 'medium' | 'large';\n getAllDocuments: () => Promise<Document[]>;\n getDocumentSectionsByDocumentPageId: (documentPageId: number) => Promise<DocumentSection[]>;\n getDocumentPagesByDocumentId: (documentId: number) => Promise<DocumentPage[]>;\n};\n\nexport const LinkSelector = ({\n url,\n onUrlChange,\n buttonSize = 'medium',\n getAllDocuments,\n getDocumentPagesByDocumentId,\n getDocumentSectionsByDocumentPageId,\n}: LinkSelectorProps): ReactElement => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedUrl, setSelectedUrl] = useState<string>(url);\n\n const onSelectUrl = (url: string) => {\n setSelectedUrl(url);\n };\n\n const onPressEnter = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n saveLink();\n }\n };\n\n useEffect(() => {\n if (url && !selectedUrl) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSelectedUrl(url);\n }\n }, [url, selectedUrl]);\n\n const saveLink = () => {\n onUrlChange?.(selectedUrl);\n setIsModalOpen(false);\n };\n\n const dialogProps = {\n onOpenAutoFocus: () => {},\n showUnderlay: true,\n 'data-is-underlay': true,\n minWidth: '800px',\n };\n\n return (\n // eslint-disable-next-line jsx-a11y-x/no-static-element-interactions\n <div\n onPointerDownCapture={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n onFocusCapture={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n data-test-id=\"internal-link-selector\"\n onKeyDown={onPressEnter}\n >\n <Dialog.Root modal open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Dialog.Trigger asChild>\n <Button size={buttonSize} emphasis=\"default\">\n <IconLink size=\"20\" />\n Internal link\n </Button>\n </Dialog.Trigger>\n <Dialog.Content {...dialogProps}>\n <Dialog.Header>\n <Dialog.Title>Select internal link</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body padding=\"none\">\n <ScrollArea padding=\"compact\">\n <DocumentLinks\n selectedUrl={selectedUrl}\n onSelectUrl={onSelectUrl}\n getAllDocuments={getAllDocuments}\n getDocumentPagesByDocumentId={getDocumentPagesByDocumentId}\n getDocumentSectionsByDocumentPageId={getDocumentSectionsByDocumentPageId}\n />\n </ScrollArea>\n </Dialog.Body>\n <Dialog.Footer>\n <Button size={buttonSize} emphasis=\"default\" onPress={() => setIsModalOpen(false)}>\n Cancel\n </Button>\n <Button size={buttonSize} disabled={!selectedUrl} emphasis=\"strong\" onPress={() => saveLink()}>\n Choose\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n </div>\n );\n};\n"],"names":["LinkSelector","url","onUrlChange","buttonSize","getAllDocuments","getDocumentPagesByDocumentId","getDocumentSectionsByDocumentPageId","isModalOpen","setIsModalOpen","useState","selectedUrl","setSelectedUrl","onSelectUrl","onPressEnter","event","saveLink","useEffect","dialogProps","jsx","jsxs","Dialog","Button","IconLink","ScrollArea","DocumentLinks"],"mappings":";;;;;;AAmBO,MAAMA,IAAe,CAAC;AAAA,EACzB,KAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,iBAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,qCAAAC;AACJ,MAAuC;AACnC,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAS,EAAK,GAC9C,CAACC,GAAaC,CAAc,IAAIF,EAAiBR,CAAG,GAEpDW,IAAc,CAACX,MAAgB;AACjC,IAAAU,EAAeV,CAAG;AAAA,EACtB,GAEMY,IAAe,CAACC,MAA2C;AAC7D,IAAIA,EAAM,QAAQ,YACdA,EAAM,eAAA,GACNC,EAAA;AAAA,EAER;AAEA,EAAAC,EAAU,MAAM;AACZ,IAAIf,KAAO,CAACS,KAERC,EAAeV,CAAG;AAAA,EAE1B,GAAG,CAACA,GAAKS,CAAW,CAAC;AAErB,QAAMK,IAAW,MAAM;AACnB,IAAAb,KAAA,QAAAA,EAAcQ,IACdF,EAAe,EAAK;AAAA,EACxB,GAEMS,IAAc;AAAA,IAChB,iBAAiB,MAAM;AAAA,IAAC;AAAA,IACxB,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,EAAA;AAGd;AAAA;AAAA,IAEI,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,sBAAsB,CAACJ,MAAU;AAC7B,UAAAA,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,QACV;AAAA,QACA,gBAAgB,CAACA,MAAU;AACvB,UAAAA,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,QACV;AAAA,QACA,gBAAa;AAAA,QACb,WAAWD;AAAA,QAEX,UAAA,gBAAAM,EAACC,EAAO,MAAP,EAAY,OAAK,IAAC,MAAMb,GAAa,cAAcC,GAChD,UAAA;AAAA,UAAA,gBAAAU,EAACE,EAAO,SAAP,EAAe,SAAO,IACnB,4BAACC,GAAA,EAAO,MAAMlB,GAAY,UAAS,WAC/B,UAAA;AAAA,YAAA,gBAAAe,EAACI,GAAA,EAAS,MAAK,KAAA,CAAK;AAAA,YAAE;AAAA,UAAA,EAAA,CAE1B,EAAA,CACJ;AAAA,UACA,gBAAAH,EAACC,EAAO,SAAP,EAAgB,GAAGH,GAChB,UAAA;AAAA,YAAA,gBAAAC,EAACE,EAAO,QAAP,EACG,UAAA,gBAAAF,EAACE,EAAO,OAAP,EAAa,kCAAoB,EAAA,CACtC;AAAA,YACA,gBAAAF,EAACE,EAAO,MAAP,EAAY,SAAQ,QACjB,UAAA,gBAAAF,EAACK,GAAA,EAAW,SAAQ,WAChB,UAAA,gBAAAL;AAAA,cAACM;AAAA,cAAA;AAAA,gBACG,aAAAd;AAAA,gBACA,aAAAE;AAAA,gBACA,iBAAAR;AAAA,gBACA,8BAAAC;AAAA,gBACA,qCAAAC;AAAA,cAAA;AAAA,YAAA,GAER,EAAA,CACJ;AAAA,YACA,gBAAAa,EAACC,EAAO,QAAP,EACG,UAAA;AAAA,cAAA,gBAAAF,EAACG,GAAA,EAAO,MAAMlB,GAAY,UAAS,WAAU,SAAS,MAAMK,EAAe,EAAK,GAAG,UAAA,SAAA,CAEnF;AAAA,cACA,gBAAAU,EAACG,GAAA,EAAO,MAAMlB,GAAY,UAAU,CAACO,GAAa,UAAS,UAAS,SAAS,MAAMK,EAAA,GAAY,UAAA,SAAA,CAE/F;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA;AAGZ;"}
1
+ {"version":3,"file":"LinkSelector.es.js","sources":["../../../../src/components/Link/LinkSelector/LinkSelector.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type Document, type DocumentPage, type DocumentSection } from '@frontify/app-bridge';\nimport { Button, Dialog, ScrollArea } from '@frontify/fondue/components';\nimport { IconLink } from '@frontify/fondue/icons';\nimport { type KeyboardEvent, type ReactElement, useEffect, useState } from 'react';\n\nimport './LinkSelector.css';\nimport { DocumentLinks } from './DocumentLinks';\n\ntype LinkSelectorProps = {\n url: string;\n onUrlChange?: (value: string) => void;\n buttonSize?: 'small' | 'medium' | 'large';\n getAllDocuments: () => Promise<Document[]>;\n getDocumentSectionsByDocumentPageId: (documentPageId: number) => Promise<DocumentSection[]>;\n getDocumentPagesByDocumentId: (documentId: number) => Promise<DocumentPage[]>;\n};\n\nexport const LinkSelector = ({\n url,\n onUrlChange,\n buttonSize = 'medium',\n getAllDocuments,\n getDocumentPagesByDocumentId,\n getDocumentSectionsByDocumentPageId,\n}: LinkSelectorProps): ReactElement => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [selectedUrl, setSelectedUrl] = useState<string>(url);\n\n const onSelectUrl = (url: string) => {\n setSelectedUrl(url);\n };\n\n const onPressEnter = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n saveLink();\n }\n };\n\n useEffect(() => {\n if (url && !selectedUrl) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSelectedUrl(url);\n }\n }, [url, selectedUrl]);\n\n const saveLink = () => {\n onUrlChange?.(selectedUrl);\n setIsModalOpen(false);\n };\n\n const dialogProps = {\n onOpenAutoFocus: () => {},\n showUnderlay: true,\n 'data-is-underlay': true,\n minWidth: '800px',\n };\n\n return (\n // eslint-disable-next-line jsx-a11y-x/no-static-element-interactions\n <div\n onPointerDownCapture={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n onFocusCapture={(event) => {\n event.stopPropagation();\n event.preventDefault();\n }}\n data-test-id=\"internal-link-selector\"\n onKeyDown={onPressEnter}\n >\n <Dialog.Root modal open={isModalOpen} onOpenChange={setIsModalOpen}>\n <Dialog.Trigger asChild>\n <Button size={buttonSize} emphasis=\"default\">\n <IconLink size=\"20\" />\n Internal link\n </Button>\n </Dialog.Trigger>\n <Dialog.Content {...dialogProps}>\n <Dialog.Header>\n <Dialog.Title>Select internal link</Dialog.Title>\n </Dialog.Header>\n <Dialog.Body padding=\"none\">\n <ScrollArea padding=\"compact\">\n <DocumentLinks\n selectedUrl={selectedUrl}\n onSelectUrl={onSelectUrl}\n getAllDocuments={getAllDocuments}\n getDocumentPagesByDocumentId={getDocumentPagesByDocumentId}\n getDocumentSectionsByDocumentPageId={getDocumentSectionsByDocumentPageId}\n />\n </ScrollArea>\n </Dialog.Body>\n <Dialog.Footer>\n <Button size={buttonSize} emphasis=\"default\" onPress={() => setIsModalOpen(false)}>\n Cancel\n </Button>\n <Button size={buttonSize} disabled={!selectedUrl} emphasis=\"strong\" onPress={() => saveLink()}>\n Choose\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n </div>\n );\n};\n"],"names":["LinkSelector","url","onUrlChange","buttonSize","getAllDocuments","getDocumentPagesByDocumentId","getDocumentSectionsByDocumentPageId","isModalOpen","setIsModalOpen","useState","selectedUrl","setSelectedUrl","onSelectUrl","onPressEnter","event","saveLink","useEffect","dialogProps","jsx","jsxs","Dialog","Button","IconLink","ScrollArea","DocumentLinks"],"mappings":";;;;;;AAmBO,MAAMA,IAAe,CAAC;AAAA,EACzB,KAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,iBAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,qCAAAC;AACJ,MAAuC;AACnC,QAAM,CAACC,GAAaC,CAAc,IAAIC,EAAS,EAAK,GAC9C,CAACC,GAAaC,CAAc,IAAIF,EAAiBR,CAAG,GAEpDW,IAAc,CAACX,MAAgB;AACjC,IAAAU,EAAeV,CAAG;AAAA,EACtB,GAEMY,IAAe,CAACC,MAA2C;AAC7D,IAAIA,EAAM,QAAQ,YACdA,EAAM,eAAA,GACNC,EAAA;AAAA,EAER;AAEA,EAAAC,EAAU,MAAM;AACZ,IAAIf,KAAO,CAACS,KAERC,EAAeV,CAAG;AAAA,EAE1B,GAAG,CAACA,GAAKS,CAAW,CAAC;AAErB,QAAMK,IAAW,MAAM;AACnB,IAAAb,IAAcQ,CAAW,GACzBF,EAAe,EAAK;AAAA,EACxB,GAEMS,IAAc;AAAA,IAChB,iBAAiB,MAAM;AAAA,IAAC;AAAA,IACxB,cAAc;AAAA,IACd,oBAAoB;AAAA,IACpB,UAAU;AAAA,EAAA;AAGd;AAAA;AAAA,IAEI,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,sBAAsB,CAACJ,MAAU;AAC7B,UAAAA,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,QACV;AAAA,QACA,gBAAgB,CAACA,MAAU;AACvB,UAAAA,EAAM,gBAAA,GACNA,EAAM,eAAA;AAAA,QACV;AAAA,QACA,gBAAa;AAAA,QACb,WAAWD;AAAA,QAEX,UAAA,gBAAAM,EAACC,EAAO,MAAP,EAAY,OAAK,IAAC,MAAMb,GAAa,cAAcC,GAChD,UAAA;AAAA,UAAA,gBAAAU,EAACE,EAAO,SAAP,EAAe,SAAO,IACnB,4BAACC,GAAA,EAAO,MAAMlB,GAAY,UAAS,WAC/B,UAAA;AAAA,YAAA,gBAAAe,EAACI,GAAA,EAAS,MAAK,KAAA,CAAK;AAAA,YAAE;AAAA,UAAA,EAAA,CAE1B,EAAA,CACJ;AAAA,UACA,gBAAAH,EAACC,EAAO,SAAP,EAAgB,GAAGH,GAChB,UAAA;AAAA,YAAA,gBAAAC,EAACE,EAAO,QAAP,EACG,UAAA,gBAAAF,EAACE,EAAO,OAAP,EAAa,kCAAoB,EAAA,CACtC;AAAA,YACA,gBAAAF,EAACE,EAAO,MAAP,EAAY,SAAQ,QACjB,UAAA,gBAAAF,EAACK,GAAA,EAAW,SAAQ,WAChB,UAAA,gBAAAL;AAAA,cAACM;AAAA,cAAA;AAAA,gBACG,aAAAd;AAAA,gBACA,aAAAE;AAAA,gBACA,iBAAAR;AAAA,gBACA,8BAAAC;AAAA,gBACA,qCAAAC;AAAA,cAAA;AAAA,YAAA,GAER,EAAA,CACJ;AAAA,YACA,gBAAAa,EAACC,EAAO,QAAP,EACG,UAAA;AAAA,cAAA,gBAAAF,EAACG,GAAA,EAAO,MAAMlB,GAAY,UAAS,WAAU,SAAS,MAAMK,EAAe,EAAK,GAAG,UAAA,SAAA,CAEnF;AAAA,cACA,gBAAAU,EAACG,GAAA,EAAO,MAAMlB,GAAY,UAAU,CAACO,GAAa,UAAS,UAAS,SAAS,MAAMK,EAAA,GAAY,UAAA,SAAA,CAE/F;AAAA,YAAA,EAAA,CACJ;AAAA,UAAA,EAAA,CACJ;AAAA,QAAA,EAAA,CACJ;AAAA,MAAA;AAAA,IAAA;AAAA;AAGZ;"}
@@ -1,8 +1,5 @@
1
- const l = (e) => e.filter((i) => {
2
- var t;
3
- return !!((t = i.title) != null && t.trim());
4
- });
1
+ const i = (t) => t.filter((e) => !!e.title?.trim());
5
2
  export {
6
- l as filterDocumentSectionsWithUnreadableTitles
3
+ i as filterDocumentSectionsWithUnreadableTitles
7
4
  };
8
5
  //# sourceMappingURL=filterDocumentSectionsWithUnreadableTitles.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterDocumentSectionsWithUnreadableTitles.es.js","sources":["../../../../src/components/Link/helpers/filterDocumentSectionsWithUnreadableTitles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type DocumentSection } from '@frontify/app-bridge';\n\nimport { type DocumentSectionWithTitle } from '../types';\n\nexport const filterDocumentSectionsWithUnreadableTitles = (sections: DocumentSection[]) =>\n sections.filter((section) => !!section.title?.trim()) as DocumentSectionWithTitle[];\n"],"names":["filterDocumentSectionsWithUnreadableTitles","sections","section","_a"],"mappings":"AAMO,MAAMA,IAA6C,CAACC,MACvDA,EAAS,OAAO,CAACC,MAAA;AADd,MAAAC;AAC0B,UAAC,GAACA,IAAAD,EAAQ,UAAR,QAAAC,EAAe;AAAA,CAAM;"}
1
+ {"version":3,"file":"filterDocumentSectionsWithUnreadableTitles.es.js","sources":["../../../../src/components/Link/helpers/filterDocumentSectionsWithUnreadableTitles.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type DocumentSection } from '@frontify/app-bridge';\n\nimport { type DocumentSectionWithTitle } from '../types';\n\nexport const filterDocumentSectionsWithUnreadableTitles = (sections: DocumentSection[]) =>\n sections.filter((section) => !!section.title?.trim()) as DocumentSectionWithTitle[];\n"],"names":["filterDocumentSectionsWithUnreadableTitles","sections","section"],"mappings":"AAMO,MAAMA,IAA6C,CAACC,MACvDA,EAAS,OAAO,CAACC,MAAY,CAAC,CAACA,EAAQ,OAAO,KAAA,CAAM;"}
@@ -1,18 +1,12 @@
1
- import { getAboveNode as c, ELEMENT_LINK as s } from "@frontify/fondue/rte";
2
- const n = (r, e) => {
3
- const t = c(r, { match: { type: s } });
4
- return Array.isArray(t) ? e(t[0]) : "";
5
- }, L = (r) => n(r, (e) => {
6
- var t, o;
7
- return ((o = (t = e.chosenLink) == null ? void 0 : t.searchResult) == null ? void 0 : o.link) || "";
8
- }), l = (r) => n(r, (e) => e.url || ""), i = (r) => {
9
- var e, t;
10
- return r.url || ((t = (e = r.chosenLink) == null ? void 0 : e.searchResult) == null ? void 0 : t.link) || "";
11
- }, g = (r) => n(r, i);
1
+ import { getAboveNode as o, ELEMENT_LINK as c } from "@frontify/fondue/rte";
2
+ const t = (r, e) => {
3
+ const n = o(r, { match: { type: c } });
4
+ return Array.isArray(n) ? e(n[0]) : "";
5
+ }, u = (r) => t(r, (e) => e.chosenLink?.searchResult?.link || ""), L = (r) => t(r, (e) => e.url || ""), s = (r) => r.url || r.chosenLink?.searchResult?.link || "", l = (r) => t(r, s);
12
6
  export {
13
- L as getLegacyUrl,
14
- g as getLinkFromEditor,
15
- l as getUrl,
16
- i as getUrlFromLinkOrLegacyLink
7
+ u as getLegacyUrl,
8
+ l as getLinkFromEditor,
9
+ L as getUrl,
10
+ s as getUrlFromLinkOrLegacyLink
17
11
  };
18
12
  //# sourceMappingURL=getUrl.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getUrl.es.js","sources":["../../../../src/components/Link/utils/getUrl.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ELEMENT_LINK, type PlateEditor, getAboveNode } from '@frontify/fondue/rte';\n\nimport { type TLinkElement } from '../../RichTextEditor/plugins/LinkPlugin/types';\n\nconst getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => {\n const linkNode = getAboveNode<TLinkElement>(editor, { match: { type: ELEMENT_LINK } });\n\n if (!Array.isArray(linkNode)) {\n return '';\n }\n\n return cb(linkNode[0]);\n};\n\nexport const getLegacyUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.chosenLink?.searchResult?.link || '');\n};\n\nexport const getUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.url || '');\n};\n\nexport const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => {\n return link.url || link.chosenLink?.searchResult?.link || '';\n};\n\nexport const getLinkFromEditor = (editor: PlateEditor) => {\n return getLinkNode(editor, getUrlFromLinkOrLegacyLink);\n};\n"],"names":["getLinkNode","editor","cb","linkNode","getAboveNode","ELEMENT_LINK","getLegacyUrl","link","_b","_a","getUrl","getUrlFromLinkOrLegacyLink","getLinkFromEditor"],"mappings":";AAMA,MAAMA,IAAc,CAACC,GAAqBC,MAA+C;AACrF,QAAMC,IAAWC,EAA2BH,GAAQ,EAAE,OAAO,EAAE,MAAMI,EAAA,GAAgB;AAErF,SAAK,MAAM,QAAQF,CAAQ,IAIpBD,EAAGC,EAAS,CAAC,CAAC,IAHV;AAIf,GAEaG,IAAe,CAACL,MAClBD,EAAYC,GAAQ,CAACM,MAAA;;AAAS,WAAAC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAAA,CAAE,GAGrEE,IAAS,CAACT,MACZD,EAAYC,GAAQ,CAACM,MAASA,EAAK,OAAO,EAAE,GAG1CI,IAA6B,CAACJ,MAA+B;;AACtE,SAAOA,EAAK,SAAOC,KAAAC,IAAAF,EAAK,eAAL,gBAAAE,EAAiB,iBAAjB,gBAAAD,EAA+B,SAAQ;AAC9D,GAEaI,IAAoB,CAACX,MACvBD,EAAYC,GAAQU,CAA0B;"}
1
+ {"version":3,"file":"getUrl.es.js","sources":["../../../../src/components/Link/utils/getUrl.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ELEMENT_LINK, type PlateEditor, getAboveNode } from '@frontify/fondue/rte';\n\nimport { type TLinkElement } from '../../RichTextEditor/plugins/LinkPlugin/types';\n\nconst getLinkNode = (editor: PlateEditor, cb: (link: TLinkElement) => string): string => {\n const linkNode = getAboveNode<TLinkElement>(editor, { match: { type: ELEMENT_LINK } });\n\n if (!Array.isArray(linkNode)) {\n return '';\n }\n\n return cb(linkNode[0]);\n};\n\nexport const getLegacyUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.chosenLink?.searchResult?.link || '');\n};\n\nexport const getUrl = (editor: PlateEditor) => {\n return getLinkNode(editor, (link) => link.url || '');\n};\n\nexport const getUrlFromLinkOrLegacyLink = (link: TLinkElement): string => {\n return link.url || link.chosenLink?.searchResult?.link || '';\n};\n\nexport const getLinkFromEditor = (editor: PlateEditor) => {\n return getLinkNode(editor, getUrlFromLinkOrLegacyLink);\n};\n"],"names":["getLinkNode","editor","cb","linkNode","getAboveNode","ELEMENT_LINK","getLegacyUrl","link","getUrl","getUrlFromLinkOrLegacyLink","getLinkFromEditor"],"mappings":";AAMA,MAAMA,IAAc,CAACC,GAAqBC,MAA+C;AACrF,QAAMC,IAAWC,EAA2BH,GAAQ,EAAE,OAAO,EAAE,MAAMI,EAAA,GAAgB;AAErF,SAAK,MAAM,QAAQF,CAAQ,IAIpBD,EAAGC,EAAS,CAAC,CAAC,IAHV;AAIf,GAEaG,IAAe,CAACL,MAClBD,EAAYC,GAAQ,CAACM,MAASA,EAAK,YAAY,cAAc,QAAQ,EAAE,GAGrEC,IAAS,CAACP,MACZD,EAAYC,GAAQ,CAACM,MAASA,EAAK,OAAO,EAAE,GAG1CE,IAA6B,CAACF,MAChCA,EAAK,OAAOA,EAAK,YAAY,cAAc,QAAQ,IAGjDG,IAAoB,CAACT,MACvBD,EAAYC,GAAQQ,CAA0B;"}
@@ -1,67 +1,67 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
- import { RichTextEditor as R } from "@frontify/fondue/rte";
3
- import { useRef as V, useState as h, useCallback as c, useEffect as p, memo as v, useId as I } from "react";
4
- import { useIsInViewport as P } from "../../hooks/useIsInViewport.es.js";
5
- import { SerializedText as C } from "./SerializedText.es.js";
6
- import { getResponsiveColumnClasses as L } from "./plugins/ColumnBreakPlugin/helpers.es.js";
7
- import { floatingButtonSelectors as S, floatingButtonActions as y } from "./plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.es.js";
8
- const H = (r) => {
9
- S.isOpen(r) && y.reset();
10
- }, E = v(
2
+ import { RichTextEditor as C } from "@frontify/fondue/rte";
3
+ import { useRef as R, useState as m, useCallback as c, useEffect as p, memo as V, useId as T } from "react";
4
+ import { useIsInViewport as v } from "../../hooks/useIsInViewport.es.js";
5
+ import { SerializedText as I } from "./SerializedText.es.js";
6
+ import { getResponsiveColumnClasses as P } from "./plugins/ColumnBreakPlugin/helpers.es.js";
7
+ import { floatingButtonSelectors as L, floatingButtonActions as S } from "./plugins/ButtonPlugin/components/FloatingButton/floatingButtonStore.es.js";
8
+ const y = (o) => {
9
+ L.isOpen(o) && S.reset();
10
+ }, g = V(
11
11
  ({
12
- isEnabled: r,
12
+ isEnabled: o,
13
13
  value: e,
14
14
  columns: l,
15
- gap: n,
15
+ gap: r,
16
16
  placeholder: t,
17
- plugins: s,
18
- onTextChange: o,
17
+ plugins: i,
18
+ onTextChange: s,
19
19
  showSerializedText: d
20
20
  }) => {
21
- const w = L(l), [f, u] = h(!1), g = I(), b = c(
22
- (i) => {
23
- i !== e && (o == null || o(i)), u(!1);
21
+ const E = P(l), [f, h] = m(!1), w = T(), x = c(
22
+ (n) => {
23
+ n !== e && s?.(n), h(!1);
24
24
  },
25
- [o, e]
26
- ), x = c(() => u(!0), []);
25
+ [s, e]
26
+ ), b = c(() => h(!0), []);
27
27
  return p(() => {
28
- const i = (m) => {
29
- m.preventDefault(), m.returnValue = "Unprocessed changes";
28
+ const n = (u) => {
29
+ u.preventDefault(), u.returnValue = "Unprocessed changes";
30
30
  };
31
- return f && window.addEventListener("beforeunload", i), () => window.removeEventListener("beforeunload", i);
32
- }, [f]), r ? /* @__PURE__ */ a(
33
- R,
31
+ return f && window.addEventListener("beforeunload", n), () => window.removeEventListener("beforeunload", n);
32
+ }, [f]), o ? /* @__PURE__ */ a(
33
+ C,
34
34
  {
35
- id: g,
35
+ id: w,
36
36
  value: e,
37
37
  border: !1,
38
38
  placeholder: t,
39
- plugins: s,
40
- onValueChanged: x,
41
- onTextChange: b,
42
- hideExternalFloatingModals: H,
39
+ plugins: i,
40
+ onValueChanged: b,
41
+ onTextChange: x,
42
+ hideExternalFloatingModals: y,
43
43
  placeholderOpacity: "high"
44
44
  }
45
45
  ) : /* @__PURE__ */ a(
46
- C,
46
+ I,
47
47
  {
48
48
  value: e,
49
- gap: n,
50
- customClass: w,
49
+ gap: r,
50
+ customClass: E,
51
51
  show: d,
52
- plugins: s
52
+ plugins: i
53
53
  }
54
54
  );
55
55
  }
56
56
  );
57
- E.displayName = "InternalRichTextEditor";
58
- const j = (r) => {
59
- const e = V(null), [l, n] = h(!1), { isEditing: t, ...s } = r, o = c((d) => {
60
- d && n(!0);
57
+ g.displayName = "InternalRichTextEditor";
58
+ const j = (o) => {
59
+ const e = R(null), [l, r] = m(!1), { isEditing: t, ...i } = o, s = c((d) => {
60
+ d && r(!0);
61
61
  }, []);
62
- return P({ ref: e, disabled: !t, onChange: o }), p(() => {
63
- t || n(!1);
64
- }, [t]), /* @__PURE__ */ a("div", { "data-test-id": "rich-text-editor-container", className: "tw-block tw-w-full tw-@container", ref: e, children: /* @__PURE__ */ a(E, { ...s, isEnabled: t && l }) });
62
+ return v({ ref: e, disabled: !t, onChange: s }), p(() => {
63
+ t || r(!1);
64
+ }, [t]), /* @__PURE__ */ a("div", { "data-test-id": "rich-text-editor-container", className: "tw-block tw-w-full tw-@container", ref: e, children: /* @__PURE__ */ a(g, { ...i, isEnabled: t && l }) });
65
65
  };
66
66
  export {
67
67
  j as RichTextEditor
@@ -1 +1 @@
1
- {"version":3,"file":"RichTextEditor.es.js","sources":["../../../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { RichTextEditor as FondueRichTextEditor } from '@frontify/fondue/rte';\nimport { memo, useCallback, useEffect, useId, useRef, useState } from 'react';\n\nimport { useIsInViewport } from '../../hooks/useIsInViewport';\n\nimport { SerializedText } from './SerializedText';\nimport { floatingButtonActions, floatingButtonSelectors } from './plugins/ButtonPlugin/components';\nimport { getResponsiveColumnClasses } from './plugins/ColumnBreakPlugin/helpers';\nimport { type RichTextEditorProps } from './types';\n\nconst handleHideExternalFloatingModals = (editorId: string) => {\n if (floatingButtonSelectors.isOpen(editorId)) {\n floatingButtonActions.reset();\n }\n};\n\nconst InternalRichTextEditor = memo(\n ({\n isEnabled,\n value,\n columns,\n gap,\n placeholder,\n plugins,\n onTextChange,\n showSerializedText,\n }: Omit<RichTextEditorProps, 'isEditing'> & { isEnabled: boolean }) => {\n const customClass = getResponsiveColumnClasses(columns);\n const [shouldPreventPageLeave, setShouldPreventPageLeave] = useState(false);\n const editorId = useId();\n\n const handleTextChange = useCallback(\n (newContent: string) => {\n if (newContent !== value) {\n onTextChange?.(newContent);\n }\n setShouldPreventPageLeave(false);\n },\n [onTextChange, value],\n );\n\n const handleValueChange = useCallback(() => setShouldPreventPageLeave(true), []);\n\n useEffect(() => {\n const unloadHandler = (event: BeforeUnloadEvent) => {\n event.preventDefault();\n event.returnValue = 'Unprocessed changes';\n };\n\n if (shouldPreventPageLeave) {\n window.addEventListener('beforeunload', unloadHandler);\n }\n\n return () => window.removeEventListener('beforeunload', unloadHandler);\n }, [shouldPreventPageLeave]);\n\n if (isEnabled) {\n return (\n <FondueRichTextEditor\n id={editorId}\n value={value}\n border={false}\n placeholder={placeholder}\n plugins={plugins}\n onValueChanged={handleValueChange}\n onTextChange={handleTextChange}\n hideExternalFloatingModals={handleHideExternalFloatingModals}\n placeholderOpacity=\"high\"\n />\n );\n }\n return (\n <SerializedText\n value={value}\n gap={gap}\n customClass={customClass}\n show={showSerializedText}\n plugins={plugins}\n />\n );\n },\n);\nInternalRichTextEditor.displayName = 'InternalRichTextEditor';\n\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const [hasEnteredViewport, setHasEnteredViewport] = useState(false);\n\n const { isEditing, ...internalRteProps } = props;\n\n const onViewportVisibilityChange = useCallback((isInViewport: boolean) => {\n if (isInViewport) {\n setHasEnteredViewport(true);\n }\n }, []);\n\n useIsInViewport({ ref, disabled: !isEditing, onChange: onViewportVisibilityChange });\n\n useEffect(() => {\n if (!isEditing) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setHasEnteredViewport(false);\n }\n }, [isEditing]);\n\n return (\n <div data-test-id=\"rich-text-editor-container\" className=\"tw-block tw-w-full tw-@container\" ref={ref}>\n <InternalRichTextEditor {...internalRteProps} isEnabled={isEditing && hasEnteredViewport} />\n </div>\n );\n};\n"],"names":["handleHideExternalFloatingModals","editorId","floatingButtonSelectors","floatingButtonActions","InternalRichTextEditor","memo","isEnabled","value","columns","gap","placeholder","plugins","onTextChange","showSerializedText","customClass","getResponsiveColumnClasses","shouldPreventPageLeave","setShouldPreventPageLeave","useState","useId","handleTextChange","useCallback","newContent","handleValueChange","useEffect","unloadHandler","event","jsx","FondueRichTextEditor","SerializedText","RichTextEditor","props","ref","useRef","hasEnteredViewport","setHasEnteredViewport","isEditing","internalRteProps","onViewportVisibilityChange","isInViewport","useIsInViewport"],"mappings":";;;;;;;AAYA,MAAMA,IAAmC,CAACC,MAAqB;AAC3D,EAAIC,EAAwB,OAAOD,CAAQ,KACvCE,EAAsB,MAAA;AAE9B,GAEMC,IAAyBC;AAAA,EAC3B,CAAC;AAAA,IACG,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,KAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,cAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,MACmE;AACnE,UAAMC,IAAcC,EAA2BP,CAAO,GAChD,CAACQ,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GACpEjB,IAAWkB,EAAA,GAEXC,IAAmBC;AAAA,MACrB,CAACC,MAAuB;AACpB,QAAIA,MAAef,MACfK,KAAA,QAAAA,EAAeU,KAEnBL,EAA0B,EAAK;AAAA,MACnC;AAAA,MACA,CAACL,GAAcL,CAAK;AAAA,IAAA,GAGlBgB,IAAoBF,EAAY,MAAMJ,EAA0B,EAAI,GAAG,CAAA,CAAE;AAe/E,WAbAO,EAAU,MAAM;AACZ,YAAMC,IAAgB,CAACC,MAA6B;AAChD,QAAAA,EAAM,eAAA,GACNA,EAAM,cAAc;AAAA,MACxB;AAEA,aAAIV,KACA,OAAO,iBAAiB,gBAAgBS,CAAa,GAGlD,MAAM,OAAO,oBAAoB,gBAAgBA,CAAa;AAAA,IACzE,GAAG,CAACT,CAAsB,CAAC,GAEvBV,IAEI,gBAAAqB;AAAA,MAACC;AAAAA,MAAA;AAAA,QACG,IAAI3B;AAAA,QACJ,OAAAM;AAAA,QACA,QAAQ;AAAA,QACR,aAAAG;AAAA,QACA,SAAAC;AAAA,QACA,gBAAgBY;AAAA,QAChB,cAAcH;AAAA,QACd,4BAA4BpB;AAAA,QAC5B,oBAAmB;AAAA,MAAA;AAAA,IAAA,IAK3B,gBAAA2B;AAAA,MAACE;AAAA,MAAA;AAAA,QACG,OAAAtB;AAAA,QACA,KAAAE;AAAA,QACA,aAAAK;AAAA,QACA,MAAMD;AAAA,QACN,SAAAF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGZ;AACJ;AACAP,EAAuB,cAAc;AAE9B,MAAM0B,IAAiB,CAACC,MAA+B;AAC1D,QAAMC,IAAMC,EAAuB,IAAI,GACjC,CAACC,GAAoBC,CAAqB,IAAIjB,EAAS,EAAK,GAE5D,EAAE,WAAAkB,GAAW,GAAGC,EAAA,IAAqBN,GAErCO,IAA6BjB,EAAY,CAACkB,MAA0B;AACtE,IAAIA,KACAJ,EAAsB,EAAI;AAAA,EAElC,GAAG,CAAA,CAAE;AAEL,SAAAK,EAAgB,EAAE,KAAAR,GAAK,UAAU,CAACI,GAAW,UAAUE,GAA4B,GAEnFd,EAAU,MAAM;AACZ,IAAKY,KAEDD,EAAsB,EAAK;AAAA,EAEnC,GAAG,CAACC,CAAS,CAAC,GAGV,gBAAAT,EAAC,OAAA,EAAI,gBAAa,8BAA6B,WAAU,oCAAmC,KAAAK,GACxF,UAAA,gBAAAL,EAACvB,GAAA,EAAwB,GAAGiC,GAAkB,WAAWD,KAAaF,GAAoB,GAC9F;AAER;"}
1
+ {"version":3,"file":"RichTextEditor.es.js","sources":["../../../src/components/RichTextEditor/RichTextEditor.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { RichTextEditor as FondueRichTextEditor } from '@frontify/fondue/rte';\nimport { memo, useCallback, useEffect, useId, useRef, useState } from 'react';\n\nimport { useIsInViewport } from '../../hooks/useIsInViewport';\n\nimport { SerializedText } from './SerializedText';\nimport { floatingButtonActions, floatingButtonSelectors } from './plugins/ButtonPlugin/components';\nimport { getResponsiveColumnClasses } from './plugins/ColumnBreakPlugin/helpers';\nimport { type RichTextEditorProps } from './types';\n\nconst handleHideExternalFloatingModals = (editorId: string) => {\n if (floatingButtonSelectors.isOpen(editorId)) {\n floatingButtonActions.reset();\n }\n};\n\nconst InternalRichTextEditor = memo(\n ({\n isEnabled,\n value,\n columns,\n gap,\n placeholder,\n plugins,\n onTextChange,\n showSerializedText,\n }: Omit<RichTextEditorProps, 'isEditing'> & { isEnabled: boolean }) => {\n const customClass = getResponsiveColumnClasses(columns);\n const [shouldPreventPageLeave, setShouldPreventPageLeave] = useState(false);\n const editorId = useId();\n\n const handleTextChange = useCallback(\n (newContent: string) => {\n if (newContent !== value) {\n onTextChange?.(newContent);\n }\n setShouldPreventPageLeave(false);\n },\n [onTextChange, value],\n );\n\n const handleValueChange = useCallback(() => setShouldPreventPageLeave(true), []);\n\n useEffect(() => {\n const unloadHandler = (event: BeforeUnloadEvent) => {\n event.preventDefault();\n event.returnValue = 'Unprocessed changes';\n };\n\n if (shouldPreventPageLeave) {\n window.addEventListener('beforeunload', unloadHandler);\n }\n\n return () => window.removeEventListener('beforeunload', unloadHandler);\n }, [shouldPreventPageLeave]);\n\n if (isEnabled) {\n return (\n <FondueRichTextEditor\n id={editorId}\n value={value}\n border={false}\n placeholder={placeholder}\n plugins={plugins}\n onValueChanged={handleValueChange}\n onTextChange={handleTextChange}\n hideExternalFloatingModals={handleHideExternalFloatingModals}\n placeholderOpacity=\"high\"\n />\n );\n }\n return (\n <SerializedText\n value={value}\n gap={gap}\n customClass={customClass}\n show={showSerializedText}\n plugins={plugins}\n />\n );\n },\n);\nInternalRichTextEditor.displayName = 'InternalRichTextEditor';\n\nexport const RichTextEditor = (props: RichTextEditorProps) => {\n const ref = useRef<HTMLDivElement>(null);\n const [hasEnteredViewport, setHasEnteredViewport] = useState(false);\n\n const { isEditing, ...internalRteProps } = props;\n\n const onViewportVisibilityChange = useCallback((isInViewport: boolean) => {\n if (isInViewport) {\n setHasEnteredViewport(true);\n }\n }, []);\n\n useIsInViewport({ ref, disabled: !isEditing, onChange: onViewportVisibilityChange });\n\n useEffect(() => {\n if (!isEditing) {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setHasEnteredViewport(false);\n }\n }, [isEditing]);\n\n return (\n <div data-test-id=\"rich-text-editor-container\" className=\"tw-block tw-w-full tw-@container\" ref={ref}>\n <InternalRichTextEditor {...internalRteProps} isEnabled={isEditing && hasEnteredViewport} />\n </div>\n );\n};\n"],"names":["handleHideExternalFloatingModals","editorId","floatingButtonSelectors","floatingButtonActions","InternalRichTextEditor","memo","isEnabled","value","columns","gap","placeholder","plugins","onTextChange","showSerializedText","customClass","getResponsiveColumnClasses","shouldPreventPageLeave","setShouldPreventPageLeave","useState","useId","handleTextChange","useCallback","newContent","handleValueChange","useEffect","unloadHandler","event","jsx","FondueRichTextEditor","SerializedText","RichTextEditor","props","ref","useRef","hasEnteredViewport","setHasEnteredViewport","isEditing","internalRteProps","onViewportVisibilityChange","isInViewport","useIsInViewport"],"mappings":";;;;;;;AAYA,MAAMA,IAAmC,CAACC,MAAqB;AAC3D,EAAIC,EAAwB,OAAOD,CAAQ,KACvCE,EAAsB,MAAA;AAE9B,GAEMC,IAAyBC;AAAA,EAC3B,CAAC;AAAA,IACG,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,SAAAC;AAAA,IACA,KAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,cAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,MACmE;AACnE,UAAMC,IAAcC,EAA2BP,CAAO,GAChD,CAACQ,GAAwBC,CAAyB,IAAIC,EAAS,EAAK,GACpEjB,IAAWkB,EAAA,GAEXC,IAAmBC;AAAA,MACrB,CAACC,MAAuB;AACpB,QAAIA,MAAef,KACfK,IAAeU,CAAU,GAE7BL,EAA0B,EAAK;AAAA,MACnC;AAAA,MACA,CAACL,GAAcL,CAAK;AAAA,IAAA,GAGlBgB,IAAoBF,EAAY,MAAMJ,EAA0B,EAAI,GAAG,CAAA,CAAE;AAe/E,WAbAO,EAAU,MAAM;AACZ,YAAMC,IAAgB,CAACC,MAA6B;AAChD,QAAAA,EAAM,eAAA,GACNA,EAAM,cAAc;AAAA,MACxB;AAEA,aAAIV,KACA,OAAO,iBAAiB,gBAAgBS,CAAa,GAGlD,MAAM,OAAO,oBAAoB,gBAAgBA,CAAa;AAAA,IACzE,GAAG,CAACT,CAAsB,CAAC,GAEvBV,IAEI,gBAAAqB;AAAA,MAACC;AAAAA,MAAA;AAAA,QACG,IAAI3B;AAAA,QACJ,OAAAM;AAAA,QACA,QAAQ;AAAA,QACR,aAAAG;AAAA,QACA,SAAAC;AAAA,QACA,gBAAgBY;AAAA,QAChB,cAAcH;AAAA,QACd,4BAA4BpB;AAAA,QAC5B,oBAAmB;AAAA,MAAA;AAAA,IAAA,IAK3B,gBAAA2B;AAAA,MAACE;AAAA,MAAA;AAAA,QACG,OAAAtB;AAAA,QACA,KAAAE;AAAA,QACA,aAAAK;AAAA,QACA,MAAMD;AAAA,QACN,SAAAF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGZ;AACJ;AACAP,EAAuB,cAAc;AAE9B,MAAM0B,IAAiB,CAACC,MAA+B;AAC1D,QAAMC,IAAMC,EAAuB,IAAI,GACjC,CAACC,GAAoBC,CAAqB,IAAIjB,EAAS,EAAK,GAE5D,EAAE,WAAAkB,GAAW,GAAGC,EAAA,IAAqBN,GAErCO,IAA6BjB,EAAY,CAACkB,MAA0B;AACtE,IAAIA,KACAJ,EAAsB,EAAI;AAAA,EAElC,GAAG,CAAA,CAAE;AAEL,SAAAK,EAAgB,EAAE,KAAAR,GAAK,UAAU,CAACI,GAAW,UAAUE,GAA4B,GAEnFd,EAAU,MAAM;AACZ,IAAKY,KAEDD,EAAsB,EAAK;AAAA,EAEnC,GAAG,CAACC,CAAS,CAAC,GAGV,gBAAAT,EAAC,OAAA,EAAI,gBAAa,8BAA6B,WAAU,oCAAmC,KAAAK,GACxF,UAAA,gBAAAL,EAACvB,GAAA,EAAwB,GAAGiC,GAAkB,WAAWD,KAAaF,GAAoB,GAC9F;AAER;"}
@@ -1,41 +1,40 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { useState as c } from "react";
3
- import { BlockButtonStyles as m } from "../utils/styles.es.js";
4
- const b = (e) => {
5
- var n, u;
6
- const { attributes: t, children: r } = e, l = e.element.url || ((u = (n = e.element.chosenLink) == null ? void 0 : n.searchResult) == null ? void 0 : u.link) || "", s = e.element.target || "_self", o = String(e.element.buttonStyle) || "primary";
7
- return /* @__PURE__ */ a(
8
- i,
1
+ import { jsx as u } from "react/jsx-runtime";
2
+ import { useState as a } from "react";
3
+ import { BlockButtonStyles as c } from "../utils/styles.es.js";
4
+ const v = (e) => {
5
+ const { attributes: t, children: o } = e, r = e.element.url || e.element.chosenLink?.searchResult?.link || "", l = e.element.target || "_self", n = String(e.element.buttonStyle) || "primary";
6
+ return /* @__PURE__ */ u(
7
+ m,
9
8
  {
10
9
  attributes: t,
11
- href: l,
12
- target: s,
13
- styles: m[`button${o.charAt(0).toUpperCase() + o.slice(1)}`],
14
- children: r
10
+ href: r,
11
+ target: l,
12
+ styles: c[`button${n.charAt(0).toUpperCase() + n.slice(1)}`],
13
+ children: o
15
14
  }
16
15
  );
17
- }, i = ({
16
+ }, m = ({
18
17
  attributes: e,
19
18
  styles: t = { hover: {} },
20
- children: r,
21
- href: l = "#",
22
- target: s
19
+ children: o,
20
+ href: r = "#",
21
+ target: l
23
22
  }) => {
24
- const [o, n] = c(!1);
25
- return /* @__PURE__ */ a(
23
+ const [n, s] = a(!1);
24
+ return /* @__PURE__ */ u(
26
25
  "a",
27
26
  {
28
27
  ...e,
29
- onMouseEnter: () => n(!0),
30
- onMouseLeave: () => n(!1),
31
- href: l,
32
- target: s,
33
- style: o ? { ...t, ...t.hover } : t,
34
- children: r
28
+ onMouseEnter: () => s(!0),
29
+ onMouseLeave: () => s(!1),
30
+ href: r,
31
+ target: l,
32
+ style: n ? { ...t, ...t.hover } : t,
33
+ children: o
35
34
  }
36
35
  );
37
36
  };
38
37
  export {
39
- b as ButtonMarkupElementNode
38
+ v as ButtonMarkupElementNode
40
39
  };
41
40
  //# sourceMappingURL=ButtonMarkupElementNode.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonMarkupElementNode.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type PlateRenderElementProps, type Value } from '@frontify/fondue/rte';\nimport { type CSSProperties, type HTMLAttributeAnchorTarget, type ReactElement, type ReactNode, useState } from 'react';\n\nimport { type TButtonElement } from '../types';\nimport { BlockButtonStyles } from '../utils';\n\nexport type ButtonRootProps = PlateRenderElementProps<Value, TButtonElement>;\n\nexport const ButtonMarkupElementNode = (props: ButtonRootProps) => {\n const { attributes, children } = props;\n const href = props.element.url || props.element.chosenLink?.searchResult?.link || '';\n const target = props.element.target || '_self';\n const buttonStyle = String(props.element.buttonStyle) || 'primary';\n return (\n <HoverableButtonLink\n attributes={attributes}\n href={href}\n target={target}\n styles={BlockButtonStyles[`button${buttonStyle.charAt(0).toUpperCase() + buttonStyle.slice(1)}`]}\n >\n {children}\n </HoverableButtonLink>\n );\n};\n\ntype Props = {\n attributes: ButtonRootProps['attributes'];\n children: ReactNode;\n styles?: CSSProperties & { hover?: CSSProperties };\n href?: string;\n target?: HTMLAttributeAnchorTarget;\n};\n\nconst HoverableButtonLink = ({\n attributes,\n styles = { hover: {} },\n children,\n href = '#',\n target,\n}: Props): ReactElement => {\n const [hovered, setHovered] = useState(false);\n\n return (\n <a\n {...attributes}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n href={href}\n target={target}\n style={hovered ? { ...styles, ...styles.hover } : styles}\n >\n {children}\n </a>\n );\n};\n"],"names":["ButtonMarkupElementNode","props","attributes","children","href","_b","_a","target","buttonStyle","jsx","HoverableButtonLink","BlockButtonStyles","styles","hovered","setHovered","useState"],"mappings":";;;AAUO,MAAMA,IAA0B,CAACC,MAA2B;;AAC/D,QAAM,EAAE,YAAAC,GAAY,UAAAC,EAAA,IAAaF,GAC3BG,IAAOH,EAAM,QAAQ,SAAOI,KAAAC,IAAAL,EAAM,QAAQ,eAAd,gBAAAK,EAA0B,iBAA1B,gBAAAD,EAAwC,SAAQ,IAC5EE,IAASN,EAAM,QAAQ,UAAU,SACjCO,IAAc,OAAOP,EAAM,QAAQ,WAAW,KAAK;AACzD,SACI,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,YAAAR;AAAA,MACA,MAAAE;AAAA,MACA,QAAAG;AAAA,MACA,QAAQI,EAAkB,SAASH,EAAY,OAAO,CAAC,EAAE,YAAA,IAAgBA,EAAY,MAAM,CAAC,CAAC,EAAE;AAAA,MAE9F,UAAAL;AAAA,IAAA;AAAA,EAAA;AAGb,GAUMO,IAAsB,CAAC;AAAA,EACzB,YAAAR;AAAA,EACA,QAAAU,IAAS,EAAE,OAAO,GAAC;AAAA,EACnB,UAAAT;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,QAAAG;AACJ,MAA2B;AACvB,QAAM,CAACM,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,SACI,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGP;AAAA,MACJ,cAAc,MAAMY,EAAW,EAAI;AAAA,MACnC,cAAc,MAAMA,EAAW,EAAK;AAAA,MACpC,MAAAV;AAAA,MACA,QAAAG;AAAA,MACA,OAAOM,IAAU,EAAE,GAAGD,GAAQ,GAAGA,EAAO,UAAUA;AAAA,MAEjD,UAAAT;AAAA,IAAA;AAAA,EAAA;AAGb;"}
1
+ {"version":3,"file":"ButtonMarkupElementNode.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/ButtonMarkupElement/ButtonMarkupElementNode.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type PlateRenderElementProps, type Value } from '@frontify/fondue/rte';\nimport { type CSSProperties, type HTMLAttributeAnchorTarget, type ReactElement, type ReactNode, useState } from 'react';\n\nimport { type TButtonElement } from '../types';\nimport { BlockButtonStyles } from '../utils';\n\nexport type ButtonRootProps = PlateRenderElementProps<Value, TButtonElement>;\n\nexport const ButtonMarkupElementNode = (props: ButtonRootProps) => {\n const { attributes, children } = props;\n const href = props.element.url || props.element.chosenLink?.searchResult?.link || '';\n const target = props.element.target || '_self';\n const buttonStyle = String(props.element.buttonStyle) || 'primary';\n return (\n <HoverableButtonLink\n attributes={attributes}\n href={href}\n target={target}\n styles={BlockButtonStyles[`button${buttonStyle.charAt(0).toUpperCase() + buttonStyle.slice(1)}`]}\n >\n {children}\n </HoverableButtonLink>\n );\n};\n\ntype Props = {\n attributes: ButtonRootProps['attributes'];\n children: ReactNode;\n styles?: CSSProperties & { hover?: CSSProperties };\n href?: string;\n target?: HTMLAttributeAnchorTarget;\n};\n\nconst HoverableButtonLink = ({\n attributes,\n styles = { hover: {} },\n children,\n href = '#',\n target,\n}: Props): ReactElement => {\n const [hovered, setHovered] = useState(false);\n\n return (\n <a\n {...attributes}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n href={href}\n target={target}\n style={hovered ? { ...styles, ...styles.hover } : styles}\n >\n {children}\n </a>\n );\n};\n"],"names":["ButtonMarkupElementNode","props","attributes","children","href","target","buttonStyle","jsx","HoverableButtonLink","BlockButtonStyles","styles","hovered","setHovered","useState"],"mappings":";;;AAUO,MAAMA,IAA0B,CAACC,MAA2B;AAC/D,QAAM,EAAE,YAAAC,GAAY,UAAAC,EAAA,IAAaF,GAC3BG,IAAOH,EAAM,QAAQ,OAAOA,EAAM,QAAQ,YAAY,cAAc,QAAQ,IAC5EI,IAASJ,EAAM,QAAQ,UAAU,SACjCK,IAAc,OAAOL,EAAM,QAAQ,WAAW,KAAK;AACzD,SACI,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,YAAAN;AAAA,MACA,MAAAE;AAAA,MACA,QAAAC;AAAA,MACA,QAAQI,EAAkB,SAASH,EAAY,OAAO,CAAC,EAAE,YAAA,IAAgBA,EAAY,MAAM,CAAC,CAAC,EAAE;AAAA,MAE9F,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGb,GAUMK,IAAsB,CAAC;AAAA,EACzB,YAAAN;AAAA,EACA,QAAAQ,IAAS,EAAE,OAAO,GAAC;AAAA,EACnB,UAAAP;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,QAAAC;AACJ,MAA2B;AACvB,QAAM,CAACM,GAASC,CAAU,IAAIC,EAAS,EAAK;AAE5C,SACI,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGL;AAAA,MACJ,cAAc,MAAMU,EAAW,EAAI;AAAA,MACnC,cAAc,MAAMA,EAAW,EAAK;AAAA,MACpC,MAAAR;AAAA,MACA,QAAAC;AAAA,MACA,OAAOM,IAAU,EAAE,GAAGD,GAAQ,GAAGA,EAAO,UAAUA;AAAA,MAEjD,UAAAP;AAAA,IAAA;AAAA,EAAA;AAGb;"}
@@ -1,19 +1,19 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- import { useEditorState as r, useEventPlateId as a, isRangeInSameBlock as c, getPluginType as m, someNode as p, getTooltip as u, getHotkeyByPlatform as d } from "@frontify/fondue/rte";
2
+ import { useEditorState as l, useEventPlateId as a, isRangeInSameBlock as c, getPluginType as d, someNode as m, getTooltip as p, getHotkeyByPlatform as u } from "@frontify/fondue/rte";
3
3
  import { ELEMENT_BUTTON as B } from "../createButtonPlugin.es.js";
4
4
  import { ButtonToolbarButton as f } from "./ButtonToolbarButton.es.js";
5
5
  const y = ({ editorId: n, id: i }) => {
6
- const t = r(a(n)), o = !!c(t, {
6
+ const t = l(a(n)), o = !!c(t, {
7
7
  at: t.selection
8
- }), s = m(t, B), l = !!(t != null && t.selection) && p(t, { match: { type: s } });
8
+ }), s = d(t, B), r = !!t?.selection && m(t, { match: { type: s } });
9
9
  return /* @__PURE__ */ e("div", { "data-plugin-id": i, children: /* @__PURE__ */ e(
10
10
  f,
11
11
  {
12
- pressed: l,
12
+ pressed: r,
13
13
  disabled: !o,
14
- tooltip: u(
14
+ tooltip: p(
15
15
  o ? `Button
16
- ${d("Ctrl+Shift+K")}` : "Buttons can only be set for a single text block."
16
+ ${u("Ctrl+Shift+K")}` : "Buttons can only be set for a single text block."
17
17
  )
18
18
  }
19
19
  ) });
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonButton.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n type PluginButtonProps,\n getHotkeyByPlatform,\n getPluginType,\n getTooltip,\n isRangeInSameBlock,\n someNode,\n useEditorState,\n useEventPlateId,\n} from '@frontify/fondue/rte';\n\nimport { ELEMENT_BUTTON } from '../createButtonPlugin';\n\nimport { ButtonToolbarButton } from './ButtonToolbarButton';\n\nexport const ButtonButton = ({ editorId, id }: PluginButtonProps) => {\n const editor = useEditorState(useEventPlateId(editorId));\n const isEnabled = !!isRangeInSameBlock(editor, {\n at: editor.selection,\n });\n const type = getPluginType(editor, ELEMENT_BUTTON);\n const isLink = !!editor?.selection && someNode(editor, { match: { type } });\n\n return (\n <div data-plugin-id={id}>\n <ButtonToolbarButton\n pressed={isLink}\n disabled={!isEnabled} // maybe pressed\n tooltip={getTooltip(\n isEnabled\n ? `Button\\n${getHotkeyByPlatform('Ctrl+Shift+K')}`\n : 'Buttons can only be set for a single text block.',\n )}\n />\n </div>\n );\n};\n"],"names":["ButtonButton","editorId","id","editor","useEditorState","useEventPlateId","isEnabled","isRangeInSameBlock","type","getPluginType","ELEMENT_BUTTON","isLink","someNode","jsx","ButtonToolbarButton","getTooltip","getHotkeyByPlatform"],"mappings":";;;;AAiBO,MAAMA,IAAe,CAAC,EAAE,UAAAC,GAAU,IAAAC,QAA4B;AACjE,QAAMC,IAASC,EAAeC,EAAgBJ,CAAQ,CAAC,GACjDK,IAAY,CAAC,CAACC,EAAmBJ,GAAQ;AAAA,IAC3C,IAAIA,EAAO;AAAA,EAAA,CACd,GACKK,IAAOC,EAAcN,GAAQO,CAAc,GAC3CC,IAAS,CAAC,EAACR,KAAA,QAAAA,EAAQ,cAAaS,EAAST,GAAQ,EAAE,OAAO,EAAE,MAAAK,EAAA,GAAQ;AAE1E,SACI,gBAAAK,EAAC,OAAA,EAAI,kBAAgBX,GACjB,UAAA,gBAAAW;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,SAASH;AAAA,MACT,UAAU,CAACL;AAAA,MACX,SAASS;AAAA,QACLT,IACM;AAAA,EAAWU,EAAoB,cAAc,CAAC,KAC9C;AAAA,MAAA;AAAA,IACV;AAAA,EAAA,GAER;AAER;"}
1
+ {"version":3,"file":"ButtonButton.es.js","sources":["../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/ButtonButton.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n type PluginButtonProps,\n getHotkeyByPlatform,\n getPluginType,\n getTooltip,\n isRangeInSameBlock,\n someNode,\n useEditorState,\n useEventPlateId,\n} from '@frontify/fondue/rte';\n\nimport { ELEMENT_BUTTON } from '../createButtonPlugin';\n\nimport { ButtonToolbarButton } from './ButtonToolbarButton';\n\nexport const ButtonButton = ({ editorId, id }: PluginButtonProps) => {\n const editor = useEditorState(useEventPlateId(editorId));\n const isEnabled = !!isRangeInSameBlock(editor, {\n at: editor.selection,\n });\n const type = getPluginType(editor, ELEMENT_BUTTON);\n const isLink = !!editor?.selection && someNode(editor, { match: { type } });\n\n return (\n <div data-plugin-id={id}>\n <ButtonToolbarButton\n pressed={isLink}\n disabled={!isEnabled} // maybe pressed\n tooltip={getTooltip(\n isEnabled\n ? `Button\\n${getHotkeyByPlatform('Ctrl+Shift+K')}`\n : 'Buttons can only be set for a single text block.',\n )}\n />\n </div>\n );\n};\n"],"names":["ButtonButton","editorId","id","editor","useEditorState","useEventPlateId","isEnabled","isRangeInSameBlock","type","getPluginType","ELEMENT_BUTTON","isLink","someNode","jsx","ButtonToolbarButton","getTooltip","getHotkeyByPlatform"],"mappings":";;;;AAiBO,MAAMA,IAAe,CAAC,EAAE,UAAAC,GAAU,IAAAC,QAA4B;AACjE,QAAMC,IAASC,EAAeC,EAAgBJ,CAAQ,CAAC,GACjDK,IAAY,CAAC,CAACC,EAAmBJ,GAAQ;AAAA,IAC3C,IAAIA,EAAO;AAAA,EAAA,CACd,GACKK,IAAOC,EAAcN,GAAQO,CAAc,GAC3CC,IAAS,CAAC,CAACR,GAAQ,aAAaS,EAAST,GAAQ,EAAE,OAAO,EAAE,MAAAK,EAAA,GAAQ;AAE1E,SACI,gBAAAK,EAAC,OAAA,EAAI,kBAAgBX,GACjB,UAAA,gBAAAW;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,SAASH;AAAA,MACT,UAAU,CAACL;AAAA,MACX,SAASS;AAAA,QACLT,IACM;AAAA,EAAWU,EAAoB,cAAc,CAAC,KAC9C;AAAA,MAAA;AAAA,IACV;AAAA,EAAA,GAER;AAER;"}
@@ -12,17 +12,17 @@ const U = {
12
12
  buttonStyle: "primary",
13
13
  newTab: !1
14
14
  }, h = () => {
15
- const [n, o] = g((e, s) => {
15
+ const [n, o] = g((t, s) => {
16
16
  const { type: l, payload: u } = s;
17
17
  switch (l) {
18
18
  case "NEW_TAB":
19
19
  return {
20
- ...e,
20
+ ...t,
21
21
  newTab: !0
22
22
  };
23
23
  case "SAME_TAB":
24
24
  return {
25
- ...e,
25
+ ...t,
26
26
  newTab: !1
27
27
  };
28
28
  case "URL":
@@ -30,52 +30,52 @@ const U = {
30
30
  case "BUTTON_STYLE":
31
31
  case "INIT":
32
32
  return {
33
- ...e,
33
+ ...t,
34
34
  ...u
35
35
  };
36
36
  default:
37
- return e;
37
+ return t;
38
38
  }
39
39
  }, U);
40
40
  return [n, o];
41
- }, F = () => {
42
- const n = d(), [o, e] = h();
41
+ }, v = () => {
42
+ const n = d(), [o, t] = h();
43
43
  E(() => {
44
- const t = N(n);
45
- e({
44
+ const e = N(n);
45
+ t({
46
46
  type: "INIT",
47
47
  payload: {
48
48
  text: a.text() || a.url(),
49
- buttonStyle: t,
49
+ buttonStyle: e,
50
50
  newTab: !!a.newTab(),
51
51
  url: a.url()
52
52
  }
53
53
  });
54
- }, [e, n]);
55
- const s = (t) => {
56
- e({
54
+ }, [t, n]);
55
+ const s = (e) => {
56
+ t({
57
57
  type: "TEXT",
58
- payload: { text: t }
58
+ payload: { text: e }
59
59
  });
60
- }, l = (t) => {
61
- e({
60
+ }, l = (e) => {
61
+ t({
62
62
  type: "BUTTON_STYLE",
63
- payload: { buttonStyle: t }
63
+ payload: { buttonStyle: e }
64
64
  });
65
- }, u = (t) => {
66
- e({
65
+ }, u = (e) => {
66
+ t({
67
67
  type: "URL",
68
- payload: { url: t }
68
+ payload: { url: e }
69
69
  });
70
- }, i = (t) => {
71
- e(t ? { type: "NEW_TAB" } : { type: "SAME_TAB" });
70
+ }, i = (e) => {
71
+ t(e ? { type: "NEW_TAB" } : { type: "SAME_TAB" });
72
72
  }, y = () => {
73
73
  r.reset();
74
- }, T = (t) => {
74
+ }, T = (e) => {
75
75
  if (!p(o.url) || !c)
76
76
  return;
77
77
  const f = w(o.url);
78
- r.text(o.text), r.url(f), r.buttonStyle(o.buttonStyle), r.newTab(o.newTab), x(n) && (t == null || t.preventDefault());
78
+ r.text(o.text), r.url(f), r.buttonStyle(o.buttonStyle), r.newTab(o.newTab), x(n) && e?.preventDefault();
79
79
  }, c = o.url !== "" && o.text !== "", { appBridge: m } = S(n, B);
80
80
  return b(
81
81
  "enter",
@@ -99,6 +99,6 @@ const U = {
99
99
  };
100
100
  export {
101
101
  h as InsertModalState,
102
- F as useInsertModal
102
+ v as useInsertModal
103
103
  };
104
104
  //# sourceMappingURL=useInsertModal.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInsertModal.es.js","sources":["../../../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type AppBridgeBlock } from '@frontify/app-bridge';\nimport { getPluginOptions, useEditorRef, useHotkeys } from '@frontify/fondue/rte';\nimport { type Dispatch, type Reducer, useEffect, useReducer } from 'react';\n\nimport { addHttps } from '../../../../../../../helpers';\nimport { isValidUrlOrEmpty } from '../../../../../../Link/utils/url';\nimport { ELEMENT_BUTTON } from '../../../createButtonPlugin';\nimport { submitFloatingButton } from '../../../transforms/submitFloatingButton';\nimport { type RichTextButtonStyle } from '../../../types';\nimport { getButtonStyle } from '../../../utils/getButtonStyle';\nimport { floatingButtonActions, floatingButtonSelectors } from '../floatingButtonStore';\n\nimport { type InsertModalDispatchType, type InsertModalStateProps } from './types';\n\nconst initialState: InsertModalStateProps = {\n url: '',\n text: '',\n buttonStyle: 'primary',\n newTab: false,\n};\n\nexport const InsertModalState = (): [InsertModalStateProps, Dispatch<InsertModalDispatchType>] => {\n const [state, dispatch] = useReducer<Reducer<InsertModalStateProps, InsertModalDispatchType>>((state, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case 'NEW_TAB':\n return {\n ...state,\n newTab: true,\n };\n case 'SAME_TAB':\n return {\n ...state,\n newTab: false,\n };\n case 'URL':\n case 'TEXT':\n case 'BUTTON_STYLE':\n case 'INIT':\n return {\n ...state,\n ...payload,\n };\n default:\n return state;\n }\n }, initialState);\n\n return [state, dispatch];\n};\n\nexport const useInsertModal = () => {\n const editor = useEditorRef();\n const [state, dispatch] = InsertModalState();\n\n useEffect(() => {\n const buttonStyle = getButtonStyle(editor);\n\n dispatch({\n type: 'INIT',\n payload: {\n text: floatingButtonSelectors.text() || floatingButtonSelectors.url(),\n buttonStyle,\n newTab: !!floatingButtonSelectors.newTab(),\n url: floatingButtonSelectors.url(),\n },\n });\n }, [dispatch, editor]);\n\n const onTextChange = (value: string) => {\n dispatch({\n type: 'TEXT',\n payload: { text: value },\n });\n };\n\n const onButtonStyleChange = (value: RichTextButtonStyle) => {\n dispatch({\n type: 'BUTTON_STYLE',\n payload: { buttonStyle: value },\n });\n };\n\n const onUrlChange = (value: string) => {\n dispatch({\n type: 'URL',\n payload: { url: value },\n });\n };\n\n const onToggleTab = (checked: boolean) => {\n checked ? dispatch({ type: 'NEW_TAB' }) : dispatch({ type: 'SAME_TAB' });\n };\n\n const onCancel = () => {\n floatingButtonActions.reset();\n };\n\n const onSave = (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | KeyboardEvent | undefined) => {\n if (!isValidUrlOrEmpty(state.url) || !hasValues) {\n return;\n }\n\n const urlToSave = addHttps(state.url);\n\n floatingButtonActions.text(state.text);\n floatingButtonActions.url(urlToSave);\n floatingButtonActions.buttonStyle(state.buttonStyle);\n floatingButtonActions.newTab(state.newTab);\n\n if (submitFloatingButton(editor)) {\n event?.preventDefault();\n }\n };\n\n const hasValues = state.url !== '' && state.text !== '';\n\n const { appBridge } = getPluginOptions<{ appBridge: AppBridgeBlock }>(editor, ELEMENT_BUTTON);\n\n useHotkeys(\n 'enter',\n onSave,\n {\n enableOnFormTags: ['INPUT'],\n },\n [],\n );\n\n return {\n state,\n onTextChange,\n onButtonStyleChange,\n onUrlChange,\n onToggleTab,\n onCancel,\n onSave,\n hasValues,\n isValidUrlOrEmpty,\n appBridge,\n };\n};\n"],"names":["initialState","InsertModalState","state","dispatch","useReducer","action","type","payload","useInsertModal","editor","useEditorRef","useEffect","buttonStyle","getButtonStyle","floatingButtonSelectors","onTextChange","value","onButtonStyleChange","onUrlChange","onToggleTab","checked","onCancel","floatingButtonActions","onSave","event","isValidUrlOrEmpty","hasValues","urlToSave","addHttps","submitFloatingButton","appBridge","getPluginOptions","ELEMENT_BUTTON","useHotkeys"],"mappings":"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"}
1
+ {"version":3,"file":"useInsertModal.es.js","sources":["../../../../../../../../src/components/RichTextEditor/plugins/ButtonPlugin/components/FloatingButton/InsertButtonModal/useInsertModal.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { type AppBridgeBlock } from '@frontify/app-bridge';\nimport { getPluginOptions, useEditorRef, useHotkeys } from '@frontify/fondue/rte';\nimport { type Dispatch, type Reducer, useEffect, useReducer } from 'react';\n\nimport { addHttps } from '../../../../../../../helpers';\nimport { isValidUrlOrEmpty } from '../../../../../../Link/utils/url';\nimport { ELEMENT_BUTTON } from '../../../createButtonPlugin';\nimport { submitFloatingButton } from '../../../transforms/submitFloatingButton';\nimport { type RichTextButtonStyle } from '../../../types';\nimport { getButtonStyle } from '../../../utils/getButtonStyle';\nimport { floatingButtonActions, floatingButtonSelectors } from '../floatingButtonStore';\n\nimport { type InsertModalDispatchType, type InsertModalStateProps } from './types';\n\nconst initialState: InsertModalStateProps = {\n url: '',\n text: '',\n buttonStyle: 'primary',\n newTab: false,\n};\n\nexport const InsertModalState = (): [InsertModalStateProps, Dispatch<InsertModalDispatchType>] => {\n const [state, dispatch] = useReducer<Reducer<InsertModalStateProps, InsertModalDispatchType>>((state, action) => {\n const { type, payload } = action;\n\n switch (type) {\n case 'NEW_TAB':\n return {\n ...state,\n newTab: true,\n };\n case 'SAME_TAB':\n return {\n ...state,\n newTab: false,\n };\n case 'URL':\n case 'TEXT':\n case 'BUTTON_STYLE':\n case 'INIT':\n return {\n ...state,\n ...payload,\n };\n default:\n return state;\n }\n }, initialState);\n\n return [state, dispatch];\n};\n\nexport const useInsertModal = () => {\n const editor = useEditorRef();\n const [state, dispatch] = InsertModalState();\n\n useEffect(() => {\n const buttonStyle = getButtonStyle(editor);\n\n dispatch({\n type: 'INIT',\n payload: {\n text: floatingButtonSelectors.text() || floatingButtonSelectors.url(),\n buttonStyle,\n newTab: !!floatingButtonSelectors.newTab(),\n url: floatingButtonSelectors.url(),\n },\n });\n }, [dispatch, editor]);\n\n const onTextChange = (value: string) => {\n dispatch({\n type: 'TEXT',\n payload: { text: value },\n });\n };\n\n const onButtonStyleChange = (value: RichTextButtonStyle) => {\n dispatch({\n type: 'BUTTON_STYLE',\n payload: { buttonStyle: value },\n });\n };\n\n const onUrlChange = (value: string) => {\n dispatch({\n type: 'URL',\n payload: { url: value },\n });\n };\n\n const onToggleTab = (checked: boolean) => {\n checked ? dispatch({ type: 'NEW_TAB' }) : dispatch({ type: 'SAME_TAB' });\n };\n\n const onCancel = () => {\n floatingButtonActions.reset();\n };\n\n const onSave = (event: React.MouseEvent<HTMLButtonElement, MouseEvent> | KeyboardEvent | undefined) => {\n if (!isValidUrlOrEmpty(state.url) || !hasValues) {\n return;\n }\n\n const urlToSave = addHttps(state.url);\n\n floatingButtonActions.text(state.text);\n floatingButtonActions.url(urlToSave);\n floatingButtonActions.buttonStyle(state.buttonStyle);\n floatingButtonActions.newTab(state.newTab);\n\n if (submitFloatingButton(editor)) {\n event?.preventDefault();\n }\n };\n\n const hasValues = state.url !== '' && state.text !== '';\n\n const { appBridge } = getPluginOptions<{ appBridge: AppBridgeBlock }>(editor, ELEMENT_BUTTON);\n\n useHotkeys(\n 'enter',\n onSave,\n {\n enableOnFormTags: ['INPUT'],\n },\n [],\n );\n\n return {\n state,\n onTextChange,\n onButtonStyleChange,\n onUrlChange,\n onToggleTab,\n onCancel,\n onSave,\n hasValues,\n isValidUrlOrEmpty,\n appBridge,\n };\n};\n"],"names":["initialState","InsertModalState","state","dispatch","useReducer","action","type","payload","useInsertModal","editor","useEditorRef","useEffect","buttonStyle","getButtonStyle","floatingButtonSelectors","onTextChange","value","onButtonStyleChange","onUrlChange","onToggleTab","checked","onCancel","floatingButtonActions","onSave","event","isValidUrlOrEmpty","hasValues","urlToSave","addHttps","submitFloatingButton","appBridge","getPluginOptions","ELEMENT_BUTTON","useHotkeys"],"mappings":"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"}
@@ -1,33 +1,30 @@
1
- var n = Object.defineProperty;
2
- var u = (r, t, i) => t in r ? n(r, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : r[t] = i;
3
- var e = (r, t, i) => u(r, typeof t != "symbol" ? t + "" : t, i);
4
- import { createPluginFactory as a, Plugin as s } from "@frontify/fondue/rte";
5
- import { isValidUrl as g } from "../../../Link/utils/url.es.js";
6
- import { ButtonMarkupElement as l } from "./ButtonMarkupElement/index.es.js";
7
- import { ButtonButton as d } from "./components/ButtonButton.es.js";
8
- import { CustomFloatingButton as p } from "./components/FloatingButton/CustomFloatingButton.es.js";
9
- import { withButton as B } from "./withButton.es.js";
1
+ import { Plugin as i, createPluginFactory as n } from "@frontify/fondue/rte";
2
+ import { isValidUrl as s } from "../../../Link/utils/url.es.js";
3
+ import { ButtonMarkupElement as u } from "./ButtonMarkupElement/index.es.js";
4
+ import { ButtonButton as a } from "./components/ButtonButton.es.js";
5
+ import { CustomFloatingButton as l } from "./components/FloatingButton/CustomFloatingButton.es.js";
6
+ import { withButton as p } from "./withButton.es.js";
10
7
  import { BlockButtonStyles as m } from "./utils/styles.es.js";
11
- const c = "button", f = "button-plugin", h = (r) => a({
12
- key: c,
8
+ const g = "button", d = "button-plugin", B = (e) => n({
9
+ key: g,
13
10
  isElement: !0,
14
11
  isInline: !0,
15
12
  props: ({ element: t }) => ({
16
- nodeProps: { href: t == null ? void 0 : t.url, target: t == null ? void 0 : t.target }
13
+ nodeProps: { href: t?.url, target: t?.target }
17
14
  }),
18
- withOverrides: B,
19
- renderAfterEditable: p,
15
+ withOverrides: p,
16
+ renderAfterEditable: l,
20
17
  options: {
21
- isUrl: g,
18
+ isUrl: s,
22
19
  rangeBeforeOptions: {
23
20
  matchString: " ",
24
21
  skipInvalid: !0,
25
22
  afterMatch: !0
26
23
  },
27
24
  triggerFloatingButtonHotkeys: "command+shift+k, ctrl+shift+k",
28
- appBridge: r
25
+ appBridge: e
29
26
  },
30
- then: (t, { type: i }) => ({
27
+ then: (t, { type: r }) => ({
31
28
  deserializeHtml: {
32
29
  rules: [
33
30
  {
@@ -36,32 +33,31 @@ const c = "button", f = "button-plugin", h = (r) => a({
36
33
  }
37
34
  ],
38
35
  getNode: (o) => ({
39
- type: i,
36
+ type: r,
40
37
  url: o.getAttribute("href"),
41
38
  target: o.getAttribute("target") || "_blank"
42
39
  })
43
40
  }
44
41
  })
45
42
  })();
46
- class v extends s {
47
- constructor({ styles: i = m, ...o }) {
48
- super(f, {
49
- button: d,
50
- markupElement: new l(),
51
- ...o
52
- });
53
- e(this, "styles", {});
54
- e(this, "appBridge");
55
- this.styles = i, this.appBridge = o == null ? void 0 : o.appBridge;
43
+ class y extends i {
44
+ styles = {};
45
+ appBridge;
46
+ constructor({ styles: t = m, ...r }) {
47
+ super(d, {
48
+ button: a,
49
+ markupElement: new u(),
50
+ ...r
51
+ }), this.styles = t, this.appBridge = r?.appBridge;
56
52
  }
57
53
  plugins() {
58
- return [h(this.appBridge)];
54
+ return [B(this.appBridge)];
59
55
  }
60
56
  }
61
57
  export {
62
- f as BUTTON_PLUGIN,
63
- v as ButtonPlugin,
64
- c as ELEMENT_BUTTON,
65
- h as createButtonPlugin
58
+ d as BUTTON_PLUGIN,
59
+ y as ButtonPlugin,
60
+ g as ELEMENT_BUTTON,
61
+ B as createButtonPlugin
66
62
  };
67
63
  //# sourceMappingURL=createButtonPlugin.es.js.map