@strapi/content-manager 5.11.0 → 5.12.0-beta.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 (105) hide show
  1. package/dist/admin/chunks/{ComponentConfigurationPage-BBCYsnnE.js → ComponentConfigurationPage-CBvwLnAK.js} +5 -6
  2. package/dist/admin/chunks/{ComponentConfigurationPage-BBCYsnnE.js.map → ComponentConfigurationPage-CBvwLnAK.js.map} +1 -1
  3. package/dist/admin/chunks/{ComponentConfigurationPage-DNBN8tI3.mjs → ComponentConfigurationPage-w_ss7xEy.mjs} +5 -6
  4. package/dist/admin/chunks/{ComponentConfigurationPage-DNBN8tI3.mjs.map → ComponentConfigurationPage-w_ss7xEy.mjs.map} +1 -1
  5. package/dist/admin/chunks/{EditConfigurationPage-Cu0Vt-uc.js → EditConfigurationPage-CbAhYSyH.js} +5 -6
  6. package/dist/admin/chunks/{EditConfigurationPage-Cu0Vt-uc.js.map → EditConfigurationPage-CbAhYSyH.js.map} +1 -1
  7. package/dist/admin/chunks/{EditConfigurationPage-CoivzF-x.mjs → EditConfigurationPage-D1iHIzSR.mjs} +5 -6
  8. package/dist/admin/chunks/{EditConfigurationPage-CoivzF-x.mjs.map → EditConfigurationPage-D1iHIzSR.mjs.map} +1 -1
  9. package/dist/admin/chunks/{EditViewPage-BpGtaOKG.mjs → EditViewPage-BtunY0ZP.mjs} +102 -95
  10. package/dist/admin/chunks/EditViewPage-BtunY0ZP.mjs.map +1 -0
  11. package/dist/admin/chunks/{EditViewPage-B48r4DLX.js → EditViewPage-Cf_TPJZd.js} +102 -95
  12. package/dist/admin/chunks/EditViewPage-Cf_TPJZd.js.map +1 -0
  13. package/dist/admin/chunks/{Form-rQQtxfmF.mjs → Form-DsvK3WTh.mjs} +3 -3
  14. package/dist/admin/chunks/{Form-rQQtxfmF.mjs.map → Form-DsvK3WTh.mjs.map} +1 -1
  15. package/dist/admin/chunks/{Form-DD49gSWW.js → Form-UMrizqJP.js} +5 -5
  16. package/dist/admin/chunks/{Form-DD49gSWW.js.map → Form-UMrizqJP.js.map} +1 -1
  17. package/dist/admin/chunks/{History-RLJ9Svg6.js → History-Crvb_hzd.js} +17 -13
  18. package/dist/admin/chunks/History-Crvb_hzd.js.map +1 -0
  19. package/dist/admin/chunks/{History-BdsTgpW-.mjs → History-DsRVSUF7.mjs} +16 -12
  20. package/dist/admin/chunks/History-DsRVSUF7.mjs.map +1 -0
  21. package/dist/admin/chunks/{Input-BUVu6H9n.js → Input-C2r54bIL.js} +1327 -64
  22. package/dist/admin/chunks/Input-C2r54bIL.js.map +1 -0
  23. package/dist/admin/chunks/{Input-CtIJ2J0c.mjs → Input-D6obstp0.mjs} +1315 -55
  24. package/dist/admin/chunks/Input-D6obstp0.mjs.map +1 -0
  25. package/dist/admin/chunks/{ListConfigurationPage-38s4e-VJ.mjs → ListConfigurationPage-DW-wAwmW.mjs} +4 -5
  26. package/dist/admin/chunks/{ListConfigurationPage-38s4e-VJ.mjs.map → ListConfigurationPage-DW-wAwmW.mjs.map} +1 -1
  27. package/dist/admin/chunks/{ListConfigurationPage-DfnrA3dw.js → ListConfigurationPage-DlQ2pLyr.js} +6 -7
  28. package/dist/admin/chunks/{ListConfigurationPage-DfnrA3dw.js.map → ListConfigurationPage-DlQ2pLyr.js.map} +1 -1
  29. package/dist/admin/chunks/{ListViewPage-BTmlktgT.mjs → ListViewPage-DcUhPA9a.mjs} +3 -4
  30. package/dist/admin/chunks/{ListViewPage-BTmlktgT.mjs.map → ListViewPage-DcUhPA9a.mjs.map} +1 -1
  31. package/dist/admin/chunks/{ListViewPage-D9-LGPq_.js → ListViewPage-nJJ227Fo.js} +7 -8
  32. package/dist/admin/chunks/{ListViewPage-D9-LGPq_.js.map → ListViewPage-nJJ227Fo.js.map} +1 -1
  33. package/dist/admin/chunks/{NoContentTypePage-owzdv-pl.js → NoContentTypePage-Cxt-uFq7.js} +2 -2
  34. package/dist/admin/chunks/{NoContentTypePage-owzdv-pl.js.map → NoContentTypePage-Cxt-uFq7.js.map} +1 -1
  35. package/dist/admin/chunks/{NoContentTypePage-CcyR2i1K.mjs → NoContentTypePage-DbRXR2cr.mjs} +2 -2
  36. package/dist/admin/chunks/{NoContentTypePage-CcyR2i1K.mjs.map → NoContentTypePage-DbRXR2cr.mjs.map} +1 -1
  37. package/dist/admin/chunks/{NoPermissionsPage-CM_r8w5u.js → NoPermissionsPage-BeMTv_SG.js} +2 -2
  38. package/dist/admin/chunks/{NoPermissionsPage-CM_r8w5u.js.map → NoPermissionsPage-BeMTv_SG.js.map} +1 -1
  39. package/dist/admin/chunks/{NoPermissionsPage-lBonAXej.mjs → NoPermissionsPage-RWPwNESA.mjs} +2 -2
  40. package/dist/admin/chunks/{NoPermissionsPage-lBonAXej.mjs.map → NoPermissionsPage-RWPwNESA.mjs.map} +1 -1
  41. package/dist/admin/chunks/{Preview-Bv3GKyWZ.js → Preview-CCjSV5Iu.js} +119 -200
  42. package/dist/admin/chunks/Preview-CCjSV5Iu.js.map +1 -0
  43. package/dist/admin/chunks/{Preview-Dh5Z7aGp.mjs → Preview-aVLT3LM_.mjs} +123 -204
  44. package/dist/admin/chunks/Preview-aVLT3LM_.mjs.map +1 -0
  45. package/dist/admin/chunks/{en-CImiNxXE.mjs → en-C2zEwS3-.mjs} +4 -1
  46. package/dist/admin/chunks/{en-CImiNxXE.mjs.map → en-C2zEwS3-.mjs.map} +1 -1
  47. package/dist/admin/chunks/{en-CLf4SuMQ.js → en-G976DLsg.js} +4 -1
  48. package/dist/admin/chunks/{en-CLf4SuMQ.js.map → en-G976DLsg.js.map} +1 -1
  49. package/dist/admin/chunks/{index-CGBB9Dho.js → index-BA_JLxKS.js} +185 -121
  50. package/dist/admin/chunks/index-BA_JLxKS.js.map +1 -0
  51. package/dist/admin/chunks/{index-BkM_Z7pU.mjs → index-CIOT3ggy.mjs} +184 -123
  52. package/dist/admin/chunks/index-CIOT3ggy.mjs.map +1 -0
  53. package/dist/admin/chunks/{layout-Dbmjk7mC.js → layout-C510xcd6.js} +86 -13
  54. package/dist/admin/chunks/layout-C510xcd6.js.map +1 -0
  55. package/dist/admin/chunks/{layout-D8ji6QNJ.mjs → layout-DjT9cccU.mjs} +78 -5
  56. package/dist/admin/chunks/layout-DjT9cccU.mjs.map +1 -0
  57. package/dist/admin/chunks/{useDragAndDrop-gcqEJMnO.js → objects-BJTP843m.js} +73 -1
  58. package/dist/admin/chunks/objects-BJTP843m.js.map +1 -0
  59. package/dist/admin/chunks/{useDragAndDrop-HYwNDExe.mjs → objects-D2z-IJgu.mjs} +72 -2
  60. package/dist/admin/chunks/objects-D2z-IJgu.mjs.map +1 -0
  61. package/dist/admin/chunks/{relations-jNJK8ESO.js → usePrev-BglKW7a4.js} +18 -2
  62. package/dist/admin/chunks/usePrev-BglKW7a4.js.map +1 -0
  63. package/dist/admin/chunks/{relations-Dv0FHoBS.mjs → usePrev-DAWUYIPh.mjs} +18 -4
  64. package/dist/admin/chunks/usePrev-DAWUYIPh.mjs.map +1 -0
  65. package/dist/admin/index.js +1 -1
  66. package/dist/admin/index.mjs +1 -1
  67. package/dist/admin/src/features/DocumentContext.d.ts +53 -0
  68. package/dist/admin/src/features/DocumentRBAC.d.ts +3 -2
  69. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
  70. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +8 -0
  71. package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +9 -4
  72. package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +8 -3
  73. package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +7 -4
  74. package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
  75. package/dist/admin/src/preview/pages/Preview.d.ts +0 -2
  76. package/package.json +5 -5
  77. package/dist/admin/chunks/EditViewPage-B48r4DLX.js.map +0 -1
  78. package/dist/admin/chunks/EditViewPage-BpGtaOKG.mjs.map +0 -1
  79. package/dist/admin/chunks/History-BdsTgpW-.mjs.map +0 -1
  80. package/dist/admin/chunks/History-RLJ9Svg6.js.map +0 -1
  81. package/dist/admin/chunks/Input-BUVu6H9n.js.map +0 -1
  82. package/dist/admin/chunks/Input-CtIJ2J0c.mjs.map +0 -1
  83. package/dist/admin/chunks/Preview-Bv3GKyWZ.js.map +0 -1
  84. package/dist/admin/chunks/Preview-Dh5Z7aGp.mjs.map +0 -1
  85. package/dist/admin/chunks/Relations-DP5krCGC.mjs +0 -1291
  86. package/dist/admin/chunks/Relations-DP5krCGC.mjs.map +0 -1
  87. package/dist/admin/chunks/Relations-T8Cr0N9M.js +0 -1318
  88. package/dist/admin/chunks/Relations-T8Cr0N9M.js.map +0 -1
  89. package/dist/admin/chunks/index-BkM_Z7pU.mjs.map +0 -1
  90. package/dist/admin/chunks/index-CGBB9Dho.js.map +0 -1
  91. package/dist/admin/chunks/layout-D8ji6QNJ.mjs.map +0 -1
  92. package/dist/admin/chunks/layout-Dbmjk7mC.js.map +0 -1
  93. package/dist/admin/chunks/objects-C3EebVVe.js +0 -76
  94. package/dist/admin/chunks/objects-C3EebVVe.js.map +0 -1
  95. package/dist/admin/chunks/objects-wl73iEma.mjs +0 -73
  96. package/dist/admin/chunks/objects-wl73iEma.mjs.map +0 -1
  97. package/dist/admin/chunks/relations-Dv0FHoBS.mjs.map +0 -1
  98. package/dist/admin/chunks/relations-jNJK8ESO.js.map +0 -1
  99. package/dist/admin/chunks/useDragAndDrop-HYwNDExe.mjs.map +0 -1
  100. package/dist/admin/chunks/useDragAndDrop-gcqEJMnO.js.map +0 -1
  101. package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs +0 -18
  102. package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs.map +0 -1
  103. package/dist/admin/chunks/usePrev-DIYl-IAL.js +0 -21
  104. package/dist/admin/chunks/usePrev-DIYl-IAL.js.map +0 -1
  105. package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
@@ -10,11 +10,11 @@ var reactDnd = require('react-dnd');
10
10
  var CardDragPreview = require('./CardDragPreview-_dubYgXO.js');
11
11
  var Icons = require('@strapi/icons');
12
12
  var styledComponents = require('styled-components');
13
- var index = require('./index-CGBB9Dho.js');
14
- var Relations = require('./Relations-T8Cr0N9M.js');
13
+ var index = require('./index-BA_JLxKS.js');
14
+ var Input = require('./Input-C2r54bIL.js');
15
15
  var qs = require('qs');
16
16
  var hooks = require('./hooks-D-sOYd1s.js');
17
- var useDragAndDrop = require('./useDragAndDrop-gcqEJMnO.js');
17
+ var objects = require('./objects-BJTP843m.js');
18
18
  require('lodash/fp/mapValues');
19
19
  require('yup');
20
20
  require('fractional-indexing');
@@ -22,10 +22,83 @@ require('lodash/fp/pipe');
22
22
  require('date-fns');
23
23
  require('@reduxjs/toolkit');
24
24
  require('prismjs');
25
+ require('slate');
26
+ require('slate-history');
27
+ require('slate-react');
28
+ require('prismjs/themes/prism-solarizedlight.css');
29
+ require('prismjs/components/prism-asmatmel');
30
+ require('prismjs/components/prism-bash');
31
+ require('prismjs/components/prism-basic');
32
+ require('prismjs/components/prism-c');
33
+ require('prismjs/components/prism-clojure');
34
+ require('prismjs/components/prism-cobol');
35
+ require('prismjs/components/prism-cpp');
36
+ require('prismjs/components/prism-csharp');
37
+ require('prismjs/components/prism-dart');
38
+ require('prismjs/components/prism-docker');
39
+ require('prismjs/components/prism-elixir');
40
+ require('prismjs/components/prism-erlang');
41
+ require('prismjs/components/prism-fortran');
42
+ require('prismjs/components/prism-fsharp');
43
+ require('prismjs/components/prism-go');
44
+ require('prismjs/components/prism-graphql');
45
+ require('prismjs/components/prism-groovy');
46
+ require('prismjs/components/prism-haskell');
47
+ require('prismjs/components/prism-haxe');
48
+ require('prismjs/components/prism-ini');
49
+ require('prismjs/components/prism-java');
50
+ require('prismjs/components/prism-javascript');
51
+ require('prismjs/components/prism-jsx');
52
+ require('prismjs/components/prism-json');
53
+ require('prismjs/components/prism-julia');
54
+ require('prismjs/components/prism-kotlin');
55
+ require('prismjs/components/prism-latex');
56
+ require('prismjs/components/prism-lua');
57
+ require('prismjs/components/prism-markdown');
58
+ require('prismjs/components/prism-matlab');
59
+ require('prismjs/components/prism-makefile');
60
+ require('prismjs/components/prism-objectivec');
61
+ require('prismjs/components/prism-perl');
62
+ require('prismjs/components/prism-php');
63
+ require('prismjs/components/prism-powershell');
64
+ require('prismjs/components/prism-python');
65
+ require('prismjs/components/prism-r');
66
+ require('prismjs/components/prism-ruby');
67
+ require('prismjs/components/prism-rust');
68
+ require('prismjs/components/prism-sas');
69
+ require('prismjs/components/prism-scala');
70
+ require('prismjs/components/prism-scheme');
71
+ require('prismjs/components/prism-sql');
72
+ require('prismjs/components/prism-stata');
73
+ require('prismjs/components/prism-swift');
74
+ require('prismjs/components/prism-typescript');
75
+ require('prismjs/components/prism-tsx');
76
+ require('prismjs/components/prism-vbnet');
77
+ require('prismjs/components/prism-yaml');
78
+ require('./usePrev-BglKW7a4.js');
79
+ require('@radix-ui/react-toolbar');
25
80
  require('react-dnd-html5-backend');
81
+ require('./ComponentIcon-C-EjOUPA.js');
82
+ require('@strapi/icons/symbols');
26
83
  require('react-window');
27
- require('./relations-jNJK8ESO.js');
84
+ require('codemirror5');
85
+ require('sanitize-html');
86
+ require('highlight.js');
87
+ require('markdown-it');
88
+ require('markdown-it-abbr');
89
+ require('markdown-it-container');
90
+ require('markdown-it-deflist');
91
+ require('markdown-it-emoji');
92
+ require('markdown-it-footnote');
93
+ require('markdown-it-ins');
94
+ require('markdown-it-mark');
95
+ require('markdown-it-sub');
96
+ require('markdown-it-sup');
97
+ require('highlight.js/styles/solarized-dark.css');
98
+ require('codemirror5/addon/display/placeholder');
28
99
  require('react-redux');
100
+ require('lodash/clone');
101
+ require('lodash/toPath');
29
102
 
30
103
  function _interopNamespaceDefault(e) {
31
104
  var n = Object.create(null);
@@ -178,7 +251,7 @@ const RelationDragPreview = ({ status, displayedValue, width })=>{
178
251
  justifyContent: "space-between",
179
252
  gap: 4,
180
253
  children: [
181
- /*#__PURE__*/ jsxRuntime.jsxs(Relations.FlexWrapper, {
254
+ /*#__PURE__*/ jsxRuntime.jsxs(Input.FlexWrapper, {
182
255
  gap: 1,
183
256
  children: [
184
257
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
@@ -197,7 +270,7 @@ const RelationDragPreview = ({ status, displayedValue, width })=>{
197
270
  paddingTop: 1,
198
271
  paddingBottom: 1,
199
272
  paddingRight: 4,
200
- children: /*#__PURE__*/ jsxRuntime.jsx(Relations.LinkEllipsis, {
273
+ children: /*#__PURE__*/ jsxRuntime.jsx(Input.LinkEllipsis, {
201
274
  href: "",
202
275
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
203
276
  textColor: "primary600",
@@ -213,7 +286,7 @@ const RelationDragPreview = ({ status, displayedValue, width })=>{
213
286
  })
214
287
  ]
215
288
  }),
216
- /*#__PURE__*/ jsxRuntime.jsx(Relations.DisconnectButton, {
289
+ /*#__PURE__*/ jsxRuntime.jsx(Input.DisconnectButton, {
217
290
  type: "button",
218
291
  children: /*#__PURE__*/ jsxRuntime.jsx(Icons.Cross, {
219
292
  width: "12px"
@@ -596,17 +669,17 @@ const generateLinks = (links, type, configurations = [])=>{
596
669
  * first type to apply the correct preview.
597
670
  */ const [actualType] = type.split('_');
598
671
  switch(actualType){
599
- case useDragAndDrop.ItemTypes.EDIT_FIELD:
600
- case useDragAndDrop.ItemTypes.FIELD:
672
+ case objects.ItemTypes.EDIT_FIELD:
673
+ case objects.ItemTypes.FIELD:
601
674
  return /*#__PURE__*/ jsxRuntime.jsx(CardDragPreview.CardDragPreview, {
602
675
  label: item.label
603
676
  });
604
- case useDragAndDrop.ItemTypes.COMPONENT:
605
- case useDragAndDrop.ItemTypes.DYNAMIC_ZONE:
677
+ case objects.ItemTypes.COMPONENT:
678
+ case objects.ItemTypes.DYNAMIC_ZONE:
606
679
  return /*#__PURE__*/ jsxRuntime.jsx(ComponentDragPreview, {
607
680
  displayedValue: item.displayedValue
608
681
  });
609
- case useDragAndDrop.ItemTypes.RELATION:
682
+ case objects.ItemTypes.RELATION:
610
683
  return /*#__PURE__*/ jsxRuntime.jsx(RelationDragPreview, {
611
684
  ...item
612
685
  });
@@ -616,4 +689,4 @@ const generateLinks = (links, type, configurations = [])=>{
616
689
  }
617
690
 
618
691
  exports.Layout = Layout;
619
- //# sourceMappingURL=layout-Dbmjk7mC.js.map
692
+ //# sourceMappingURL=layout-C510xcd6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-C510xcd6.js","sources":["../../../admin/src/components/DragLayer.tsx","../../../admin/src/components/DragPreviews/ComponentDragPreview.tsx","../../../admin/src/components/DragPreviews/RelationDragPreview.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/hooks/useContentManagerInitData.ts","../../../admin/src/layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, FlexComponent, IconButton, Typography } from '@strapi/design-system';\nimport { CaretDown, Drag, Trash } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width=\"30rem\"\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <CaretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth=\"15rem\">\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Trash />\n </IconButton>\n\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled<FlexComponent>(Flex)`\n border-radius: 50%;\n\n svg {\n height: 0.6rem;\n width: 1.1rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={4}\n >\n <FlexWrapper gap={1}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <DisconnectButton type=\"button\">\n <Cross width=\"12px\" />\n </DisconnectButton>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n useCollator,\n useFilter,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLinkCustom\n tag={NavLink}\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n width=\"100%\"\n >\n {link.title}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","transform","DragLayer","renderItem","itemType","isDragging","item","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type","ComponentDragPreview","displayedValue","_jsxs","Flex","background","borderColor","justifyContent","gap","padding","ToggleButton","DropdownIconWrapper","alignItems","CaretDown","maxWidth","Typography","textColor","ellipsis","IconButton","withTooltip","label","variant","Trash","Drag","styled","theme","colors","neutral600","button","RelationDragPreview","status","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderWidth","FlexWrapper","minWidth","LinkEllipsis","href","DocumentStatus","DisconnectButton","Cross","SubNavLinkCustom","SubNavLink","LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","SubNav","aria-label","SubNavHeader","onChange","onClear","searchLabel","SubNavSections","SubNavSection","badgeLabel","length","toString","tag","NavLink","to","pathname","stringify","parse","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","notifyStatus","useNotifyAT","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","checkUserHasPermissions","useAuth","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","error","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","singleType","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","permissions","authorizedCollectionTypeLinks","_","index","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","configurations","isDisplayed","collectionTypesPermissions","action","subject","singleTypesPermissions","currentContentTypeConfig","searchParams","page","pageSize","settings","defaultSortBy","defaultSortOrder","encode","info","displayName","COLLECTION_TYPES","SINGLE_TYPES","name","Layout","contentTypeMatch","useMatch","isLoading","authorisedModels","localeCompare","useLocation","startSection","useGuidedTour","startSectionRef","useRef","current","_Fragment","Page","Title","Loading","supportedModelsToDisplay","Navigate","replace","Layouts","Root","sideNav","renderDraglayerItem","Outlet","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","COMPONENT","DYNAMIC_ZONE","RELATION"],"mappings":"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"}
@@ -9,11 +9,11 @@ import { useDragLayer } from 'react-dnd';
9
9
  import { C as CardDragPreview } from './CardDragPreview-DwuraT0K.mjs';
10
10
  import { CaretDown, Trash, Drag, Cross } from '@strapi/icons';
11
11
  import { styled } from 'styled-components';
12
- import { D as DocumentStatus, u as useContentTypeSchema, g as getTranslation, a as useGetInitialDataQuery, b as useGetAllContentTypeSettingsQuery, s as setInitialData, C as COLLECTION_TYPES, S as SINGLE_TYPES, H as HOOKS } from './index-BkM_Z7pU.mjs';
13
- import { F as FlexWrapper, L as LinkEllipsis, D as DisconnectButton } from './Relations-DP5krCGC.mjs';
12
+ import { D as DocumentStatus, u as useContentTypeSchema, g as getTranslation, a as useGetInitialDataQuery, b as useGetAllContentTypeSettingsQuery, s as setInitialData, C as COLLECTION_TYPES, S as SINGLE_TYPES, H as HOOKS } from './index-CIOT3ggy.mjs';
13
+ import { F as FlexWrapper, L as LinkEllipsis, D as DisconnectButton } from './Input-D6obstp0.mjs';
14
14
  import { stringify, parse } from 'qs';
15
15
  import { u as useTypedSelector, a as useTypedDispatch } from './hooks-DMvik5y_.mjs';
16
- import { I as ItemTypes } from './useDragAndDrop-HYwNDExe.mjs';
16
+ import { I as ItemTypes } from './objects-D2z-IJgu.mjs';
17
17
  import 'lodash/fp/mapValues';
18
18
  import 'yup';
19
19
  import 'fractional-indexing';
@@ -21,10 +21,83 @@ import 'lodash/fp/pipe';
21
21
  import 'date-fns';
22
22
  import '@reduxjs/toolkit';
23
23
  import 'prismjs';
24
+ import 'slate';
25
+ import 'slate-history';
26
+ import 'slate-react';
27
+ import 'prismjs/themes/prism-solarizedlight.css';
28
+ import 'prismjs/components/prism-asmatmel';
29
+ import 'prismjs/components/prism-bash';
30
+ import 'prismjs/components/prism-basic';
31
+ import 'prismjs/components/prism-c';
32
+ import 'prismjs/components/prism-clojure';
33
+ import 'prismjs/components/prism-cobol';
34
+ import 'prismjs/components/prism-cpp';
35
+ import 'prismjs/components/prism-csharp';
36
+ import 'prismjs/components/prism-dart';
37
+ import 'prismjs/components/prism-docker';
38
+ import 'prismjs/components/prism-elixir';
39
+ import 'prismjs/components/prism-erlang';
40
+ import 'prismjs/components/prism-fortran';
41
+ import 'prismjs/components/prism-fsharp';
42
+ import 'prismjs/components/prism-go';
43
+ import 'prismjs/components/prism-graphql';
44
+ import 'prismjs/components/prism-groovy';
45
+ import 'prismjs/components/prism-haskell';
46
+ import 'prismjs/components/prism-haxe';
47
+ import 'prismjs/components/prism-ini';
48
+ import 'prismjs/components/prism-java';
49
+ import 'prismjs/components/prism-javascript';
50
+ import 'prismjs/components/prism-jsx';
51
+ import 'prismjs/components/prism-json';
52
+ import 'prismjs/components/prism-julia';
53
+ import 'prismjs/components/prism-kotlin';
54
+ import 'prismjs/components/prism-latex';
55
+ import 'prismjs/components/prism-lua';
56
+ import 'prismjs/components/prism-markdown';
57
+ import 'prismjs/components/prism-matlab';
58
+ import 'prismjs/components/prism-makefile';
59
+ import 'prismjs/components/prism-objectivec';
60
+ import 'prismjs/components/prism-perl';
61
+ import 'prismjs/components/prism-php';
62
+ import 'prismjs/components/prism-powershell';
63
+ import 'prismjs/components/prism-python';
64
+ import 'prismjs/components/prism-r';
65
+ import 'prismjs/components/prism-ruby';
66
+ import 'prismjs/components/prism-rust';
67
+ import 'prismjs/components/prism-sas';
68
+ import 'prismjs/components/prism-scala';
69
+ import 'prismjs/components/prism-scheme';
70
+ import 'prismjs/components/prism-sql';
71
+ import 'prismjs/components/prism-stata';
72
+ import 'prismjs/components/prism-swift';
73
+ import 'prismjs/components/prism-typescript';
74
+ import 'prismjs/components/prism-tsx';
75
+ import 'prismjs/components/prism-vbnet';
76
+ import 'prismjs/components/prism-yaml';
77
+ import './usePrev-DAWUYIPh.mjs';
78
+ import '@radix-ui/react-toolbar';
24
79
  import 'react-dnd-html5-backend';
80
+ import './ComponentIcon-BZcTc4rj.mjs';
81
+ import '@strapi/icons/symbols';
25
82
  import 'react-window';
26
- import './relations-Dv0FHoBS.mjs';
83
+ import 'codemirror5';
84
+ import 'sanitize-html';
85
+ import 'highlight.js';
86
+ import 'markdown-it';
87
+ import 'markdown-it-abbr';
88
+ import 'markdown-it-container';
89
+ import 'markdown-it-deflist';
90
+ import 'markdown-it-emoji';
91
+ import 'markdown-it-footnote';
92
+ import 'markdown-it-ins';
93
+ import 'markdown-it-mark';
94
+ import 'markdown-it-sub';
95
+ import 'markdown-it-sup';
96
+ import 'highlight.js/styles/solarized-dark.css';
97
+ import 'codemirror5/addon/display/placeholder';
27
98
  import 'react-redux';
99
+ import 'lodash/clone';
100
+ import 'lodash/toPath';
28
101
 
29
102
  function getStyle(initialOffset, currentOffset, mouseOffset) {
30
103
  if (!initialOffset || !currentOffset || !mouseOffset) {
@@ -596,4 +669,4 @@ const generateLinks = (links, type, configurations = [])=>{
596
669
  }
597
670
 
598
671
  export { Layout };
599
- //# sourceMappingURL=layout-D8ji6QNJ.mjs.map
672
+ //# sourceMappingURL=layout-DjT9cccU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout-DjT9cccU.mjs","sources":["../../../admin/src/components/DragLayer.tsx","../../../admin/src/components/DragPreviews/ComponentDragPreview.tsx","../../../admin/src/components/DragPreviews/RelationDragPreview.tsx","../../../admin/src/components/LeftMenu.tsx","../../../admin/src/hooks/useContentManagerInitData.ts","../../../admin/src/layout.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { DragLayerMonitor, XYCoord, useDragLayer } from 'react-dnd';\n\nfunction getStyle(\n initialOffset: XYCoord | null,\n currentOffset: XYCoord | null,\n mouseOffset: XYCoord | null\n) {\n if (!initialOffset || !currentOffset || !mouseOffset) {\n return { display: 'none' };\n }\n\n const { x, y } = mouseOffset;\n\n return {\n transform: `translate(${x}px, ${y}px)`,\n };\n}\n\nexport interface DragLayerProps {\n renderItem: (item: {\n /**\n * TODO: it'd be great if we could make this a union where the type infers the item.\n */\n item: any;\n type: ReturnType<DragLayerMonitor['getItemType']>;\n }) => React.ReactNode;\n}\n\nconst DragLayer = ({ renderItem }: DragLayerProps) => {\n const { itemType, isDragging, item, initialOffset, currentOffset, mouseOffset } = useDragLayer(\n (monitor) => ({\n item: monitor.getItem(),\n itemType: monitor.getItemType(),\n initialOffset: monitor.getInitialSourceClientOffset(),\n currentOffset: monitor.getSourceClientOffset(),\n isDragging: monitor.isDragging(),\n mouseOffset: monitor.getClientOffset(),\n })\n );\n\n if (!isDragging) {\n return null;\n }\n\n return (\n <Box\n height=\"100%\"\n left={0}\n position=\"fixed\"\n pointerEvents=\"none\"\n top={0}\n zIndex={100}\n width=\"100%\"\n >\n <Box style={getStyle(initialOffset, currentOffset, mouseOffset)}>\n {renderItem({ type: itemType, item })}\n </Box>\n </Box>\n );\n};\n\nexport { DragLayer };\n","import { Flex, FlexComponent, IconButton, Typography } from '@strapi/design-system';\nimport { CaretDown, Drag, Trash } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\ninterface ComponentDragPreviewProps {\n displayedValue: string;\n}\n\nconst ComponentDragPreview = ({ displayedValue }: ComponentDragPreviewProps) => {\n return (\n <Flex\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={3}\n padding={3}\n width=\"30rem\"\n >\n <ToggleButton type=\"button\">\n <Flex gap={6}>\n <DropdownIconWrapper\n alignItems=\"center\"\n justifyContent=\"center\"\n background=\"neutral200\"\n height=\"3.2rem\"\n width=\"3.2rem\"\n >\n <CaretDown />\n </DropdownIconWrapper>\n\n <Flex maxWidth=\"15rem\">\n <Typography textColor=\"neutral700\" ellipsis>\n {displayedValue}\n </Typography>\n </Flex>\n </Flex>\n </ToggleButton>\n\n <Flex gap={2}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Trash />\n </IconButton>\n\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n </Flex>\n </Flex>\n );\n};\n\nconst DropdownIconWrapper = styled<FlexComponent>(Flex)`\n border-radius: 50%;\n\n svg {\n height: 0.6rem;\n width: 1.1rem;\n > path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n`;\n\n// TODO: we shouldn't have to reset a whole button\nconst ToggleButton = styled.button`\n border: none;\n background: transparent;\n display: block;\n width: 100%;\n text-align: unset;\n padding: 0;\n`;\n\nexport { ComponentDragPreview };\nexport type { ComponentDragPreviewProps };\n","import { Box, Flex, IconButton, Typography } from '@strapi/design-system';\nimport { Cross, Drag } from '@strapi/icons';\n\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport {\n DisconnectButton,\n LinkEllipsis,\n FlexWrapper,\n} from '../../pages/EditView/components/FormInputs/Relations/Relations';\n\nimport type { Data } from '@strapi/types';\n\ninterface RelationDragPreviewProps {\n status?: string;\n displayedValue: string;\n id: Data.ID;\n index: number;\n width: number;\n}\n\nconst RelationDragPreview = ({ status, displayedValue, width }: RelationDragPreviewProps) => {\n return (\n <Box style={{ width }}>\n <Flex\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={2}\n paddingRight={4}\n hasRadius\n borderWidth={1}\n background=\"neutral0\"\n borderColor=\"neutral200\"\n justifyContent=\"space-between\"\n gap={4}\n >\n <FlexWrapper gap={1}>\n <IconButton withTooltip={false} label=\"\" variant=\"ghost\">\n <Drag />\n </IconButton>\n <Flex width=\"100%\" minWidth={0} justifyContent=\"space-between\">\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <LinkEllipsis href=\"\">\n <Typography textColor=\"primary600\" ellipsis>\n {displayedValue}\n </Typography>\n </LinkEllipsis>\n </Box>\n {status ? <DocumentStatus status={status} /> : null}\n </Flex>\n </FlexWrapper>\n <DisconnectButton type=\"button\">\n <Cross width=\"12px\" />\n </DisconnectButton>\n </Flex>\n </Box>\n );\n};\n\nexport { RelationDragPreview };\nexport type { RelationDragPreviewProps };\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport {\n useCollator,\n useFilter,\n SubNav,\n SubNavHeader,\n SubNavLink,\n SubNavSection,\n SubNavSections,\n} from '@strapi/design-system';\nimport { parse, stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useContentTypeSchema } from '../hooks/useContentTypeSchema';\nimport { useTypedSelector } from '../modules/hooks';\nimport { getTranslation } from '../utils/translations';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\nconst SubNavLinkCustom = styled(SubNavLink)`\n div {\n width: inherit;\n span:nth-child(2) {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n width: inherit;\n }\n }\n`;\n\nconst LeftMenu = () => {\n const [search, setSearch] = React.useState('');\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n const { formatMessage, locale } = useIntl();\n\n const collectionTypeLinks = useTypedSelector(\n (state) => state['content-manager'].app.collectionTypeLinks\n );\n\n const singleTypeLinks = useTypedSelector((state) => state['content-manager'].app.singleTypeLinks);\n const { schemas } = useContentTypeSchema();\n\n const { startsWith } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const menu = React.useMemo(\n () =>\n [\n {\n id: 'collectionTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.collection-types'),\n defaultMessage: 'Collection Types',\n }),\n searchable: true,\n links: collectionTypeLinks,\n },\n {\n id: 'singleTypes',\n title: formatMessage({\n id: getTranslation('components.LeftMenu.single-types'),\n defaultMessage: 'Single Types',\n }),\n searchable: true,\n links: singleTypeLinks,\n },\n ].map((section) => ({\n ...section,\n links: section.links\n /**\n * Filter by the search value\n */\n .filter((link) => startsWith(link.title, search))\n /**\n * Sort correctly using the language\n */\n .sort((a, b) => formatter.compare(a.title, b.title))\n /**\n * Apply the formated strings to the links from react-intl\n */\n .map((link) => {\n return {\n ...link,\n title: formatMessage({ id: link.title, defaultMessage: link.title }),\n };\n }),\n })),\n [collectionTypeLinks, search, singleTypeLinks, startsWith, formatMessage, formatter]\n );\n\n const handleClear = () => {\n setSearch('');\n };\n\n const handleChangeSearch = ({ target: { value } }: { target: { value: string } }) => {\n setSearch(value);\n };\n\n const label = formatMessage({\n id: getTranslation('header.name'),\n defaultMessage: 'Content Manager',\n });\n\n const getPluginsParamsForLink = (link: ContentManagerLink) => {\n const schema = schemas.find((schema) => schema.uid === link.uid);\n const isI18nEnabled = Boolean((schema?.pluginOptions?.i18n as any)?.localized);\n\n // The search params have the i18n plugin\n if (query.plugins && 'i18n' in query.plugins) {\n // Prepare removal of i18n from the plugins search params\n const { i18n, ...restPlugins } = query.plugins;\n\n // i18n is not enabled, remove it from the plugins search params\n if (!isI18nEnabled) {\n return restPlugins;\n }\n\n // i18n is enabled, put the plugins search params back together\n return { i18n, ...restPlugins };\n }\n\n return query.plugins;\n };\n\n return (\n <SubNav aria-label={label}>\n <SubNavHeader\n label={label}\n searchable\n value={search}\n onChange={handleChangeSearch}\n onClear={handleClear}\n searchLabel={formatMessage({\n id: 'content-manager.components.LeftMenu.Search.label',\n defaultMessage: 'Search for a content type',\n })}\n />\n <SubNavSections>\n {menu.map((section) => {\n return (\n <SubNavSection\n key={section.id}\n label={section.title}\n badgeLabel={section.links.length.toString()}\n >\n {section.links.map((link) => {\n return (\n <SubNavLinkCustom\n tag={NavLink}\n key={link.uid}\n to={{\n pathname: link.to,\n search: stringify({\n ...parse(link.search ?? ''),\n plugins: getPluginsParamsForLink(link),\n }),\n }}\n width=\"100%\"\n >\n {link.title}\n </SubNavLinkCustom>\n );\n })}\n </SubNavSection>\n );\n })}\n </SubNavSections>\n </SubNav>\n );\n};\n\nexport { LeftMenu };\n","import { useEffect } from 'react';\n\nimport {\n useAuth,\n type Permission,\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n} from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../constants/collections';\nimport { HOOKS } from '../constants/hooks';\nimport { AppState, setInitialData } from '../modules/app';\nimport { useTypedDispatch, useTypedSelector } from '../modules/hooks';\nimport { useGetAllContentTypeSettingsQuery } from '../services/contentTypes';\nimport { useGetInitialDataQuery } from '../services/init';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type {\n ContentType,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst { MUTATE_COLLECTION_TYPES_LINKS, MUTATE_SINGLE_TYPES_LINKS } = HOOKS;\n\ninterface ContentManagerLink {\n permissions: Permission[];\n search: string | null;\n kind: string;\n title: string;\n to: string;\n uid: string;\n name: string;\n isDisplayed: boolean;\n}\n\nconst useContentManagerInitData = (): AppState => {\n const { toggleNotification } = useNotification();\n const dispatch = useTypedDispatch();\n const runHookWaterfall = useStrapiApp(\n 'useContentManagerInitData',\n (state) => state.runHookWaterfall\n );\n const { notifyStatus } = useNotifyAT();\n const { formatMessage } = useIntl();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const checkUserHasPermissions = useAuth(\n 'useContentManagerInitData',\n (state) => state.checkUserHasPermissions\n );\n\n const state = useTypedSelector((state) => state['content-manager'].app);\n\n const initialDataQuery = useGetInitialDataQuery(undefined, {\n /**\n * TODO: remove this when the CTB has been refactored to use redux-toolkit-query\n * and it can invalidate the cache on mutation\n */\n refetchOnMountOrArgChange: true,\n });\n\n useEffect(() => {\n if (initialDataQuery.data) {\n notifyStatus(\n formatMessage({\n id: getTranslation('App.schemas.data-loaded'),\n defaultMessage: 'The schemas have been successfully loaded.',\n })\n );\n }\n }, [formatMessage, initialDataQuery.data, notifyStatus]);\n\n useEffect(() => {\n if (initialDataQuery.error) {\n toggleNotification({ type: 'danger', message: formatAPIError(initialDataQuery.error) });\n }\n }, [formatAPIError, initialDataQuery.error, toggleNotification]);\n\n const contentTypeSettingsQuery = useGetAllContentTypeSettingsQuery();\n\n useEffect(() => {\n if (contentTypeSettingsQuery.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(contentTypeSettingsQuery.error),\n });\n }\n }, [formatAPIError, contentTypeSettingsQuery.error, toggleNotification]);\n\n const formatData = async (\n components: Component[],\n contentTypes: ContentType[],\n fieldSizes: GetInitData.Response['data']['fieldSizes'],\n contentTypeConfigurations: FindContentTypesSettings.Response['data']\n ) => {\n /**\n * We group these by the two types we support. We do with an object because we can use default\n * values of arrays to make sure we always have an array to manipulate further on if, for example,\n * a user has not made any single types.\n *\n * This means we have to manually add new content types to this hook if we add a new type – but\n * the safety is worth it.\n */\n const { collectionType: collectionTypeLinks, singleType: singleTypeLinks } =\n contentTypes.reduce<{\n collectionType: ContentType[];\n singleType: ContentType[];\n }>(\n (acc, model) => {\n acc[model.kind].push(model);\n return acc;\n },\n {\n collectionType: [],\n singleType: [],\n }\n );\n const collectionTypeSectionLinks = generateLinks(\n collectionTypeLinks,\n 'collectionTypes',\n contentTypeConfigurations\n );\n const singleTypeSectionLinks = generateLinks(singleTypeLinks, 'singleTypes');\n\n // Collection Types verifications\n const collectionTypeLinksPermissions = await Promise.all(\n collectionTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n\n const authorizedCollectionTypeLinks = collectionTypeSectionLinks.filter(\n (_, index) => collectionTypeLinksPermissions[index].length > 0\n );\n\n // Single Types verifications\n const singleTypeLinksPermissions = await Promise.all(\n singleTypeSectionLinks.map(({ permissions }) => checkUserHasPermissions(permissions))\n );\n const authorizedSingleTypeLinks = singleTypeSectionLinks.filter(\n (_, index) => singleTypeLinksPermissions[index].length > 0\n );\n const { ctLinks } = runHookWaterfall(MUTATE_COLLECTION_TYPES_LINKS, {\n ctLinks: authorizedCollectionTypeLinks,\n models: contentTypes,\n });\n const { stLinks } = runHookWaterfall(MUTATE_SINGLE_TYPES_LINKS, {\n stLinks: authorizedSingleTypeLinks,\n models: contentTypes,\n });\n\n dispatch(\n setInitialData({\n authorizedCollectionTypeLinks: ctLinks,\n authorizedSingleTypeLinks: stLinks,\n components,\n contentTypeSchemas: contentTypes,\n fieldSizes,\n })\n );\n };\n\n useEffect(() => {\n if (initialDataQuery.data && contentTypeSettingsQuery.data) {\n formatData(\n initialDataQuery.data.components,\n initialDataQuery.data.contentTypes,\n initialDataQuery.data.fieldSizes,\n contentTypeSettingsQuery.data\n );\n }\n }, [initialDataQuery.data, contentTypeSettingsQuery.data]);\n\n return { ...state };\n};\n\nconst generateLinks = (\n links: ContentType[],\n type: 'collectionTypes' | 'singleTypes',\n configurations: FindContentTypesSettings.Response['data'] = []\n) => {\n return links\n .filter((link) => link.isDisplayed)\n .map((link) => {\n const collectionTypesPermissions = [\n { action: 'plugin::content-manager.explorer.create', subject: link.uid },\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const singleTypesPermissions = [\n { action: 'plugin::content-manager.explorer.read', subject: link.uid },\n ];\n const permissions =\n type === 'collectionTypes' ? collectionTypesPermissions : singleTypesPermissions;\n\n const currentContentTypeConfig = configurations.find(({ uid }) => uid === link.uid);\n\n let search = null;\n\n if (currentContentTypeConfig) {\n const searchParams = {\n page: 1,\n pageSize: currentContentTypeConfig.settings.pageSize,\n sort: `${currentContentTypeConfig.settings.defaultSortBy}:${currentContentTypeConfig.settings.defaultSortOrder}`,\n };\n\n search = stringify(searchParams, { encode: false });\n }\n\n return {\n permissions,\n search,\n kind: link.kind,\n title: link.info.displayName,\n to: `/content-manager/${link.kind === 'collectionType' ? COLLECTION_TYPES : SINGLE_TYPES}/${\n link.uid\n }`,\n uid: link.uid,\n // Used for the list item key in the helper plugin\n name: link.uid,\n isDisplayed: link.isDisplayed,\n } satisfies ContentManagerLink;\n });\n};\n\nexport { useContentManagerInitData };\nexport type { ContentManagerLink };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { Page, useGuidedTour, Layouts } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Navigate, Outlet, useLocation, useMatch } from 'react-router-dom';\n\nimport { DragLayer, DragLayerProps } from './components/DragLayer';\nimport { CardDragPreview } from './components/DragPreviews/CardDragPreview';\nimport { ComponentDragPreview } from './components/DragPreviews/ComponentDragPreview';\nimport { RelationDragPreview } from './components/DragPreviews/RelationDragPreview';\nimport { LeftMenu } from './components/LeftMenu';\nimport { ItemTypes } from './constants/dragAndDrop';\nimport { useContentManagerInitData } from './hooks/useContentManagerInitData';\nimport { getTranslation } from './utils/translations';\n\n/* -------------------------------------------------------------------------------------------------\n * Layout\n * -----------------------------------------------------------------------------------------------*/\n\nconst Layout = () => {\n const contentTypeMatch = useMatch('/content-manager/:kind/:uid/*');\n\n const { isLoading, collectionTypeLinks, models, singleTypeLinks } = useContentManagerInitData();\n const authorisedModels = [...collectionTypeLinks, ...singleTypeLinks].sort((a, b) =>\n a.title.localeCompare(b.title)\n );\n\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n const startSection = useGuidedTour('Layout', (state) => state.startSection);\n const startSectionRef = React.useRef(startSection);\n\n React.useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentManager');\n }\n }, []);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n // Array of models that are displayed in the content manager\n const supportedModelsToDisplay = models.filter(({ isDisplayed }) => isDisplayed);\n\n // Redirect the user to the 403 page\n if (\n authorisedModels.length === 0 &&\n supportedModelsToDisplay.length > 0 &&\n pathname !== '/content-manager/403'\n ) {\n return <Navigate to=\"/403\" />;\n }\n\n // Redirect the user to the create content type page\n if (supportedModelsToDisplay.length === 0 && pathname !== '/no-content-types') {\n return <Navigate to=\"/no-content-types\" />;\n }\n\n if (!contentTypeMatch && authorisedModels.length > 0) {\n return (\n <Navigate\n to={{\n pathname: authorisedModels[0].to,\n search: authorisedModels[0].search ?? '',\n }}\n replace\n />\n );\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage({\n id: getTranslation('plugin.name'),\n defaultMessage: 'Content Manager',\n })}\n </Page.Title>\n <Layouts.Root sideNav={<LeftMenu />}>\n <DragLayer renderItem={renderDraglayerItem} />\n <Outlet />\n </Layouts.Root>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * renderDraglayerItem\n * -----------------------------------------------------------------------------------------------*/\n\nfunction renderDraglayerItem({ type, item }: Parameters<DragLayerProps['renderItem']>[0]) {\n if (!type || (type && typeof type !== 'string')) {\n return null;\n }\n\n /**\n * Because a user may have multiple relations / dynamic zones / repeable fields in the same content type,\n * we append the fieldName for the item type to make them unique, however, we then want to extract that\n * first type to apply the correct preview.\n */\n const [actualType] = type.split('_');\n\n switch (actualType) {\n case ItemTypes.EDIT_FIELD:\n case ItemTypes.FIELD:\n return <CardDragPreview label={item.label} />;\n case ItemTypes.COMPONENT:\n case ItemTypes.DYNAMIC_ZONE:\n return <ComponentDragPreview displayedValue={item.displayedValue} />;\n\n case ItemTypes.RELATION:\n return <RelationDragPreview {...item} />;\n\n default:\n return null;\n }\n}\n\nexport { Layout };\n"],"names":["getStyle","initialOffset","currentOffset","mouseOffset","display","x","y","transform","DragLayer","renderItem","itemType","isDragging","item","useDragLayer","monitor","getItem","getItemType","getInitialSourceClientOffset","getSourceClientOffset","getClientOffset","_jsx","Box","height","left","position","pointerEvents","top","zIndex","width","style","type","ComponentDragPreview","displayedValue","_jsxs","Flex","background","borderColor","justifyContent","gap","padding","ToggleButton","DropdownIconWrapper","alignItems","CaretDown","maxWidth","Typography","textColor","ellipsis","IconButton","withTooltip","label","variant","Trash","Drag","styled","theme","colors","neutral600","button","RelationDragPreview","status","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderWidth","FlexWrapper","minWidth","LinkEllipsis","href","DocumentStatus","DisconnectButton","Cross","SubNavLinkCustom","SubNavLink","LeftMenu","search","setSearch","React","useState","query","useQueryParams","formatMessage","locale","useIntl","collectionTypeLinks","useTypedSelector","state","app","singleTypeLinks","schemas","useContentTypeSchema","startsWith","useFilter","sensitivity","formatter","useCollator","menu","useMemo","id","title","getTranslation","defaultMessage","searchable","links","map","section","filter","link","sort","a","b","compare","handleClear","handleChangeSearch","target","value","getPluginsParamsForLink","schema","find","uid","isI18nEnabled","Boolean","pluginOptions","i18n","localized","plugins","restPlugins","SubNav","aria-label","SubNavHeader","onChange","onClear","searchLabel","SubNavSections","SubNavSection","badgeLabel","length","toString","tag","NavLink","to","pathname","stringify","parse","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_SINGLE_TYPES_LINKS","HOOKS","useContentManagerInitData","toggleNotification","useNotification","dispatch","useTypedDispatch","runHookWaterfall","useStrapiApp","notifyStatus","useNotifyAT","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","checkUserHasPermissions","useAuth","initialDataQuery","useGetInitialDataQuery","undefined","refetchOnMountOrArgChange","useEffect","data","error","message","contentTypeSettingsQuery","useGetAllContentTypeSettingsQuery","formatData","components","contentTypes","fieldSizes","contentTypeConfigurations","collectionType","singleType","reduce","acc","model","kind","push","collectionTypeSectionLinks","generateLinks","singleTypeSectionLinks","collectionTypeLinksPermissions","Promise","all","permissions","authorizedCollectionTypeLinks","_","index","singleTypeLinksPermissions","authorizedSingleTypeLinks","ctLinks","models","stLinks","setInitialData","contentTypeSchemas","configurations","isDisplayed","collectionTypesPermissions","action","subject","singleTypesPermissions","currentContentTypeConfig","searchParams","page","pageSize","settings","defaultSortBy","defaultSortOrder","encode","info","displayName","COLLECTION_TYPES","SINGLE_TYPES","name","Layout","contentTypeMatch","useMatch","isLoading","authorisedModels","localeCompare","useLocation","startSection","useGuidedTour","startSectionRef","useRef","current","_Fragment","Page","Title","Loading","supportedModelsToDisplay","Navigate","replace","Layouts","Root","sideNav","renderDraglayerItem","Outlet","actualType","split","ItemTypes","EDIT_FIELD","FIELD","CardDragPreview","COMPONENT","DYNAMIC_ZONE","RELATION"],"mappings":"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"}
@@ -2,6 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
  var reactDnd = require('react-dnd');
5
+ var clone = require('lodash/clone');
6
+ var toPath = require('lodash/toPath');
5
7
 
6
8
  function _interopNamespaceDefault(e) {
7
9
  var n = Object.create(null);
@@ -264,8 +266,78 @@ const DROP_SENSITIVITY = {
264
266
  ];
265
267
  };
266
268
 
269
+ /**
270
+ * Deeply get a value from an object via its path.
271
+ */ function getIn(obj, key, def, pathStartIndex = 0) {
272
+ const path = toPath(key);
273
+ while(obj && pathStartIndex < path.length){
274
+ obj = obj[path[pathStartIndex++]];
275
+ }
276
+ // check if path is not in the end
277
+ if (pathStartIndex !== path.length && !obj) {
278
+ return def;
279
+ }
280
+ return obj === undefined ? def : obj;
281
+ }
282
+ /** @internal is the given object an Object? */ const isObject = (obj)=>obj !== null && typeof obj === 'object' && !Array.isArray(obj);
283
+ /** @internal is the given object an integer? */ const isInteger = (obj)=>String(Math.floor(Number(obj))) === obj;
284
+ /**
285
+ * Deeply set a value from in object via its path. If the value at `path`
286
+ * has changed, return a shallow copy of obj with `value` set at `path`.
287
+ * If `value` has not changed, return the original `obj`.
288
+ *
289
+ * Existing objects / arrays along `path` are also shallow copied. Sibling
290
+ * objects along path retain the same internal js reference. Since new
291
+ * objects / arrays are only created along `path`, we can test if anything
292
+ * changed in a nested structure by comparing the object's reference in
293
+ * the old and new object, similar to how russian doll cache invalidation
294
+ * works.
295
+ *
296
+ * In earlier versions of this function, which used cloneDeep, there were
297
+ * issues whereby settings a nested value would mutate the parent
298
+ * instead of creating a new object. `clone` avoids that bug making a
299
+ * shallow copy of the objects along the update path
300
+ * so no object is mutated in place.
301
+ *
302
+ * Before changing this function, please read through the following
303
+ * discussions.
304
+ *
305
+ * @see https://github.com/developit/linkstate
306
+ * @see https://github.com/jaredpalmer/formik/pull/123
307
+ */ function setIn(obj, path, value) {
308
+ const res = clone(obj); // this keeps inheritance when obj is a class
309
+ let resVal = res;
310
+ let i = 0;
311
+ const pathArray = toPath(path);
312
+ for(; i < pathArray.length - 1; i++){
313
+ const currentPath = pathArray[i];
314
+ const currentObj = getIn(obj, pathArray.slice(0, i + 1));
315
+ if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {
316
+ resVal = resVal[currentPath] = clone(currentObj);
317
+ } else {
318
+ const nextPath = pathArray[i + 1];
319
+ resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};
320
+ }
321
+ }
322
+ // Return original object if new value is the same as current
323
+ if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {
324
+ return obj;
325
+ }
326
+ {
327
+ delete resVal[pathArray[i]];
328
+ }
329
+ // If the path array has a single element, the loop did not run.
330
+ // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.
331
+ if (i === 0 && value === undefined) {
332
+ delete res[pathArray[i]];
333
+ }
334
+ return res;
335
+ }
336
+
267
337
  exports.DIRECTIONS = DIRECTIONS;
268
338
  exports.DROP_SENSITIVITY = DROP_SENSITIVITY;
269
339
  exports.ItemTypes = ItemTypes;
340
+ exports.getIn = getIn;
341
+ exports.setIn = setIn;
270
342
  exports.useDragAndDrop = useDragAndDrop;
271
- //# sourceMappingURL=useDragAndDrop-gcqEJMnO.js.map
343
+ //# sourceMappingURL=objects-BJTP843m.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects-BJTP843m.js","sources":["../../../admin/src/constants/dragAndDrop.ts","../../../admin/src/hooks/useKeyboardDragAndDrop.ts","../../../admin/src/hooks/useDragAndDrop.ts","../../../admin/src/utils/objects.ts"],"sourcesContent":["export const ItemTypes = {\n COMPONENT: 'component',\n EDIT_FIELD: 'editField',\n FIELD: 'field',\n DYNAMIC_ZONE: 'dynamicZone',\n RELATION: 'relation',\n BLOCKS: 'blocks',\n} as const;\n","import * as React from 'react';\n\nexport type UseKeyboardDragAndDropCallbacks<TIndex extends number | Array<number> = number> = {\n onCancel?: (index: TIndex) => void;\n onDropItem?: (currentIndex: TIndex, newIndex?: TIndex) => void;\n onGrabItem?: (index: TIndex) => void;\n onMoveItem?: (newIndex: TIndex, currentIndex: TIndex) => void;\n};\n\n/**\n * Utility hook designed to implement keyboard accessibile drag and drop by\n * returning an onKeyDown handler to be passed to the drag icon button.\n *\n * @internal - You should use `useDragAndDrop` instead.\n */\nexport const useKeyboardDragAndDrop = <TIndex extends number | Array<number> = number>(\n active: boolean,\n index: TIndex,\n { onCancel, onDropItem, onGrabItem, onMoveItem }: UseKeyboardDragAndDropCallbacks<TIndex>\n) => {\n const [isSelected, setIsSelected] = React.useState(false);\n\n const handleMove = (movement: 'UP' | 'DOWN') => {\n if (!isSelected) {\n return;\n }\n if (typeof index === 'number' && onMoveItem) {\n if (movement === 'UP') {\n onMoveItem((index - 1) as TIndex, index);\n } else if (movement === 'DOWN') {\n onMoveItem((index + 1) as TIndex, index);\n }\n }\n };\n\n const handleDragClick = () => {\n if (isSelected) {\n if (onDropItem) {\n onDropItem(index);\n }\n setIsSelected(false);\n } else {\n if (onGrabItem) {\n onGrabItem(index);\n }\n setIsSelected(true);\n }\n };\n\n const handleCancel = () => {\n if (isSelected) {\n setIsSelected(false);\n\n if (onCancel) {\n onCancel(index);\n }\n }\n };\n\n const handleKeyDown = <E extends Element>(e: React.KeyboardEvent<E>) => {\n if (!active) {\n return;\n }\n\n if (e.key === 'Tab' && !isSelected) {\n return;\n }\n\n e.preventDefault();\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n handleDragClick();\n break;\n\n case 'Escape':\n handleCancel();\n break;\n\n case 'ArrowDown':\n case 'ArrowRight':\n handleMove('DOWN');\n break;\n\n case 'ArrowUp':\n case 'ArrowLeft':\n handleMove('UP');\n break;\n\n default:\n }\n };\n\n return handleKeyDown;\n};\n","import * as React from 'react';\n\nimport {\n useDrag,\n useDrop,\n type HandlerManager,\n type ConnectDragSource,\n type ConnectDropTarget,\n type ConnectDragPreview,\n type DragSourceMonitor,\n} from 'react-dnd';\n\nimport {\n useKeyboardDragAndDrop,\n type UseKeyboardDragAndDropCallbacks,\n} from './useKeyboardDragAndDrop';\n\nimport type { Data } from '@strapi/types';\n\nconst DIRECTIONS = {\n UPWARD: 'upward',\n DOWNWARD: 'downward',\n} as const;\n\nconst DROP_SENSITIVITY = {\n REGULAR: 'regular',\n IMMEDIATE: 'immediate',\n} as const;\n\ninterface UseDragAndDropOptions<\n TIndex extends number | Array<number> = number,\n TItem extends { index: TIndex } = { index: TIndex },\n> extends UseKeyboardDragAndDropCallbacks<TIndex> {\n type?: string;\n index: TIndex;\n item?: TItem;\n onStart?: () => void;\n onEnd?: () => void;\n dropSensitivity?: (typeof DROP_SENSITIVITY)[keyof typeof DROP_SENSITIVITY];\n}\n\ntype Identifier = ReturnType<HandlerManager['getHandlerId']>;\n\ntype UseDragAndDropReturn<E extends Element = HTMLElement> = [\n props: {\n handlerId: Identifier;\n isDragging: boolean;\n handleKeyDown: <E extends Element>(event: React.KeyboardEvent<E>) => void;\n isOverDropTarget: boolean;\n direction: (typeof DIRECTIONS)[keyof typeof DIRECTIONS] | null;\n },\n objectRef: React.RefObject<E>,\n dropRef: ConnectDropTarget,\n dragRef: ConnectDragSource,\n dragPreviewRef: ConnectDragPreview,\n];\n\ntype DropCollectedProps = {\n handlerId: Identifier;\n isOver: boolean;\n};\n\n/**\n * A utility hook abstracting the general drag and drop hooks from react-dnd.\n * Centralising the same behaviours and by default offering keyboard support.\n */\nconst useDragAndDrop = <\n TIndex extends number | Array<number>,\n TItem extends { index: TIndex; id?: Data.ID; [key: string]: unknown } = {\n index: TIndex;\n [key: string]: unknown;\n },\n E extends Element = HTMLElement,\n>(\n active: boolean,\n {\n type = 'STRAPI_DND',\n index,\n item,\n onStart,\n onEnd,\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n dropSensitivity = DROP_SENSITIVITY.REGULAR,\n }: UseDragAndDropOptions<TIndex, TItem>\n): UseDragAndDropReturn<E> => {\n const objectRef = React.useRef<E>(null);\n\n const [{ handlerId, isOver }, dropRef] = useDrop<TItem, void, DropCollectedProps>({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n isOver: monitor.isOver({ shallow: true }),\n };\n },\n drop(item) {\n const draggedIndex = item.index;\n const newIndex = index;\n\n if (isOver && onDropItem) {\n onDropItem(draggedIndex, newIndex);\n }\n },\n hover(item, monitor) {\n if (!objectRef.current || !onMoveItem) {\n return;\n }\n\n const dragIndex = item.index;\n const newIndex = index;\n\n const hoverBoundingRect = objectRef.current?.getBoundingClientRect();\n const hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;\n const clientOffset = monitor.getClientOffset();\n if (!clientOffset) return;\n\n const hoverClientY = clientOffset && clientOffset.y - hoverBoundingRect.top;\n if (typeof dragIndex === 'number' && typeof newIndex === 'number') {\n if (dragIndex === newIndex) {\n // Don't replace items with themselves\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (dragIndex < newIndex && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (dragIndex > newIndex && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n\n // Time to actually perform the action\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n } else {\n // Using numbers as indices doesn't work for nested list items with path like [1, 1, 0]\n if (Array.isArray(dragIndex) && Array.isArray(newIndex)) {\n // Indices comparison to find item position in nested list\n const minLength = Math.min(dragIndex.length, newIndex.length);\n let areEqual = true;\n let isLessThan = false;\n let isGreaterThan = false;\n\n for (let i = 0; i < minLength; i++) {\n if (dragIndex[i] < newIndex[i]) {\n isLessThan = true;\n areEqual = false;\n break;\n } else if (dragIndex[i] > newIndex[i]) {\n isGreaterThan = true;\n areEqual = false;\n break;\n }\n }\n\n // Don't replace items with themselves\n if (areEqual && dragIndex.length === newIndex.length) {\n return;\n }\n\n if (dropSensitivity === DROP_SENSITIVITY.REGULAR) {\n // Dragging downwards\n if (isLessThan && !isGreaterThan && hoverClientY < hoverMiddleY) {\n return;\n }\n\n // Dragging upwards\n if (isGreaterThan && !isLessThan && hoverClientY > hoverMiddleY) {\n return;\n }\n }\n }\n\n onMoveItem(newIndex, dragIndex);\n item.index = newIndex;\n }\n },\n });\n\n const getDragDirection = (monitor: DragSourceMonitor<TItem, void>) => {\n if (\n monitor &&\n monitor.isDragging() &&\n !monitor.didDrop() &&\n monitor.getInitialClientOffset() &&\n monitor.getClientOffset()\n ) {\n const deltaY = monitor.getInitialClientOffset()!.y - monitor.getClientOffset()!.y;\n\n if (deltaY > 0) return DIRECTIONS.UPWARD;\n\n if (deltaY < 0) return DIRECTIONS.DOWNWARD;\n\n return null;\n }\n\n return null;\n };\n\n const [{ isDragging, direction }, dragRef, dragPreviewRef] = useDrag({\n type,\n item() {\n if (onStart) {\n onStart();\n }\n\n /**\n * This will be attached and it helps define the preview sizes\n * when a component is flexy e.g. Relations\n */\n const { width } = objectRef.current?.getBoundingClientRect() ?? {};\n\n return { index, width, ...item };\n },\n end() {\n if (onEnd) {\n onEnd();\n }\n },\n canDrag: active,\n /**\n * This is useful when the item is in a virtualized list.\n * However, if we don't have an ID then we want the libraries\n * defaults to take care of this.\n */\n isDragging: item?.id\n ? (monitor) => {\n return item.id === monitor.getItem().id;\n }\n : undefined,\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n initialOffset: monitor.getInitialClientOffset(),\n currentOffset: monitor.getClientOffset(),\n direction: getDragDirection(monitor),\n }),\n });\n\n const handleKeyDown = useKeyboardDragAndDrop(active, index, {\n onGrabItem,\n onDropItem,\n onCancel,\n onMoveItem,\n });\n\n return [\n { handlerId, isDragging, handleKeyDown, isOverDropTarget: isOver, direction },\n objectRef,\n dropRef,\n dragRef,\n dragPreviewRef,\n ];\n};\n\nexport {\n useDragAndDrop,\n UseDragAndDropReturn,\n UseDragAndDropOptions,\n DIRECTIONS,\n DROP_SENSITIVITY,\n};\n","import clone from 'lodash/clone';\nimport toPath from 'lodash/toPath';\n\n/**\n * Deeply get a value from an object via its path.\n */\nexport function getIn(obj: any, key: string | string[], def?: any, pathStartIndex: number = 0) {\n const path = toPath(key);\n while (obj && pathStartIndex < path.length) {\n obj = obj[path[pathStartIndex++]];\n }\n\n // check if path is not in the end\n if (pathStartIndex !== path.length && !obj) {\n return def;\n }\n\n return obj === undefined ? def : obj;\n}\n\n/** @internal is the given object an Object? */\nexport const isObject = (obj: any): obj is object =>\n obj !== null && typeof obj === 'object' && !Array.isArray(obj);\n\n/** @internal is the given object an integer? */\nexport const isInteger = (obj: any): boolean => String(Math.floor(Number(obj))) === obj;\n\n/**\n * Deeply set a value from in object via its path. If the value at `path`\n * has changed, return a shallow copy of obj with `value` set at `path`.\n * If `value` has not changed, return the original `obj`.\n *\n * Existing objects / arrays along `path` are also shallow copied. Sibling\n * objects along path retain the same internal js reference. Since new\n * objects / arrays are only created along `path`, we can test if anything\n * changed in a nested structure by comparing the object's reference in\n * the old and new object, similar to how russian doll cache invalidation\n * works.\n *\n * In earlier versions of this function, which used cloneDeep, there were\n * issues whereby settings a nested value would mutate the parent\n * instead of creating a new object. `clone` avoids that bug making a\n * shallow copy of the objects along the update path\n * so no object is mutated in place.\n *\n * Before changing this function, please read through the following\n * discussions.\n *\n * @see https://github.com/developit/linkstate\n * @see https://github.com/jaredpalmer/formik/pull/123\n */\nexport function setIn(obj: any, path: string, value: any): any {\n const res: any = clone(obj); // this keeps inheritance when obj is a class\n let resVal: any = res;\n let i = 0;\n const pathArray = toPath(path);\n\n for (; i < pathArray.length - 1; i++) {\n const currentPath: string = pathArray[i];\n const currentObj: any = getIn(obj, pathArray.slice(0, i + 1));\n\n if (currentObj && (isObject(currentObj) || Array.isArray(currentObj))) {\n resVal = resVal[currentPath] = clone(currentObj);\n } else {\n const nextPath: string = pathArray[i + 1];\n resVal = resVal[currentPath] = isInteger(nextPath) && Number(nextPath) >= 0 ? [] : {};\n }\n }\n\n // Return original object if new value is the same as current\n if ((i === 0 ? obj : resVal)[pathArray[i]] === value) {\n return obj;\n }\n\n if (value === undefined) {\n delete resVal[pathArray[i]];\n } else {\n resVal[pathArray[i]] = value;\n }\n\n // If the path array has a single element, the loop did not run.\n // Deleting on `resVal` had no effect in this scenario, so we delete on the result instead.\n if (i === 0 && value === undefined) {\n delete res[pathArray[i]];\n }\n\n return res;\n}\n"],"names":["ItemTypes","COMPONENT","EDIT_FIELD","FIELD","DYNAMIC_ZONE","RELATION","BLOCKS","useKeyboardDragAndDrop","active","index","onCancel","onDropItem","onGrabItem","onMoveItem","isSelected","setIsSelected","React","useState","handleMove","movement","handleDragClick","handleCancel","handleKeyDown","e","key","preventDefault","DIRECTIONS","UPWARD","DOWNWARD","DROP_SENSITIVITY","REGULAR","IMMEDIATE","useDragAndDrop","type","item","onStart","onEnd","dropSensitivity","objectRef","useRef","handlerId","isOver","dropRef","useDrop","accept","collect","monitor","getHandlerId","shallow","drop","draggedIndex","newIndex","hover","current","dragIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","bottom","top","clientOffset","getClientOffset","hoverClientY","y","Array","isArray","minLength","Math","min","length","areEqual","isLessThan","isGreaterThan","i","getDragDirection","isDragging","didDrop","getInitialClientOffset","deltaY","direction","dragRef","dragPreviewRef","useDrag","width","end","canDrag","id","getItem","undefined","initialOffset","currentOffset","isOverDropTarget","getIn","obj","def","pathStartIndex","path","toPath","isObject","isInteger","String","floor","Number","setIn","value","res","clone","resVal","pathArray","currentPath","currentObj","slice","nextPath"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAAaA,SAAY,GAAA;IACvBC,SAAW,EAAA,WAAA;IACXC,UAAY,EAAA,WAAA;IACZC,KAAO,EAAA,OAAA;IACPC,YAAc,EAAA,aAAA;IACdC,QAAU,EAAA,UAAA;IACVC,MAAQ,EAAA;AACV;;ACEA;;;;;AAKC,IACM,MAAMC,sBAAyB,GAAA,CACpCC,QACAC,KACA,EAAA,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,UAAU,EAAEC,UAAU,EAA2C,GAAA;AAEzF,IAAA,MAAM,CAACC,UAAYC,EAAAA,aAAAA,CAAc,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEnD,IAAA,MAAMC,aAAa,CAACC,QAAAA,GAAAA;AAClB,QAAA,IAAI,CAACL,UAAY,EAAA;AACf,YAAA;AACF;QACA,IAAI,OAAOL,KAAU,KAAA,QAAA,IAAYI,UAAY,EAAA;AAC3C,YAAA,IAAIM,aAAa,IAAM,EAAA;AACrBN,gBAAAA,UAAAA,CAAYJ,QAAQ,CAAcA,EAAAA,KAAAA,CAAAA;aAC7B,MAAA,IAAIU,aAAa,MAAQ,EAAA;AAC9BN,gBAAAA,UAAAA,CAAYJ,QAAQ,CAAcA,EAAAA,KAAAA,CAAAA;AACpC;AACF;AACF,KAAA;AAEA,IAAA,MAAMW,eAAkB,GAAA,IAAA;AACtB,QAAA,IAAIN,UAAY,EAAA;AACd,YAAA,IAAIH,UAAY,EAAA;gBACdA,UAAWF,CAAAA,KAAAA,CAAAA;AACb;YACAM,aAAc,CAAA,KAAA,CAAA;SACT,MAAA;AACL,YAAA,IAAIH,UAAY,EAAA;gBACdA,UAAWH,CAAAA,KAAAA,CAAAA;AACb;YACAM,aAAc,CAAA,IAAA,CAAA;AAChB;AACF,KAAA;AAEA,IAAA,MAAMM,YAAe,GAAA,IAAA;AACnB,QAAA,IAAIP,UAAY,EAAA;YACdC,aAAc,CAAA,KAAA,CAAA;AAEd,YAAA,IAAIL,QAAU,EAAA;gBACZA,QAASD,CAAAA,KAAAA,CAAAA;AACX;AACF;AACF,KAAA;AAEA,IAAA,MAAMa,gBAAgB,CAAoBC,CAAAA,GAAAA;AACxC,QAAA,IAAI,CAACf,MAAQ,EAAA;AACX,YAAA;AACF;AAEA,QAAA,IAAIe,CAAEC,CAAAA,GAAG,KAAK,KAAA,IAAS,CAACV,UAAY,EAAA;AAClC,YAAA;AACF;AAEAS,QAAAA,CAAAA,CAAEE,cAAc,EAAA;AAEhB,QAAA,OAAQF,EAAEC,GAAG;YACX,KAAK,GAAA;YACL,KAAK,OAAA;AACHJ,gBAAAA,eAAAA,EAAAA;AACA,gBAAA;YAEF,KAAK,QAAA;AACHC,gBAAAA,YAAAA,EAAAA;AACA,gBAAA;YAEF,KAAK,WAAA;YACL,KAAK,YAAA;gBACHH,UAAW,CAAA,MAAA,CAAA;AACX,gBAAA;YAEF,KAAK,SAAA;YACL,KAAK,WAAA;gBACHA,UAAW,CAAA,IAAA,CAAA;AACX,gBAAA;AAGJ;AACF,KAAA;IAEA,OAAOI,aAAAA;AACT,CAAE;;AC5EF,MAAMI,UAAa,GAAA;IACjBC,MAAQ,EAAA,QAAA;IACRC,QAAU,EAAA;AACZ;AAEA,MAAMC,gBAAmB,GAAA;IACvBC,OAAS,EAAA,SAAA;IACTC,SAAW,EAAA;AACb;AAmCA;;;IAIA,MAAMC,cAAiB,GAAA,CAQrBxB,MACA,EAAA,EACEyB,IAAO,GAAA,YAAY,EACnBxB,KAAK,EACLyB,IAAI,EACJC,OAAO,EACPC,KAAK,EACLxB,UAAU,EACVD,UAAU,EACVD,QAAQ,EACRG,UAAU,EACVwB,eAAAA,GAAkBR,gBAAiBC,CAAAA,OAAO,EACL,GAAA;IAEvC,MAAMQ,SAAAA,GAAYtB,gBAAMuB,CAAAA,MAAM,CAAI,IAAA,CAAA;IAElC,MAAM,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAAE,EAAEC,OAAQ,CAAA,GAAGC,gBAAyC,CAAA;QAChFC,MAAQX,EAAAA,IAAAA;AACRY,QAAAA,OAAAA,CAAAA,CAAQC,OAAO,EAAA;YACb,OAAO;AACLN,gBAAAA,SAAAA,EAAWM,QAAQC,YAAY,EAAA;gBAC/BN,MAAQK,EAAAA,OAAAA,CAAQL,MAAM,CAAC;oBAAEO,OAAS,EAAA;AAAK,iBAAA;AACzC,aAAA;AACF,SAAA;AACAC,QAAAA,IAAAA,CAAAA,CAAKf,IAAI,EAAA;YACP,MAAMgB,YAAAA,GAAehB,KAAKzB,KAAK;AAC/B,YAAA,MAAM0C,QAAW1C,GAAAA,KAAAA;AAEjB,YAAA,IAAIgC,UAAU9B,UAAY,EAAA;AACxBA,gBAAAA,UAAAA,CAAWuC,YAAcC,EAAAA,QAAAA,CAAAA;AAC3B;AACF,SAAA;QACAC,KAAMlB,CAAAA,CAAAA,IAAI,EAAEY,OAAO,EAAA;AACjB,YAAA,IAAI,CAACR,SAAAA,CAAUe,OAAO,IAAI,CAACxC,UAAY,EAAA;AACrC,gBAAA;AACF;YAEA,MAAMyC,SAAAA,GAAYpB,KAAKzB,KAAK;AAC5B,YAAA,MAAM0C,QAAW1C,GAAAA,KAAAA;YAEjB,MAAM8C,iBAAAA,GAAoBjB,SAAUe,CAAAA,OAAO,EAAEG,qBAAAA,EAAAA;YAC7C,MAAMC,YAAAA,GAAe,CAACF,iBAAAA,CAAkBG,MAAM,GAAGH,iBAAAA,CAAkBI,GAAE,IAAK,CAAA;YAC1E,MAAMC,YAAAA,GAAed,QAAQe,eAAe,EAAA;AAC5C,YAAA,IAAI,CAACD,YAAc,EAAA;AAEnB,YAAA,MAAME,eAAeF,YAAgBA,IAAAA,YAAAA,CAAaG,CAAC,GAAGR,kBAAkBI,GAAG;AAC3E,YAAA,IAAI,OAAOL,SAAAA,KAAc,QAAY,IAAA,OAAOH,aAAa,QAAU,EAAA;AACjE,gBAAA,IAAIG,cAAcH,QAAU,EAAA;;AAE1B,oBAAA;AACF;gBAEA,IAAId,eAAAA,KAAoBR,gBAAiBC,CAAAA,OAAO,EAAE;;oBAEhD,IAAIwB,SAAAA,GAAYH,QAAYW,IAAAA,YAAAA,GAAeL,YAAc,EAAA;AACvD,wBAAA;AACF;;oBAGA,IAAIH,SAAAA,GAAYH,QAAYW,IAAAA,YAAAA,GAAeL,YAAc,EAAA;AACvD,wBAAA;AACF;AACF;;AAGA5C,gBAAAA,UAAAA,CAAWsC,QAAUG,EAAAA,SAAAA,CAAAA;AACrBpB,gBAAAA,IAAAA,CAAKzB,KAAK,GAAG0C,QAAAA;aACR,MAAA;;AAEL,gBAAA,IAAIa,MAAMC,OAAO,CAACX,cAAcU,KAAMC,CAAAA,OAAO,CAACd,QAAW,CAAA,EAAA;;oBAEvD,MAAMe,SAAAA,GAAYC,KAAKC,GAAG,CAACd,UAAUe,MAAM,EAAElB,SAASkB,MAAM,CAAA;AAC5D,oBAAA,IAAIC,QAAW,GAAA,IAAA;AACf,oBAAA,IAAIC,UAAa,GAAA,KAAA;AACjB,oBAAA,IAAIC,aAAgB,GAAA,KAAA;AAEpB,oBAAA,IAAK,IAAIC,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIP,WAAWO,CAAK,EAAA,CAAA;AAClC,wBAAA,IAAInB,SAAS,CAACmB,CAAAA,CAAE,GAAGtB,QAAQ,CAACsB,EAAE,EAAE;4BAC9BF,UAAa,GAAA,IAAA;4BACbD,QAAW,GAAA,KAAA;AACX,4BAAA;yBACK,MAAA,IAAIhB,SAAS,CAACmB,CAAAA,CAAE,GAAGtB,QAAQ,CAACsB,EAAE,EAAE;4BACrCD,aAAgB,GAAA,IAAA;4BAChBF,QAAW,GAAA,KAAA;AACX,4BAAA;AACF;AACF;;AAGA,oBAAA,IAAIA,YAAYhB,SAAUe,CAAAA,MAAM,KAAKlB,QAAAA,CAASkB,MAAM,EAAE;AACpD,wBAAA;AACF;oBAEA,IAAIhC,eAAAA,KAAoBR,gBAAiBC,CAAAA,OAAO,EAAE;;AAEhD,wBAAA,IAAIyC,UAAc,IAAA,CAACC,aAAiBV,IAAAA,YAAAA,GAAeL,YAAc,EAAA;AAC/D,4BAAA;AACF;;AAGA,wBAAA,IAAIe,aAAiB,IAAA,CAACD,UAAcT,IAAAA,YAAAA,GAAeL,YAAc,EAAA;AAC/D,4BAAA;AACF;AACF;AACF;AAEA5C,gBAAAA,UAAAA,CAAWsC,QAAUG,EAAAA,SAAAA,CAAAA;AACrBpB,gBAAAA,IAAAA,CAAKzB,KAAK,GAAG0C,QAAAA;AACf;AACF;AACF,KAAA,CAAA;AAEA,IAAA,MAAMuB,mBAAmB,CAAC5B,OAAAA,GAAAA;AACxB,QAAA,IACEA,OACAA,IAAAA,OAAAA,CAAQ6B,UAAU,EAAA,IAClB,CAAC7B,OAAAA,CAAQ8B,OAAO,EAAA,IAChB9B,OAAQ+B,CAAAA,sBAAsB,EAC9B/B,IAAAA,OAAAA,CAAQe,eAAe,EACvB,EAAA;YACA,MAAMiB,MAAAA,GAAShC,QAAQ+B,sBAAsB,EAAA,CAAId,CAAC,GAAGjB,OAAAA,CAAQe,eAAe,EAAA,CAAIE,CAAC;AAEjF,YAAA,IAAIe,MAAS,GAAA,CAAA,EAAG,OAAOpD,UAAAA,CAAWC,MAAM;AAExC,YAAA,IAAImD,MAAS,GAAA,CAAA,EAAG,OAAOpD,UAAAA,CAAWE,QAAQ;YAE1C,OAAO,IAAA;AACT;QAEA,OAAO,IAAA;AACT,KAAA;IAEA,MAAM,CAAC,EAAE+C,UAAU,EAAEI,SAAS,EAAE,EAAEC,OAAAA,EAASC,cAAe,CAAA,GAAGC,gBAAQ,CAAA;AACnEjD,QAAAA,IAAAA;AACAC,QAAAA,IAAAA,CAAAA,GAAAA;AACE,YAAA,IAAIC,OAAS,EAAA;AACXA,gBAAAA,OAAAA,EAAAA;AACF;AAEA;;;UAIA,MAAM,EAAEgD,KAAK,EAAE,GAAG7C,SAAUe,CAAAA,OAAO,EAAEG,qBAAAA,EAAAA,IAA2B,EAAC;YAEjE,OAAO;AAAE/C,gBAAAA,KAAAA;AAAO0E,gBAAAA,KAAAA;AAAO,gBAAA,GAAGjD;AAAK,aAAA;AACjC,SAAA;AACAkD,QAAAA,GAAAA,CAAAA,GAAAA;AACE,YAAA,IAAIhD,KAAO,EAAA;AACTA,gBAAAA,KAAAA,EAAAA;AACF;AACF,SAAA;QACAiD,OAAS7E,EAAAA,MAAAA;AACT;;;;QAKAmE,UAAAA,EAAYzC,IAAMoD,EAAAA,EAAAA,GACd,CAACxC,OAAAA,GAAAA;AACC,YAAA,OAAOZ,KAAKoD,EAAE,KAAKxC,OAAQyC,CAAAA,OAAO,GAAGD,EAAE;SAEzCE,GAAAA,SAAAA;QACJ3C,OAAS,EAAA,CAACC,WAAa;AACrB6B,gBAAAA,UAAAA,EAAY7B,QAAQ6B,UAAU,EAAA;AAC9Bc,gBAAAA,aAAAA,EAAe3C,QAAQ+B,sBAAsB,EAAA;AAC7Ca,gBAAAA,aAAAA,EAAe5C,QAAQe,eAAe,EAAA;AACtCkB,gBAAAA,SAAAA,EAAWL,gBAAiB5B,CAAAA,OAAAA;aAC9B;AACF,KAAA,CAAA;IAEA,MAAMxB,aAAAA,GAAgBf,sBAAuBC,CAAAA,MAAAA,EAAQC,KAAO,EAAA;AAC1DG,QAAAA,UAAAA;AACAD,QAAAA,UAAAA;AACAD,QAAAA,QAAAA;AACAG,QAAAA;AACF,KAAA,CAAA;IAEA,OAAO;AACL,QAAA;AAAE2B,YAAAA,SAAAA;AAAWmC,YAAAA,UAAAA;AAAYrD,YAAAA,aAAAA;YAAeqE,gBAAkBlD,EAAAA,MAAAA;AAAQsC,YAAAA;AAAU,SAAA;AAC5EzC,QAAAA,SAAAA;AACAI,QAAAA,OAAAA;AACAsC,QAAAA,OAAAA;AACAC,QAAAA;AACD,KAAA;AACH;;AChQA;;IAGO,SAASW,KAAAA,CAAMC,GAAQ,EAAErE,GAAsB,EAAEsE,GAAS,EAAEC,cAAAA,GAAyB,CAAC,EAAA;AAC3F,IAAA,MAAMC,OAAOC,MAAOzE,CAAAA,GAAAA,CAAAA;AACpB,IAAA,MAAOqE,GAAOE,IAAAA,cAAAA,GAAiBC,IAAK3B,CAAAA,MAAM,CAAE;AAC1CwB,QAAAA,GAAAA,GAAMA,GAAG,CAACG,IAAI,CAACD,iBAAiB,CAAC;AACnC;;AAGA,IAAA,IAAIA,cAAmBC,KAAAA,IAAAA,CAAK3B,MAAM,IAAI,CAACwB,GAAK,EAAA;QAC1C,OAAOC,GAAAA;AACT;IAEA,OAAOD,GAAAA,KAAQL,YAAYM,GAAMD,GAAAA,GAAAA;AACnC;AAEA,gDACO,MAAMK,QAAAA,GAAW,CAACL,GACvBA,GAAAA,GAAAA,KAAQ,IAAQ,IAAA,OAAOA,QAAQ,QAAY,IAAA,CAAC7B,KAAMC,CAAAA,OAAO,CAAC4B,GAAK,CAAA;AAEjE,iDACO,MAAMM,SAAAA,GAAY,CAACN,GAAAA,GAAsBO,MAAOjC,CAAAA,IAAAA,CAAKkC,KAAK,CAACC,MAAOT,CAAAA,GAAAA,CAAAA,CAAAA,CAAAA,KAAWA,GAAI;AAExF;;;;;;;;;;;;;;;;;;;;;;;AAuBC,IACM,SAASU,KAAAA,CAAMV,GAAQ,EAAEG,IAAY,EAAEQ,KAAU,EAAA;IACtD,MAAMC,GAAAA,GAAWC,KAAMb,CAAAA,GAAAA,CAAAA,CAAAA;AACvB,IAAA,IAAIc,MAAcF,GAAAA,GAAAA;AAClB,IAAA,IAAIhC,CAAI,GAAA,CAAA;AACR,IAAA,MAAMmC,YAAYX,MAAOD,CAAAA,IAAAA,CAAAA;AAEzB,IAAA,MAAOvB,CAAImC,GAAAA,SAAAA,CAAUvC,MAAM,GAAG,GAAGI,CAAK,EAAA,CAAA;QACpC,MAAMoC,WAAAA,GAAsBD,SAAS,CAACnC,CAAE,CAAA;AACxC,QAAA,MAAMqC,aAAkBlB,KAAMC,CAAAA,GAAAA,EAAKe,UAAUG,KAAK,CAAC,GAAGtC,CAAI,GAAA,CAAA,CAAA,CAAA;QAE1D,IAAIqC,UAAAA,KAAeZ,QAASY,CAAAA,UAAAA,CAAAA,IAAe9C,MAAMC,OAAO,CAAC6C,WAAU,CAAI,EAAA;AACrEH,YAAAA,MAAAA,GAASA,MAAM,CAACE,WAAY,CAAA,GAAGH,KAAMI,CAAAA,UAAAA,CAAAA;SAChC,MAAA;AACL,YAAA,MAAME,QAAmBJ,GAAAA,SAAS,CAACnC,CAAAA,GAAI,CAAE,CAAA;YACzCkC,MAASA,GAAAA,MAAM,CAACE,WAAAA,CAAY,GAAGV,SAAAA,CAAUa,QAAaV,CAAAA,IAAAA,MAAAA,CAAOU,QAAa,CAAA,IAAA,CAAA,GAAI,EAAE,GAAG,EAAC;AACtF;AACF;;AAGA,IAAA,IAAI,CAACvC,CAAM,KAAA,CAAA,GAAIoB,GAAMc,GAAAA,MAAK,EAAGC,SAAS,CAACnC,CAAE,CAAA,CAAC,KAAK+B,KAAO,EAAA;QACpD,OAAOX,GAAAA;AACT;AAEA,IAAyB;AACvB,QAAA,OAAOc,MAAM,CAACC,SAAS,CAACnC,EAAE,CAAC;;;;IAO7B,IAAIA,CAAAA,KAAM,CAAK+B,IAAAA,KAAAA,KAAUhB,SAAW,EAAA;AAClC,QAAA,OAAOiB,GAAG,CAACG,SAAS,CAACnC,EAAE,CAAC;AAC1B;IAEA,OAAOgC,GAAAA;AACT;;;;;;;;;"}