@primershop/strapi-plugin-status-manager 0.0.7 → 0.0.8

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.
@@ -9,6 +9,7 @@ import { setCustomNativeDragPreview } from '@atlaskit/pragmatic-drag-and-drop/el
9
9
  import { reorder } from '@atlaskit/pragmatic-drag-and-drop/reorder';
10
10
  import { extractClosestEdge, attachClosestEdge } from '@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge';
11
11
  import { Plus, Drag, Trash } from '@strapi/icons';
12
+ import { p as pluginPermissions } from './index-BaesChab.mjs';
12
13
 
13
14
  const StatusManager = ()=>{
14
15
  const [statuses, setStatuses] = useState([]);
@@ -368,32 +369,35 @@ const HomePage = ()=>{
368
369
  children: "Status Manager"
369
370
  }),
370
371
  /*#__PURE__*/ jsx(Page.Main, {
371
- children: /*#__PURE__*/ jsx(Layouts.Content, {
372
- children: /*#__PURE__*/ jsx(Box, {
373
- children: /*#__PURE__*/ jsx(Flex, {
374
- padding: 10,
375
- gap: {
376
- initial: 1,
377
- medium: 4,
378
- large: 8
379
- },
380
- direction: {
381
- initial: "column",
382
- medium: "row"
383
- },
384
- alignItems: {
385
- initial: "center",
386
- medium: "flex-start"
387
- },
388
- children: /*#__PURE__*/ jsxs(Box, {
389
- padding: 1,
390
- children: [
391
- /*#__PURE__*/ jsx(Typography, {
392
- variant: "alpha",
393
- children: "Status manager"
394
- }),
395
- /*#__PURE__*/ jsx(StatusManager, {})
396
- ]
372
+ children: /*#__PURE__*/ jsx(Page.Protect, {
373
+ permissions: pluginPermissions.accessStatusManager,
374
+ children: /*#__PURE__*/ jsx(Layouts.Content, {
375
+ children: /*#__PURE__*/ jsx(Box, {
376
+ children: /*#__PURE__*/ jsx(Flex, {
377
+ padding: 10,
378
+ gap: {
379
+ initial: 1,
380
+ medium: 4,
381
+ large: 8
382
+ },
383
+ direction: {
384
+ initial: "column",
385
+ medium: "row"
386
+ },
387
+ alignItems: {
388
+ initial: "center",
389
+ medium: "flex-start"
390
+ },
391
+ children: /*#__PURE__*/ jsxs(Box, {
392
+ padding: 1,
393
+ children: [
394
+ /*#__PURE__*/ jsx(Typography, {
395
+ variant: "alpha",
396
+ children: "Status manager"
397
+ }),
398
+ /*#__PURE__*/ jsx(StatusManager, {})
399
+ ]
400
+ })
397
401
  })
398
402
  })
399
403
  })
@@ -404,4 +408,4 @@ const HomePage = ()=>{
404
408
  };
405
409
 
406
410
  export { HomePage };
407
- //# sourceMappingURL=HomePage-DQXfjVgM.mjs.map
411
+ //# sourceMappingURL=HomePage-C4rwBBWf.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage-DQXfjVgM.mjs","sources":["../../admin/src/components/StatusManager.tsx","../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\r\n\r\nimport { combine } from \"@atlaskit/pragmatic-drag-and-drop/combine\";\r\nimport {\r\n draggable,\r\n dropTargetForElements,\r\n monitorForElements,\r\n} from \"@atlaskit/pragmatic-drag-and-drop/element/adapter\";\r\nimport { pointerOutsideOfPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview\";\r\nimport { setCustomNativeDragPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview\";\r\nimport { reorder } from \"@atlaskit/pragmatic-drag-and-drop/reorder\";\r\nimport {\r\n attachClosestEdge,\r\n extractClosestEdge,\r\n} from \"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge\";\r\nimport {\r\n TextInput,\r\n Button,\r\n Flex,\r\n Typography,\r\n Box,\r\n Dialog,\r\n SingleSelect,\r\n SingleSelectOption,\r\n} from \"@strapi/design-system\";\r\nimport { Plus, Trash, Drag } from \"@strapi/icons\";\r\nimport { useFetchClient } from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n published: boolean;\r\n}\r\n\r\ninterface ReorderParams {\r\n startIndex: number;\r\n indexOfTarget: number;\r\n closestEdgeOfTarget: string;\r\n}\r\n\r\nconst StatusManager = () => {\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [newStatus, setNewStatus] = useState(\"\");\r\n const [statusToDelete, setStatusToDelete] = useState<Status | null>(null);\r\n const [replacementStatus, setReplacementStatus] = useState(\"\");\r\n const { get, post, put } = useFetchClient();\r\n const [instanceId] = useState(() => Symbol(\"instance-id\"));\r\n\r\n // Fetch statuses\r\n useEffect(() => {\r\n const loadStatuses = async () => {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n };\r\n loadStatuses();\r\n }, [get]);\r\n\r\n // Validate input (Latin characters only)\r\n const validateInput = (value: string): boolean => /^[a-zA-Z\\s]+$/.test(value);\r\n\r\n // Add new status\r\n const addStatus = async () => {\r\n if (!newStatus || !validateInput(newStatus))\r\n return alert(\"Only Latin characters allowed!\");\r\n try {\r\n const { data } = await post(\"primershop-status-manager/status\", {\r\n name: newStatus,\r\n published: false,\r\n });\r\n setStatuses([...statuses, data]);\r\n setNewStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error creating status:\", error);\r\n }\r\n };\r\n\r\n const reorderItem = useCallback(\r\n async ({\r\n startIndex,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n }: ReorderParams) => {\r\n // Calculate the final index based on the target position and edge\r\n let finishIndex = indexOfTarget;\r\n if (closestEdgeOfTarget === \"bottom\") {\r\n finishIndex = indexOfTarget + 1;\r\n }\r\n\r\n // If moving an item down, we need to adjust for the removed item\r\n if (startIndex < finishIndex) {\r\n finishIndex--;\r\n }\r\n\r\n if (finishIndex === startIndex) {\r\n return;\r\n }\r\n\r\n const reordered = reorder({\r\n list: statuses,\r\n startIndex,\r\n finishIndex,\r\n });\r\n // Send new order to API\r\n const orderedIds = reordered.map((status, index) => ({\r\n documentId: status.documentId,\r\n order: index,\r\n }));\r\n\r\n await put(\"/primershop-status-manager/statuses/reorder\", {\r\n statuses: orderedIds,\r\n });\r\n setStatuses(reordered);\r\n },\r\n [statuses, put]\r\n );\r\n\r\n // Setup drag and drop\r\n useEffect(() => {\r\n const statusElements = document.querySelectorAll(\"[data-status-id]\");\r\n const cleanupFunctions: (() => void)[] = [];\r\n\r\n statusElements.forEach((element) => {\r\n const statusId = element.getAttribute(\"data-status-id\");\r\n const index = statuses.findIndex((s) => s.documentId === statusId);\r\n const dragHandle = element.querySelector(\"[data-drag-handle]\");\r\n\r\n if (!dragHandle) return;\r\n\r\n // Setup draggable\r\n const draggableCleanup = draggable({\r\n element: dragHandle as HTMLElement,\r\n getInitialData: () => ({\r\n statusId,\r\n index,\r\n instanceId,\r\n }),\r\n onGenerateDragPreview({ nativeSetDragImage }) {\r\n setCustomNativeDragPreview({\r\n nativeSetDragImage,\r\n getOffset: pointerOutsideOfPreview({\r\n x: \"16px\",\r\n y: \"8px\",\r\n }),\r\n render({ container }) {\r\n const preview = document.createElement(\"div\");\r\n preview.style.padding = \"8px 16px\";\r\n preview.style.backgroundColor = \"#fff\";\r\n preview.style.border = \"1px solid #ccc\";\r\n preview.style.borderRadius = \"4px\";\r\n preview.style.boxShadow = \"0 2px 4px rgba(0,0,0,0.1)\";\r\n const statusNameElement =\r\n element.querySelector(\"[data-status-name]\");\r\n preview.textContent = statusNameElement?.textContent || \"\";\r\n container.appendChild(preview);\r\n return () => container.removeChild(preview);\r\n },\r\n });\r\n },\r\n });\r\n\r\n // Setup drop target\r\n const dropTargetCleanup = dropTargetForElements({\r\n element: element as HTMLElement,\r\n canDrop: ({ source }) => source.data.instanceId === instanceId,\r\n getData({ input }) {\r\n return attachClosestEdge(\r\n { statusId, index, instanceId },\r\n {\r\n element,\r\n input,\r\n allowedEdges: [\"top\", \"bottom\"],\r\n }\r\n );\r\n },\r\n onDrag({ source, self }) {\r\n const isSource = source.element === dragHandle;\r\n if (isSource) return;\r\n\r\n const closestEdge = extractClosestEdge(self.data);\r\n const sourceIndex = Number(source.data.index);\r\n\r\n const isItemBeforeSource = index === sourceIndex - 1;\r\n const isItemAfterSource = index === sourceIndex + 1;\r\n\r\n const isDropIndicatorHidden =\r\n (isItemBeforeSource && closestEdge === \"bottom\") ||\r\n (isItemAfterSource && closestEdge === \"top\");\r\n\r\n if (isDropIndicatorHidden) return;\r\n\r\n // Add visual feedback for drop target\r\n (element as HTMLElement).style.background =\r\n `linear-gradient(${closestEdge === \"top\" ? 180 : 0}deg, rgba(136,131,214,0.4) 0%, rgba(255,255,255,0) 50%)`;\r\n },\r\n onDragLeave() {\r\n (element as HTMLElement).style.background = \"\";\r\n },\r\n onDrop({ source, self }) {\r\n (element as HTMLElement).style.background = \"\";\r\n\r\n const sourceData = source.data;\r\n const targetData = self.data;\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Combine cleanup functions\r\n const combinedCleanup = combine(draggableCleanup, dropTargetCleanup);\r\n cleanupFunctions.push(combinedCleanup);\r\n });\r\n\r\n // Monitor for drops\r\n const monitorCleanup = monitorForElements({\r\n canMonitor: ({ source }) => source.data.instanceId === instanceId,\r\n onDrop({ location, source }) {\r\n const target = location.current.dropTargets[0];\r\n if (!target) return;\r\n\r\n const sourceData = source.data;\r\n const targetData = target.data;\r\n\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Cleanup function\r\n return () => {\r\n cleanupFunctions.forEach((cleanup) => cleanup());\r\n monitorCleanup();\r\n };\r\n }, [statuses, reorderItem, instanceId]);\r\n\r\n // Open delete dialog\r\n const confirmDelete = (status: Status) => {\r\n setStatusToDelete(status);\r\n };\r\n\r\n // Delete status and replace with selected one\r\n const deleteStatus = async () => {\r\n if (!replacementStatus) return alert(\"Select a replacement status!\");\r\n\r\n const replacementStatusObj = statuses.find(\r\n (s) => s.name === replacementStatus\r\n );\r\n if (!replacementStatusObj) return alert(\"Replacement status not found!\");\r\n\r\n try {\r\n await put(\"/primershop-status-manager/statuses/delete\", {\r\n statusId: statusToDelete?.documentId,\r\n replacementId: replacementStatusObj.documentId,\r\n });\r\n\r\n // Remove the deleted status from the list\r\n setStatuses(\r\n statuses.filter((s) => s.documentId !== statusToDelete?.documentId)\r\n );\r\n setStatusToDelete(null);\r\n setReplacementStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error deleting status:\", error);\r\n }\r\n };\r\n\r\n // Toggle publish status\r\n const togglePublish = async (id: string, published: boolean) => {\r\n try {\r\n await put(`/primershop-status-manager/statuses/${id}`, {\r\n published: !published,\r\n });\r\n setStatuses(\r\n statuses.map((s) =>\r\n s.documentId === id ? { ...s, published: !published } : s\r\n )\r\n );\r\n } catch (error) {\r\n console.error(\"Error toggling publish status:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <Box padding={4}>\r\n <Typography variant=\"beta\">Status Manager</Typography>\r\n\r\n {/* Input Field */}\r\n <Flex marginTop={4} gap={2}>\r\n <TextInput\r\n placeholder=\"Enter a status...\"\r\n value={newStatus}\r\n onChange={(e) => setNewStatus(e.target.value)}\r\n />\r\n <Button onClick={addStatus} startIcon={<Plus />}>\r\n Add Status\r\n </Button>\r\n </Flex>\r\n\r\n {/* Status List */}\r\n <Box key={statuses.length} marginTop={4}>\r\n {statuses.map((status) => (\r\n <Flex\r\n key={`status-${status.documentId}`}\r\n data-status-id={status.documentId}\r\n alignItems=\"center\"\r\n gap={2}\r\n marginBottom={2}\r\n paddingBottom={2}\r\n style={{\r\n borderBottom: `1px solid gray`,\r\n minWidth: 300,\r\n userSelect: \"none\",\r\n touchAction: \"none\",\r\n }}\r\n >\r\n <Box\r\n key={`dragHandle-${status.documentId}`}\r\n data-drag-handle\r\n style={{\r\n cursor: \"grab\",\r\n padding: \"4px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Drag />\r\n </Box>\r\n <Typography\r\n variant=\"sigma\"\r\n style={{ display: \"inline-block\", marginRight: \"auto\" }}\r\n data-status-name\r\n >\r\n {status.name}\r\n </Typography>\r\n <Button\r\n variant={status.published ? \"success-light\" : \"secondary\"}\r\n onClick={() => togglePublish(status.documentId, status.published)}\r\n >\r\n {status.published ? \"Published\" : \"Unpublished\"}\r\n </Button>\r\n <Dialog.Root onOpenChange={() => confirmDelete(status)}>\r\n <Dialog.Trigger>\r\n <Button variant=\"tertiary\" startIcon={<Trash />}>\r\n Delete\r\n </Button>\r\n </Dialog.Trigger>\r\n <Dialog.Content>\r\n <Dialog.Header>Delete status</Dialog.Header>\r\n {statuses.length > 1 && statusToDelete && (\r\n <Dialog.Body>\r\n <Typography>\r\n Choose a replacement status before deleting:\r\n </Typography>\r\n <SingleSelect\r\n onChange={(value) =>\r\n setReplacementStatus(value as string)\r\n }\r\n placeholder=\"Select replacement\"\r\n >\r\n {statuses\r\n .filter(\r\n (s) => s.documentId !== statusToDelete.documentId\r\n )\r\n .map((s) => (\r\n <SingleSelectOption\r\n key={`statusChoice-${s.documentId}`}\r\n value={s.name}\r\n >\r\n {s.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n {replacementStatus && (\r\n <Typography>\r\n Replacing {statusToDelete.name} with {replacementStatus}\r\n </Typography>\r\n )}\r\n </Dialog.Body>\r\n )}\r\n <Dialog.Footer>\r\n <Dialog.Cancel>\r\n <Button fullWidth variant=\"tertiary\">\r\n Cancel\r\n </Button>\r\n </Dialog.Cancel>\r\n <Dialog.Action>\r\n <Button\r\n fullWidth\r\n variant=\"danger-light\"\r\n onClick={deleteStatus}\r\n >\r\n Yes, delete\r\n </Button>\r\n </Dialog.Action>\r\n </Dialog.Footer>\r\n </Dialog.Content>\r\n </Dialog.Root>\r\n </Flex>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport { StatusManager };\r\n","import { Flex, Typography, Box } from \"@strapi/design-system\";\r\nimport { Layouts, Page } from \"@strapi/strapi/admin\";\r\n\r\nimport { StatusManager } from \"../components/StatusManager\";\r\n\r\nconst HomePage = () => {\r\n return (\r\n <Layouts.Root>\r\n <Page.Title>Status Manager</Page.Title>\r\n <Page.Main>\r\n <Layouts.Content>\r\n <Box>\r\n <Flex\r\n padding={10}\r\n gap={{\r\n initial: 1,\r\n medium: 4,\r\n large: 8,\r\n }}\r\n direction={{\r\n initial: \"column\",\r\n medium: \"row\",\r\n }}\r\n alignItems={{\r\n initial: \"center\",\r\n medium: \"flex-start\",\r\n }}\r\n >\r\n <Box padding={1}>\r\n <Typography variant=\"alpha\">Status manager</Typography>\r\n <StatusManager />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n </Layouts.Content>\r\n </Page.Main>\r\n </Layouts.Root>\r\n );\r\n};\r\n\r\nexport { HomePage };\r\n"],"names":["StatusManager","statuses","setStatuses","useState","newStatus","setNewStatus","statusToDelete","setStatusToDelete","replacementStatus","setReplacementStatus","get","post","put","useFetchClient","instanceId","Symbol","useEffect","loadStatuses","data","validateInput","value","test","addStatus","alert","name","published","error","console","reorderItem","useCallback","startIndex","indexOfTarget","closestEdgeOfTarget","finishIndex","reordered","reorder","list","orderedIds","map","status","index","documentId","order","statusElements","document","querySelectorAll","cleanupFunctions","forEach","element","statusId","getAttribute","findIndex","s","dragHandle","querySelector","draggableCleanup","draggable","getInitialData","onGenerateDragPreview","nativeSetDragImage","setCustomNativeDragPreview","getOffset","pointerOutsideOfPreview","x","y","render","container","preview","createElement","style","padding","backgroundColor","border","borderRadius","boxShadow","statusNameElement","textContent","appendChild","removeChild","dropTargetCleanup","dropTargetForElements","canDrop","source","getData","input","attachClosestEdge","allowedEdges","onDrag","self","isSource","closestEdge","extractClosestEdge","sourceIndex","Number","isItemBeforeSource","isItemAfterSource","isDropIndicatorHidden","background","onDragLeave","onDrop","sourceData","targetData","combinedCleanup","combine","push","monitorCleanup","monitorForElements","canMonitor","location","target","current","dropTargets","cleanup","confirmDelete","deleteStatus","replacementStatusObj","find","replacementId","filter","togglePublish","id","_jsxs","Box","_jsx","Typography","variant","Flex","marginTop","gap","TextInput","placeholder","onChange","e","Button","onClick","startIcon","Plus","data-status-id","alignItems","marginBottom","paddingBottom","borderBottom","minWidth","userSelect","touchAction","data-drag-handle","cursor","display","Drag","marginRight","data-status-name","Dialog","Root","onOpenChange","Trigger","Trash","Content","Header","length","Body","SingleSelect","SingleSelectOption","Footer","Cancel","fullWidth","Action","HomePage","Layouts","Page","Title","Main","initial","medium","large","direction"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage-C4rwBBWf.mjs","sources":["../../admin/src/components/StatusManager.tsx","../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\r\n\r\nimport { combine } from \"@atlaskit/pragmatic-drag-and-drop/combine\";\r\nimport {\r\n draggable,\r\n dropTargetForElements,\r\n monitorForElements,\r\n} from \"@atlaskit/pragmatic-drag-and-drop/element/adapter\";\r\nimport { pointerOutsideOfPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview\";\r\nimport { setCustomNativeDragPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview\";\r\nimport { reorder } from \"@atlaskit/pragmatic-drag-and-drop/reorder\";\r\nimport {\r\n attachClosestEdge,\r\n extractClosestEdge,\r\n} from \"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge\";\r\nimport {\r\n TextInput,\r\n Button,\r\n Flex,\r\n Typography,\r\n Box,\r\n Dialog,\r\n SingleSelect,\r\n SingleSelectOption,\r\n} from \"@strapi/design-system\";\r\nimport { Plus, Trash, Drag } from \"@strapi/icons\";\r\nimport { useFetchClient } from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n published: boolean;\r\n}\r\n\r\ninterface ReorderParams {\r\n startIndex: number;\r\n indexOfTarget: number;\r\n closestEdgeOfTarget: string;\r\n}\r\n\r\nconst StatusManager = () => {\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [newStatus, setNewStatus] = useState(\"\");\r\n const [statusToDelete, setStatusToDelete] = useState<Status | null>(null);\r\n const [replacementStatus, setReplacementStatus] = useState(\"\");\r\n const { get, post, put } = useFetchClient();\r\n const [instanceId] = useState(() => Symbol(\"instance-id\"));\r\n\r\n // Fetch statuses\r\n useEffect(() => {\r\n const loadStatuses = async () => {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n };\r\n loadStatuses();\r\n }, [get]);\r\n\r\n // Validate input (Latin characters only)\r\n const validateInput = (value: string): boolean => /^[a-zA-Z\\s]+$/.test(value);\r\n\r\n // Add new status\r\n const addStatus = async () => {\r\n if (!newStatus || !validateInput(newStatus))\r\n return alert(\"Only Latin characters allowed!\");\r\n try {\r\n const { data } = await post(\"primershop-status-manager/status\", {\r\n name: newStatus,\r\n published: false,\r\n });\r\n setStatuses([...statuses, data]);\r\n setNewStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error creating status:\", error);\r\n }\r\n };\r\n\r\n const reorderItem = useCallback(\r\n async ({\r\n startIndex,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n }: ReorderParams) => {\r\n // Calculate the final index based on the target position and edge\r\n let finishIndex = indexOfTarget;\r\n if (closestEdgeOfTarget === \"bottom\") {\r\n finishIndex = indexOfTarget + 1;\r\n }\r\n\r\n // If moving an item down, we need to adjust for the removed item\r\n if (startIndex < finishIndex) {\r\n finishIndex--;\r\n }\r\n\r\n if (finishIndex === startIndex) {\r\n return;\r\n }\r\n\r\n const reordered = reorder({\r\n list: statuses,\r\n startIndex,\r\n finishIndex,\r\n });\r\n // Send new order to API\r\n const orderedIds = reordered.map((status, index) => ({\r\n documentId: status.documentId,\r\n order: index,\r\n }));\r\n\r\n await put(\"/primershop-status-manager/statuses/reorder\", {\r\n statuses: orderedIds,\r\n });\r\n setStatuses(reordered);\r\n },\r\n [statuses, put]\r\n );\r\n\r\n // Setup drag and drop\r\n useEffect(() => {\r\n const statusElements = document.querySelectorAll(\"[data-status-id]\");\r\n const cleanupFunctions: (() => void)[] = [];\r\n\r\n statusElements.forEach((element) => {\r\n const statusId = element.getAttribute(\"data-status-id\");\r\n const index = statuses.findIndex((s) => s.documentId === statusId);\r\n const dragHandle = element.querySelector(\"[data-drag-handle]\");\r\n\r\n if (!dragHandle) return;\r\n\r\n // Setup draggable\r\n const draggableCleanup = draggable({\r\n element: dragHandle as HTMLElement,\r\n getInitialData: () => ({\r\n statusId,\r\n index,\r\n instanceId,\r\n }),\r\n onGenerateDragPreview({ nativeSetDragImage }) {\r\n setCustomNativeDragPreview({\r\n nativeSetDragImage,\r\n getOffset: pointerOutsideOfPreview({\r\n x: \"16px\",\r\n y: \"8px\",\r\n }),\r\n render({ container }) {\r\n const preview = document.createElement(\"div\");\r\n preview.style.padding = \"8px 16px\";\r\n preview.style.backgroundColor = \"#fff\";\r\n preview.style.border = \"1px solid #ccc\";\r\n preview.style.borderRadius = \"4px\";\r\n preview.style.boxShadow = \"0 2px 4px rgba(0,0,0,0.1)\";\r\n const statusNameElement =\r\n element.querySelector(\"[data-status-name]\");\r\n preview.textContent = statusNameElement?.textContent || \"\";\r\n container.appendChild(preview);\r\n return () => container.removeChild(preview);\r\n },\r\n });\r\n },\r\n });\r\n\r\n // Setup drop target\r\n const dropTargetCleanup = dropTargetForElements({\r\n element: element as HTMLElement,\r\n canDrop: ({ source }) => source.data.instanceId === instanceId,\r\n getData({ input }) {\r\n return attachClosestEdge(\r\n { statusId, index, instanceId },\r\n {\r\n element,\r\n input,\r\n allowedEdges: [\"top\", \"bottom\"],\r\n }\r\n );\r\n },\r\n onDrag({ source, self }) {\r\n const isSource = source.element === dragHandle;\r\n if (isSource) return;\r\n\r\n const closestEdge = extractClosestEdge(self.data);\r\n const sourceIndex = Number(source.data.index);\r\n\r\n const isItemBeforeSource = index === sourceIndex - 1;\r\n const isItemAfterSource = index === sourceIndex + 1;\r\n\r\n const isDropIndicatorHidden =\r\n (isItemBeforeSource && closestEdge === \"bottom\") ||\r\n (isItemAfterSource && closestEdge === \"top\");\r\n\r\n if (isDropIndicatorHidden) return;\r\n\r\n // Add visual feedback for drop target\r\n (element as HTMLElement).style.background =\r\n `linear-gradient(${closestEdge === \"top\" ? 180 : 0}deg, rgba(136,131,214,0.4) 0%, rgba(255,255,255,0) 50%)`;\r\n },\r\n onDragLeave() {\r\n (element as HTMLElement).style.background = \"\";\r\n },\r\n onDrop({ source, self }) {\r\n (element as HTMLElement).style.background = \"\";\r\n\r\n const sourceData = source.data;\r\n const targetData = self.data;\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Combine cleanup functions\r\n const combinedCleanup = combine(draggableCleanup, dropTargetCleanup);\r\n cleanupFunctions.push(combinedCleanup);\r\n });\r\n\r\n // Monitor for drops\r\n const monitorCleanup = monitorForElements({\r\n canMonitor: ({ source }) => source.data.instanceId === instanceId,\r\n onDrop({ location, source }) {\r\n const target = location.current.dropTargets[0];\r\n if (!target) return;\r\n\r\n const sourceData = source.data;\r\n const targetData = target.data;\r\n\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Cleanup function\r\n return () => {\r\n cleanupFunctions.forEach((cleanup) => cleanup());\r\n monitorCleanup();\r\n };\r\n }, [statuses, reorderItem, instanceId]);\r\n\r\n // Open delete dialog\r\n const confirmDelete = (status: Status) => {\r\n setStatusToDelete(status);\r\n };\r\n\r\n // Delete status and replace with selected one\r\n const deleteStatus = async () => {\r\n if (!replacementStatus) return alert(\"Select a replacement status!\");\r\n\r\n const replacementStatusObj = statuses.find(\r\n (s) => s.name === replacementStatus\r\n );\r\n if (!replacementStatusObj) return alert(\"Replacement status not found!\");\r\n\r\n try {\r\n await put(\"/primershop-status-manager/statuses/delete\", {\r\n statusId: statusToDelete?.documentId,\r\n replacementId: replacementStatusObj.documentId,\r\n });\r\n\r\n // Remove the deleted status from the list\r\n setStatuses(\r\n statuses.filter((s) => s.documentId !== statusToDelete?.documentId)\r\n );\r\n setStatusToDelete(null);\r\n setReplacementStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error deleting status:\", error);\r\n }\r\n };\r\n\r\n // Toggle publish status\r\n const togglePublish = async (id: string, published: boolean) => {\r\n try {\r\n await put(`/primershop-status-manager/statuses/${id}`, {\r\n published: !published,\r\n });\r\n setStatuses(\r\n statuses.map((s) =>\r\n s.documentId === id ? { ...s, published: !published } : s\r\n )\r\n );\r\n } catch (error) {\r\n console.error(\"Error toggling publish status:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <Box padding={4}>\r\n <Typography variant=\"beta\">Status Manager</Typography>\r\n\r\n {/* Input Field */}\r\n <Flex marginTop={4} gap={2}>\r\n <TextInput\r\n placeholder=\"Enter a status...\"\r\n value={newStatus}\r\n onChange={(e) => setNewStatus(e.target.value)}\r\n />\r\n <Button onClick={addStatus} startIcon={<Plus />}>\r\n Add Status\r\n </Button>\r\n </Flex>\r\n\r\n {/* Status List */}\r\n <Box key={statuses.length} marginTop={4}>\r\n {statuses.map((status) => (\r\n <Flex\r\n key={`status-${status.documentId}`}\r\n data-status-id={status.documentId}\r\n alignItems=\"center\"\r\n gap={2}\r\n marginBottom={2}\r\n paddingBottom={2}\r\n style={{\r\n borderBottom: `1px solid gray`,\r\n minWidth: 300,\r\n userSelect: \"none\",\r\n touchAction: \"none\",\r\n }}\r\n >\r\n <Box\r\n key={`dragHandle-${status.documentId}`}\r\n data-drag-handle\r\n style={{\r\n cursor: \"grab\",\r\n padding: \"4px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Drag />\r\n </Box>\r\n <Typography\r\n variant=\"sigma\"\r\n style={{ display: \"inline-block\", marginRight: \"auto\" }}\r\n data-status-name\r\n >\r\n {status.name}\r\n </Typography>\r\n <Button\r\n variant={status.published ? \"success-light\" : \"secondary\"}\r\n onClick={() => togglePublish(status.documentId, status.published)}\r\n >\r\n {status.published ? \"Published\" : \"Unpublished\"}\r\n </Button>\r\n <Dialog.Root onOpenChange={() => confirmDelete(status)}>\r\n <Dialog.Trigger>\r\n <Button variant=\"tertiary\" startIcon={<Trash />}>\r\n Delete\r\n </Button>\r\n </Dialog.Trigger>\r\n <Dialog.Content>\r\n <Dialog.Header>Delete status</Dialog.Header>\r\n {statuses.length > 1 && statusToDelete && (\r\n <Dialog.Body>\r\n <Typography>\r\n Choose a replacement status before deleting:\r\n </Typography>\r\n <SingleSelect\r\n onChange={(value) =>\r\n setReplacementStatus(value as string)\r\n }\r\n placeholder=\"Select replacement\"\r\n >\r\n {statuses\r\n .filter(\r\n (s) => s.documentId !== statusToDelete.documentId\r\n )\r\n .map((s) => (\r\n <SingleSelectOption\r\n key={`statusChoice-${s.documentId}`}\r\n value={s.name}\r\n >\r\n {s.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n {replacementStatus && (\r\n <Typography>\r\n Replacing {statusToDelete.name} with {replacementStatus}\r\n </Typography>\r\n )}\r\n </Dialog.Body>\r\n )}\r\n <Dialog.Footer>\r\n <Dialog.Cancel>\r\n <Button fullWidth variant=\"tertiary\">\r\n Cancel\r\n </Button>\r\n </Dialog.Cancel>\r\n <Dialog.Action>\r\n <Button\r\n fullWidth\r\n variant=\"danger-light\"\r\n onClick={deleteStatus}\r\n >\r\n Yes, delete\r\n </Button>\r\n </Dialog.Action>\r\n </Dialog.Footer>\r\n </Dialog.Content>\r\n </Dialog.Root>\r\n </Flex>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport { StatusManager };\r\n","import { Flex, Typography, Box } from \"@strapi/design-system\";\r\nimport { Layouts, Page } from \"@strapi/strapi/admin\";\r\n\r\nimport { StatusManager } from \"../components/StatusManager\";\r\nimport pluginPermissions from \"../permissions\";\r\n\r\nconst HomePage = () => {\r\n return (\r\n <Layouts.Root>\r\n <Page.Title>Status Manager</Page.Title>\r\n <Page.Main>\r\n <Page.Protect permissions={pluginPermissions.accessStatusManager}>\r\n <Layouts.Content>\r\n <Box>\r\n <Flex\r\n padding={10}\r\n gap={{\r\n initial: 1,\r\n medium: 4,\r\n large: 8,\r\n }}\r\n direction={{\r\n initial: \"column\",\r\n medium: \"row\",\r\n }}\r\n alignItems={{\r\n initial: \"center\",\r\n medium: \"flex-start\",\r\n }}\r\n >\r\n <Box padding={1}>\r\n <Typography variant=\"alpha\">Status manager</Typography>\r\n <StatusManager />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n </Layouts.Content>\r\n </Page.Protect>\r\n </Page.Main>\r\n </Layouts.Root>\r\n );\r\n};\r\n\r\nexport { HomePage };\r\n"],"names":["StatusManager","statuses","setStatuses","useState","newStatus","setNewStatus","statusToDelete","setStatusToDelete","replacementStatus","setReplacementStatus","get","post","put","useFetchClient","instanceId","Symbol","useEffect","loadStatuses","data","validateInput","value","test","addStatus","alert","name","published","error","console","reorderItem","useCallback","startIndex","indexOfTarget","closestEdgeOfTarget","finishIndex","reordered","reorder","list","orderedIds","map","status","index","documentId","order","statusElements","document","querySelectorAll","cleanupFunctions","forEach","element","statusId","getAttribute","findIndex","s","dragHandle","querySelector","draggableCleanup","draggable","getInitialData","onGenerateDragPreview","nativeSetDragImage","setCustomNativeDragPreview","getOffset","pointerOutsideOfPreview","x","y","render","container","preview","createElement","style","padding","backgroundColor","border","borderRadius","boxShadow","statusNameElement","textContent","appendChild","removeChild","dropTargetCleanup","dropTargetForElements","canDrop","source","getData","input","attachClosestEdge","allowedEdges","onDrag","self","isSource","closestEdge","extractClosestEdge","sourceIndex","Number","isItemBeforeSource","isItemAfterSource","isDropIndicatorHidden","background","onDragLeave","onDrop","sourceData","targetData","combinedCleanup","combine","push","monitorCleanup","monitorForElements","canMonitor","location","target","current","dropTargets","cleanup","confirmDelete","deleteStatus","replacementStatusObj","find","replacementId","filter","togglePublish","id","_jsxs","Box","_jsx","Typography","variant","Flex","marginTop","gap","TextInput","placeholder","onChange","e","Button","onClick","startIcon","Plus","data-status-id","alignItems","marginBottom","paddingBottom","borderBottom","minWidth","userSelect","touchAction","data-drag-handle","cursor","display","Drag","marginRight","data-status-name","Dialog","Root","onOpenChange","Trigger","Trash","Content","Header","length","Body","SingleSelect","SingleSelectOption","Footer","Cancel","fullWidth","Action","HomePage","Layouts","Page","Title","Main","Protect","permissions","pluginPermissions","accessStatusManager","initial","medium","large","direction"],"mappings":"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"}
@@ -11,6 +11,7 @@ var setCustomNativeDragPreview = require('@atlaskit/pragmatic-drag-and-drop/elem
11
11
  var reorder = require('@atlaskit/pragmatic-drag-and-drop/reorder');
12
12
  var closestEdge = require('@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge');
13
13
  var icons = require('@strapi/icons');
14
+ var index = require('./index-C5VrYoqI.js');
14
15
 
15
16
  const StatusManager = ()=>{
16
17
  const [statuses, setStatuses] = React.useState([]);
@@ -370,32 +371,35 @@ const HomePage = ()=>{
370
371
  children: "Status Manager"
371
372
  }),
372
373
  /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Main, {
373
- children: /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Content, {
374
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
375
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
376
- padding: 10,
377
- gap: {
378
- initial: 1,
379
- medium: 4,
380
- large: 8
381
- },
382
- direction: {
383
- initial: "column",
384
- medium: "row"
385
- },
386
- alignItems: {
387
- initial: "center",
388
- medium: "flex-start"
389
- },
390
- children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
391
- padding: 1,
392
- children: [
393
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
394
- variant: "alpha",
395
- children: "Status manager"
396
- }),
397
- /*#__PURE__*/ jsxRuntime.jsx(StatusManager, {})
398
- ]
374
+ children: /*#__PURE__*/ jsxRuntime.jsx(admin.Page.Protect, {
375
+ permissions: index.pluginPermissions.accessStatusManager,
376
+ children: /*#__PURE__*/ jsxRuntime.jsx(admin.Layouts.Content, {
377
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
378
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
379
+ padding: 10,
380
+ gap: {
381
+ initial: 1,
382
+ medium: 4,
383
+ large: 8
384
+ },
385
+ direction: {
386
+ initial: "column",
387
+ medium: "row"
388
+ },
389
+ alignItems: {
390
+ initial: "center",
391
+ medium: "flex-start"
392
+ },
393
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
394
+ padding: 1,
395
+ children: [
396
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
397
+ variant: "alpha",
398
+ children: "Status manager"
399
+ }),
400
+ /*#__PURE__*/ jsxRuntime.jsx(StatusManager, {})
401
+ ]
402
+ })
399
403
  })
400
404
  })
401
405
  })
@@ -406,4 +410,4 @@ const HomePage = ()=>{
406
410
  };
407
411
 
408
412
  exports.HomePage = HomePage;
409
- //# sourceMappingURL=HomePage-BbFD1aF1.js.map
413
+ //# sourceMappingURL=HomePage-CgBU0RrT.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage-BbFD1aF1.js","sources":["../../admin/src/components/StatusManager.tsx","../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\r\n\r\nimport { combine } from \"@atlaskit/pragmatic-drag-and-drop/combine\";\r\nimport {\r\n draggable,\r\n dropTargetForElements,\r\n monitorForElements,\r\n} from \"@atlaskit/pragmatic-drag-and-drop/element/adapter\";\r\nimport { pointerOutsideOfPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview\";\r\nimport { setCustomNativeDragPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview\";\r\nimport { reorder } from \"@atlaskit/pragmatic-drag-and-drop/reorder\";\r\nimport {\r\n attachClosestEdge,\r\n extractClosestEdge,\r\n} from \"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge\";\r\nimport {\r\n TextInput,\r\n Button,\r\n Flex,\r\n Typography,\r\n Box,\r\n Dialog,\r\n SingleSelect,\r\n SingleSelectOption,\r\n} from \"@strapi/design-system\";\r\nimport { Plus, Trash, Drag } from \"@strapi/icons\";\r\nimport { useFetchClient } from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n published: boolean;\r\n}\r\n\r\ninterface ReorderParams {\r\n startIndex: number;\r\n indexOfTarget: number;\r\n closestEdgeOfTarget: string;\r\n}\r\n\r\nconst StatusManager = () => {\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [newStatus, setNewStatus] = useState(\"\");\r\n const [statusToDelete, setStatusToDelete] = useState<Status | null>(null);\r\n const [replacementStatus, setReplacementStatus] = useState(\"\");\r\n const { get, post, put } = useFetchClient();\r\n const [instanceId] = useState(() => Symbol(\"instance-id\"));\r\n\r\n // Fetch statuses\r\n useEffect(() => {\r\n const loadStatuses = async () => {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n };\r\n loadStatuses();\r\n }, [get]);\r\n\r\n // Validate input (Latin characters only)\r\n const validateInput = (value: string): boolean => /^[a-zA-Z\\s]+$/.test(value);\r\n\r\n // Add new status\r\n const addStatus = async () => {\r\n if (!newStatus || !validateInput(newStatus))\r\n return alert(\"Only Latin characters allowed!\");\r\n try {\r\n const { data } = await post(\"primershop-status-manager/status\", {\r\n name: newStatus,\r\n published: false,\r\n });\r\n setStatuses([...statuses, data]);\r\n setNewStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error creating status:\", error);\r\n }\r\n };\r\n\r\n const reorderItem = useCallback(\r\n async ({\r\n startIndex,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n }: ReorderParams) => {\r\n // Calculate the final index based on the target position and edge\r\n let finishIndex = indexOfTarget;\r\n if (closestEdgeOfTarget === \"bottom\") {\r\n finishIndex = indexOfTarget + 1;\r\n }\r\n\r\n // If moving an item down, we need to adjust for the removed item\r\n if (startIndex < finishIndex) {\r\n finishIndex--;\r\n }\r\n\r\n if (finishIndex === startIndex) {\r\n return;\r\n }\r\n\r\n const reordered = reorder({\r\n list: statuses,\r\n startIndex,\r\n finishIndex,\r\n });\r\n // Send new order to API\r\n const orderedIds = reordered.map((status, index) => ({\r\n documentId: status.documentId,\r\n order: index,\r\n }));\r\n\r\n await put(\"/primershop-status-manager/statuses/reorder\", {\r\n statuses: orderedIds,\r\n });\r\n setStatuses(reordered);\r\n },\r\n [statuses, put]\r\n );\r\n\r\n // Setup drag and drop\r\n useEffect(() => {\r\n const statusElements = document.querySelectorAll(\"[data-status-id]\");\r\n const cleanupFunctions: (() => void)[] = [];\r\n\r\n statusElements.forEach((element) => {\r\n const statusId = element.getAttribute(\"data-status-id\");\r\n const index = statuses.findIndex((s) => s.documentId === statusId);\r\n const dragHandle = element.querySelector(\"[data-drag-handle]\");\r\n\r\n if (!dragHandle) return;\r\n\r\n // Setup draggable\r\n const draggableCleanup = draggable({\r\n element: dragHandle as HTMLElement,\r\n getInitialData: () => ({\r\n statusId,\r\n index,\r\n instanceId,\r\n }),\r\n onGenerateDragPreview({ nativeSetDragImage }) {\r\n setCustomNativeDragPreview({\r\n nativeSetDragImage,\r\n getOffset: pointerOutsideOfPreview({\r\n x: \"16px\",\r\n y: \"8px\",\r\n }),\r\n render({ container }) {\r\n const preview = document.createElement(\"div\");\r\n preview.style.padding = \"8px 16px\";\r\n preview.style.backgroundColor = \"#fff\";\r\n preview.style.border = \"1px solid #ccc\";\r\n preview.style.borderRadius = \"4px\";\r\n preview.style.boxShadow = \"0 2px 4px rgba(0,0,0,0.1)\";\r\n const statusNameElement =\r\n element.querySelector(\"[data-status-name]\");\r\n preview.textContent = statusNameElement?.textContent || \"\";\r\n container.appendChild(preview);\r\n return () => container.removeChild(preview);\r\n },\r\n });\r\n },\r\n });\r\n\r\n // Setup drop target\r\n const dropTargetCleanup = dropTargetForElements({\r\n element: element as HTMLElement,\r\n canDrop: ({ source }) => source.data.instanceId === instanceId,\r\n getData({ input }) {\r\n return attachClosestEdge(\r\n { statusId, index, instanceId },\r\n {\r\n element,\r\n input,\r\n allowedEdges: [\"top\", \"bottom\"],\r\n }\r\n );\r\n },\r\n onDrag({ source, self }) {\r\n const isSource = source.element === dragHandle;\r\n if (isSource) return;\r\n\r\n const closestEdge = extractClosestEdge(self.data);\r\n const sourceIndex = Number(source.data.index);\r\n\r\n const isItemBeforeSource = index === sourceIndex - 1;\r\n const isItemAfterSource = index === sourceIndex + 1;\r\n\r\n const isDropIndicatorHidden =\r\n (isItemBeforeSource && closestEdge === \"bottom\") ||\r\n (isItemAfterSource && closestEdge === \"top\");\r\n\r\n if (isDropIndicatorHidden) return;\r\n\r\n // Add visual feedback for drop target\r\n (element as HTMLElement).style.background =\r\n `linear-gradient(${closestEdge === \"top\" ? 180 : 0}deg, rgba(136,131,214,0.4) 0%, rgba(255,255,255,0) 50%)`;\r\n },\r\n onDragLeave() {\r\n (element as HTMLElement).style.background = \"\";\r\n },\r\n onDrop({ source, self }) {\r\n (element as HTMLElement).style.background = \"\";\r\n\r\n const sourceData = source.data;\r\n const targetData = self.data;\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Combine cleanup functions\r\n const combinedCleanup = combine(draggableCleanup, dropTargetCleanup);\r\n cleanupFunctions.push(combinedCleanup);\r\n });\r\n\r\n // Monitor for drops\r\n const monitorCleanup = monitorForElements({\r\n canMonitor: ({ source }) => source.data.instanceId === instanceId,\r\n onDrop({ location, source }) {\r\n const target = location.current.dropTargets[0];\r\n if (!target) return;\r\n\r\n const sourceData = source.data;\r\n const targetData = target.data;\r\n\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Cleanup function\r\n return () => {\r\n cleanupFunctions.forEach((cleanup) => cleanup());\r\n monitorCleanup();\r\n };\r\n }, [statuses, reorderItem, instanceId]);\r\n\r\n // Open delete dialog\r\n const confirmDelete = (status: Status) => {\r\n setStatusToDelete(status);\r\n };\r\n\r\n // Delete status and replace with selected one\r\n const deleteStatus = async () => {\r\n if (!replacementStatus) return alert(\"Select a replacement status!\");\r\n\r\n const replacementStatusObj = statuses.find(\r\n (s) => s.name === replacementStatus\r\n );\r\n if (!replacementStatusObj) return alert(\"Replacement status not found!\");\r\n\r\n try {\r\n await put(\"/primershop-status-manager/statuses/delete\", {\r\n statusId: statusToDelete?.documentId,\r\n replacementId: replacementStatusObj.documentId,\r\n });\r\n\r\n // Remove the deleted status from the list\r\n setStatuses(\r\n statuses.filter((s) => s.documentId !== statusToDelete?.documentId)\r\n );\r\n setStatusToDelete(null);\r\n setReplacementStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error deleting status:\", error);\r\n }\r\n };\r\n\r\n // Toggle publish status\r\n const togglePublish = async (id: string, published: boolean) => {\r\n try {\r\n await put(`/primershop-status-manager/statuses/${id}`, {\r\n published: !published,\r\n });\r\n setStatuses(\r\n statuses.map((s) =>\r\n s.documentId === id ? { ...s, published: !published } : s\r\n )\r\n );\r\n } catch (error) {\r\n console.error(\"Error toggling publish status:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <Box padding={4}>\r\n <Typography variant=\"beta\">Status Manager</Typography>\r\n\r\n {/* Input Field */}\r\n <Flex marginTop={4} gap={2}>\r\n <TextInput\r\n placeholder=\"Enter a status...\"\r\n value={newStatus}\r\n onChange={(e) => setNewStatus(e.target.value)}\r\n />\r\n <Button onClick={addStatus} startIcon={<Plus />}>\r\n Add Status\r\n </Button>\r\n </Flex>\r\n\r\n {/* Status List */}\r\n <Box key={statuses.length} marginTop={4}>\r\n {statuses.map((status) => (\r\n <Flex\r\n key={`status-${status.documentId}`}\r\n data-status-id={status.documentId}\r\n alignItems=\"center\"\r\n gap={2}\r\n marginBottom={2}\r\n paddingBottom={2}\r\n style={{\r\n borderBottom: `1px solid gray`,\r\n minWidth: 300,\r\n userSelect: \"none\",\r\n touchAction: \"none\",\r\n }}\r\n >\r\n <Box\r\n key={`dragHandle-${status.documentId}`}\r\n data-drag-handle\r\n style={{\r\n cursor: \"grab\",\r\n padding: \"4px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Drag />\r\n </Box>\r\n <Typography\r\n variant=\"sigma\"\r\n style={{ display: \"inline-block\", marginRight: \"auto\" }}\r\n data-status-name\r\n >\r\n {status.name}\r\n </Typography>\r\n <Button\r\n variant={status.published ? \"success-light\" : \"secondary\"}\r\n onClick={() => togglePublish(status.documentId, status.published)}\r\n >\r\n {status.published ? \"Published\" : \"Unpublished\"}\r\n </Button>\r\n <Dialog.Root onOpenChange={() => confirmDelete(status)}>\r\n <Dialog.Trigger>\r\n <Button variant=\"tertiary\" startIcon={<Trash />}>\r\n Delete\r\n </Button>\r\n </Dialog.Trigger>\r\n <Dialog.Content>\r\n <Dialog.Header>Delete status</Dialog.Header>\r\n {statuses.length > 1 && statusToDelete && (\r\n <Dialog.Body>\r\n <Typography>\r\n Choose a replacement status before deleting:\r\n </Typography>\r\n <SingleSelect\r\n onChange={(value) =>\r\n setReplacementStatus(value as string)\r\n }\r\n placeholder=\"Select replacement\"\r\n >\r\n {statuses\r\n .filter(\r\n (s) => s.documentId !== statusToDelete.documentId\r\n )\r\n .map((s) => (\r\n <SingleSelectOption\r\n key={`statusChoice-${s.documentId}`}\r\n value={s.name}\r\n >\r\n {s.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n {replacementStatus && (\r\n <Typography>\r\n Replacing {statusToDelete.name} with {replacementStatus}\r\n </Typography>\r\n )}\r\n </Dialog.Body>\r\n )}\r\n <Dialog.Footer>\r\n <Dialog.Cancel>\r\n <Button fullWidth variant=\"tertiary\">\r\n Cancel\r\n </Button>\r\n </Dialog.Cancel>\r\n <Dialog.Action>\r\n <Button\r\n fullWidth\r\n variant=\"danger-light\"\r\n onClick={deleteStatus}\r\n >\r\n Yes, delete\r\n </Button>\r\n </Dialog.Action>\r\n </Dialog.Footer>\r\n </Dialog.Content>\r\n </Dialog.Root>\r\n </Flex>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport { StatusManager };\r\n","import { Flex, Typography, Box } from \"@strapi/design-system\";\r\nimport { Layouts, Page } from \"@strapi/strapi/admin\";\r\n\r\nimport { StatusManager } from \"../components/StatusManager\";\r\n\r\nconst HomePage = () => {\r\n return (\r\n <Layouts.Root>\r\n <Page.Title>Status Manager</Page.Title>\r\n <Page.Main>\r\n <Layouts.Content>\r\n <Box>\r\n <Flex\r\n padding={10}\r\n gap={{\r\n initial: 1,\r\n medium: 4,\r\n large: 8,\r\n }}\r\n direction={{\r\n initial: \"column\",\r\n medium: \"row\",\r\n }}\r\n alignItems={{\r\n initial: \"center\",\r\n medium: \"flex-start\",\r\n }}\r\n >\r\n <Box padding={1}>\r\n <Typography variant=\"alpha\">Status manager</Typography>\r\n <StatusManager />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n </Layouts.Content>\r\n </Page.Main>\r\n </Layouts.Root>\r\n );\r\n};\r\n\r\nexport { HomePage };\r\n"],"names":["StatusManager","statuses","setStatuses","useState","newStatus","setNewStatus","statusToDelete","setStatusToDelete","replacementStatus","setReplacementStatus","get","post","put","useFetchClient","instanceId","Symbol","useEffect","loadStatuses","data","validateInput","value","test","addStatus","alert","name","published","error","console","reorderItem","useCallback","startIndex","indexOfTarget","closestEdgeOfTarget","finishIndex","reordered","reorder","list","orderedIds","map","status","index","documentId","order","statusElements","document","querySelectorAll","cleanupFunctions","forEach","element","statusId","getAttribute","findIndex","s","dragHandle","querySelector","draggableCleanup","draggable","getInitialData","onGenerateDragPreview","nativeSetDragImage","setCustomNativeDragPreview","getOffset","pointerOutsideOfPreview","x","y","render","container","preview","createElement","style","padding","backgroundColor","border","borderRadius","boxShadow","statusNameElement","textContent","appendChild","removeChild","dropTargetCleanup","dropTargetForElements","canDrop","source","getData","input","attachClosestEdge","allowedEdges","onDrag","self","isSource","closestEdge","extractClosestEdge","sourceIndex","Number","isItemBeforeSource","isItemAfterSource","isDropIndicatorHidden","background","onDragLeave","onDrop","sourceData","targetData","combinedCleanup","combine","push","monitorCleanup","monitorForElements","canMonitor","location","target","current","dropTargets","cleanup","confirmDelete","deleteStatus","replacementStatusObj","find","replacementId","filter","togglePublish","id","_jsxs","Box","_jsx","Typography","variant","Flex","marginTop","gap","TextInput","placeholder","onChange","e","Button","onClick","startIcon","Plus","data-status-id","alignItems","marginBottom","paddingBottom","borderBottom","minWidth","userSelect","touchAction","data-drag-handle","cursor","display","Drag","marginRight","data-status-name","Dialog","Root","onOpenChange","Trigger","Trash","Content","Header","length","Body","SingleSelect","SingleSelectOption","Footer","Cancel","fullWidth","Action","HomePage","Layouts","Page","Title","Main","initial","medium","large","direction"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage-CgBU0RrT.js","sources":["../../admin/src/components/StatusManager.tsx","../../admin/src/pages/HomePage.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback } from \"react\";\r\n\r\nimport { combine } from \"@atlaskit/pragmatic-drag-and-drop/combine\";\r\nimport {\r\n draggable,\r\n dropTargetForElements,\r\n monitorForElements,\r\n} from \"@atlaskit/pragmatic-drag-and-drop/element/adapter\";\r\nimport { pointerOutsideOfPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview\";\r\nimport { setCustomNativeDragPreview } from \"@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview\";\r\nimport { reorder } from \"@atlaskit/pragmatic-drag-and-drop/reorder\";\r\nimport {\r\n attachClosestEdge,\r\n extractClosestEdge,\r\n} from \"@atlaskit/pragmatic-drag-and-drop-hitbox/closest-edge\";\r\nimport {\r\n TextInput,\r\n Button,\r\n Flex,\r\n Typography,\r\n Box,\r\n Dialog,\r\n SingleSelect,\r\n SingleSelectOption,\r\n} from \"@strapi/design-system\";\r\nimport { Plus, Trash, Drag } from \"@strapi/icons\";\r\nimport { useFetchClient } from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n published: boolean;\r\n}\r\n\r\ninterface ReorderParams {\r\n startIndex: number;\r\n indexOfTarget: number;\r\n closestEdgeOfTarget: string;\r\n}\r\n\r\nconst StatusManager = () => {\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [newStatus, setNewStatus] = useState(\"\");\r\n const [statusToDelete, setStatusToDelete] = useState<Status | null>(null);\r\n const [replacementStatus, setReplacementStatus] = useState(\"\");\r\n const { get, post, put } = useFetchClient();\r\n const [instanceId] = useState(() => Symbol(\"instance-id\"));\r\n\r\n // Fetch statuses\r\n useEffect(() => {\r\n const loadStatuses = async () => {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n };\r\n loadStatuses();\r\n }, [get]);\r\n\r\n // Validate input (Latin characters only)\r\n const validateInput = (value: string): boolean => /^[a-zA-Z\\s]+$/.test(value);\r\n\r\n // Add new status\r\n const addStatus = async () => {\r\n if (!newStatus || !validateInput(newStatus))\r\n return alert(\"Only Latin characters allowed!\");\r\n try {\r\n const { data } = await post(\"primershop-status-manager/status\", {\r\n name: newStatus,\r\n published: false,\r\n });\r\n setStatuses([...statuses, data]);\r\n setNewStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error creating status:\", error);\r\n }\r\n };\r\n\r\n const reorderItem = useCallback(\r\n async ({\r\n startIndex,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n }: ReorderParams) => {\r\n // Calculate the final index based on the target position and edge\r\n let finishIndex = indexOfTarget;\r\n if (closestEdgeOfTarget === \"bottom\") {\r\n finishIndex = indexOfTarget + 1;\r\n }\r\n\r\n // If moving an item down, we need to adjust for the removed item\r\n if (startIndex < finishIndex) {\r\n finishIndex--;\r\n }\r\n\r\n if (finishIndex === startIndex) {\r\n return;\r\n }\r\n\r\n const reordered = reorder({\r\n list: statuses,\r\n startIndex,\r\n finishIndex,\r\n });\r\n // Send new order to API\r\n const orderedIds = reordered.map((status, index) => ({\r\n documentId: status.documentId,\r\n order: index,\r\n }));\r\n\r\n await put(\"/primershop-status-manager/statuses/reorder\", {\r\n statuses: orderedIds,\r\n });\r\n setStatuses(reordered);\r\n },\r\n [statuses, put]\r\n );\r\n\r\n // Setup drag and drop\r\n useEffect(() => {\r\n const statusElements = document.querySelectorAll(\"[data-status-id]\");\r\n const cleanupFunctions: (() => void)[] = [];\r\n\r\n statusElements.forEach((element) => {\r\n const statusId = element.getAttribute(\"data-status-id\");\r\n const index = statuses.findIndex((s) => s.documentId === statusId);\r\n const dragHandle = element.querySelector(\"[data-drag-handle]\");\r\n\r\n if (!dragHandle) return;\r\n\r\n // Setup draggable\r\n const draggableCleanup = draggable({\r\n element: dragHandle as HTMLElement,\r\n getInitialData: () => ({\r\n statusId,\r\n index,\r\n instanceId,\r\n }),\r\n onGenerateDragPreview({ nativeSetDragImage }) {\r\n setCustomNativeDragPreview({\r\n nativeSetDragImage,\r\n getOffset: pointerOutsideOfPreview({\r\n x: \"16px\",\r\n y: \"8px\",\r\n }),\r\n render({ container }) {\r\n const preview = document.createElement(\"div\");\r\n preview.style.padding = \"8px 16px\";\r\n preview.style.backgroundColor = \"#fff\";\r\n preview.style.border = \"1px solid #ccc\";\r\n preview.style.borderRadius = \"4px\";\r\n preview.style.boxShadow = \"0 2px 4px rgba(0,0,0,0.1)\";\r\n const statusNameElement =\r\n element.querySelector(\"[data-status-name]\");\r\n preview.textContent = statusNameElement?.textContent || \"\";\r\n container.appendChild(preview);\r\n return () => container.removeChild(preview);\r\n },\r\n });\r\n },\r\n });\r\n\r\n // Setup drop target\r\n const dropTargetCleanup = dropTargetForElements({\r\n element: element as HTMLElement,\r\n canDrop: ({ source }) => source.data.instanceId === instanceId,\r\n getData({ input }) {\r\n return attachClosestEdge(\r\n { statusId, index, instanceId },\r\n {\r\n element,\r\n input,\r\n allowedEdges: [\"top\", \"bottom\"],\r\n }\r\n );\r\n },\r\n onDrag({ source, self }) {\r\n const isSource = source.element === dragHandle;\r\n if (isSource) return;\r\n\r\n const closestEdge = extractClosestEdge(self.data);\r\n const sourceIndex = Number(source.data.index);\r\n\r\n const isItemBeforeSource = index === sourceIndex - 1;\r\n const isItemAfterSource = index === sourceIndex + 1;\r\n\r\n const isDropIndicatorHidden =\r\n (isItemBeforeSource && closestEdge === \"bottom\") ||\r\n (isItemAfterSource && closestEdge === \"top\");\r\n\r\n if (isDropIndicatorHidden) return;\r\n\r\n // Add visual feedback for drop target\r\n (element as HTMLElement).style.background =\r\n `linear-gradient(${closestEdge === \"top\" ? 180 : 0}deg, rgba(136,131,214,0.4) 0%, rgba(255,255,255,0) 50%)`;\r\n },\r\n onDragLeave() {\r\n (element as HTMLElement).style.background = \"\";\r\n },\r\n onDrop({ source, self }) {\r\n (element as HTMLElement).style.background = \"\";\r\n\r\n const sourceData = source.data;\r\n const targetData = self.data;\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Combine cleanup functions\r\n const combinedCleanup = combine(draggableCleanup, dropTargetCleanup);\r\n cleanupFunctions.push(combinedCleanup);\r\n });\r\n\r\n // Monitor for drops\r\n const monitorCleanup = monitorForElements({\r\n canMonitor: ({ source }) => source.data.instanceId === instanceId,\r\n onDrop({ location, source }) {\r\n const target = location.current.dropTargets[0];\r\n if (!target) return;\r\n\r\n const sourceData = source.data;\r\n const targetData = target.data;\r\n\r\n const indexOfTarget = statuses.findIndex(\r\n (s) => s.documentId === targetData.statusId\r\n );\r\n if (indexOfTarget < 0) return;\r\n\r\n const closestEdgeOfTarget = extractClosestEdge(targetData);\r\n\r\n reorderItem({\r\n startIndex: sourceData.index as number,\r\n indexOfTarget,\r\n closestEdgeOfTarget,\r\n });\r\n },\r\n });\r\n\r\n // Cleanup function\r\n return () => {\r\n cleanupFunctions.forEach((cleanup) => cleanup());\r\n monitorCleanup();\r\n };\r\n }, [statuses, reorderItem, instanceId]);\r\n\r\n // Open delete dialog\r\n const confirmDelete = (status: Status) => {\r\n setStatusToDelete(status);\r\n };\r\n\r\n // Delete status and replace with selected one\r\n const deleteStatus = async () => {\r\n if (!replacementStatus) return alert(\"Select a replacement status!\");\r\n\r\n const replacementStatusObj = statuses.find(\r\n (s) => s.name === replacementStatus\r\n );\r\n if (!replacementStatusObj) return alert(\"Replacement status not found!\");\r\n\r\n try {\r\n await put(\"/primershop-status-manager/statuses/delete\", {\r\n statusId: statusToDelete?.documentId,\r\n replacementId: replacementStatusObj.documentId,\r\n });\r\n\r\n // Remove the deleted status from the list\r\n setStatuses(\r\n statuses.filter((s) => s.documentId !== statusToDelete?.documentId)\r\n );\r\n setStatusToDelete(null);\r\n setReplacementStatus(\"\");\r\n } catch (error) {\r\n console.error(\"Error deleting status:\", error);\r\n }\r\n };\r\n\r\n // Toggle publish status\r\n const togglePublish = async (id: string, published: boolean) => {\r\n try {\r\n await put(`/primershop-status-manager/statuses/${id}`, {\r\n published: !published,\r\n });\r\n setStatuses(\r\n statuses.map((s) =>\r\n s.documentId === id ? { ...s, published: !published } : s\r\n )\r\n );\r\n } catch (error) {\r\n console.error(\"Error toggling publish status:\", error);\r\n }\r\n };\r\n\r\n return (\r\n <Box padding={4}>\r\n <Typography variant=\"beta\">Status Manager</Typography>\r\n\r\n {/* Input Field */}\r\n <Flex marginTop={4} gap={2}>\r\n <TextInput\r\n placeholder=\"Enter a status...\"\r\n value={newStatus}\r\n onChange={(e) => setNewStatus(e.target.value)}\r\n />\r\n <Button onClick={addStatus} startIcon={<Plus />}>\r\n Add Status\r\n </Button>\r\n </Flex>\r\n\r\n {/* Status List */}\r\n <Box key={statuses.length} marginTop={4}>\r\n {statuses.map((status) => (\r\n <Flex\r\n key={`status-${status.documentId}`}\r\n data-status-id={status.documentId}\r\n alignItems=\"center\"\r\n gap={2}\r\n marginBottom={2}\r\n paddingBottom={2}\r\n style={{\r\n borderBottom: `1px solid gray`,\r\n minWidth: 300,\r\n userSelect: \"none\",\r\n touchAction: \"none\",\r\n }}\r\n >\r\n <Box\r\n key={`dragHandle-${status.documentId}`}\r\n data-drag-handle\r\n style={{\r\n cursor: \"grab\",\r\n padding: \"4px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n }}\r\n >\r\n <Drag />\r\n </Box>\r\n <Typography\r\n variant=\"sigma\"\r\n style={{ display: \"inline-block\", marginRight: \"auto\" }}\r\n data-status-name\r\n >\r\n {status.name}\r\n </Typography>\r\n <Button\r\n variant={status.published ? \"success-light\" : \"secondary\"}\r\n onClick={() => togglePublish(status.documentId, status.published)}\r\n >\r\n {status.published ? \"Published\" : \"Unpublished\"}\r\n </Button>\r\n <Dialog.Root onOpenChange={() => confirmDelete(status)}>\r\n <Dialog.Trigger>\r\n <Button variant=\"tertiary\" startIcon={<Trash />}>\r\n Delete\r\n </Button>\r\n </Dialog.Trigger>\r\n <Dialog.Content>\r\n <Dialog.Header>Delete status</Dialog.Header>\r\n {statuses.length > 1 && statusToDelete && (\r\n <Dialog.Body>\r\n <Typography>\r\n Choose a replacement status before deleting:\r\n </Typography>\r\n <SingleSelect\r\n onChange={(value) =>\r\n setReplacementStatus(value as string)\r\n }\r\n placeholder=\"Select replacement\"\r\n >\r\n {statuses\r\n .filter(\r\n (s) => s.documentId !== statusToDelete.documentId\r\n )\r\n .map((s) => (\r\n <SingleSelectOption\r\n key={`statusChoice-${s.documentId}`}\r\n value={s.name}\r\n >\r\n {s.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n {replacementStatus && (\r\n <Typography>\r\n Replacing {statusToDelete.name} with {replacementStatus}\r\n </Typography>\r\n )}\r\n </Dialog.Body>\r\n )}\r\n <Dialog.Footer>\r\n <Dialog.Cancel>\r\n <Button fullWidth variant=\"tertiary\">\r\n Cancel\r\n </Button>\r\n </Dialog.Cancel>\r\n <Dialog.Action>\r\n <Button\r\n fullWidth\r\n variant=\"danger-light\"\r\n onClick={deleteStatus}\r\n >\r\n Yes, delete\r\n </Button>\r\n </Dialog.Action>\r\n </Dialog.Footer>\r\n </Dialog.Content>\r\n </Dialog.Root>\r\n </Flex>\r\n ))}\r\n </Box>\r\n </Box>\r\n );\r\n};\r\n\r\nexport { StatusManager };\r\n","import { Flex, Typography, Box } from \"@strapi/design-system\";\r\nimport { Layouts, Page } from \"@strapi/strapi/admin\";\r\n\r\nimport { StatusManager } from \"../components/StatusManager\";\r\nimport pluginPermissions from \"../permissions\";\r\n\r\nconst HomePage = () => {\r\n return (\r\n <Layouts.Root>\r\n <Page.Title>Status Manager</Page.Title>\r\n <Page.Main>\r\n <Page.Protect permissions={pluginPermissions.accessStatusManager}>\r\n <Layouts.Content>\r\n <Box>\r\n <Flex\r\n padding={10}\r\n gap={{\r\n initial: 1,\r\n medium: 4,\r\n large: 8,\r\n }}\r\n direction={{\r\n initial: \"column\",\r\n medium: \"row\",\r\n }}\r\n alignItems={{\r\n initial: \"center\",\r\n medium: \"flex-start\",\r\n }}\r\n >\r\n <Box padding={1}>\r\n <Typography variant=\"alpha\">Status manager</Typography>\r\n <StatusManager />\r\n </Box>\r\n </Flex>\r\n </Box>\r\n </Layouts.Content>\r\n </Page.Protect>\r\n </Page.Main>\r\n </Layouts.Root>\r\n );\r\n};\r\n\r\nexport { HomePage };\r\n"],"names":["StatusManager","statuses","setStatuses","useState","newStatus","setNewStatus","statusToDelete","setStatusToDelete","replacementStatus","setReplacementStatus","get","post","put","useFetchClient","instanceId","Symbol","useEffect","loadStatuses","data","validateInput","value","test","addStatus","alert","name","published","error","console","reorderItem","useCallback","startIndex","indexOfTarget","closestEdgeOfTarget","finishIndex","reordered","reorder","list","orderedIds","map","status","index","documentId","order","statusElements","document","querySelectorAll","cleanupFunctions","forEach","element","statusId","getAttribute","findIndex","s","dragHandle","querySelector","draggableCleanup","draggable","getInitialData","onGenerateDragPreview","nativeSetDragImage","setCustomNativeDragPreview","getOffset","pointerOutsideOfPreview","x","y","render","container","preview","createElement","style","padding","backgroundColor","border","borderRadius","boxShadow","statusNameElement","textContent","appendChild","removeChild","dropTargetCleanup","dropTargetForElements","canDrop","source","getData","input","attachClosestEdge","allowedEdges","onDrag","self","isSource","closestEdge","extractClosestEdge","sourceIndex","Number","isItemBeforeSource","isItemAfterSource","isDropIndicatorHidden","background","onDragLeave","onDrop","sourceData","targetData","combinedCleanup","combine","push","monitorCleanup","monitorForElements","canMonitor","location","target","current","dropTargets","cleanup","confirmDelete","deleteStatus","replacementStatusObj","find","replacementId","filter","togglePublish","id","_jsxs","Box","_jsx","Typography","variant","Flex","marginTop","gap","TextInput","placeholder","onChange","e","Button","onClick","startIcon","Plus","data-status-id","alignItems","marginBottom","paddingBottom","borderBottom","minWidth","userSelect","touchAction","data-drag-handle","cursor","display","Drag","marginRight","data-status-name","Dialog","Root","onOpenChange","Trigger","Trash","Content","Header","length","Body","SingleSelect","SingleSelectOption","Footer","Cancel","fullWidth","Action","HomePage","Layouts","Page","Title","Main","Protect","permissions","pluginPermissions","accessStatusManager","initial","medium","large","direction"],"mappings":"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"}