@strapi/content-type-builder 5.29.0 → 5.30.1

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 (133) hide show
  1. package/dist/admin/components/AIChat/Chat.js +1 -0
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +1 -0
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
  6. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
  7. package/dist/admin/components/AIChat/UploadFigmaModal.js +2 -1
  8. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  9. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +2 -1
  10. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  11. package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
  12. package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
  14. package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
  15. package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
  16. package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  18. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  19. package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
  20. package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
  22. package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -1
  23. package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -1
  24. package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
  26. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
  27. package/dist/admin/components/AIChat/lib/constants.js.map +1 -1
  28. package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -1
  29. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  30. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  31. package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
  32. package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
  33. package/dist/admin/components/AttributeOptions/AttributeOptions.js.map +1 -1
  34. package/dist/admin/components/AttributeOptions/AttributeOptions.mjs.map +1 -1
  35. package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
  36. package/dist/admin/components/AttributeOptions/EmptyAttributes.mjs.map +1 -1
  37. package/dist/admin/components/AttributeRow.js.map +1 -1
  38. package/dist/admin/components/AttributeRow.mjs.map +1 -1
  39. package/dist/admin/components/CheckboxWithNumberField.js +2 -1
  40. package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
  41. package/dist/admin/components/CheckboxWithNumberField.mjs +2 -1
  42. package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
  43. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  44. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  45. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  46. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  47. package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
  48. package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
  49. package/dist/admin/components/DisplayedType.js.map +1 -1
  50. package/dist/admin/components/DisplayedType.mjs.map +1 -1
  51. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  52. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  53. package/dist/admin/components/Footers.js.map +1 -1
  54. package/dist/admin/components/Footers.mjs.map +1 -1
  55. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  56. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  57. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  58. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  59. package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
  60. package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
  61. package/dist/admin/components/FormModal/attributes/baseForm.js.map +1 -1
  62. package/dist/admin/components/FormModal/attributes/baseForm.mjs.map +1 -1
  63. package/dist/admin/components/FormModal/component/componentForm.js.map +1 -1
  64. package/dist/admin/components/FormModal/component/componentForm.mjs.map +1 -1
  65. package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
  66. package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
  67. package/dist/admin/components/FormModal/utils/createUid.js.map +1 -1
  68. package/dist/admin/components/FormModal/utils/createUid.mjs.map +1 -1
  69. package/dist/admin/components/FormModalHeader.js.map +1 -1
  70. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  71. package/dist/admin/components/FormModalSubHeader.js.map +1 -1
  72. package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
  73. package/dist/admin/components/IconPicker/constants.js +3 -0
  74. package/dist/admin/components/IconPicker/constants.js.map +1 -1
  75. package/dist/admin/components/IconPicker/constants.mjs +3 -0
  76. package/dist/admin/components/IconPicker/constants.mjs.map +1 -1
  77. package/dist/admin/components/List.js.map +1 -1
  78. package/dist/admin/components/List.mjs.map +1 -1
  79. package/dist/admin/components/PluralName.js +2 -1
  80. package/dist/admin/components/PluralName.js.map +1 -1
  81. package/dist/admin/components/PluralName.mjs +2 -1
  82. package/dist/admin/components/PluralName.mjs.map +1 -1
  83. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
  84. package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
  85. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
  86. package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
  87. package/dist/admin/components/SelectComponent.js.map +1 -1
  88. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  89. package/dist/admin/components/SingularName.js +2 -1
  90. package/dist/admin/components/SingularName.js.map +1 -1
  91. package/dist/admin/components/SingularName.mjs +2 -1
  92. package/dist/admin/components/SingularName.mjs.map +1 -1
  93. package/dist/admin/components/TabForm.js.map +1 -1
  94. package/dist/admin/components/TabForm.mjs.map +1 -1
  95. package/dist/admin/index.js.map +1 -1
  96. package/dist/admin/index.mjs.map +1 -1
  97. package/dist/admin/pages/App/index.js.map +1 -1
  98. package/dist/admin/pages/App/index.mjs.map +1 -1
  99. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  100. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  101. package/dist/admin/utils/conditions.js.map +1 -1
  102. package/dist/admin/utils/conditions.mjs.map +1 -1
  103. package/dist/admin/utils/getTrad.js.map +1 -1
  104. package/dist/admin/utils/getTrad.mjs.map +1 -1
  105. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  106. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  107. package/dist/admin/utils/timeFormat.js.map +1 -1
  108. package/dist/admin/utils/timeFormat.mjs.map +1 -1
  109. package/dist/server/controllers/validation/common.js.map +1 -1
  110. package/dist/server/controllers/validation/common.mjs.map +1 -1
  111. package/dist/server/controllers/validation/content-type.js.map +1 -1
  112. package/dist/server/controllers/validation/content-type.mjs.map +1 -1
  113. package/dist/server/controllers/validation/model-schema.js.map +1 -1
  114. package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
  115. package/dist/server/controllers/validation/relations.js.map +1 -1
  116. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  117. package/dist/server/register.js +30 -89
  118. package/dist/server/register.js.map +1 -1
  119. package/dist/server/register.mjs +30 -89
  120. package/dist/server/register.mjs.map +1 -1
  121. package/dist/server/services/api-handler.js.map +1 -1
  122. package/dist/server/services/api-handler.mjs.map +1 -1
  123. package/dist/server/services/component-categories.js.map +1 -1
  124. package/dist/server/services/component-categories.mjs.map +1 -1
  125. package/dist/server/services/schema-builder/component-builder.js.map +1 -1
  126. package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
  127. package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
  128. package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
  129. package/dist/server/src/index.d.ts +3 -1
  130. package/dist/server/src/index.d.ts.map +1 -1
  131. package/dist/server/src/register.d.ts +4 -9
  132. package/dist/server/src/register.d.ts.map +1 -1
  133. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"useContentTypeBuilderMenu.mjs","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":";;;;;;;;;;MA4CaA,yBAA4B,GAAA,IAAA;AACvC,IAAA,MAAM,EAAEC,2BAA2B,EAAEC,mBAAmB,EAAEC,sBAAsB,EAAE,GAChFC,cAAAA,EAAAA;IACF,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGC,QAAS,CAAA,EAAA,CAAA;IAC/C,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,sBAAAA,EAAAA;IACpC,MAAM,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AAEnB,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,UAAUH,MAAQ,EAAA;QACrCI,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAMC,SAAAA,GAAYC,YAAYN,MAAQ,EAAA;QACpCI,WAAa,EAAA;AACf,KAAA,CAAA;AAEA,IAAA,MAAMG,wCAA2C,GAAA,IAAA;QAC/Cd,UAAW,CAAA,CAAC,qBAAqB,CAAC,CAAA;AAElC,QAAA,MAAMe,SAAY,GAAA;YAChBC,SAAW,EAAA,aAAA;YACXC,IAAM,EAAA,gBAAA;YACNC,UAAY,EAAA,QAAA;YACZC,SAAW,EAAA;AACb,SAAA;QAEAd,uBAAwBU,CAAAA,SAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAMK,oCAAuC,GAAA,IAAA;QAC3CpB,UAAW,CAAA,CAAC,oBAAoB,CAAC,CAAA;AAEjC,QAAA,MAAMe,SAAY,GAAA;YAChBC,SAAW,EAAA,aAAA;YACXC,IAAM,EAAA,YAAA;YACNC,UAAY,EAAA,QAAA;YACZC,SAAW,EAAA;AACb,SAAA;QAEAd,uBAAwBU,CAAAA,SAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAMM,mCAAsC,GAAA,IAAA;QAC1CrB,UAAW,CAAA,qBAAA,CAAA;AAEX,QAAA,MAAMe,SAAY,GAAA;YAChBC,SAAW,EAAA,WAAA;YACXC,IAAM,EAAA,IAAA;YACNC,UAAY,EAAA,QAAA;YACZC,SAAW,EAAA;AACb,SAAA;QAEAd,uBAAwBU,CAAAA,SAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAMO,cAAiBC,GAAAA,MAAAA,CAAOC,OAAO,CAAC5B,2BACnC6B,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,UAAW,CAAA,IAAM;YAChCC,IAAMF,EAAAA,QAAAA;AACNG,YAAAA,KAAAA,EAAOC,UAAWJ,CAAAA,QAAAA,CAAAA;AAClBK,YAAAA,KAAAA,EAAOJ,UACJF,CAAAA,GAAG,CAAC,CAACO,aAAe;AACnBJ,oBAAAA,IAAAA,EAAMI,UAAUC,GAAG;AACnBC,oBAAAA,EAAAA,EAAI,CAAC,SAAS,EAAEC,QAAAA,CAAS,sBAAsB,EAAET,QAAS,CAAA,CAAC,EAAEM,SAAAA,CAAUC,GAAG,CAAC,CAAC;oBAC5EJ,KAAOG,EAAAA,SAAAA,CAAUI,IAAI,CAACC,WAAW;AACjCC,oBAAAA,MAAAA,EAAQN,UAAUM;AACpB,iBAAA,CACCC,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAM7B,SAAU8B,CAAAA,OAAO,CAACF,CAAAA,CAAEX,KAAK,EAAEY,EAAEZ,KAAK,CAAA;AACtD,SAAA,CACCU,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAM7B,SAAU8B,CAAAA,OAAO,CAACF,CAAAA,CAAEX,KAAK,EAAEY,EAAEZ,KAAK,CAAA,CAAA;AAEpD,IAAA,MAAMc,qBAAwB7C,GAAAA,sBAAAA,CAC3B8C,MAAM,CAAC,CAACC,GAAAA,GAAQA,GAAIC,CAAAA,OAAO,CAC3BrB,CAAAA,GAAG,CAAC,CAACW,QAAU;AACdnB,YAAAA,IAAAA,EAAMmB,KAAKnB,IAAI;AACfW,YAAAA,IAAAA,EAAMQ,KAAKR,IAAI;AACfM,YAAAA,EAAAA,EAAIE,KAAKF,EAAE;AACXL,YAAAA,KAAAA,EAAOO,KAAKP,KAAK;AACjBS,YAAAA,MAAAA,EAAQF,KAAKE;SACf,CAAA,CAAA;AAEF,IAAA,MAAMS,IAAa,GAAA;AACjB,QAAA;YACEnB,IAAM,EAAA,QAAA;YACNC,KAAO,EAAA;AACLmB,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,0BAAA,CAAA,CAA4B,CAAC;gBAC5CC,cAAgB,EAAA;AAClB,aAAA;AACAC,YAAAA,UAAAA,EAAYtD,mBACR,GAAA;AACEmD,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,qBAAA,CAAA,CAAuB,CAAC;gBACvCC,cAAgB,EAAA,4BAAA;gBAChBE,OAAStC,EAAAA;aAEXuC,GAAAA,SAAAA;AACJtB,YAAAA,KAAAA,EAAOY,sBAAsBC,MAAM,CAAC,CAACU,WAAgBA,GAAAA,WAAAA,CAAYrC,IAAI,KAAK,gBAAA;AAC5E,SAAA;AACA,QAAA;YACEW,IAAM,EAAA,aAAA;YACNC,KAAO,EAAA;AACLmB,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,gCAAA,CAAA,CAAkC,CAAC;gBAClDC,cAAgB,EAAA;AAClB,aAAA;AACAC,YAAAA,UAAAA,EAAYtD,mBACR,GAAA;AACEmD,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,4BAAA,CAAA,CAA8B,CAAC;gBAC9CC,cAAgB,EAAA,wBAAA;gBAChBE,OAAShC,EAAAA;aAEXiC,GAAAA,SAAAA;AACJtB,YAAAA,KAAAA,EAAOY,sBAAsBC,MAAM,CAAC,CAACW,UAAeA,GAAAA,UAAAA,CAAWtC,IAAI,KAAK,YAAA;AAC1E,SAAA;AACA,QAAA;YACEW,IAAM,EAAA,YAAA;YACNC,KAAO,EAAA;AACLmB,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,8BAAA,CAAA,CAAgC,CAAC;gBAChDC,cAAgB,EAAA;AAClB,aAAA;AACAC,YAAAA,UAAAA,EAAYtD,mBACR,GAAA;AACEmD,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,yBAAA,CAAA,CAA2B,CAAC;gBAC3CC,cAAgB,EAAA,wBAAA;gBAChBE,OAAS/B,EAAAA;aAEXgC,GAAAA,SAAAA;YACJtB,KAAOT,EAAAA;AACT;KACD,CAACG,GAAG,CAAC,CAAC+B,OAAAA,GAAAA;AACL,QAAA,MAAMC,QAAWD,GAAAA,OAAAA,CAAQzB,KAAK,CAAC2B,IAAI,CAAC,CAACC,CAAM,GAAA,OAAA,IAAWA,CAAKC,IAAAA,KAAAA,CAAMC,OAAO,CAACF,EAAE5B,KAAK,CAAA,CAAA;AAEhF,QAAA,IAAI0B,QAAU,EAAA;AACZ,YAAA,IAAIK,kBAAqB,GAAA,CAAA;YAEzB,OAAO;AACL,gBAAA,GAAGN,OAAO;AACVzB,gBAAAA,KAAAA,EAAOyB,QAAQzB,KAAK,CAACgC,MAAM,CAAC,CAACC,GAAKC,EAAAA,IAAAA,GAAAA;AAChC,oBAAA,MAAMC,aACJ,GAAA,OAAA,IAAWD,IAAOA,GAAAA,IAAAA,CAAKlC,KAAK,CAACa,MAAM,CAAC,CAACqB,OAASxD,QAASwD,CAAAA,IAAAA,CAAKpC,KAAK,EAAE3B,gBAAgB,EAAE;oBAEvF,IAAIgE,aAAAA,CAAcC,MAAM,KAAK,CAAG,EAAA;wBAC9B,OAAOH,GAAAA;AACT;AAEAF,oBAAAA,kBAAAA,IAAsBI,cAAcC,MAAM;AAE1CH,oBAAAA,GAAAA,CAAII,IAAI,CAAC;AACP,wBAAA,GAAGH,IAAI;AACPlC,wBAAAA,KAAAA,EAAOmC,aAAc3B,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAM7B,SAAU8B,CAAAA,OAAO,CAACF,CAAAA,CAAEX,KAAK,EAAEY,EAAEZ,KAAK,CAAA;AACxE,qBAAA,CAAA;oBAEA,OAAOmC,GAAAA;AACT,iBAAA,EAAG,EAAE,CAAA;gBACLK,UAAYP,EAAAA;AACd,aAAA;AACF;QAEA,MAAMI,aAAAA,GAAgBV,OAAQzB,CAAAA,KAAK,CAChCa,MAAM,CAAC,CAACqB,IAAAA,GAASxD,QAASwD,CAAAA,IAAAA,CAAKpC,KAAK,EAAE3B,cACtCqC,IAAI,CAAC,CAACC,CAAAA,EAAGC,CAAM7B,GAAAA,SAAAA,CAAU8B,OAAO,CAACF,CAAEX,CAAAA,KAAK,EAAEY,CAAAA,CAAEZ,KAAK,CAAA,CAAA;QAEpD,OAAO;AACL,YAAA,GAAG2B,OAAO;YACVzB,KAAOmC,EAAAA,aAAAA;AACPG,YAAAA,UAAAA,EAAYH,cAAcC;AAC5B,SAAA;AACF,KAAA,CAAA;IAEA,OAAO;QACLG,IAAMvB,EAAAA,IAAAA;QACNwB,MAAQ,EAAA;YACNC,KAAOtE,EAAAA,WAAAA;YACPuE,QAAUtE,EAAAA,cAAAA;AACVuE,YAAAA,KAAAA,EAAO,IAAMvE,cAAe,CAAA,EAAA;AAC9B;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"useContentTypeBuilderMenu.mjs","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return {\n ...attr,\n targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute,\n // Explicitly preserve conditions for relations\n ...(attr.conditions && { conditions: attr.conditions }),\n };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","conditions","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":"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"}
1
+ {"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return {\n ...attr,\n targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute,\n // Explicitly preserve conditions for relations\n ...(attr.conditions && { conditions: attr.conditions }),\n };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","conditions","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cleanData.mjs","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return {\n ...attr,\n targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute,\n // Explicitly preserve conditions for relations\n ...(attr.conditions && { conditions: attr.conditions }),\n };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","conditions","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":"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"}
1
+ {"version":3,"file":"cleanData.mjs","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return {\n ...attr,\n targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute,\n // Explicitly preserve conditions for relations\n ...(attr.conditions && { conditions: attr.conditions }),\n };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","conditions","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayedType.js","sources":["../../../admin/src/components/DisplayedType.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils/getTrad';\n\ntype DisplayedTypeProps = {\n type: string;\n customField?: string | null;\n repeatable?: boolean;\n multiple?: boolean;\n};\n\nexport const DisplayedType = ({\n type,\n customField = null,\n repeatable = false,\n multiple = false,\n}: DisplayedTypeProps) => {\n const { formatMessage } = useIntl();\n\n let readableType = type;\n\n if (['integer', 'biginteger', 'float', 'decimal'].includes(type)) {\n readableType = 'number';\n } else if (['string'].includes(type)) {\n readableType = 'text';\n }\n\n if (customField) {\n return formatMessage({\n id: getTrad('attribute.customField'),\n defaultMessage: 'Custom field',\n });\n }\n\n return (\n <>\n {repeatable &&\n formatMessage({\n id: getTrad('component.repeatable'),\n defaultMessage: 'Repeatable',\n })}\n {multiple &&\n formatMessage({\n id: getTrad('media.multiple'),\n defaultMessage: 'Multiple',\n })}\n &nbsp;\n {formatMessage({\n id: getTrad(`attribute.${readableType}`),\n defaultMessage: type,\n })}\n </>\n );\n};\n"],"names":["DisplayedType","type","customField","repeatable","multiple","formatMessage","useIntl","readableType","includes","id","getTrad","defaultMessage","_jsxs","_Fragment"],"mappings":";;;;;;AAWaA,MAAAA,aAAAA,GAAgB,CAAC,EAC5BC,IAAI,EACJC,WAAAA,GAAc,IAAI,EAClBC,UAAa,GAAA,KAAK,EAClBC,QAAAA,GAAW,KAAK,EACG,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,IAAIC,YAAeN,GAAAA,IAAAA;IAEnB,IAAI;AAAC,QAAA,SAAA;AAAW,QAAA,YAAA;AAAc,QAAA,OAAA;AAAS,QAAA;KAAU,CAACO,QAAQ,CAACP,IAAO,CAAA,EAAA;QAChEM,YAAe,GAAA,QAAA;AACjB,KAAA,MAAO,IAAI;AAAC,QAAA;KAAS,CAACC,QAAQ,CAACP,IAAO,CAAA,EAAA;QACpCM,YAAe,GAAA,MAAA;AACjB;AAEA,IAAA,IAAIL,WAAa,EAAA;AACf,QAAA,OAAOG,aAAc,CAAA;AACnBI,YAAAA,EAAAA,EAAIC,eAAQ,CAAA,uBAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACF;IAEA,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACGV,YAAAA,UAAAA,IACCE,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,eAAQ,CAAA,sBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACDP,YAAAA,QAAAA,IACCC,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,eAAQ,CAAA,gBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AAAG,YAAA,GAAA;YAEJN,aAAc,CAAA;AACbI,gBAAAA,EAAAA,EAAIC,eAAQ,CAAA,CAAC,UAAU,EAAEH,aAAa,CAAC,CAAA;gBACvCI,cAAgBV,EAAAA;AAClB,aAAA;;;AAGN;;;;"}
1
+ {"version":3,"file":"DisplayedType.js","sources":["../../../admin/src/components/DisplayedType.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils/getTrad';\n\ntype DisplayedTypeProps = {\n type: string;\n customField?: string | null;\n repeatable?: boolean;\n multiple?: boolean;\n};\n\nexport const DisplayedType = ({\n type,\n customField = null,\n repeatable = false,\n multiple = false,\n}: DisplayedTypeProps) => {\n const { formatMessage } = useIntl();\n\n let readableType = type;\n\n if (['integer', 'biginteger', 'float', 'decimal'].includes(type)) {\n readableType = 'number';\n } else if (['string'].includes(type)) {\n readableType = 'text';\n }\n\n if (customField) {\n return formatMessage({\n id: getTrad('attribute.customField'),\n defaultMessage: 'Custom field',\n });\n }\n\n return (\n <>\n {repeatable &&\n formatMessage({\n id: getTrad('component.repeatable'),\n defaultMessage: 'Repeatable',\n })}\n {multiple &&\n formatMessage({\n id: getTrad('media.multiple'),\n defaultMessage: 'Multiple',\n })}\n &nbsp;\n {formatMessage({\n id: getTrad(`attribute.${readableType}`),\n defaultMessage: type,\n })}\n </>\n );\n};\n"],"names":["DisplayedType","type","customField","repeatable","multiple","formatMessage","useIntl","readableType","includes","id","getTrad","defaultMessage","_jsxs","_Fragment"],"mappings":";;;;;;AAWaA,MAAAA,aAAAA,GAAgB,CAAC,EAC5BC,IAAI,EACJC,WAAAA,GAAc,IAAI,EAClBC,UAAa,GAAA,KAAK,EAClBC,QAAAA,GAAW,KAAK,EACG,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,IAAIC,YAAeN,GAAAA,IAAAA;IAEnB,IAAI;AAAC,QAAA,SAAA;AAAW,QAAA,YAAA;AAAc,QAAA,OAAA;AAAS,QAAA;KAAU,CAACO,QAAQ,CAACP,IAAO,CAAA,EAAA;QAChEM,YAAe,GAAA,QAAA;AACjB,KAAA,MAAO,IAAI;AAAC,QAAA;KAAS,CAACC,QAAQ,CAACP,IAAO,CAAA,EAAA;QACpCM,YAAe,GAAA,MAAA;AACjB;AAEA,IAAA,IAAIL,WAAa,EAAA;AACf,QAAA,OAAOG,aAAc,CAAA;AACnBI,YAAAA,EAAAA,EAAIC,eAAQ,CAAA,uBAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACF;IAEA,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACGV,YAAAA,UAAAA,IACCE,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,eAAQ,CAAA,sBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACDP,YAAAA,QAAAA,IACCC,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,eAAQ,CAAA,gBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AAAG,YAAA,GAAA;YAEJN,aAAc,CAAA;AACbI,gBAAAA,EAAAA,EAAIC,eAAQ,CAAA,CAAC,UAAU,EAAEH,YAAc,CAAA,CAAA,CAAA;gBACvCI,cAAgBV,EAAAA;AAClB,aAAA;;;AAGN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayedType.mjs","sources":["../../../admin/src/components/DisplayedType.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils/getTrad';\n\ntype DisplayedTypeProps = {\n type: string;\n customField?: string | null;\n repeatable?: boolean;\n multiple?: boolean;\n};\n\nexport const DisplayedType = ({\n type,\n customField = null,\n repeatable = false,\n multiple = false,\n}: DisplayedTypeProps) => {\n const { formatMessage } = useIntl();\n\n let readableType = type;\n\n if (['integer', 'biginteger', 'float', 'decimal'].includes(type)) {\n readableType = 'number';\n } else if (['string'].includes(type)) {\n readableType = 'text';\n }\n\n if (customField) {\n return formatMessage({\n id: getTrad('attribute.customField'),\n defaultMessage: 'Custom field',\n });\n }\n\n return (\n <>\n {repeatable &&\n formatMessage({\n id: getTrad('component.repeatable'),\n defaultMessage: 'Repeatable',\n })}\n {multiple &&\n formatMessage({\n id: getTrad('media.multiple'),\n defaultMessage: 'Multiple',\n })}\n &nbsp;\n {formatMessage({\n id: getTrad(`attribute.${readableType}`),\n defaultMessage: type,\n })}\n </>\n );\n};\n"],"names":["DisplayedType","type","customField","repeatable","multiple","formatMessage","useIntl","readableType","includes","id","getTrad","defaultMessage","_jsxs","_Fragment"],"mappings":";;;;AAWaA,MAAAA,aAAAA,GAAgB,CAAC,EAC5BC,IAAI,EACJC,WAAAA,GAAc,IAAI,EAClBC,UAAa,GAAA,KAAK,EAClBC,QAAAA,GAAW,KAAK,EACG,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,IAAIC,YAAeN,GAAAA,IAAAA;IAEnB,IAAI;AAAC,QAAA,SAAA;AAAW,QAAA,YAAA;AAAc,QAAA,OAAA;AAAS,QAAA;KAAU,CAACO,QAAQ,CAACP,IAAO,CAAA,EAAA;QAChEM,YAAe,GAAA,QAAA;AACjB,KAAA,MAAO,IAAI;AAAC,QAAA;KAAS,CAACC,QAAQ,CAACP,IAAO,CAAA,EAAA;QACpCM,YAAe,GAAA,MAAA;AACjB;AAEA,IAAA,IAAIL,WAAa,EAAA;AACf,QAAA,OAAOG,aAAc,CAAA;AACnBI,YAAAA,EAAAA,EAAIC,OAAQ,CAAA,uBAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACF;IAEA,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACGV,YAAAA,UAAAA,IACCE,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,OAAQ,CAAA,sBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACDP,YAAAA,QAAAA,IACCC,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,OAAQ,CAAA,gBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AAAG,YAAA,GAAA;YAEJN,aAAc,CAAA;AACbI,gBAAAA,EAAAA,EAAIC,OAAQ,CAAA,CAAC,UAAU,EAAEH,aAAa,CAAC,CAAA;gBACvCI,cAAgBV,EAAAA;AAClB,aAAA;;;AAGN;;;;"}
1
+ {"version":3,"file":"DisplayedType.mjs","sources":["../../../admin/src/components/DisplayedType.tsx"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { getTrad } from '../utils/getTrad';\n\ntype DisplayedTypeProps = {\n type: string;\n customField?: string | null;\n repeatable?: boolean;\n multiple?: boolean;\n};\n\nexport const DisplayedType = ({\n type,\n customField = null,\n repeatable = false,\n multiple = false,\n}: DisplayedTypeProps) => {\n const { formatMessage } = useIntl();\n\n let readableType = type;\n\n if (['integer', 'biginteger', 'float', 'decimal'].includes(type)) {\n readableType = 'number';\n } else if (['string'].includes(type)) {\n readableType = 'text';\n }\n\n if (customField) {\n return formatMessage({\n id: getTrad('attribute.customField'),\n defaultMessage: 'Custom field',\n });\n }\n\n return (\n <>\n {repeatable &&\n formatMessage({\n id: getTrad('component.repeatable'),\n defaultMessage: 'Repeatable',\n })}\n {multiple &&\n formatMessage({\n id: getTrad('media.multiple'),\n defaultMessage: 'Multiple',\n })}\n &nbsp;\n {formatMessage({\n id: getTrad(`attribute.${readableType}`),\n defaultMessage: type,\n })}\n </>\n );\n};\n"],"names":["DisplayedType","type","customField","repeatable","multiple","formatMessage","useIntl","readableType","includes","id","getTrad","defaultMessage","_jsxs","_Fragment"],"mappings":";;;;AAWaA,MAAAA,aAAAA,GAAgB,CAAC,EAC5BC,IAAI,EACJC,WAAAA,GAAc,IAAI,EAClBC,UAAa,GAAA,KAAK,EAClBC,QAAAA,GAAW,KAAK,EACG,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,IAAIC,YAAeN,GAAAA,IAAAA;IAEnB,IAAI;AAAC,QAAA,SAAA;AAAW,QAAA,YAAA;AAAc,QAAA,OAAA;AAAS,QAAA;KAAU,CAACO,QAAQ,CAACP,IAAO,CAAA,EAAA;QAChEM,YAAe,GAAA,QAAA;AACjB,KAAA,MAAO,IAAI;AAAC,QAAA;KAAS,CAACC,QAAQ,CAACP,IAAO,CAAA,EAAA;QACpCM,YAAe,GAAA,MAAA;AACjB;AAEA,IAAA,IAAIL,WAAa,EAAA;AACf,QAAA,OAAOG,aAAc,CAAA;AACnBI,YAAAA,EAAAA,EAAIC,OAAQ,CAAA,uBAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACF;IAEA,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACGV,YAAAA,UAAAA,IACCE,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,OAAQ,CAAA,sBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACDP,YAAAA,QAAAA,IACCC,aAAc,CAAA;AACZI,gBAAAA,EAAAA,EAAIC,OAAQ,CAAA,gBAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;AAAG,YAAA,GAAA;YAEJN,aAAc,CAAA;AACbI,gBAAAA,EAAAA,EAAIC,OAAQ,CAAA,CAAC,UAAU,EAAEH,YAAc,CAAA,CAAA,CAAA;gBACvCI,cAAgBV,EAAAA;AAClB,aAAA;;;AAGN;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicZoneList.js","sources":["../../../admin/src/components/DynamicZoneList.tsx"],"sourcesContent":["import { ComponentType, useState } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { ComponentCard } from './ComponentCard';\nimport { ComponentList } from './ComponentList';\nimport { ComponentRow } from './ComponentRow';\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface DynamicZoneListProps {\n addComponent: (name?: string) => void;\n components: Array<Internal.UID.Component>;\n customRowComponent?: ComponentType<any>;\n name?: string;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst StyledAddIcon = styled(Plus)<{ disabled?: boolean }>`\n width: 3.2rem;\n height: 3.2rem;\n padding: 0.9rem;\n border-radius: 6.4rem;\n background: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral100 : theme.colors.primary100};\n path {\n fill: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral600 : theme.colors.primary600};\n }\n`;\n\nconst ComponentStack = styled(Flex)`\n flex-shrink: 0;\n width: 14rem;\n height: 8rem;\n justify-content: center;\n align-items: center;\n`;\n\nexport const DynamicZoneList = ({\n components = [],\n addComponent,\n name,\n forTarget,\n targetUid,\n disabled = false,\n}: DynamicZoneListProps) => {\n const { isInDevelopmentMode } = useDataManager();\n const [activeTab, setActiveTab] = useState(0);\n const { formatMessage } = useIntl();\n\n const toggle = (tab: number) => {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n };\n\n const handleClickAdd = () => {\n addComponent(name);\n };\n\n return (\n <ComponentRow className=\"dynamiczone-row\" $isFromDynamicZone>\n <Box>\n <Box padding={2} paddingLeft=\"104px\">\n <Flex role=\"tablist\" gap={2} wrap=\"wrap\">\n {isInDevelopmentMode && (\n <button\n type=\"button\"\n onClick={handleClickAdd}\n disabled={disabled}\n style={{\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n >\n <ComponentStack direction=\"column\" alignItems=\"stretch\" gap={1}>\n <StyledAddIcon disabled={disabled} />\n <Typography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor={disabled ? 'neutral600' : 'primary600'}\n >\n {formatMessage({\n id: getTrad('button.component.add'),\n defaultMessage: 'Add a component',\n })}\n </Typography>\n </ComponentStack>\n </button>\n )}\n {components.map((component, index) => {\n return (\n <ComponentCard\n key={component}\n dzName={name || ''}\n index={index}\n component={component}\n isActive={activeTab === index}\n isInDevelopmentMode={isInDevelopmentMode}\n onClick={() => toggle(index)}\n forTarget={forTarget}\n targetUid={targetUid}\n disabled={disabled}\n />\n );\n })}\n </Flex>\n </Box>\n <Box>\n {components.map((component, index) => {\n return (\n <Box\n id={`dz-${name}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`dz-${name}-tab-${index}`}\n key={component}\n style={{ display: activeTab === index ? 'block' : 'none' }}\n >\n <ComponentList isFromDynamicZone component={component} key={component} />\n </Box>\n );\n })}\n </Box>\n </Box>\n </ComponentRow>\n );\n};\n"],"names":["StyledAddIcon","styled","Plus","theme","disabled","colors","neutral100","primary100","neutral600","primary600","ComponentStack","Flex","DynamicZoneList","components","addComponent","name","forTarget","targetUid","isInDevelopmentMode","useDataManager","activeTab","setActiveTab","useState","formatMessage","useIntl","toggle","tab","handleClickAdd","_jsx","ComponentRow","className","$isFromDynamicZone","_jsxs","Box","padding","paddingLeft","role","gap","wrap","button","type","onClick","style","cursor","direction","alignItems","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","map","component","index","ComponentCard","dzName","isActive","aria-labelledby","display","ComponentList","isFromDynamicZone"],"mappings":"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"}
1
+ {"version":3,"file":"DynamicZoneList.js","sources":["../../../admin/src/components/DynamicZoneList.tsx"],"sourcesContent":["import { ComponentType, useState } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { ComponentCard } from './ComponentCard';\nimport { ComponentList } from './ComponentList';\nimport { ComponentRow } from './ComponentRow';\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface DynamicZoneListProps {\n addComponent: (name?: string) => void;\n components: Array<Internal.UID.Component>;\n customRowComponent?: ComponentType<any>;\n name?: string;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst StyledAddIcon = styled(Plus)<{ disabled?: boolean }>`\n width: 3.2rem;\n height: 3.2rem;\n padding: 0.9rem;\n border-radius: 6.4rem;\n background: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral100 : theme.colors.primary100};\n path {\n fill: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral600 : theme.colors.primary600};\n }\n`;\n\nconst ComponentStack = styled(Flex)`\n flex-shrink: 0;\n width: 14rem;\n height: 8rem;\n justify-content: center;\n align-items: center;\n`;\n\nexport const DynamicZoneList = ({\n components = [],\n addComponent,\n name,\n forTarget,\n targetUid,\n disabled = false,\n}: DynamicZoneListProps) => {\n const { isInDevelopmentMode } = useDataManager();\n const [activeTab, setActiveTab] = useState(0);\n const { formatMessage } = useIntl();\n\n const toggle = (tab: number) => {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n };\n\n const handleClickAdd = () => {\n addComponent(name);\n };\n\n return (\n <ComponentRow className=\"dynamiczone-row\" $isFromDynamicZone>\n <Box>\n <Box padding={2} paddingLeft=\"104px\">\n <Flex role=\"tablist\" gap={2} wrap=\"wrap\">\n {isInDevelopmentMode && (\n <button\n type=\"button\"\n onClick={handleClickAdd}\n disabled={disabled}\n style={{\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n >\n <ComponentStack direction=\"column\" alignItems=\"stretch\" gap={1}>\n <StyledAddIcon disabled={disabled} />\n <Typography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor={disabled ? 'neutral600' : 'primary600'}\n >\n {formatMessage({\n id: getTrad('button.component.add'),\n defaultMessage: 'Add a component',\n })}\n </Typography>\n </ComponentStack>\n </button>\n )}\n {components.map((component, index) => {\n return (\n <ComponentCard\n key={component}\n dzName={name || ''}\n index={index}\n component={component}\n isActive={activeTab === index}\n isInDevelopmentMode={isInDevelopmentMode}\n onClick={() => toggle(index)}\n forTarget={forTarget}\n targetUid={targetUid}\n disabled={disabled}\n />\n );\n })}\n </Flex>\n </Box>\n <Box>\n {components.map((component, index) => {\n return (\n <Box\n id={`dz-${name}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`dz-${name}-tab-${index}`}\n key={component}\n style={{ display: activeTab === index ? 'block' : 'none' }}\n >\n <ComponentList isFromDynamicZone component={component} key={component} />\n </Box>\n );\n })}\n </Box>\n </Box>\n </ComponentRow>\n );\n};\n"],"names":["StyledAddIcon","styled","Plus","theme","disabled","colors","neutral100","primary100","neutral600","primary600","ComponentStack","Flex","DynamicZoneList","components","addComponent","name","forTarget","targetUid","isInDevelopmentMode","useDataManager","activeTab","setActiveTab","useState","formatMessage","useIntl","toggle","tab","handleClickAdd","_jsx","ComponentRow","className","$isFromDynamicZone","_jsxs","Box","padding","paddingLeft","role","gap","wrap","button","type","onClick","style","cursor","direction","alignItems","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","map","component","index","ComponentCard","dzName","isActive","aria-labelledby","display","ComponentList","isFromDynamicZone"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicZoneList.mjs","sources":["../../../admin/src/components/DynamicZoneList.tsx"],"sourcesContent":["import { ComponentType, useState } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { ComponentCard } from './ComponentCard';\nimport { ComponentList } from './ComponentList';\nimport { ComponentRow } from './ComponentRow';\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface DynamicZoneListProps {\n addComponent: (name?: string) => void;\n components: Array<Internal.UID.Component>;\n customRowComponent?: ComponentType<any>;\n name?: string;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst StyledAddIcon = styled(Plus)<{ disabled?: boolean }>`\n width: 3.2rem;\n height: 3.2rem;\n padding: 0.9rem;\n border-radius: 6.4rem;\n background: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral100 : theme.colors.primary100};\n path {\n fill: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral600 : theme.colors.primary600};\n }\n`;\n\nconst ComponentStack = styled(Flex)`\n flex-shrink: 0;\n width: 14rem;\n height: 8rem;\n justify-content: center;\n align-items: center;\n`;\n\nexport const DynamicZoneList = ({\n components = [],\n addComponent,\n name,\n forTarget,\n targetUid,\n disabled = false,\n}: DynamicZoneListProps) => {\n const { isInDevelopmentMode } = useDataManager();\n const [activeTab, setActiveTab] = useState(0);\n const { formatMessage } = useIntl();\n\n const toggle = (tab: number) => {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n };\n\n const handleClickAdd = () => {\n addComponent(name);\n };\n\n return (\n <ComponentRow className=\"dynamiczone-row\" $isFromDynamicZone>\n <Box>\n <Box padding={2} paddingLeft=\"104px\">\n <Flex role=\"tablist\" gap={2} wrap=\"wrap\">\n {isInDevelopmentMode && (\n <button\n type=\"button\"\n onClick={handleClickAdd}\n disabled={disabled}\n style={{\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n >\n <ComponentStack direction=\"column\" alignItems=\"stretch\" gap={1}>\n <StyledAddIcon disabled={disabled} />\n <Typography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor={disabled ? 'neutral600' : 'primary600'}\n >\n {formatMessage({\n id: getTrad('button.component.add'),\n defaultMessage: 'Add a component',\n })}\n </Typography>\n </ComponentStack>\n </button>\n )}\n {components.map((component, index) => {\n return (\n <ComponentCard\n key={component}\n dzName={name || ''}\n index={index}\n component={component}\n isActive={activeTab === index}\n isInDevelopmentMode={isInDevelopmentMode}\n onClick={() => toggle(index)}\n forTarget={forTarget}\n targetUid={targetUid}\n disabled={disabled}\n />\n );\n })}\n </Flex>\n </Box>\n <Box>\n {components.map((component, index) => {\n return (\n <Box\n id={`dz-${name}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`dz-${name}-tab-${index}`}\n key={component}\n style={{ display: activeTab === index ? 'block' : 'none' }}\n >\n <ComponentList isFromDynamicZone component={component} key={component} />\n </Box>\n );\n })}\n </Box>\n </Box>\n </ComponentRow>\n );\n};\n"],"names":["StyledAddIcon","styled","Plus","theme","disabled","colors","neutral100","primary100","neutral600","primary600","ComponentStack","Flex","DynamicZoneList","components","addComponent","name","forTarget","targetUid","isInDevelopmentMode","useDataManager","activeTab","setActiveTab","useState","formatMessage","useIntl","toggle","tab","handleClickAdd","_jsx","ComponentRow","className","$isFromDynamicZone","_jsxs","Box","padding","paddingLeft","role","gap","wrap","button","type","onClick","style","cursor","direction","alignItems","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","map","component","index","ComponentCard","dzName","isActive","aria-labelledby","display","ComponentList","isFromDynamicZone"],"mappings":"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"}
1
+ {"version":3,"file":"DynamicZoneList.mjs","sources":["../../../admin/src/components/DynamicZoneList.tsx"],"sourcesContent":["import { ComponentType, useState } from 'react';\n\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { ComponentCard } from './ComponentCard';\nimport { ComponentList } from './ComponentList';\nimport { ComponentRow } from './ComponentRow';\nimport { useDataManager } from './DataManager/useDataManager';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface DynamicZoneListProps {\n addComponent: (name?: string) => void;\n components: Array<Internal.UID.Component>;\n customRowComponent?: ComponentType<any>;\n name?: string;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst StyledAddIcon = styled(Plus)<{ disabled?: boolean }>`\n width: 3.2rem;\n height: 3.2rem;\n padding: 0.9rem;\n border-radius: 6.4rem;\n background: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral100 : theme.colors.primary100};\n path {\n fill: ${({ theme, disabled }) =>\n disabled ? theme.colors.neutral600 : theme.colors.primary600};\n }\n`;\n\nconst ComponentStack = styled(Flex)`\n flex-shrink: 0;\n width: 14rem;\n height: 8rem;\n justify-content: center;\n align-items: center;\n`;\n\nexport const DynamicZoneList = ({\n components = [],\n addComponent,\n name,\n forTarget,\n targetUid,\n disabled = false,\n}: DynamicZoneListProps) => {\n const { isInDevelopmentMode } = useDataManager();\n const [activeTab, setActiveTab] = useState(0);\n const { formatMessage } = useIntl();\n\n const toggle = (tab: number) => {\n if (activeTab !== tab) {\n setActiveTab(tab);\n }\n };\n\n const handleClickAdd = () => {\n addComponent(name);\n };\n\n return (\n <ComponentRow className=\"dynamiczone-row\" $isFromDynamicZone>\n <Box>\n <Box padding={2} paddingLeft=\"104px\">\n <Flex role=\"tablist\" gap={2} wrap=\"wrap\">\n {isInDevelopmentMode && (\n <button\n type=\"button\"\n onClick={handleClickAdd}\n disabled={disabled}\n style={{\n cursor: disabled ? 'not-allowed' : 'pointer',\n }}\n >\n <ComponentStack direction=\"column\" alignItems=\"stretch\" gap={1}>\n <StyledAddIcon disabled={disabled} />\n <Typography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor={disabled ? 'neutral600' : 'primary600'}\n >\n {formatMessage({\n id: getTrad('button.component.add'),\n defaultMessage: 'Add a component',\n })}\n </Typography>\n </ComponentStack>\n </button>\n )}\n {components.map((component, index) => {\n return (\n <ComponentCard\n key={component}\n dzName={name || ''}\n index={index}\n component={component}\n isActive={activeTab === index}\n isInDevelopmentMode={isInDevelopmentMode}\n onClick={() => toggle(index)}\n forTarget={forTarget}\n targetUid={targetUid}\n disabled={disabled}\n />\n );\n })}\n </Flex>\n </Box>\n <Box>\n {components.map((component, index) => {\n return (\n <Box\n id={`dz-${name}-panel-${index}`}\n role=\"tabpanel\"\n aria-labelledby={`dz-${name}-tab-${index}`}\n key={component}\n style={{ display: activeTab === index ? 'block' : 'none' }}\n >\n <ComponentList isFromDynamicZone component={component} key={component} />\n </Box>\n );\n })}\n </Box>\n </Box>\n </ComponentRow>\n );\n};\n"],"names":["StyledAddIcon","styled","Plus","theme","disabled","colors","neutral100","primary100","neutral600","primary600","ComponentStack","Flex","DynamicZoneList","components","addComponent","name","forTarget","targetUid","isInDevelopmentMode","useDataManager","activeTab","setActiveTab","useState","formatMessage","useIntl","toggle","tab","handleClickAdd","_jsx","ComponentRow","className","$isFromDynamicZone","_jsxs","Box","padding","paddingLeft","role","gap","wrap","button","type","onClick","style","cursor","direction","alignItems","Typography","variant","fontWeight","textColor","id","getTrad","defaultMessage","map","component","index","ComponentCard","dzName","isActive","aria-labelledby","display","ComponentList","isFromDynamicZone"],"mappings":";;;;;;;;;;;;AA0BA,MAAMA,aAAAA,GAAgBC,MAAOC,CAAAA,IAAAA,CAA6B;;;;;AAK5C,cAAA,EAAE,CAAC,EAAEC,KAAK,EAAEC,QAAQ,EAAE,GAChCA,QAAAA,GAAWD,KAAME,CAAAA,MAAM,CAACC,UAAU,GAAGH,MAAME,MAAM,CAACE,UAAU,CAAC;;AAEvD,UAAA,EAAE,CAAC,EAAEJ,KAAK,EAAEC,QAAQ,EAAE,GAC1BA,QAAAA,GAAWD,KAAME,CAAAA,MAAM,CAACG,UAAU,GAAGL,MAAME,MAAM,CAACI,UAAU,CAAC;;AAEnE,CAAC;AAED,MAAMC,cAAAA,GAAiBT,MAAOU,CAAAA,IAAAA,CAAK;;;;;;AAMnC,CAAC;MAEYC,eAAkB,GAAA,CAAC,EAC9BC,UAAAA,GAAa,EAAE,EACfC,YAAY,EACZC,IAAI,EACJC,SAAS,EACTC,SAAS,EACTb,QAAAA,GAAW,KAAK,EACK,GAAA;IACrB,MAAM,EAAEc,mBAAmB,EAAE,GAAGC,cAAAA,EAAAA;AAChC,IAAA,MAAM,CAACC,SAAAA,EAAWC,YAAa,CAAA,GAAGC,QAAS,CAAA,CAAA,CAAA;IAC3C,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,SAAS,CAACC,GAAAA,GAAAA;AACd,QAAA,IAAIN,cAAcM,GAAK,EAAA;YACrBL,YAAaK,CAAAA,GAAAA,CAAAA;AACf;AACF,KAAA;AAEA,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBb,YAAaC,CAAAA,IAAAA,CAAAA;AACf,KAAA;AAEA,IAAA,qBACEa,GAACC,CAAAA,YAAAA,EAAAA;QAAaC,SAAU,EAAA,iBAAA;QAAkBC,kBAAkB,EAAA,IAAA;AAC1D,QAAA,QAAA,gBAAAC,IAACC,CAAAA,GAAAA,EAAAA;;8BACCL,GAACK,CAAAA,GAAAA,EAAAA;oBAAIC,OAAS,EAAA,CAAA;oBAAGC,WAAY,EAAA,OAAA;AAC3B,oBAAA,QAAA,gBAAAH,IAACrB,CAAAA,IAAAA,EAAAA;wBAAKyB,IAAK,EAAA,SAAA;wBAAUC,GAAK,EAAA,CAAA;wBAAGC,IAAK,EAAA,MAAA;;AAC/BpB,4BAAAA,mBAAAA,kBACCU,GAACW,CAAAA,QAAAA,EAAAA;gCACCC,IAAK,EAAA,QAAA;gCACLC,OAASd,EAAAA,cAAAA;gCACTvB,QAAUA,EAAAA,QAAAA;gCACVsC,KAAO,EAAA;AACLC,oCAAAA,MAAAA,EAAQvC,WAAW,aAAgB,GAAA;AACrC,iCAAA;AAEA,gCAAA,QAAA,gBAAA4B,IAACtB,CAAAA,cAAAA,EAAAA;oCAAekC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;oCAAUR,GAAK,EAAA,CAAA;;sDAC3DT,GAAC5B,CAAAA,aAAAA,EAAAA;4CAAcI,QAAUA,EAAAA;;sDACzBwB,GAACkB,CAAAA,UAAAA,EAAAA;4CACCC,OAAQ,EAAA,IAAA;4CACRC,UAAW,EAAA,MAAA;AACXC,4CAAAA,SAAAA,EAAW7C,WAAW,YAAe,GAAA,YAAA;sDAEpCmB,aAAc,CAAA;AACb2B,gDAAAA,EAAAA,EAAIC,OAAQ,CAAA,sBAAA,CAAA;gDACZC,cAAgB,EAAA;AAClB,6CAAA;;;;;4BAKPvC,UAAWwC,CAAAA,GAAG,CAAC,CAACC,SAAWC,EAAAA,KAAAA,GAAAA;AAC1B,gCAAA,qBACE3B,GAAC4B,CAAAA,aAAAA,EAAAA;AAECC,oCAAAA,MAAAA,EAAQ1C,IAAQ,IAAA,EAAA;oCAChBwC,KAAOA,EAAAA,KAAAA;oCACPD,SAAWA,EAAAA,SAAAA;AACXI,oCAAAA,QAAAA,EAAUtC,SAAcmC,KAAAA,KAAAA;oCACxBrC,mBAAqBA,EAAAA,mBAAAA;AACrBuB,oCAAAA,OAAAA,EAAS,IAAMhB,MAAO8B,CAAAA,KAAAA,CAAAA;oCACtBvC,SAAWA,EAAAA,SAAAA;oCACXC,SAAWA,EAAAA,SAAAA;oCACXb,QAAUA,EAAAA;AATLkD,iCAAAA,EAAAA,SAAAA,CAAAA;AAYX,6BAAA;;;;8BAGJ1B,GAACK,CAAAA,GAAAA,EAAAA;8BACEpB,UAAWwC,CAAAA,GAAG,CAAC,CAACC,SAAWC,EAAAA,KAAAA,GAAAA;AAC1B,wBAAA,qBACE3B,GAACK,CAAAA,GAAAA,EAAAA;AACCiB,4BAAAA,EAAAA,EAAI,CAAC,GAAG,EAAEnC,IAAK,CAAA,OAAO,EAAEwC,KAAO,CAAA,CAAA;4BAC/BnB,IAAK,EAAA,UAAA;AACLuB,4BAAAA,iBAAAA,EAAiB,CAAC,GAAG,EAAE5C,IAAK,CAAA,KAAK,EAAEwC,KAAO,CAAA,CAAA;4BAE1Cb,KAAO,EAAA;gCAAEkB,OAASxC,EAAAA,SAAAA,KAAcmC,QAAQ,OAAU,GAAA;AAAO,6BAAA;AAEzD,4BAAA,QAAA,gBAAA3B,GAACiC,CAAAA,aAAAA,EAAAA;gCAAcC,iBAAiB,EAAA,IAAA;gCAACR,SAAWA,EAAAA;AAAgBA,6BAAAA,EAAAA,SAAAA;AAHvDA,yBAAAA,EAAAA,SAAAA,CAAAA;AAMX,qBAAA;;;;;AAKV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Footers.js","sources":["../../../admin/src/components/Footers.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Box, Divider, Flex, TFooterProps, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst IconBox = styled(Box)`\n height: 2.4rem;\n width: 2.4rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n svg path {\n fill: ${({ theme, color }) => theme.colors[`${color}600` as keyof typeof theme.colors]};\n }\n`;\n\nconst ButtonBox = styled(Box)`\n border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};\n display: block;\n width: 100%;\n border: none;\n position: relative;\n`;\n\ninterface NestedTFooterProps extends TFooterProps {\n color: string;\n children: ReactNode;\n icon: ReactNode;\n onClick?: () => void;\n}\n\nexport const NestedTFooter = ({ children, icon, color, ...props }: NestedTFooterProps) => {\n return (\n <ButtonBox\n paddingBottom={4}\n paddingTop={4}\n paddingLeft=\"6rem\"\n tag=\"button\"\n type=\"button\"\n {...props}\n >\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n );\n};\n\nexport const TFooter = ({ children, icon, color, ...props }: TFooterProps & { color: string }) => {\n return (\n <div>\n <Divider />\n <ButtonBox tag=\"button\" background={`${color}100`} padding={5} {...props}>\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n </div>\n );\n};\n"],"names":["IconBox","styled","Box","theme","color","colors","ButtonBox","borderRadius","NestedTFooter","children","icon","props","_jsx","paddingBottom","paddingTop","paddingLeft","tag","type","_jsxs","Flex","aria-hidden","background","Typography","variant","fontWeight","textColor","TFooter","div","Divider","padding"],"mappings":";;;;;;AAKA,MAAMA,OAAAA,GAAUC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;;;;;;;AAcjB,UAAA,EAAE,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAKD,KAAAA,CAAME,MAAM,CAAC,CAAC,EAAED,KAAAA,CAAM,GAAG,CAAC,CAA8B,CAAC;;AAE3F,CAAC;AAED,MAAME,SAAAA,GAAYL,uBAAOC,CAAAA,gBAAAA,CAAI;AACR,qBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMI,YAAY,CAAC;;;;;AAK9F,CAAC;AASM,MAAMC,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAA2B,EAAA,GAAA;AACnF,IAAA,qBACEC,cAACN,CAAAA,SAAAA,EAAAA;QACCO,aAAe,EAAA,CAAA;QACfC,UAAY,EAAA,CAAA;QACZC,WAAY,EAAA,MAAA;QACZC,GAAI,EAAA,QAAA;QACJC,IAAK,EAAA,QAAA;AACJ,QAAA,GAAGN,KAAK;AAET,QAAA,QAAA,gBAAAO,eAACC,CAAAA,iBAAAA,EAAAA;;8BACCP,cAACZ,CAAAA,OAAAA,EAAAA;oBAAQI,KAAOA,EAAAA,KAAAA;oBAAOgB,aAAW,EAAA,IAAA;AAACC,oBAAAA,UAAAA,EAAY,CAAC,EAAEjB,KAAM,CAAA,GAAG,CAAC;AACzDM,oBAAAA,QAAAA,EAAAA;;8BAEHE,cAACV,CAAAA,gBAAAA,EAAAA;oBAAIa,WAAa,EAAA,CAAA;AAChB,oBAAA,QAAA,gBAAAH,cAACU,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKC,UAAW,EAAA,MAAA;AAAOC,wBAAAA,SAAAA,EAAW,CAAC,EAAErB,KAAM,CAAA,GAAG,CAAC;AAChEK,wBAAAA,QAAAA,EAAAA;;;;;;AAMb;AAEO,MAAMiB,OAAU,GAAA,CAAC,EAAEjB,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAAyC,EAAA,GAAA;AAC3F,IAAA,qBACEO,eAACS,CAAAA,KAAAA,EAAAA;;0BACCf,cAACgB,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;0BACDhB,cAACN,CAAAA,SAAAA,EAAAA;gBAAUU,GAAI,EAAA,QAAA;AAASK,gBAAAA,UAAAA,EAAY,CAAC,EAAEjB,KAAM,CAAA,GAAG,CAAC;gBAAEyB,OAAS,EAAA,CAAA;AAAI,gBAAA,GAAGlB,KAAK;AACtE,gBAAA,QAAA,gBAAAO,eAACC,CAAAA,iBAAAA,EAAAA;;sCACCP,cAACZ,CAAAA,OAAAA,EAAAA;4BAAQI,KAAOA,EAAAA,KAAAA;4BAAOgB,aAAW,EAAA,IAAA;AAACC,4BAAAA,UAAAA,EAAY,CAAC,EAAEjB,KAAM,CAAA,GAAG,CAAC;AACzDM,4BAAAA,QAAAA,EAAAA;;sCAEHE,cAACV,CAAAA,gBAAAA,EAAAA;4BAAIa,WAAa,EAAA,CAAA;AAChB,4BAAA,QAAA,gBAAAH,cAACU,CAAAA,uBAAAA,EAAAA;gCAAWC,OAAQ,EAAA,IAAA;gCAAKC,UAAW,EAAA,MAAA;AAAOC,gCAAAA,SAAAA,EAAW,CAAC,EAAErB,KAAM,CAAA,GAAG,CAAC;AAChEK,gCAAAA,QAAAA,EAAAA;;;;;;;;AAOf;;;;;"}
1
+ {"version":3,"file":"Footers.js","sources":["../../../admin/src/components/Footers.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Box, Divider, Flex, TFooterProps, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst IconBox = styled(Box)`\n height: 2.4rem;\n width: 2.4rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n svg path {\n fill: ${({ theme, color }) => theme.colors[`${color}600` as keyof typeof theme.colors]};\n }\n`;\n\nconst ButtonBox = styled(Box)`\n border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};\n display: block;\n width: 100%;\n border: none;\n position: relative;\n`;\n\ninterface NestedTFooterProps extends TFooterProps {\n color: string;\n children: ReactNode;\n icon: ReactNode;\n onClick?: () => void;\n}\n\nexport const NestedTFooter = ({ children, icon, color, ...props }: NestedTFooterProps) => {\n return (\n <ButtonBox\n paddingBottom={4}\n paddingTop={4}\n paddingLeft=\"6rem\"\n tag=\"button\"\n type=\"button\"\n {...props}\n >\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n );\n};\n\nexport const TFooter = ({ children, icon, color, ...props }: TFooterProps & { color: string }) => {\n return (\n <div>\n <Divider />\n <ButtonBox tag=\"button\" background={`${color}100`} padding={5} {...props}>\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n </div>\n );\n};\n"],"names":["IconBox","styled","Box","theme","color","colors","ButtonBox","borderRadius","NestedTFooter","children","icon","props","_jsx","paddingBottom","paddingTop","paddingLeft","tag","type","_jsxs","Flex","aria-hidden","background","Typography","variant","fontWeight","textColor","TFooter","div","Divider","padding"],"mappings":";;;;;;AAKA,MAAMA,OAAAA,GAAUC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;;;;;;;AAcjB,UAAA,EAAE,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAKD,KAAME,CAAAA,MAAM,CAAC,CAAGD,EAAAA,KAAAA,CAAM,GAAG,CAAC,CAA8B,CAAC;;AAE3F,CAAC;AAED,MAAME,SAAAA,GAAYL,uBAAOC,CAAAA,gBAAAA,CAAI;AACR,qBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMI,YAAY,CAAC;;;;;AAK9F,CAAC;AASM,MAAMC,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAA2B,EAAA,GAAA;AACnF,IAAA,qBACEC,cAACN,CAAAA,SAAAA,EAAAA;QACCO,aAAe,EAAA,CAAA;QACfC,UAAY,EAAA,CAAA;QACZC,WAAY,EAAA,MAAA;QACZC,GAAI,EAAA,QAAA;QACJC,IAAK,EAAA,QAAA;AACJ,QAAA,GAAGN,KAAK;AAET,QAAA,QAAA,gBAAAO,eAACC,CAAAA,iBAAAA,EAAAA;;8BACCP,cAACZ,CAAAA,OAAAA,EAAAA;oBAAQI,KAAOA,EAAAA,KAAAA;oBAAOgB,aAAW,EAAA,IAAA;oBAACC,UAAY,EAAA,CAAA,EAAGjB,KAAM,CAAA,GAAG,CAAC;AACzDM,oBAAAA,QAAAA,EAAAA;;8BAEHE,cAACV,CAAAA,gBAAAA,EAAAA;oBAAIa,WAAa,EAAA,CAAA;AAChB,oBAAA,QAAA,gBAAAH,cAACU,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKC,UAAW,EAAA,MAAA;wBAAOC,SAAW,EAAA,CAAA,EAAGrB,KAAM,CAAA,GAAG,CAAC;AAChEK,wBAAAA,QAAAA,EAAAA;;;;;;AAMb;AAEO,MAAMiB,OAAU,GAAA,CAAC,EAAEjB,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAAyC,EAAA,GAAA;AAC3F,IAAA,qBACEO,eAACS,CAAAA,KAAAA,EAAAA;;0BACCf,cAACgB,CAAAA,oBAAAA,EAAAA,EAAAA,CAAAA;0BACDhB,cAACN,CAAAA,SAAAA,EAAAA;gBAAUU,GAAI,EAAA,QAAA;gBAASK,UAAY,EAAA,CAAA,EAAGjB,KAAM,CAAA,GAAG,CAAC;gBAAEyB,OAAS,EAAA,CAAA;AAAI,gBAAA,GAAGlB,KAAK;AACtE,gBAAA,QAAA,gBAAAO,eAACC,CAAAA,iBAAAA,EAAAA;;sCACCP,cAACZ,CAAAA,OAAAA,EAAAA;4BAAQI,KAAOA,EAAAA,KAAAA;4BAAOgB,aAAW,EAAA,IAAA;4BAACC,UAAY,EAAA,CAAA,EAAGjB,KAAM,CAAA,GAAG,CAAC;AACzDM,4BAAAA,QAAAA,EAAAA;;sCAEHE,cAACV,CAAAA,gBAAAA,EAAAA;4BAAIa,WAAa,EAAA,CAAA;AAChB,4BAAA,QAAA,gBAAAH,cAACU,CAAAA,uBAAAA,EAAAA;gCAAWC,OAAQ,EAAA,IAAA;gCAAKC,UAAW,EAAA,MAAA;gCAAOC,SAAW,EAAA,CAAA,EAAGrB,KAAM,CAAA,GAAG,CAAC;AAChEK,gCAAAA,QAAAA,EAAAA;;;;;;;;AAOf;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Footers.mjs","sources":["../../../admin/src/components/Footers.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Box, Divider, Flex, TFooterProps, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst IconBox = styled(Box)`\n height: 2.4rem;\n width: 2.4rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n svg path {\n fill: ${({ theme, color }) => theme.colors[`${color}600` as keyof typeof theme.colors]};\n }\n`;\n\nconst ButtonBox = styled(Box)`\n border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};\n display: block;\n width: 100%;\n border: none;\n position: relative;\n`;\n\ninterface NestedTFooterProps extends TFooterProps {\n color: string;\n children: ReactNode;\n icon: ReactNode;\n onClick?: () => void;\n}\n\nexport const NestedTFooter = ({ children, icon, color, ...props }: NestedTFooterProps) => {\n return (\n <ButtonBox\n paddingBottom={4}\n paddingTop={4}\n paddingLeft=\"6rem\"\n tag=\"button\"\n type=\"button\"\n {...props}\n >\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n );\n};\n\nexport const TFooter = ({ children, icon, color, ...props }: TFooterProps & { color: string }) => {\n return (\n <div>\n <Divider />\n <ButtonBox tag=\"button\" background={`${color}100`} padding={5} {...props}>\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n </div>\n );\n};\n"],"names":["IconBox","styled","Box","theme","color","colors","ButtonBox","borderRadius","NestedTFooter","children","icon","props","_jsx","paddingBottom","paddingTop","paddingLeft","tag","type","_jsxs","Flex","aria-hidden","background","Typography","variant","fontWeight","textColor","TFooter","div","Divider","padding"],"mappings":";;;;AAKA,MAAMA,OAAAA,GAAUC,MAAOC,CAAAA,GAAAA,CAAI;;;;;;;;;;;;;;AAcjB,UAAA,EAAE,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAKD,KAAAA,CAAME,MAAM,CAAC,CAAC,EAAED,KAAAA,CAAM,GAAG,CAAC,CAA8B,CAAC;;AAE3F,CAAC;AAED,MAAME,SAAAA,GAAYL,MAAOC,CAAAA,GAAAA,CAAI;AACR,qBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMI,YAAY,CAAC;;;;;AAK9F,CAAC;AASM,MAAMC,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAA2B,EAAA,GAAA;AACnF,IAAA,qBACEC,GAACN,CAAAA,SAAAA,EAAAA;QACCO,aAAe,EAAA,CAAA;QACfC,UAAY,EAAA,CAAA;QACZC,WAAY,EAAA,MAAA;QACZC,GAAI,EAAA,QAAA;QACJC,IAAK,EAAA,QAAA;AACJ,QAAA,GAAGN,KAAK;AAET,QAAA,QAAA,gBAAAO,IAACC,CAAAA,IAAAA,EAAAA;;8BACCP,GAACZ,CAAAA,OAAAA,EAAAA;oBAAQI,KAAOA,EAAAA,KAAAA;oBAAOgB,aAAW,EAAA,IAAA;AAACC,oBAAAA,UAAAA,EAAY,CAAC,EAAEjB,KAAM,CAAA,GAAG,CAAC;AACzDM,oBAAAA,QAAAA,EAAAA;;8BAEHE,GAACV,CAAAA,GAAAA,EAAAA;oBAAIa,WAAa,EAAA,CAAA;AAChB,oBAAA,QAAA,gBAAAH,GAACU,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKC,UAAW,EAAA,MAAA;AAAOC,wBAAAA,SAAAA,EAAW,CAAC,EAAErB,KAAM,CAAA,GAAG,CAAC;AAChEK,wBAAAA,QAAAA,EAAAA;;;;;;AAMb;AAEO,MAAMiB,OAAU,GAAA,CAAC,EAAEjB,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAAyC,EAAA,GAAA;AAC3F,IAAA,qBACEO,IAACS,CAAAA,KAAAA,EAAAA;;0BACCf,GAACgB,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA;0BACDhB,GAACN,CAAAA,SAAAA,EAAAA;gBAAUU,GAAI,EAAA,QAAA;AAASK,gBAAAA,UAAAA,EAAY,CAAC,EAAEjB,KAAM,CAAA,GAAG,CAAC;gBAAEyB,OAAS,EAAA,CAAA;AAAI,gBAAA,GAAGlB,KAAK;AACtE,gBAAA,QAAA,gBAAAO,IAACC,CAAAA,IAAAA,EAAAA;;sCACCP,GAACZ,CAAAA,OAAAA,EAAAA;4BAAQI,KAAOA,EAAAA,KAAAA;4BAAOgB,aAAW,EAAA,IAAA;AAACC,4BAAAA,UAAAA,EAAY,CAAC,EAAEjB,KAAM,CAAA,GAAG,CAAC;AACzDM,4BAAAA,QAAAA,EAAAA;;sCAEHE,GAACV,CAAAA,GAAAA,EAAAA;4BAAIa,WAAa,EAAA,CAAA;AAChB,4BAAA,QAAA,gBAAAH,GAACU,CAAAA,UAAAA,EAAAA;gCAAWC,OAAQ,EAAA,IAAA;gCAAKC,UAAW,EAAA,MAAA;AAAOC,gCAAAA,SAAAA,EAAW,CAAC,EAAErB,KAAM,CAAA,GAAG,CAAC;AAChEK,gCAAAA,QAAAA,EAAAA;;;;;;;;AAOf;;;;"}
1
+ {"version":3,"file":"Footers.mjs","sources":["../../../admin/src/components/Footers.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport { Box, Divider, Flex, TFooterProps, Typography } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst IconBox = styled(Box)`\n height: 2.4rem;\n width: 2.4rem;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n\n svg {\n height: 1rem;\n width: 1rem;\n }\n\n svg path {\n fill: ${({ theme, color }) => theme.colors[`${color}600` as keyof typeof theme.colors]};\n }\n`;\n\nconst ButtonBox = styled(Box)`\n border-radius: 0 0 ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius};\n display: block;\n width: 100%;\n border: none;\n position: relative;\n`;\n\ninterface NestedTFooterProps extends TFooterProps {\n color: string;\n children: ReactNode;\n icon: ReactNode;\n onClick?: () => void;\n}\n\nexport const NestedTFooter = ({ children, icon, color, ...props }: NestedTFooterProps) => {\n return (\n <ButtonBox\n paddingBottom={4}\n paddingTop={4}\n paddingLeft=\"6rem\"\n tag=\"button\"\n type=\"button\"\n {...props}\n >\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n );\n};\n\nexport const TFooter = ({ children, icon, color, ...props }: TFooterProps & { color: string }) => {\n return (\n <div>\n <Divider />\n <ButtonBox tag=\"button\" background={`${color}100`} padding={5} {...props}>\n <Flex>\n <IconBox color={color} aria-hidden background={`${color}200`}>\n {icon}\n </IconBox>\n <Box paddingLeft={3}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor={`${color}600`}>\n {children}\n </Typography>\n </Box>\n </Flex>\n </ButtonBox>\n </div>\n );\n};\n"],"names":["IconBox","styled","Box","theme","color","colors","ButtonBox","borderRadius","NestedTFooter","children","icon","props","_jsx","paddingBottom","paddingTop","paddingLeft","tag","type","_jsxs","Flex","aria-hidden","background","Typography","variant","fontWeight","textColor","TFooter","div","Divider","padding"],"mappings":";;;;AAKA,MAAMA,OAAAA,GAAUC,MAAOC,CAAAA,GAAAA,CAAI;;;;;;;;;;;;;;AAcjB,UAAA,EAAE,CAAC,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAKD,KAAME,CAAAA,MAAM,CAAC,CAAGD,EAAAA,KAAAA,CAAM,GAAG,CAAC,CAA8B,CAAC;;AAE3F,CAAC;AAED,MAAME,SAAAA,GAAYL,MAAOC,CAAAA,GAAAA,CAAI;AACR,qBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMI,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMI,YAAY,CAAC;;;;;AAK9F,CAAC;AASM,MAAMC,aAAgB,GAAA,CAAC,EAAEC,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAA2B,EAAA,GAAA;AACnF,IAAA,qBACEC,GAACN,CAAAA,SAAAA,EAAAA;QACCO,aAAe,EAAA,CAAA;QACfC,UAAY,EAAA,CAAA;QACZC,WAAY,EAAA,MAAA;QACZC,GAAI,EAAA,QAAA;QACJC,IAAK,EAAA,QAAA;AACJ,QAAA,GAAGN,KAAK;AAET,QAAA,QAAA,gBAAAO,IAACC,CAAAA,IAAAA,EAAAA;;8BACCP,GAACZ,CAAAA,OAAAA,EAAAA;oBAAQI,KAAOA,EAAAA,KAAAA;oBAAOgB,aAAW,EAAA,IAAA;oBAACC,UAAY,EAAA,CAAA,EAAGjB,KAAM,CAAA,GAAG,CAAC;AACzDM,oBAAAA,QAAAA,EAAAA;;8BAEHE,GAACV,CAAAA,GAAAA,EAAAA;oBAAIa,WAAa,EAAA,CAAA;AAChB,oBAAA,QAAA,gBAAAH,GAACU,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKC,UAAW,EAAA,MAAA;wBAAOC,SAAW,EAAA,CAAA,EAAGrB,KAAM,CAAA,GAAG,CAAC;AAChEK,wBAAAA,QAAAA,EAAAA;;;;;;AAMb;AAEO,MAAMiB,OAAU,GAAA,CAAC,EAAEjB,QAAQ,EAAEC,IAAI,EAAEN,KAAK,EAAE,GAAGO,KAAyC,EAAA,GAAA;AAC3F,IAAA,qBACEO,IAACS,CAAAA,KAAAA,EAAAA;;0BACCf,GAACgB,CAAAA,OAAAA,EAAAA,EAAAA,CAAAA;0BACDhB,GAACN,CAAAA,SAAAA,EAAAA;gBAAUU,GAAI,EAAA,QAAA;gBAASK,UAAY,EAAA,CAAA,EAAGjB,KAAM,CAAA,GAAG,CAAC;gBAAEyB,OAAS,EAAA,CAAA;AAAI,gBAAA,GAAGlB,KAAK;AACtE,gBAAA,QAAA,gBAAAO,IAACC,CAAAA,IAAAA,EAAAA;;sCACCP,GAACZ,CAAAA,OAAAA,EAAAA;4BAAQI,KAAOA,EAAAA,KAAAA;4BAAOgB,aAAW,EAAA,IAAA;4BAACC,UAAY,EAAA,CAAA,EAAGjB,KAAM,CAAA,GAAG,CAAC;AACzDM,4BAAAA,QAAAA,EAAAA;;sCAEHE,GAACV,CAAAA,GAAAA,EAAAA;4BAAIa,WAAa,EAAA,CAAA;AAChB,4BAAA,QAAA,gBAAAH,GAACU,CAAAA,UAAAA,EAAAA;gCAAWC,OAAQ,EAAA,IAAA;gCAAKC,UAAW,EAAA,MAAA;gCAAOC,SAAW,EAAA,CAAA,EAAGrB,KAAM,CAAA,GAAG,CAAC;AAChEK,gCAAAA,QAAAA,EAAAA;;;;;;;;AAOf;;;;"}