@strapi/content-manager 5.34.0 → 5.35.0

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 (92) hide show
  1. package/dist/admin/components/ActionsDrawer.js +204 -0
  2. package/dist/admin/components/ActionsDrawer.js.map +1 -0
  3. package/dist/admin/components/ActionsDrawer.mjs +183 -0
  4. package/dist/admin/components/ActionsDrawer.mjs.map +1 -0
  5. package/dist/admin/history/components/VersionContent.js +22 -9
  6. package/dist/admin/history/components/VersionContent.js.map +1 -1
  7. package/dist/admin/history/components/VersionContent.mjs +23 -10
  8. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  9. package/dist/admin/pages/EditView/EditViewPage.js +100 -71
  10. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  11. package/dist/admin/pages/EditView/EditViewPage.mjs +102 -73
  12. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  13. package/dist/admin/pages/EditView/components/DocumentActions.js +48 -40
  14. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  15. package/dist/admin/pages/EditView/components/DocumentActions.mjs +50 -42
  16. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  17. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js +63 -31
  18. package/dist/admin/pages/EditView/components/EditorToolbarObserver.js.map +1 -1
  19. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs +64 -32
  20. package/dist/admin/pages/EditView/components/EditorToolbarObserver.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js +20 -5
  22. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.js.map +1 -1
  23. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs +20 -5
  24. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Blocks/Link.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +22 -12
  26. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +22 -12
  28. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +6 -1
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +7 -2
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +151 -10
  34. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +152 -11
  36. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js +52 -5
  38. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs +53 -6
  40. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/Modifiers.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +6 -1
  42. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +6 -1
  44. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js +1 -0
  46. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.js.map +1 -1
  47. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs +1 -0
  48. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/EditorLayout.mjs.map +1 -1
  49. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js +21 -1
  50. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.js.map +1 -1
  51. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs +24 -4
  52. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Field.mjs.map +1 -1
  53. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js +2 -2
  54. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.js.map +1 -1
  55. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs +2 -2
  56. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/PreviewWysiwyg.mjs.map +1 -1
  57. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js +4 -0
  58. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.js.map +1 -1
  59. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs +4 -0
  60. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygFooter.mjs.map +1 -1
  61. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +30 -13
  62. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
  63. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +32 -16
  64. package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
  65. package/dist/admin/pages/EditView/components/Panels.js +67 -15
  66. package/dist/admin/pages/EditView/components/Panels.js.map +1 -1
  67. package/dist/admin/pages/EditView/components/Panels.mjs +67 -18
  68. package/dist/admin/pages/EditView/components/Panels.mjs.map +1 -1
  69. package/dist/admin/pages/ListView/ListViewPage.js +2 -2
  70. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  71. package/dist/admin/pages/ListView/ListViewPage.mjs +2 -2
  72. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  73. package/dist/admin/preview/index.js +9 -3
  74. package/dist/admin/preview/index.js.map +1 -1
  75. package/dist/admin/preview/index.mjs +9 -3
  76. package/dist/admin/preview/index.mjs.map +1 -1
  77. package/dist/admin/src/components/ActionsDrawer.d.ts +19 -0
  78. package/dist/admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.d.ts +7 -2
  79. package/dist/admin/src/pages/EditView/components/Panels.d.ts +14 -2
  80. package/dist/admin/translations/en.json.js +5 -1
  81. package/dist/admin/translations/en.json.js.map +1 -1
  82. package/dist/admin/translations/en.json.mjs +5 -1
  83. package/dist/admin/translations/en.json.mjs.map +1 -1
  84. package/dist/admin/translations/es.json.js +3 -1
  85. package/dist/admin/translations/es.json.js.map +1 -1
  86. package/dist/admin/translations/es.json.mjs +3 -1
  87. package/dist/admin/translations/es.json.mjs.map +1 -1
  88. package/dist/admin/translations/fr.json.js +3 -1
  89. package/dist/admin/translations/fr.json.js.map +1 -1
  90. package/dist/admin/translations/fr.json.mjs +3 -1
  91. package/dist/admin/translations/fr.json.mjs.map +1 -1
  92. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"WysiwygNav.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={4}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex gap={2} overflow=\"hidden\" width=\"100%\">\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav };\nexport type { WysiwygNavProps };\n"],"names":["WysiwygNav","disabled","editorRef","isPreviewMode","onToggleMediaLib","onTogglePreviewMode","formatMessage","useIntl","isDisabled","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","_jsx","IconButton","onClick","label","id","defaultMessage","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","EditorToolbarObserver","menuTriggerVariant","Button","variant","minWidth"],"mappings":";;;;;;;;AA8CA;;AAEC,IACKA,MAAAA,UAAAA,GAAa,CAAC,EAClBC,QAAQ,EACRC,SAAS,EACTC,aAAa,EACbC,gBAAgB,EAChBC,mBAAmB,EACH,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,aAAaP,QAAYE,IAAAA,aAAAA;IAE/B,MAAMM,iBAAAA,GAAoB,CACxBC,KACAC,EAAAA,gBAAAA,GAAAA;QAEA,OAAQD,KAAAA;YACN,KAAK,MAAA;AAAQ,gBAAA;AACXE,oBAAAA,eAAAA,CAAgBD,gBAAkBD,EAAAA,KAAAA,CAAAA;AAClC,oBAAA;AACF;YACA,KAAK,MAAA;YACL,KAAK,OAAA;AAAS,gBAAA;AACZG,oBAAAA,mBAAAA,CAAoBF,gBAAkBD,EAAAA,KAAAA,CAAAA;AACtC,oBAAA;AACF;YACA,KAAK,MAAA;YACL,KAAK,QAAA;YACL,KAAK,WAAA;YACL,KAAK,eAAA;AAAiB,gBAAA;AACpBE,oBAAAA,eAAAA,CAAgBD,gBAAkBD,EAAAA,KAAAA,CAAAA;AAClC,oBAAA;AACF;YACA,KAAK,YAAA;YACL,KAAK,YAAA;AAAc,gBAAA;AACjBI,oBAAAA,WAAAA,CAAYH,gBAAkBD,EAAAA,KAAAA,CAAAA;AAC9B,oBAAA;AACF;YACA,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;YACL,KAAK,IAAA;AAAM,gBAAA;AACTK,oBAAAA,YAAAA,CAAaJ,gBAAkBD,EAAAA,KAAAA,CAAAA;AAC/B,oBAAA;AACF;AAIF;AACF,KAAA;AAEA,IAAA,MAAMM,kBAA0C,GAAA;AAC9C,QAAA;AACEC,YAAAA,OAAAA,gBACEC,IAACC,CAAAA,eAAAA,EAAAA;;kCACCC,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,MAAQP,EAAAA,SAAAA,CAAAA;AACzCqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,kCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,kCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACO,CAAAA,IAAAA,EAAAA,EAAAA;;kCAEHP,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,QAAUP,EAAAA,SAAAA,CAAAA;AAC3CqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,oCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,oCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACQ,CAAAA,MAAAA,EAAAA,EAAAA;;kCAEHR,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,WAAaP,EAAAA,SAAAA,CAAAA;AAC9CqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,uCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,uCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACS,CAAAA,SAAAA,EAAAA,EAAAA;;kCAEHT,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,eAAiBP,EAAAA,SAAAA,CAAAA;AAClDqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,2CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,2CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACU,CAAAA,aAAAA,EAAAA,EAAAA;;;;YAIPC,IACE,gBAAAb,IAAA,CAAAc,QAAA,EAAA;;AACE,kCAAAZ,GAAA,CAACa,KAAKC,SAAS,EAAA,EAAA,CAAA;AACf,kCAAAd,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACO,CAAAA,IAAAA,EAAAA;4BAAKU,IAAK,EAAA;;wBACtBC,QAAU,EAAA,IAAM7B,kBAAkB,MAAQP,EAAAA,SAAAA,CAAAA;wBAC1CD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,kCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACQ,CAAAA,MAAAA,EAAAA;4BAAOS,IAAK,EAAA;;wBACxBC,QAAU,EAAA,IAAM7B,kBAAkB,QAAUP,EAAAA,SAAAA,CAAAA;wBAC5CD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,oCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACS,CAAAA,SAAAA,EAAAA;4BAAUQ,IAAK,EAAA;;wBAC3BC,QAAU,EAAA,IAAM7B,kBAAkB,WAAaP,EAAAA,SAAAA,CAAAA;wBAC/CD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,uCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACU,CAAAA,aAAAA,EAAAA;4BAAcO,IAAK,EAAA;;wBAC/BC,QAAU,EAAA,IAAM7B,kBAAkB,eAAiBP,EAAAA,SAAAA,CAAAA;wBACnDD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,2CAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;YAKRiB,GAAK,EAAA;AACP,SAAA;AACA,QAAA;AACEzB,YAAAA,OAAAA,gBACEC,IAACC,CAAAA,eAAAA,EAAAA;;kCACCC,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,YAAcP,EAAAA,SAAAA,CAAAA;AAC/CqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACuB,CAAAA,UAAAA,EAAAA,EAAAA;;kCAEHvB,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,YAAcP,EAAAA,SAAAA,CAAAA;AAC/CqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,qCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACwB,CAAAA,UAAAA,EAAAA,EAAAA;;;;YAIPb,IACE,gBAAAb,IAAA,CAAAc,QAAA,EAAA;;AACE,kCAAAZ,GAAA,CAACa,KAAKC,SAAS,EAAA,EAAA,CAAA;AACf,kCAAAd,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACuB,CAAAA,UAAAA,EAAAA;4BAAWN,IAAK,EAAA;;wBAC5BC,QAAU,EAAA,IAAM7B,kBAAkB,YAAcP,EAAAA,SAAAA,CAAAA;wBAChDD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,wCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACwB,CAAAA,UAAAA,EAAAA;4BAAWP,IAAK,EAAA;;wBAC5BC,QAAU,EAAA,IAAM7B,kBAAkB,YAAcP,EAAAA,SAAAA,CAAAA;wBAChDD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,sCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;YAKRiB,GAAK,EAAA;AACP,SAAA;AACA,QAAA;AACEzB,YAAAA,OAAAA,gBACEC,IAACC,CAAAA,eAAAA,EAAAA;;kCACCC,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,MAAQP,EAAAA,SAAAA,CAAAA;AACzCqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAACyB,CAAAA,IAAAA,EAAAA,EAAAA;;kCAEHzB,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAA;AACPlB,4BAAAA,gBAAAA,EAAAA;AACF,yBAAA;AACAmB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAAC0B,CAAAA,KAAAA,EAAAA,EAAAA;;kCAEH1B,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,MAAQP,EAAAA,SAAAA,CAAAA;AACzCqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAAC2B,CAAAA,IAAAA,EAAAA,EAAAA;;kCAEH3B,GAACC,CAAAA,UAAAA,EAAAA;wBACCpB,QAAUO,EAAAA,UAAAA;wBACVc,OAAS,EAAA,IAAMb,kBAAkB,OAASP,EAAAA,SAAAA,CAAAA;AAC1CqB,wBAAAA,KAAAA,EAAOjB,aAAc,CAAA;4BACnBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAC,wBAAAA,IAAAA,EAAMpB,aAAc,CAAA;4BAClBkB,EAAI,EAAA,gCAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AAEA,wBAAA,QAAA,gBAAAL,GAAC4B,CAAAA,MAAAA,EAAAA,EAAAA;;;;YAIPjB,IACE,gBAAAb,IAAA,CAAAc,QAAA,EAAA;;AACE,kCAAAZ,GAAA,CAACa,KAAKC,SAAS,EAAA,EAAA,CAAA;AACf,kCAAAd,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAACyB,CAAAA,IAAAA,EAAAA;4BAAKR,IAAK,EAAA;;wBACtBC,QAAU,EAAA,IAAM7B,kBAAkB,MAAQP,EAAAA,SAAAA,CAAAA;wBAC1CD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,gCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAAC0B,CAAAA,KAAAA,EAAAA;4BAAMT,IAAK,EAAA;;wBACvBC,QAAU,EAAA,IAAA;AACRlC,4BAAAA,gBAAAA,EAAAA;AACF,yBAAA;wBACAH,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,gCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAAC2B,CAAAA,IAAAA,EAAAA;4BAAKV,IAAK,EAAA;;wBACtBC,QAAU,EAAA,IAAM7B,kBAAkB,MAAQP,EAAAA,SAAAA,CAAAA;wBAC1CD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,gCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;AAGJ,kCAAAL,GAAA,CAACa,KAAKE,IAAI,EAAA;AACRC,wBAAAA,SAAAA,gBAAWhB,GAAC4B,CAAAA,MAAAA,EAAAA;4BAAOX,IAAK,EAAA;;wBACxBC,QAAU,EAAA,IAAM7B,kBAAkB,OAASP,EAAAA,SAAAA,CAAAA;wBAC3CD,QAAUO,EAAAA,UAAAA;AAEV,wBAAA,QAAA,gBAAAY,GAACmB,CAAAA,IAAAA,EAAAA;4BAAKC,GAAI,EAAA,MAAA;4BAAOC,GAAK,EAAA,CAAA;sCACnBnC,aAAc,CAAA;gCACbkB,EAAI,EAAA,gCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;YAKRiB,GAAK,EAAA;AACP;AACD,KAAA;AAED,IAAA,qBACExB,IAACqB,CAAAA,IAAAA,EAAAA;QACCU,OAAS,EAAA,CAAA;QACTC,UAAW,EAAA,YAAA;QACXC,cAAe,EAAA,eAAA;QACfC,YAAa,EAAA,mBAAA;QACbC,KAAM,EAAA,MAAA;QACNZ,GAAK,EAAA,CAAA;;AAEL,0BAAArB,GAAA,CAACkC,MAAMC,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAArC,IAACsC,CAAAA,YAAAA,EAAAA;oBACCvD,QAAUO,EAAAA,UAAAA;AACViD,oBAAAA,WAAAA,EAAanD,aAAc,CAAA;wBACzBkB,EAAI,EAAA,wCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;AACAiC,oBAAAA,YAAAA,EAAYpD,aAAc,CAAA;wBACxBkB,EAAI,EAAA,wCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;;oBAEAkC,QAAU,EAAA,CAACjD,KAAUD,GAAAA,iBAAAA,CAAkBC,KAAOR,EAAAA,SAAAA,CAAAA;oBAC9C0D,IAAK,EAAA,GAAA;;sCAELxC,GAACyC,CAAAA,kBAAAA,EAAAA;4BAAmBnD,KAAM,EAAA,IAAA;AAAK0B,4BAAAA,SAAAA,gBAAWhB,GAAC0C,CAAAA,UAAAA,EAAAA;gCAAWzB,IAAK,EAAA;;sCACxD/B,aAAc,CAAA;gCACbkB,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFL,GAACyC,CAAAA,kBAAAA,EAAAA;4BAAmBnD,KAAM,EAAA,IAAA;AAAK0B,4BAAAA,SAAAA,gBAAWhB,GAAC2C,CAAAA,UAAAA,EAAAA;gCAAW1B,IAAK,EAAA;;sCACxD/B,aAAc,CAAA;gCACbkB,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFL,GAACyC,CAAAA,kBAAAA,EAAAA;4BAAmBnD,KAAM,EAAA,IAAA;AAAK0B,4BAAAA,SAAAA,gBAAWhB,GAAC4C,CAAAA,YAAAA,EAAAA;gCAAa3B,IAAK,EAAA;;sCAC1D/B,aAAc,CAAA;gCACbkB,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFL,GAACyC,CAAAA,kBAAAA,EAAAA;4BAAmBnD,KAAM,EAAA,IAAA;AAAK0B,4BAAAA,SAAAA,gBAAWhB,GAAC6C,CAAAA,WAAAA,EAAAA;gCAAY5B,IAAK,EAAA;;sCACzD/B,aAAc,CAAA;gCACbkB,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFL,GAACyC,CAAAA,kBAAAA,EAAAA;4BAAmBnD,KAAM,EAAA,IAAA;AAAK0B,4BAAAA,SAAAA,gBAAWhB,GAAC8C,CAAAA,WAAAA,EAAAA;gCAAY7B,IAAK,EAAA;;sCACzD/B,aAAc,CAAA;gCACbkB,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;sCAEFL,GAACyC,CAAAA,kBAAAA,EAAAA;4BAAmBnD,KAAM,EAAA,IAAA;AAAK0B,4BAAAA,SAAAA,gBAAWhB,GAAC+C,CAAAA,UAAAA,EAAAA;gCAAW9B,IAAK,EAAA;;sCACxD/B,aAAc,CAAA;gCACbkB,EAAI,EAAA,qCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;0BAINP,IAACqB,CAAAA,IAAAA,EAAAA;gBAAKc,KAAM,EAAA,MAAA;gBAAOF,cAAe,EAAA,eAAA;gBAAgBiB,QAAS,EAAA,QAAA;;kCACzDhD,GAACmB,CAAAA,IAAAA,EAAAA;wBAAKE,GAAK,EAAA,CAAA;wBAAG2B,QAAS,EAAA,QAAA;wBAASf,KAAM,EAAA,MAAA;AACpC,wBAAA,QAAA,gBAAAjC,GAACiD,CAAAA,qBAAAA,EAAAA;4BACCC,kBAAmB,EAAA,UAAA;4BACnBtD,kBAAoBA,EAAAA;;;AAIvBX,oBAAAA,mBAAAA,kBACCe,GAACmD,CAAAA,MAAAA,EAAAA;wBAAOjD,OAASjB,EAAAA,mBAAAA;wBAAqBmE,OAAQ,EAAA,UAAA;wBAAWC,QAAS,EAAA,OAAA;AAC/DtE,wBAAAA,QAAAA,EAAAA,aAAAA,GACGG,aAAc,CAAA;4BACZkB,EAAI,EAAA,6CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA,CAAA,GACAnB,aAAc,CAAA;4BACZkB,EAAI,EAAA,4CAAA;4BACJC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAMhB;;;;"}
1
+ {"version":3,"file":"WysiwygNav.mjs","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useIsMobile } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Flex,\n IconButton,\n IconButtonGroup,\n SingleSelectOption,\n SingleSelect,\n Field,\n Menu,\n} from '@strapi/design-system';\nimport {\n Bold,\n BulletList,\n Code,\n Italic,\n Link,\n NumberList,\n Image,\n Quotes,\n StrikeThrough,\n Underline,\n HeadingOne,\n HeadingTwo,\n HeadingThree,\n HeadingFour,\n HeadingFive,\n HeadingSix,\n} from '@strapi/icons';\nimport { EditorFromTextArea } from 'codemirror5';\nimport { useIntl } from 'react-intl';\n\nimport { EditorToolbarObserver, type ObservedComponent } from '../../EditorToolbarObserver';\n\nimport { listHandler, markdownHandler, quoteAndCodeHandler, titleHandler } from './utils/utils';\n\ninterface WysiwygNavProps {\n disabled?: boolean;\n editorRef: React.MutableRefObject<EditorFromTextArea>;\n isExpandMode?: boolean;\n isPreviewMode?: boolean;\n onToggleMediaLib: () => void;\n onTogglePreviewMode?: () => void;\n}\n\ninterface WysiwygPreviewToggleButtonProps {\n isPreviewMode?: boolean;\n onTogglePreviewMode: () => void;\n}\n\nconst WysiwygPreviewToggleButton = ({\n isPreviewMode,\n onTogglePreviewMode,\n}: WysiwygPreviewToggleButtonProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Button onClick={onTogglePreviewMode} variant=\"tertiary\" minWidth=\"132px\">\n {isPreviewMode\n ? formatMessage({\n id: 'components.Wysiwyg.ToggleMode.markdown-mode',\n defaultMessage: 'Markdown mode',\n })\n : formatMessage({\n id: 'components.Wysiwyg.ToggleMode.preview-mode',\n defaultMessage: 'Preview mode',\n })}\n </Button>\n );\n};\n\n/**\n * TODO: refactor this mess.\n */\nconst WysiwygNav = ({\n disabled,\n editorRef,\n isPreviewMode,\n onToggleMediaLib,\n onTogglePreviewMode,\n}: WysiwygNavProps) => {\n const { formatMessage } = useIntl();\n const isMobile = useIsMobile();\n const isDisabled = disabled || isPreviewMode;\n\n const handleActionClick = (\n value: string,\n currentEditorRef: React.MutableRefObject<EditorFromTextArea>\n ) => {\n switch (value) {\n case 'Link': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'Code':\n case 'Quote': {\n quoteAndCodeHandler(currentEditorRef, value);\n break;\n }\n case 'Bold':\n case 'Italic':\n case 'Underline':\n case 'Strikethrough': {\n markdownHandler(currentEditorRef, value);\n break;\n }\n case 'BulletList':\n case 'NumberList': {\n listHandler(currentEditorRef, value);\n break;\n }\n case 'h1':\n case 'h2':\n case 'h3':\n case 'h4':\n case 'h5':\n case 'h6': {\n titleHandler(currentEditorRef, value);\n break;\n }\n default: {\n // Nothing\n }\n }\n };\n\n const observedComponents: ObservedComponent[] = [\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Bold', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n >\n <Bold />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Italic', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n >\n <Italic />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Underline', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n >\n <Underline />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Strikethrough', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n name={formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n >\n <StrikeThrough />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Bold fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Bold', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.bold',\n defaultMessage: 'Bold',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Italic fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Italic', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.italic',\n defaultMessage: 'Italic',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Underline fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Underline', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.underline',\n defaultMessage: 'Underline',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<StrikeThrough fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Strikethrough', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.modifiers.strikethrough',\n defaultMessage: 'Strikethrough',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-1',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('BulletList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.bulletList',\n defaultMessage: 'Bulleted list',\n })}\n >\n <BulletList />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('NumberList', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.numberList',\n defaultMessage: 'Numbered list',\n })}\n >\n <NumberList />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<BulletList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('BulletList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.unorderedList',\n defaultMessage: 'Bulleted list',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<NumberList fill=\"neutral500\" />}\n onSelect={() => handleActionClick('NumberList', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.orderedList',\n defaultMessage: 'Numbered list',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-2',\n },\n {\n toolbar: (\n <IconButtonGroup>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Code', editorRef)}\n label={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n name={formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n >\n <Code />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => {\n onToggleMediaLib();\n }}\n label={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n >\n <Image />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Link', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n name={formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n >\n <Link />\n </IconButton>\n <IconButton\n disabled={isDisabled}\n onClick={() => handleActionClick('Quote', editorRef)}\n label={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n name={formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n >\n <Quotes />\n </IconButton>\n </IconButtonGroup>\n ),\n menu: (\n <>\n <Menu.Separator />\n <Menu.Item\n startIcon={<Code fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Code', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Wysiwyg.blocks.code',\n defaultMessage: 'Code',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Image fill=\"neutral500\" />}\n onSelect={() => {\n onToggleMediaLib();\n }}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.image',\n defaultMessage: 'Image',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Link fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Link', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.popover.link',\n defaultMessage: 'Link',\n })}\n </Flex>\n </Menu.Item>\n <Menu.Item\n startIcon={<Quotes fill=\"neutral500\" />}\n onSelect={() => handleActionClick('Quote', editorRef)}\n disabled={isDisabled}\n >\n <Flex tag=\"span\" gap={2}>\n {formatMessage({\n id: 'components.Blocks.blocks.quote',\n defaultMessage: 'Quote',\n })}\n </Flex>\n </Menu.Item>\n </>\n ),\n key: 'formatting-group-3',\n },\n ];\n\n return (\n <Flex\n padding={2}\n background=\"neutral100\"\n justifyContent=\"space-between\"\n borderRadius=\"0.4rem 0.4rem 0 0\"\n width=\"100%\"\n gap={{ initial: 3, medium: 4 }}\n >\n <Field.Root>\n <SingleSelect\n disabled={isDisabled}\n placeholder={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n aria-label={formatMessage({\n id: 'components.Wysiwyg.selectOptions.title',\n defaultMessage: 'Headings',\n })}\n // @ts-expect-error – DS v2 will only allow strings.\n onChange={(value) => handleActionClick(value, editorRef)}\n size=\"S\"\n >\n <SingleSelectOption value=\"h1\" startIcon={<HeadingOne fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H1',\n defaultMessage: 'Heading 1',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h2\" startIcon={<HeadingTwo fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H2',\n defaultMessage: 'Heading 2',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h3\" startIcon={<HeadingThree fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H3',\n defaultMessage: 'Heading 3',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h4\" startIcon={<HeadingFour fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H4',\n defaultMessage: 'Heading 4',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h5\" startIcon={<HeadingFive fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H5',\n defaultMessage: 'Heading 5',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"h6\" startIcon={<HeadingSix fill=\"neutral500\" />}>\n {formatMessage({\n id: 'components.Wysiwyg.selectOptions.H6',\n defaultMessage: 'Heading 6',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n <Flex width=\"100%\" justifyContent=\"space-between\" overflow=\"hidden\">\n <Flex\n gap={{ initial: 3, medium: 2 }}\n overflow=\"hidden\"\n width=\"100%\"\n data-hide-toolbar-separator=\"true\"\n >\n <EditorToolbarObserver\n menuTriggerVariant=\"tertiary\"\n observedComponents={observedComponents}\n />\n </Flex>\n\n {onTogglePreviewMode && !isMobile && (\n <WysiwygPreviewToggleButton\n isPreviewMode={isPreviewMode}\n onTogglePreviewMode={onTogglePreviewMode}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport { WysiwygNav, WysiwygPreviewToggleButton };\nexport type { WysiwygNavProps, WysiwygPreviewToggleButtonProps };\n"],"names":["WysiwygPreviewToggleButton","isPreviewMode","onTogglePreviewMode","formatMessage","useIntl","_jsx","Button","onClick","variant","minWidth","id","defaultMessage","WysiwygNav","disabled","editorRef","onToggleMediaLib","isMobile","useIsMobile","isDisabled","handleActionClick","value","currentEditorRef","markdownHandler","quoteAndCodeHandler","listHandler","titleHandler","observedComponents","toolbar","_jsxs","IconButtonGroup","IconButton","label","name","Bold","Italic","Underline","StrikeThrough","menu","_Fragment","Menu","Separator","Item","startIcon","fill","onSelect","Flex","tag","gap","key","BulletList","NumberList","Code","Image","Link","Quotes","padding","background","justifyContent","borderRadius","width","initial","medium","Field","Root","SingleSelect","placeholder","aria-label","onChange","size","SingleSelectOption","HeadingOne","HeadingTwo","HeadingThree","HeadingFour","HeadingFive","HeadingSix","overflow","data-hide-toolbar-separator","EditorToolbarObserver","menuTriggerVariant"],"mappings":"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"}
@@ -30,15 +30,39 @@ function _interopNamespaceDefault(e) {
30
30
 
31
31
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
32
 
33
+ const PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength })=>{
34
+ React__namespace.useEffect(()=>{
35
+ if (setVisiblePanels && visiblePanelsLength !== panels.length) {
36
+ setVisiblePanels(panels);
37
+ }
38
+ }, [
39
+ panels,
40
+ panels.length,
41
+ setVisiblePanels,
42
+ visiblePanelsLength
43
+ ]);
44
+ return /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
45
+ children: panels.map(({ content, id, ...description })=>/*#__PURE__*/ jsxRuntime.jsx(Panel, {
46
+ ...description,
47
+ children: content
48
+ }, id))
49
+ });
50
+ };
33
51
  /* -------------------------------------------------------------------------------------------------
34
52
  * Panels
35
- * -----------------------------------------------------------------------------------------------*/ const Panels = ()=>{
53
+ * -----------------------------------------------------------------------------------------------*/ const Panels = ({ withActions = true })=>{
36
54
  const isCloning = reactRouterDom.useMatch(router.CLONE_PATH) !== null;
37
55
  const [{ query: { status } }] = strapiAdmin.useQueryParams({
38
56
  status: 'draft'
39
57
  });
40
58
  const { model, id, document, meta, collectionType } = useDocument.useDoc();
41
59
  const plugins = strapiAdmin.useStrapiApp('Panels', (state)=>state.plugins);
60
+ // Optional context consumer
61
+ const setVisiblePanels = usePanelsContext('Panels', (s)=>s.setVisiblePanels, false);
62
+ const visiblePanels = usePanelsContext('Panels', (s)=>s.visiblePanels, false);
63
+ const allPanels = plugins['content-manager'].apis.getEditViewSidePanels();
64
+ const filteredPanels = allPanels.filter((panel)=>panel.type !== 'actions');
65
+ const panelsToDisplay = withActions ? allPanels : filteredPanels;
42
66
  const props = {
43
67
  activeTab: status,
44
68
  model,
@@ -53,11 +77,12 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
53
77
  gap: 2,
54
78
  children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.DescriptionComponentRenderer, {
55
79
  props: props,
56
- descriptions: plugins['content-manager'].apis.getEditViewSidePanels(),
57
- children: (panels)=>panels.map(({ content, id, ...description })=>/*#__PURE__*/ jsxRuntime.jsx(Panel, {
58
- ...description,
59
- children: content
60
- }, id))
80
+ descriptions: panelsToDisplay,
81
+ children: (panels)=>/*#__PURE__*/ jsxRuntime.jsx(PanelsItems, {
82
+ panels: panels,
83
+ setVisiblePanels: setVisiblePanels,
84
+ visiblePanelsLength: visiblePanels?.length
85
+ })
61
86
  })
62
87
  });
63
88
  };
@@ -107,19 +132,32 @@ const ActionsPanelContent = ()=>{
107
132
  });
108
133
  };
109
134
  const Panel = /*#__PURE__*/ React__namespace.forwardRef(({ children, title }, ref)=>{
135
+ const isDesktop = strapiAdmin.useIsDesktop();
110
136
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
111
137
  ref: ref,
112
138
  tag: "aside",
113
139
  "aria-labelledby": "additional-information",
114
- background: "neutral0",
115
- borderColor: "neutral150",
116
- hasRadius: true,
117
- paddingBottom: 4,
118
- paddingLeft: 4,
119
- paddingRight: 4,
120
- paddingTop: 4,
121
- shadow: "tableShadow",
122
- gap: 3,
140
+ background: {
141
+ initial: 'transparent',
142
+ large: 'neutral0'
143
+ },
144
+ borderColor: {
145
+ initial: 'transparent',
146
+ large: 'neutral150'
147
+ },
148
+ hasRadius: isDesktop,
149
+ padding: {
150
+ initial: 0,
151
+ large: 4
152
+ },
153
+ shadow: {
154
+ initial: 'none',
155
+ large: 'tableShadow'
156
+ },
157
+ gap: {
158
+ initial: 4,
159
+ large: 3
160
+ },
123
161
  direction: "column",
124
162
  justifyContent: "stretch",
125
163
  alignItems: "flex-start",
@@ -135,7 +173,21 @@ const Panel = /*#__PURE__*/ React__namespace.forwardRef(({ children, title }, re
135
173
  ]
136
174
  });
137
175
  });
176
+ /* -------------------------------------------------------------------------------------------------
177
+ * PanelsContext
178
+ * -----------------------------------------------------------------------------------------------*/ const [PanelsProviderImpl, usePanelsContext] = strapiAdmin.createContext('PanelsContext');
179
+ const PanelsProvider = ({ children })=>{
180
+ const [visiblePanels, setVisiblePanels] = React__namespace.useState([]);
181
+ return /*#__PURE__*/ jsxRuntime.jsx(PanelsProviderImpl, {
182
+ visiblePanels: visiblePanels,
183
+ setVisiblePanels: setVisiblePanels,
184
+ children: children
185
+ });
186
+ };
138
187
 
139
188
  exports.ActionsPanel = ActionsPanel;
189
+ exports.ActionsPanelContent = ActionsPanelContent;
140
190
  exports.Panels = Panels;
191
+ exports.PanelsProvider = PanelsProvider;
192
+ exports.usePanelsContext = usePanelsContext;
141
193
  //# sourceMappingURL=Panels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Panels.js","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels()}\n >\n {(panels) =>\n panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))\n }\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n hasRadius\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={4}\n shadow=\"tableShadow\"\n gap={3}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\nexport { Panels, ActionsPanel };\nexport type { PanelDescription };\n"],"names":["Panels","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","id","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","undefined","_jsx","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","apis","getEditViewSidePanels","panels","map","content","description","Panel","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","type","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","React","forwardRef","children","ref","tag","aria-labelledby","background","borderColor","hasRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","shadow","justifyContent","Typography","variant","textTransform","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"Panels.js","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n useIsDesktop,\n createContext,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\ninterface PanelsItemsProps {\n panels: (PanelDescription & { id: string })[];\n setVisiblePanels:\n | React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>\n | null\n | undefined;\n visiblePanelsLength: number | undefined;\n}\n\nconst PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength }: PanelsItemsProps) => {\n React.useEffect(() => {\n if (setVisiblePanels && visiblePanelsLength !== panels.length) {\n setVisiblePanels(panels);\n }\n }, [panels, panels.length, setVisiblePanels, visiblePanelsLength]);\n\n return (\n <>\n {panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = ({ withActions = true }: { withActions?: boolean }) => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n // Optional context consumer\n const setVisiblePanels = usePanelsContext('Panels', (s) => s.setVisiblePanels, false);\n const visiblePanels = usePanelsContext('Panels', (s) => s.visiblePanels, false);\n\n const allPanels = (\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels();\n const filteredPanels = allPanels.filter((panel) => (panel as PanelComponent).type !== 'actions');\n const panelsToDisplay = withActions ? allPanels : filteredPanels;\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer props={props} descriptions={panelsToDisplay}>\n {(panels) => (\n <PanelsItems\n panels={panels}\n setVisiblePanels={setVisiblePanels}\n visiblePanelsLength={visiblePanels?.length}\n />\n )}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n const isDesktop = useIsDesktop();\n\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background={{ initial: 'transparent', large: 'neutral0' }}\n borderColor={{ initial: 'transparent', large: 'neutral150' }}\n hasRadius={isDesktop}\n padding={{ initial: 0, large: 4 }}\n shadow={{ initial: 'none', large: 'tableShadow' }}\n gap={{ initial: 4, large: 3 }}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * PanelsContext\n * -----------------------------------------------------------------------------------------------*/\n\nconst [PanelsProviderImpl, usePanelsContext] = createContext<{\n visiblePanels: (PanelDescription & { id: string })[];\n setVisiblePanels: React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>;\n}>('PanelsContext');\n\nconst PanelsProvider = ({ children }: React.PropsWithChildren) => {\n const [visiblePanels, setVisiblePanels] = React.useState<(PanelDescription & { id: string })[]>(\n []\n );\n\n return (\n <PanelsProviderImpl visiblePanels={visiblePanels} setVisiblePanels={setVisiblePanels}>\n {children}\n </PanelsProviderImpl>\n );\n};\n\nexport { Panels, ActionsPanel, ActionsPanelContent, PanelsProvider, usePanelsContext };\nexport type { PanelDescription };\n"],"names":["PanelsItems","panels","setVisiblePanels","visiblePanelsLength","React","useEffect","length","_jsx","_Fragment","map","content","id","description","Panel","Panels","withActions","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","usePanelsContext","s","visiblePanels","allPanels","apis","getEditViewSidePanels","filteredPanels","filter","panel","type","panelsToDisplay","props","activeTab","documentId","undefined","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","forwardRef","children","ref","isDesktop","useIsDesktop","tag","aria-labelledby","background","initial","large","borderColor","hasRadius","padding","shadow","justifyContent","Typography","variant","textTransform","textColor","PanelsProviderImpl","createContext","PanelsProvider","useState"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useQueryParams, useStrapiApp, DescriptionComponentRenderer } from '@strapi/admin/strapi-admin';
3
+ import { createContext, useQueryParams, useStrapiApp, DescriptionComponentRenderer, useIsDesktop } from '@strapi/admin/strapi-admin';
4
4
  import { Flex, Typography } from '@strapi/design-system';
5
5
  import { useIntl } from 'react-intl';
6
6
  import { useMatch } from 'react-router-dom';
@@ -9,15 +9,39 @@ import { useDoc } from '../../../hooks/useDocument.mjs';
9
9
  import { CLONE_PATH } from '../../../router.mjs';
10
10
  import { DocumentActions } from './DocumentActions.mjs';
11
11
 
12
+ const PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength })=>{
13
+ React.useEffect(()=>{
14
+ if (setVisiblePanels && visiblePanelsLength !== panels.length) {
15
+ setVisiblePanels(panels);
16
+ }
17
+ }, [
18
+ panels,
19
+ panels.length,
20
+ setVisiblePanels,
21
+ visiblePanelsLength
22
+ ]);
23
+ return /*#__PURE__*/ jsx(Fragment, {
24
+ children: panels.map(({ content, id, ...description })=>/*#__PURE__*/ jsx(Panel, {
25
+ ...description,
26
+ children: content
27
+ }, id))
28
+ });
29
+ };
12
30
  /* -------------------------------------------------------------------------------------------------
13
31
  * Panels
14
- * -----------------------------------------------------------------------------------------------*/ const Panels = ()=>{
32
+ * -----------------------------------------------------------------------------------------------*/ const Panels = ({ withActions = true })=>{
15
33
  const isCloning = useMatch(CLONE_PATH) !== null;
16
34
  const [{ query: { status } }] = useQueryParams({
17
35
  status: 'draft'
18
36
  });
19
37
  const { model, id, document, meta, collectionType } = useDoc();
20
38
  const plugins = useStrapiApp('Panels', (state)=>state.plugins);
39
+ // Optional context consumer
40
+ const setVisiblePanels = usePanelsContext('Panels', (s)=>s.setVisiblePanels, false);
41
+ const visiblePanels = usePanelsContext('Panels', (s)=>s.visiblePanels, false);
42
+ const allPanels = plugins['content-manager'].apis.getEditViewSidePanels();
43
+ const filteredPanels = allPanels.filter((panel)=>panel.type !== 'actions');
44
+ const panelsToDisplay = withActions ? allPanels : filteredPanels;
21
45
  const props = {
22
46
  activeTab: status,
23
47
  model,
@@ -32,11 +56,12 @@ import { DocumentActions } from './DocumentActions.mjs';
32
56
  gap: 2,
33
57
  children: /*#__PURE__*/ jsx(DescriptionComponentRenderer, {
34
58
  props: props,
35
- descriptions: plugins['content-manager'].apis.getEditViewSidePanels(),
36
- children: (panels)=>panels.map(({ content, id, ...description })=>/*#__PURE__*/ jsx(Panel, {
37
- ...description,
38
- children: content
39
- }, id))
59
+ descriptions: panelsToDisplay,
60
+ children: (panels)=>/*#__PURE__*/ jsx(PanelsItems, {
61
+ panels: panels,
62
+ setVisiblePanels: setVisiblePanels,
63
+ visiblePanelsLength: visiblePanels?.length
64
+ })
40
65
  })
41
66
  });
42
67
  };
@@ -86,19 +111,32 @@ const ActionsPanelContent = ()=>{
86
111
  });
87
112
  };
88
113
  const Panel = /*#__PURE__*/ React.forwardRef(({ children, title }, ref)=>{
114
+ const isDesktop = useIsDesktop();
89
115
  return /*#__PURE__*/ jsxs(Flex, {
90
116
  ref: ref,
91
117
  tag: "aside",
92
118
  "aria-labelledby": "additional-information",
93
- background: "neutral0",
94
- borderColor: "neutral150",
95
- hasRadius: true,
96
- paddingBottom: 4,
97
- paddingLeft: 4,
98
- paddingRight: 4,
99
- paddingTop: 4,
100
- shadow: "tableShadow",
101
- gap: 3,
119
+ background: {
120
+ initial: 'transparent',
121
+ large: 'neutral0'
122
+ },
123
+ borderColor: {
124
+ initial: 'transparent',
125
+ large: 'neutral150'
126
+ },
127
+ hasRadius: isDesktop,
128
+ padding: {
129
+ initial: 0,
130
+ large: 4
131
+ },
132
+ shadow: {
133
+ initial: 'none',
134
+ large: 'tableShadow'
135
+ },
136
+ gap: {
137
+ initial: 4,
138
+ large: 3
139
+ },
102
140
  direction: "column",
103
141
  justifyContent: "stretch",
104
142
  alignItems: "flex-start",
@@ -114,6 +152,17 @@ const Panel = /*#__PURE__*/ React.forwardRef(({ children, title }, ref)=>{
114
152
  ]
115
153
  });
116
154
  });
155
+ /* -------------------------------------------------------------------------------------------------
156
+ * PanelsContext
157
+ * -----------------------------------------------------------------------------------------------*/ const [PanelsProviderImpl, usePanelsContext] = createContext('PanelsContext');
158
+ const PanelsProvider = ({ children })=>{
159
+ const [visiblePanels, setVisiblePanels] = React.useState([]);
160
+ return /*#__PURE__*/ jsx(PanelsProviderImpl, {
161
+ visiblePanels: visiblePanels,
162
+ setVisiblePanels: setVisiblePanels,
163
+ children: children
164
+ });
165
+ };
117
166
 
118
- export { ActionsPanel, Panels };
167
+ export { ActionsPanel, ActionsPanelContent, Panels, PanelsProvider, usePanelsContext };
119
168
  //# sourceMappingURL=Panels.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Panels.mjs","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels()}\n >\n {(panels) =>\n panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))\n }\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n hasRadius\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={4}\n shadow=\"tableShadow\"\n gap={3}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\nexport { Panels, ActionsPanel };\nexport type { PanelDescription };\n"],"names":["Panels","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","id","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","props","activeTab","documentId","undefined","_jsx","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","apis","getEditViewSidePanels","panels","map","content","description","Panel","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","type","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","React","forwardRef","children","ref","tag","aria-labelledby","background","borderColor","hasRadius","paddingBottom","paddingLeft","paddingRight","paddingTop","shadow","justifyContent","Typography","variant","textTransform","textColor"],"mappings":"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"}
1
+ {"version":3,"file":"Panels.mjs","sources":["../../../../../admin/src/pages/EditView/components/Panels.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n useIsDesktop,\n createContext,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\ninterface PanelsItemsProps {\n panels: (PanelDescription & { id: string })[];\n setVisiblePanels:\n | React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>\n | null\n | undefined;\n visiblePanelsLength: number | undefined;\n}\n\nconst PanelsItems = ({ panels, setVisiblePanels, visiblePanelsLength }: PanelsItemsProps) => {\n React.useEffect(() => {\n if (setVisiblePanels && visiblePanelsLength !== panels.length) {\n setVisiblePanels(panels);\n }\n }, [panels, panels.length, setVisiblePanels, visiblePanelsLength]);\n\n return (\n <>\n {panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = ({ withActions = true }: { withActions?: boolean }) => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n // Optional context consumer\n const setVisiblePanels = usePanelsContext('Panels', (s) => s.setVisiblePanels, false);\n const visiblePanels = usePanelsContext('Panels', (s) => s.visiblePanels, false);\n\n const allPanels = (\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels();\n const filteredPanels = allPanels.filter((panel) => (panel as PanelComponent).type !== 'actions');\n const panelsToDisplay = withActions ? allPanels : filteredPanels;\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer props={props} descriptions={panelsToDisplay}>\n {(panels) => (\n <PanelsItems\n panels={panels}\n setVisiblePanels={setVisiblePanels}\n visiblePanelsLength={visiblePanels?.length}\n />\n )}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n const isDesktop = useIsDesktop();\n\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background={{ initial: 'transparent', large: 'neutral0' }}\n borderColor={{ initial: 'transparent', large: 'neutral150' }}\n hasRadius={isDesktop}\n padding={{ initial: 0, large: 4 }}\n shadow={{ initial: 'none', large: 'tableShadow' }}\n gap={{ initial: 4, large: 3 }}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * PanelsContext\n * -----------------------------------------------------------------------------------------------*/\n\nconst [PanelsProviderImpl, usePanelsContext] = createContext<{\n visiblePanels: (PanelDescription & { id: string })[];\n setVisiblePanels: React.Dispatch<React.SetStateAction<(PanelDescription & { id: string })[]>>;\n}>('PanelsContext');\n\nconst PanelsProvider = ({ children }: React.PropsWithChildren) => {\n const [visiblePanels, setVisiblePanels] = React.useState<(PanelDescription & { id: string })[]>(\n []\n );\n\n return (\n <PanelsProviderImpl visiblePanels={visiblePanels} setVisiblePanels={setVisiblePanels}>\n {children}\n </PanelsProviderImpl>\n );\n};\n\nexport { Panels, ActionsPanel, ActionsPanelContent, PanelsProvider, usePanelsContext };\nexport type { PanelDescription };\n"],"names":["PanelsItems","panels","setVisiblePanels","visiblePanelsLength","React","useEffect","length","_jsx","_Fragment","map","content","id","description","Panel","Panels","withActions","isCloning","useMatch","CLONE_PATH","query","status","useQueryParams","model","document","meta","collectionType","useDoc","plugins","useStrapiApp","state","usePanelsContext","s","visiblePanels","allPanels","apis","getEditViewSidePanels","filteredPanels","filter","panel","type","panelsToDisplay","props","activeTab","documentId","undefined","Flex","direction","alignItems","gap","DescriptionComponentRenderer","descriptions","ActionsPanel","formatMessage","useIntl","title","defaultMessage","ActionsPanelContent","_jsxs","width","getDocumentActions","actions","DocumentActions","InjectionZone","area","slug","forwardRef","children","ref","isDesktop","useIsDesktop","tag","aria-labelledby","background","initial","large","borderColor","hasRadius","padding","shadow","justifyContent","Typography","variant","textTransform","textColor","PanelsProviderImpl","createContext","PanelsProvider","useState"],"mappings":"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"}
@@ -86,7 +86,7 @@ const ListViewPage = ()=>{
86
86
  const params = React__namespace.useMemo(()=>api.buildValidParams(query), [
87
87
  query
88
88
  ]);
89
- const { data, error, isFetching } = documents.useGetAllDocumentsQuery({
89
+ const { data, error, isLoading, isFetching } = documents.useGetAllDocumentsQuery({
90
90
  model,
91
91
  params
92
92
  });
@@ -172,7 +172,7 @@ const ListViewPage = ()=>{
172
172
  schema?.options?.draftAndPublish,
173
173
  model
174
174
  ]);
175
- if (isFetching) {
175
+ if (isLoading) {
176
176
  return /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {});
177
177
  }
178
178
  if (error) {