@primershop/strapi-plugin-status-manager 0.0.17 → 0.0.19

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"HomePage-D9xj2-y8.js","sources":["../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/combine.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/bind-event-listener/dist/bind.js","../../../../node_modules/bind-event-listener/dist/bind-all.js","../../../../node_modules/bind-event-listener/dist/index.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/honey-pot-data-attribute.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/is-honey-pot-element.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/get-element-from-point-without-honey-pot.js","../../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/max-z-index.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/honey-pot-fix/make-honey-pot-fix.js","../../../../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/once.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-firefox.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-safari.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/count-events-for-safari.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-from-another-window.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/changing-window/is-leaving-window.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/detect-broken-drag.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/get-input.js","../../../../node_modules/raf-schd/dist/raf-schd.esm.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/dispatch-consumer-event.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/lifecycle-manager.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/ledger/usage-ledger.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/add-attribute.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-drop-target.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-monitor.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/make-adapter/make-adapter.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/android.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/media-types/text-media-type.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/media-types/url-media-type.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/element-adapter-native-data-key.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/adapter/element-adapter.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/util/is-safari-on-ios.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/custom-native-drag-preview/center-under-pointer.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/custom-native-drag-preview/pointer-outside-of-preview.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/element/custom-native-drag-preview/set-custom-native-drag-preview.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop/dist/esm/public-utils/reorder.js","../../../../node_modules/@atlaskit/pragmatic-drag-and-drop-hitbox/dist/esm/closest-edge.js","../../admin/src/components/StatusManager.tsx","../../admin/src/pages/HomePage.tsx"],"sourcesContent":["/** Create a new combined function that will call all the provided functions */\nexport function combine() {\n for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n return function cleanup() {\n fns.forEach(function (fn) {\n return fn();\n });\n };\n}","function _arrayWithHoles(r) {\n if (Array.isArray(r)) return r;\n}\nexport { _arrayWithHoles as default };","function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}\nexport { _iterableToArrayLimit as default };","function _arrayLikeToArray(r, a) {\n (null == a || a > r.length) && (a = r.length);\n for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n return n;\n}\nexport { _arrayLikeToArray as default };","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _unsupportedIterableToArray(r, a) {\n if (r) {\n if (\"string\" == typeof r) return arrayLikeToArray(r, a);\n var t = {}.toString.call(r).slice(8, -1);\n return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? arrayLikeToArray(r, a) : void 0;\n }\n}\nexport { _unsupportedIterableToArray as default };","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableRest as default };","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nfunction _slicedToArray(r, e) {\n return arrayWithHoles(r) || iterableToArrayLimit(r, e) || unsupportedIterableToArray(r, e) || nonIterableRest();\n}\nexport { _slicedToArray as default };","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bind = void 0;\nfunction bind(target, _a) {\n var type = _a.type, listener = _a.listener, options = _a.options;\n target.addEventListener(type, listener, options);\n return function unbind() {\n target.removeEventListener(type, listener, options);\n };\n}\nexports.bind = bind;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindAll = void 0;\nvar bind_1 = require(\"./bind\");\nfunction toOptions(value) {\n if (typeof value === 'undefined') {\n return undefined;\n }\n if (typeof value === 'boolean') {\n return {\n capture: value,\n };\n }\n return value;\n}\nfunction getBinding(original, sharedOptions) {\n if (sharedOptions == null) {\n return original;\n }\n var binding = __assign(__assign({}, original), { options: __assign(__assign({}, toOptions(sharedOptions)), toOptions(original.options)) });\n return binding;\n}\nfunction bindAll(target, bindings, sharedOptions) {\n var unbinds = bindings.map(function (original) {\n var binding = getBinding(original, sharedOptions);\n return (0, bind_1.bind)(target, binding);\n });\n return function unbindAll() {\n unbinds.forEach(function (unbind) { return unbind(); });\n };\n}\nexports.bindAll = bindAll;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.bindAll = exports.bind = void 0;\nvar bind_1 = require(\"./bind\");\nObject.defineProperty(exports, \"bind\", { enumerable: true, get: function () { return bind_1.bind; } });\nvar bind_all_1 = require(\"./bind-all\");\nObject.defineProperty(exports, \"bindAll\", { enumerable: true, get: function () { return bind_all_1.bindAll; } });\n","// pulling this into a separate file so adapter(s) that don't\n// need the honey pot can pay as little as possible for it.\nexport var honeyPotDataAttribute = 'data-pdnd-honey-pot';","import { honeyPotDataAttribute } from './honey-pot-data-attribute';\nexport function isHoneyPotElement(target) {\n return target instanceof Element && target.hasAttribute(honeyPotDataAttribute);\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { isHoneyPotElement } from './is-honey-pot-element';\nexport function getElementFromPointWithoutHoneypot(client) {\n // eslint-disable-next-line no-restricted-syntax\n var _document$elementsFro = document.elementsFromPoint(client.x, client.y),\n _document$elementsFro2 = _slicedToArray(_document$elementsFro, 2),\n top = _document$elementsFro2[0],\n second = _document$elementsFro2[1];\n if (!top) {\n return null;\n }\n if (isHoneyPotElement(top)) {\n return second !== null && second !== void 0 ? second : null;\n }\n return top;\n}","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","// Maximum possible z-index\n// https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index\nexport var maxZIndex = 2147483647;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { bind, bindAll } from 'bind-event-listener';\nimport { maxZIndex } from '../util/max-z-index';\nimport { honeyPotDataAttribute } from './honey-pot-data-attribute';\nvar honeyPotSize = 2;\nvar halfHoneyPotSize = honeyPotSize / 2;\n\n/**\n * `clientX` and `clientY` can be in sub pixels (eg `2.332`)\n * However, browser hitbox testing is commonly do to the closest pixel.\n *\n * → https://issues.chromium.org/issues/40940531\n *\n * To be sure that the honey pot will be over the `client` position,\n * we `.floor()` `clientX` and`clientY` and then make it `2px` in size.\n **/\nfunction floorToClosestPixel(point) {\n return {\n x: Math.floor(point.x),\n y: Math.floor(point.y)\n };\n}\n\n/**\n * We want to make sure the honey pot sits around the users position.\n * This seemed to be the most resilient while testing.\n */\nfunction pullBackByHalfHoneyPotSize(point) {\n return {\n x: point.x - halfHoneyPotSize,\n y: point.y - halfHoneyPotSize\n };\n}\n\n/**\n * Prevent the honey pot from changing the window size.\n * This is super unlikely to occur, but just being safe.\n */\nfunction preventGoingBackwardsOffScreen(point) {\n return {\n x: Math.max(point.x, 0),\n y: Math.max(point.y, 0)\n };\n}\n\n/**\n * Prevent the honey pot from changing the window size.\n * This is super unlikely to occur, but just being safe.\n */\nfunction preventGoingForwardsOffScreen(point) {\n return {\n x: Math.min(point.x, window.innerWidth - honeyPotSize),\n y: Math.min(point.y, window.innerHeight - honeyPotSize)\n };\n}\n\n/**\n * Create a `2x2` `DOMRect` around the `client` position\n */\nfunction getHoneyPotRectFor(_ref) {\n var client = _ref.client;\n var point = preventGoingForwardsOffScreen(preventGoingBackwardsOffScreen(pullBackByHalfHoneyPotSize(floorToClosestPixel(client))));\n\n // When debugging, it is helpful to\n // make this element a bit bigger\n return DOMRect.fromRect({\n x: point.x,\n y: point.y,\n width: honeyPotSize,\n height: honeyPotSize\n });\n}\nfunction getRectStyles(_ref2) {\n var clientRect = _ref2.clientRect;\n return {\n left: \"\".concat(clientRect.left, \"px\"),\n top: \"\".concat(clientRect.top, \"px\"),\n width: \"\".concat(clientRect.width, \"px\"),\n height: \"\".concat(clientRect.height, \"px\")\n };\n}\nfunction isWithin(_ref3) {\n var client = _ref3.client,\n clientRect = _ref3.clientRect;\n return (\n // is within horizontal bounds\n client.x >= clientRect.x && client.x <= clientRect.x + clientRect.width &&\n // is within vertical bounds\n client.y >= clientRect.y && client.y <= clientRect.y + clientRect.height\n );\n}\n/**\n * The honey pot fix is designed to get around a painful bug in all browsers.\n *\n * [Overview](https://www.youtube.com/watch?v=udE9qbFTeQg)\n *\n * **Background**\n *\n * When a drag starts, browsers incorrectly think that the users pointer is\n * still depressed where the drag started. Any element that goes under this position\n * will be entered into, causing `\"mouseenter\"` events and `\":hover\"` styles to be applied.\n *\n * _This is a violation of the spec_\n *\n * > \"From the moment that the user agent is to initiate the drag-and-drop operation,\n * > until the end \tof the drag-and-drop operation, device input events\n * > (e.g. mouse and keyboard events) must be suppressed.\"\n * >\n * > - https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model\n *\n * _Some impacts_\n *\n * - `\":hover\"` styles being applied where they shouldn't (looks messy)\n * - components such as tooltips responding to `\"mouseenter\"` can show during a drag,\n * and on an element the user isn't even over\n *\n * Bug: https://issues.chromium.org/issues/41129937\n *\n * **Honey pot fix**\n *\n * 1. Create an element where the browser thinks the depressed pointer is\n * to absorb the incorrect pointer events\n * 2. Remove that element when it is no longer needed\n */\nfunction mountHoneyPot(_ref4) {\n var initial = _ref4.initial;\n var element = document.createElement('div');\n element.setAttribute(honeyPotDataAttribute, 'true');\n\n // can shift during the drag thanks to Firefox\n var clientRect = getHoneyPotRectFor({\n client: initial\n });\n Object.assign(element.style, _objectSpread(_objectSpread({\n // Setting a background color explicitly to avoid any inherited styles.\n // Looks like this could be `opacity: 0`, but worried that _might_\n // cause the element to be ignored on some platforms.\n // When debugging, set backgroundColor to something like \"red\".\n backgroundColor: 'transparent',\n position: 'fixed',\n // Being explicit to avoid inheriting styles\n padding: 0,\n margin: 0,\n boxSizing: 'border-box'\n }, getRectStyles({\n clientRect: clientRect\n })), {}, {\n // We want this element to absorb pointer events,\n // it's kind of the whole point 😉\n pointerEvents: 'auto',\n // Want to make sure the honey pot is top of everything else.\n // Don't need to worry about native drag previews, as they will\n // have been rendered (and removed) before the honey pot is rendered\n zIndex: maxZIndex\n }));\n document.body.appendChild(element);\n\n /**\n * 🦊 In firefox we can get `\"pointermove\"` events after the drag\n * has started, which is a spec violation.\n * The final `\"pointermove\"` will reveal where the \"depressed\" position\n * is for our honey pot fix.\n */\n var unbindPointerMove = bind(window, {\n type: 'pointermove',\n listener: function listener(event) {\n var client = {\n x: event.clientX,\n y: event.clientY\n };\n clientRect = getHoneyPotRectFor({\n client: client\n });\n Object.assign(element.style, getRectStyles({\n clientRect: clientRect\n }));\n },\n // using capture so we are less likely to be impacted by event stopping\n options: {\n capture: true\n }\n });\n return function finish(_ref5) {\n var current = _ref5.current;\n // Don't need this any more\n unbindPointerMove();\n\n // If the user is hover the honey pot, we remove it\n // so that the user can continue to interact with the page normally.\n if (isWithin({\n client: current,\n clientRect: clientRect\n })) {\n element.remove();\n return;\n }\n function cleanup() {\n unbindPostDragEvents();\n element.remove();\n }\n var unbindPostDragEvents = bindAll(window, [{\n type: 'pointerdown',\n listener: cleanup\n }, {\n type: 'pointermove',\n listener: cleanup\n }, {\n type: 'focusin',\n listener: cleanup\n }, {\n type: 'focusout',\n listener: cleanup\n },\n // a 'pointerdown' should happen before 'dragstart', but just being super safe\n {\n type: 'dragstart',\n listener: cleanup\n },\n // if the user has dragged something out of the window\n // and then is dragging something back into the window\n // the first events we will see are \"dragenter\" (and then \"dragover\").\n // So if we see any of these we need to clear the post drag fix.\n {\n type: 'dragenter',\n listener: cleanup\n }, {\n type: 'dragover',\n listener: cleanup\n }\n\n // Not adding a \"wheel\" event listener, as \"wheel\" by itself does not\n // resolve the bug.\n ], {\n // Using `capture` so less likely to be impacted by other code stopping events\n capture: true\n });\n };\n}\nexport function makeHoneyPotFix() {\n var latestPointerMove = null;\n function bindEvents() {\n // For sanity, only collecting this value from when events are first bound.\n // This prevents the case where a super old \"pointermove\" could be used\n // from a prior interaction.\n latestPointerMove = null;\n return bind(window, {\n type: 'pointermove',\n listener: function listener(event) {\n latestPointerMove = {\n x: event.clientX,\n y: event.clientY\n };\n },\n // listening for pointer move in capture phase\n // so we are less likely to be impacted by events being stopped.\n options: {\n capture: true\n }\n });\n }\n function getOnPostDispatch() {\n var finish = null;\n return function onPostEvent(_ref6) {\n var eventName = _ref6.eventName,\n payload = _ref6.payload;\n // We are adding the honey pot `onDragStart` so we don't\n // impact the creation of the native drag preview.\n if (eventName === 'onDragStart') {\n var input = payload.location.initial.input;\n\n // Sometimes there will be no latest \"pointermove\" (eg iOS).\n // In which case, we use the start position of the drag.\n var initial = latestPointerMove !== null && latestPointerMove !== void 0 ? latestPointerMove : {\n x: input.clientX,\n y: input.clientY\n };\n\n // Don't need to defensively call `finish()` as `onDrop` from\n // one interaction is guaranteed to be called before `onDragStart`\n // of the next.\n finish = mountHoneyPot({\n initial: initial\n });\n }\n if (eventName === 'onDrop') {\n var _finish;\n var _input = payload.location.current.input;\n (_finish = finish) === null || _finish === void 0 || _finish({\n current: {\n x: _input.clientX,\n y: _input.clientY\n }\n });\n finish = null;\n // this interaction is finished, we want to use\n // the latest \"pointermove\" for each interaction\n latestPointerMove = null;\n }\n };\n }\n return {\n bindEvents: bindEvents,\n getOnPostDispatch: getOnPostDispatch\n };\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nfunction _arrayWithoutHoles(r) {\n if (Array.isArray(r)) return arrayLikeToArray(r);\n}\nexport { _arrayWithoutHoles as default };","function _iterableToArray(r) {\n if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r);\n}\nexport { _iterableToArray as default };","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nexport { _nonIterableSpread as default };","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nfunction _toConsumableArray(r) {\n return arrayWithoutHoles(r) || iterableToArray(r) || unsupportedIterableToArray(r) || nonIterableSpread();\n}\nexport { _toConsumableArray as default };","/** Provide a function that you only ever want to be called a single time */\nexport function once(fn) {\n var cache = null;\n return function wrapped() {\n if (!cache) {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var result = fn.apply(this, args);\n cache = {\n result: result\n };\n }\n return cache.result;\n };\n}","import { once } from '../public-utils/once';\n\n// using `cache` as our `isFirefox()` result will not change in a browser\n\n/**\n * Returns `true` if a `Firefox` browser\n * */\nexport var isFirefox = once(function isFirefox() {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return navigator.userAgent.includes('Firefox');\n});","import { once } from '../public-utils/once';\n\n// using `cache` as our `isSafari()` result will not change in a browser\n\n/**\n * Returns `true` if a `Safari` browser.\n * Returns `true` if the browser is running on iOS (they are all Safari).\n *\n * Use `isSafariOnIOS` if you want to check if something is Safari + iOS\n * */\nexport var isSafari = once(function isSafari() {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n var _navigator = navigator,\n userAgent = _navigator.userAgent;\n return userAgent.includes('AppleWebKit') && !userAgent.includes('Chrome');\n});","import { bindAll } from 'bind-event-listener';\nimport { isSafari } from '../is-safari';\n\n/* For \"dragenter\" events, the browser should set `relatedTarget` to the previous element.\n * For external drag operations, our first \"dragenter\" event should have a `event.relatedTarget` of `null`.\n *\n * Unfortunately in Safari `event.relatedTarget` is *always* set to `null`\n * Safari bug: https://bugs.webkit.org/show_bug.cgi?id=242627\n * To work around this we count \"dragenter\" and \"dragleave\" events */\n\n// Using symbols for event properties so we don't clash with\n// anything on the `event` object\nvar symbols = {\n isLeavingWindow: Symbol('leaving'),\n isEnteringWindow: Symbol('entering')\n};\nexport function isEnteringWindowInSafari(_ref) {\n var dragEnter = _ref.dragEnter;\n if (!isSafari()) {\n return false;\n }\n return dragEnter.hasOwnProperty(symbols.isEnteringWindow);\n}\nexport function isLeavingWindowInSafari(_ref2) {\n var dragLeave = _ref2.dragLeave;\n if (!isSafari()) {\n return false;\n }\n return dragLeave.hasOwnProperty(symbols.isLeavingWindow);\n}\n(function fixSafari() {\n // Don't do anything when server side rendering\n if (typeof window === 'undefined') {\n return;\n }\n\n // rather than checking the userAgent for \"jsdom\" we can do this check\n // so that the check will be removed completely in production code\n if (process.env.NODE_ENV === 'test') {\n return;\n }\n if (!isSafari()) {\n return;\n }\n function getInitialState() {\n return {\n enterCount: 0,\n isOverWindow: false\n };\n }\n var state = getInitialState();\n function resetState() {\n state = getInitialState();\n }\n\n // These event listeners are bound _forever_ and _never_ removed\n // We don't bother cleaning up these event listeners (for now)\n // as this workaround is only for Safari\n\n // This is how the event count works:\n //\n // lift (+1 enterCount)\n // - dragstart(draggable) [enterCount: 0]\n // - dragenter(draggable) [enterCount: 1]\n // leaving draggable (+0 enterCount)\n // - dragenter(document.body) [enterCount: 2]\n // - dragleave(draggable) [enterCount: 1]\n // leaving window (-1 enterCount)\n // - dragleave(document.body) [enterCount: 0] {leaving the window}\n\n // Things to note:\n // - dragenter and dragleave bubble\n // - the first dragenter when entering a window might not be on `window`\n // - it could be on an element that is pressed up against the window\n // - (so we cannot rely on `event.target` values)\n\n bindAll(window, [{\n type: 'dragstart',\n listener: function listener() {\n state.enterCount = 0;\n // drag start occurs in the source window\n state.isOverWindow = true;\n // When a drag first starts it will also trigger a \"dragenter\" on the draggable element\n }\n }, {\n type: 'drop',\n listener: resetState\n }, {\n type: 'dragend',\n listener: resetState\n }, {\n type: 'dragenter',\n listener: function listener(event) {\n if (!state.isOverWindow && state.enterCount === 0) {\n // Patching the `event` object\n // The `event` object is shared with all event listeners for the event\n event[symbols.isEnteringWindow] = true;\n }\n state.isOverWindow = true;\n state.enterCount++;\n }\n }, {\n type: 'dragleave',\n listener: function listener(event) {\n state.enterCount--;\n if (state.isOverWindow && state.enterCount === 0) {\n // Patching the `event` object as it is shared with all event listeners\n // The `event` object is shared with all event listeners for the event\n event[symbols.isLeavingWindow] = true;\n state.isOverWindow = false;\n }\n }\n }],\n // using `capture: true` so that adding event listeners\n // in bubble phase will have the correct symbols\n {\n capture: true\n });\n})();","/**\n * Does the `EventTarget` look like a `Node` based on \"duck typing\".\n *\n * Helpful when the `Node` might be outside of the current document\n * so we cannot to an `target instanceof Node` check.\n */\nfunction isNodeLike(target) {\n return 'nodeName' in target;\n}\n\n/**\n * Is an `EventTarget` a `Node` from another `window`?\n */\nexport function isFromAnotherWindow(eventTarget) {\n return isNodeLike(eventTarget) && eventTarget.ownerDocument !== document;\n}","import { isFirefox } from '../is-firefox';\nimport { isSafari } from '../is-safari';\nimport { isLeavingWindowInSafari } from './count-events-for-safari';\nimport { isFromAnotherWindow } from './is-from-another-window';\nexport function isLeavingWindow(_ref) {\n var dragLeave = _ref.dragLeave;\n var type = dragLeave.type,\n relatedTarget = dragLeave.relatedTarget;\n if (type !== 'dragleave') {\n return false;\n }\n if (isSafari()) {\n return isLeavingWindowInSafari({\n dragLeave: dragLeave\n });\n }\n\n // Standard check: if going to `null` we are leaving the `window`\n if (relatedTarget == null) {\n return true;\n }\n\n /**\n * 🦊 Exception: `iframe` in Firefox (`125.0`)\n *\n * Case 1: parent `window` → child `iframe`\n * `dragLeave.relatedTarget` is element _inside_ the child `iframe`\n * (foreign element)\n *\n * Case 2: child `iframe` → parent `window`\n * `dragLeave.relatedTarget` is the `iframe` in the parent `window`\n * (foreign element)\n */\n\n if (isFirefox()) {\n return isFromAnotherWindow(relatedTarget);\n }\n\n /**\n * 🌏 Exception: `iframe` in Chrome (`124.0`)\n *\n * Case 1: parent `window` → child `iframe`\n * `dragLeave.relatedTarget` is the `iframe` in the parent `window`\n *\n * Case 2: child `iframe` → parent `window`\n * `dragLeave.relatedTarget` is `null` *(standard check)*\n */\n\n // Case 2\n // Using `instanceof` check as the element will be in the same `window`\n return relatedTarget instanceof HTMLIFrameElement;\n}","export function getBindingsForBrokenDrags(_ref) {\n var onDragEnd = _ref.onDragEnd;\n return [\n // ## Detecting drag ending for removed draggables\n //\n // If a draggable element is removed during a drag and the user drops:\n // 1. if over a valid drop target: we get a \"drop\" event to know the drag is finished\n // 2. if not over a valid drop target (or cancelled): we get nothing\n // The \"dragend\" event will not fire on the source draggable if it has been\n // removed from the DOM.\n // So we need to figure out if a drag operation has finished by looking at other events\n // We can do this by looking at other events\n\n // ### First detection: \"pointermove\" events\n\n // 1. \"pointermove\" events cannot fire during a drag and drop operation\n // according to the spec. So if we get a \"pointermove\" it means that\n // the drag and drop operations has finished. So if we get a \"pointermove\"\n // we know that the drag is over\n // 2. 🦊😤 Drag and drop operations are _supposed_ to suppress\n // other pointer events. However, firefox will allow a few\n // pointer event to get through after a drag starts.\n // The most I've seen is 3\n {\n type: 'pointermove',\n listener: function () {\n var callCount = 0;\n return function listener() {\n // Using 20 as it is far bigger than the most observed (3)\n if (callCount < 20) {\n callCount++;\n return;\n }\n onDragEnd();\n };\n }()\n },\n // ### Second detection: \"pointerdown\" events\n\n // If we receive this event then we know that a drag operation has finished\n // and potentially another one is about to start.\n // Note: `pointerdown` fires on all browsers / platforms before \"dragstart\"\n {\n type: 'pointerdown',\n listener: onDragEnd\n }];\n}","export function getInput(event) {\n return {\n altKey: event.altKey,\n button: event.button,\n buttons: event.buttons,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n shiftKey: event.shiftKey,\n clientX: event.clientX,\n clientY: event.clientY,\n pageX: event.pageX,\n pageY: event.pageY\n };\n}","var rafSchd = function rafSchd(fn) {\n var lastArgs = [];\n var frameId = null;\n\n var wrapperFn = function wrapperFn() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n lastArgs = args;\n\n if (frameId) {\n return;\n }\n\n frameId = requestAnimationFrame(function () {\n frameId = null;\n fn.apply(void 0, lastArgs);\n });\n };\n\n wrapperFn.cancel = function () {\n if (!frameId) {\n return;\n }\n\n cancelAnimationFrame(frameId);\n frameId = null;\n };\n\n return wrapperFn;\n};\n\nexport default rafSchd;\n","import rafSchd from 'raf-schd';\nvar scheduleOnDrag = rafSchd(function (fn) {\n return fn();\n});\nvar dragStart = function () {\n var scheduled = null;\n function schedule(fn) {\n var frameId = requestAnimationFrame(function () {\n scheduled = null;\n fn();\n });\n scheduled = {\n frameId: frameId,\n fn: fn\n };\n }\n function flush() {\n if (scheduled) {\n cancelAnimationFrame(scheduled.frameId);\n scheduled.fn();\n scheduled = null;\n }\n }\n return {\n schedule: schedule,\n flush: flush\n };\n}();\nexport function makeDispatch(_ref) {\n var source = _ref.source,\n initial = _ref.initial,\n dispatchEvent = _ref.dispatchEvent;\n var previous = {\n dropTargets: []\n };\n function safeDispatch(args) {\n dispatchEvent(args);\n previous = {\n dropTargets: args.payload.location.current.dropTargets\n };\n }\n var dispatch = {\n start: function start(_ref2) {\n var nativeSetDragImage = _ref2.nativeSetDragImage;\n // Ensuring that both `onGenerateDragPreview` and `onDragStart` get the same location.\n // We do this so that `previous` is`[]` in `onDragStart` (which is logical)\n var location = {\n current: initial,\n previous: previous,\n initial: initial\n };\n // a `onGenerateDragPreview` does _not_ add another entry for `previous`\n // onDragPreview\n safeDispatch({\n eventName: 'onGenerateDragPreview',\n payload: {\n source: source,\n location: location,\n nativeSetDragImage: nativeSetDragImage\n }\n });\n dragStart.schedule(function () {\n safeDispatch({\n eventName: 'onDragStart',\n payload: {\n source: source,\n location: location\n }\n });\n });\n },\n dragUpdate: function dragUpdate(_ref3) {\n var current = _ref3.current;\n dragStart.flush();\n scheduleOnDrag.cancel();\n safeDispatch({\n eventName: 'onDropTargetChange',\n payload: {\n source: source,\n location: {\n initial: initial,\n previous: previous,\n current: current\n }\n }\n });\n },\n drag: function drag(_ref4) {\n var current = _ref4.current;\n scheduleOnDrag(function () {\n dragStart.flush();\n var location = {\n initial: initial,\n previous: previous,\n current: current\n };\n safeDispatch({\n eventName: 'onDrag',\n payload: {\n source: source,\n location: location\n }\n });\n });\n },\n drop: function drop(_ref5) {\n var current = _ref5.current,\n updatedSourcePayload = _ref5.updatedSourcePayload;\n dragStart.flush();\n scheduleOnDrag.cancel();\n safeDispatch({\n eventName: 'onDrop',\n payload: {\n source: updatedSourcePayload !== null && updatedSourcePayload !== void 0 ? updatedSourcePayload : source,\n location: {\n current: current,\n previous: previous,\n initial: initial\n }\n }\n });\n }\n };\n return dispatch;\n}","import _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nimport { bindAll } from 'bind-event-listener';\nimport { getElementFromPointWithoutHoneypot } from '../honey-pot-fix/get-element-from-point-without-honey-pot';\nimport { isHoneyPotElement } from '../honey-pot-fix/is-honey-pot-element';\nimport { isLeavingWindow } from '../util/changing-window/is-leaving-window';\nimport { getBindingsForBrokenDrags } from '../util/detect-broken-drag';\nimport { getInput } from '../util/get-input';\nimport { makeDispatch } from './dispatch-consumer-event';\nvar globalState = {\n isActive: false\n};\nfunction canStart() {\n return !globalState.isActive;\n}\nfunction getNativeSetDragImage(event) {\n if (event.dataTransfer) {\n // need to use `.bind` as `setDragImage` is required\n // to be run with `event.dataTransfer` as the \"this\" context\n return event.dataTransfer.setDragImage.bind(event.dataTransfer);\n }\n return null;\n}\nfunction hasHierarchyChanged(_ref) {\n var current = _ref.current,\n next = _ref.next;\n if (current.length !== next.length) {\n return true;\n }\n // not checking stickiness, data or dropEffect,\n // just whether the hierarchy has changed\n for (var i = 0; i < current.length; i++) {\n if (current[i].element !== next[i].element) {\n return true;\n }\n }\n return false;\n}\nfunction start(_ref2) {\n var event = _ref2.event,\n dragType = _ref2.dragType,\n getDropTargetsOver = _ref2.getDropTargetsOver,\n dispatchEvent = _ref2.dispatchEvent;\n if (!canStart()) {\n return;\n }\n var initial = getStartLocation({\n event: event,\n dragType: dragType,\n getDropTargetsOver: getDropTargetsOver\n });\n globalState.isActive = true;\n var state = {\n current: initial\n };\n\n // Setting initial drop effect for the drag\n setDropEffectOnEvent({\n event: event,\n current: initial.dropTargets\n });\n var dispatch = makeDispatch({\n source: dragType.payload,\n dispatchEvent: dispatchEvent,\n initial: initial\n });\n function updateState(next) {\n // only looking at whether hierarchy has changed to determine whether something as 'changed'\n var hasChanged = hasHierarchyChanged({\n current: state.current.dropTargets,\n next: next.dropTargets\n });\n\n // Always updating the state to include latest data, dropEffect and stickiness\n // Only updating consumers if the hierarchy has changed in some way\n // Consumers can get the latest data by using `onDrag`\n state.current = next;\n if (hasChanged) {\n dispatch.dragUpdate({\n current: state.current\n });\n }\n }\n function onUpdateEvent(event) {\n var input = getInput(event);\n\n // If we are over the honey pot, we need to get the element\n // that the user would have been over if not for the honey pot\n var target = isHoneyPotElement(event.target) ? getElementFromPointWithoutHoneypot({\n x: input.clientX,\n y: input.clientY\n }) : event.target;\n var nextDropTargets = getDropTargetsOver({\n target: target,\n input: input,\n source: dragType.payload,\n current: state.current.dropTargets\n });\n if (nextDropTargets.length) {\n // 🩸 must call `event.preventDefault()` to allow a browser drop to occur\n event.preventDefault();\n setDropEffectOnEvent({\n event: event,\n current: nextDropTargets\n });\n }\n updateState({\n dropTargets: nextDropTargets,\n input: input\n });\n }\n function cancel() {\n // The spec behaviour is that when a drag is cancelled, or when dropping on no drop targets,\n // a \"dragleave\" event is fired on the active drop target before a \"dragend\" event.\n // We are replicating that behaviour in `cancel` if there are any active drop targets to\n // ensure consistent behaviour.\n //\n // Note: When cancelling, or dropping on no drop targets, a \"dragleave\" event\n // will have already cleared the dropTargets to `[]` (as that particular \"dragleave\" has a `relatedTarget` of `null`)\n\n if (state.current.dropTargets.length) {\n updateState({\n dropTargets: [],\n input: state.current.input\n });\n }\n dispatch.drop({\n current: state.current,\n updatedSourcePayload: null\n });\n finish();\n }\n function finish() {\n globalState.isActive = false;\n unbindEvents();\n }\n var unbindEvents = bindAll(window, [{\n // 👋 Note: we are repurposing the `dragover` event as our `drag` event\n // this is because firefox does not publish pointer coordinates during\n // a `drag` event, but does for every other type of drag event\n // `dragover` fires on all elements that are being dragged over\n // Because we are binding to `window` - our `dragover` is effectively the same as a `drag`\n // 🦊😤\n type: 'dragover',\n listener: function listener(event) {\n // We need to regularly calculate the drop targets in order to allow:\n // - dynamic `canDrop()` checks\n // - rapid updating `getData()` calls to attach data in response to user input (eg for edge detection)\n // Sadly we cannot schedule inspecting changes resulting from this event\n // we need to be able to conditionally cancel the event with `event.preventDefault()`\n // to enable the correct native drop experience.\n\n // 1. check to see if anything has changed\n onUpdateEvent(event);\n\n // 2. let consumers know a move has occurred\n // This will include the latest 'input' values\n dispatch.drag({\n current: state.current\n });\n }\n }, {\n type: 'dragenter',\n listener: onUpdateEvent\n }, {\n type: 'dragleave',\n listener: function listener(event) {\n if (!isLeavingWindow({\n dragLeave: event\n })) {\n return;\n }\n\n /**\n * At this point we don't know if a drag is being cancelled,\n * or if a drag is leaving the `window`.\n *\n * Both have:\n * 1. \"dragleave\" (with `relatedTarget: null`)\n * 2. \"dragend\" (a \"dragend\" can occur when outside the `window`)\n *\n * **Clearing drop targets**\n *\n * For either case we are clearing the the drop targets\n *\n * - cancelling: we clear drop targets in `\"dragend\"` anyway\n * - leaving the `window`: we clear the drop targets (to clear stickiness)\n *\n * **Leaving the window and finishing the drag**\n *\n * _internal drags_\n *\n * - The drag continues when the user is outside the `window`\n * and can resume if the user drags back over the `window`,\n * or end when the user drops in an external `window`.\n * - We will get a `\"dragend\"`, or we can listen for other\n * events to determine the drag is finished when the user re-enters the `window`).\n *\n * _external drags_\n *\n * - We conclude the drag operation.\n * - We have no idea if the user will drag back over the `window`,\n * or if the drag ends elsewhere.\n * - We will create a new drag if the user re-enters the `window`.\n *\n * **Not updating `input`**\n *\n * 🐛 Bug[Chrome] the final `\"dragleave\"` has default input values (eg `clientX == 0`)\n * Workaround: intentionally not updating `input` in \"dragleave\"\n * rather than the users current input values\n * - [Conversation](https://twitter.com/alexandereardon/status/1642697633864241152)\n * - [Bug](https://bugs.chromium.org/p/chromium/issues/detail?id=1429937)\n **/\n\n updateState({\n input: state.current.input,\n dropTargets: []\n });\n if (dragType.startedFrom === 'external') {\n cancel();\n }\n }\n }, {\n // A \"drop\" can only happen if the browser allowed the drop\n type: 'drop',\n listener: function listener(event) {\n // Capture the final input.\n // We are capturing the final `input` for the\n // most accurate honey pot experience\n state.current = {\n dropTargets: state.current.dropTargets,\n input: getInput(event)\n };\n\n /** If there are no drop targets, then we will get\n * a \"drop\" event if:\n * - `preventUnhandled()` is being used\n * - there is an unmanaged drop target (eg another library)\n * In these cases, it's up to the consumer\n * to handle the drop if it's not over one of our drop targets\n * - `preventUnhandled()` will cancel the \"drop\"\n * - unmanaged drop targets can handle the \"drop\" how they want to\n * We won't call `event.preventDefault()` in this call path */\n\n if (!state.current.dropTargets.length) {\n cancel();\n return;\n }\n event.preventDefault();\n\n // applying the latest drop effect to the event\n setDropEffectOnEvent({\n event: event,\n current: state.current.dropTargets\n });\n dispatch.drop({\n current: state.current,\n // When dropping something native, we need to extract the latest\n // `.items` from the \"drop\" event as it is now accessible\n updatedSourcePayload: dragType.type === 'external' ? dragType.getDropPayload(event) : null\n });\n finish();\n }\n }, {\n // \"dragend\" fires when on the drag source (eg a draggable element)\n // when the drag is finished.\n // \"dragend\" will fire after \"drop\" (if there was a successful drop)\n // \"dragend\" does not fire if the draggable source has been removed during the drag\n // or for external drag sources (eg files)\n\n // This \"dragend\" listener will not fire if there was a successful drop\n // as we will have already removed the event listener\n\n type: 'dragend',\n listener: function listener(event) {\n // In firefox, the position of the \"dragend\" event can\n // be a bit different to the last \"dragover\" event.\n // Updating the input so we can get the best possible\n // information for the honey pot.\n state.current = {\n dropTargets: state.current.dropTargets,\n input: getInput(event)\n };\n cancel();\n }\n }].concat(_toConsumableArray(getBindingsForBrokenDrags({\n onDragEnd: cancel\n }))),\n // Once we have started a managed drag operation it is important that we see / own all drag events\n // We got one adoption bug pop up where some code was stopping (`event.stopPropagation()`)\n // all \"drop\" events in the bubble phase on the `document.body`.\n // This meant that we never saw the \"drop\" event.\n {\n capture: true\n });\n dispatch.start({\n nativeSetDragImage: getNativeSetDragImage(event)\n });\n}\nfunction setDropEffectOnEvent(_ref3) {\n var _current$;\n var event = _ref3.event,\n current = _ref3.current;\n // setting the `dropEffect` to be the innerMost drop targets dropEffect\n var innerMost = (_current$ = current[0]) === null || _current$ === void 0 ? void 0 : _current$.dropEffect;\n if (innerMost != null && event.dataTransfer) {\n event.dataTransfer.dropEffect = innerMost;\n }\n}\nfunction getStartLocation(_ref4) {\n var event = _ref4.event,\n dragType = _ref4.dragType,\n getDropTargetsOver = _ref4.getDropTargetsOver;\n var input = getInput(event);\n\n // When dragging from outside of the browser,\n // the drag is not being sourced from any local drop targets\n if (dragType.startedFrom === 'external') {\n return {\n input: input,\n dropTargets: []\n };\n }\n var dropTargets = getDropTargetsOver({\n input: input,\n source: dragType.payload,\n target: event.target,\n current: []\n });\n return {\n input: input,\n dropTargets: dropTargets\n };\n}\nexport var lifecycle = {\n canStart: canStart,\n start: start\n};","// Extending `Map` to allow us to link Key and Values together\n\nvar ledger = new Map();\nfunction registerUsage(_ref) {\n var typeKey = _ref.typeKey,\n mount = _ref.mount;\n var entry = ledger.get(typeKey);\n if (entry) {\n entry.usageCount++;\n return entry;\n }\n var initial = {\n typeKey: typeKey,\n unmount: mount(),\n usageCount: 1\n };\n ledger.set(typeKey, initial);\n return initial;\n}\nexport function register(args) {\n var entry = registerUsage(args);\n return function unregister() {\n entry.usageCount--;\n if (entry.usageCount > 0) {\n return;\n }\n // Only a single usage left, remove it\n entry.unmount();\n ledger.delete(args.typeKey);\n };\n}","export function addAttribute(element, _ref) {\n var attribute = _ref.attribute,\n value = _ref.value;\n element.setAttribute(attribute, value);\n return function () {\n return element.removeAttribute(attribute);\n };\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _toConsumableArray from \"@babel/runtime/helpers/toConsumableArray\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nimport { combine } from '../public-utils/combine';\nimport { once } from '../public-utils/once';\nimport { addAttribute } from '../util/add-attribute';\nfunction copyReverse(array) {\n return array.slice(0).reverse();\n}\nexport function makeDropTarget(_ref) {\n var typeKey = _ref.typeKey,\n defaultDropEffect = _ref.defaultDropEffect;\n var registry = new WeakMap();\n var dropTargetDataAtt = \"data-drop-target-for-\".concat(typeKey);\n var dropTargetSelector = \"[\".concat(dropTargetDataAtt, \"]\");\n function addToRegistry(args) {\n registry.set(args.element, args);\n return function () {\n return registry.delete(args.element);\n };\n }\n function dropTargetForConsumers(args) {\n // Guardrail: warn if the draggable element is already registered\n if (process.env.NODE_ENV !== 'production') {\n var existing = registry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn(\"You have already registered a [\".concat(typeKey, \"] dropTarget on the same element\"), {\n existing: existing,\n proposed: args\n });\n }\n if (args.element instanceof HTMLIFrameElement) {\n // eslint-disable-next-line no-console\n console.warn(\"\\n We recommend not registering <iframe> elements as drop targets\\n as it can result in some strange browser event ordering.\\n \" // Removing newlines and excessive whitespace\n .replace(/\\s{2,}/g, ' ').trim());\n }\n }\n var cleanup = combine(addAttribute(args.element, {\n attribute: dropTargetDataAtt,\n value: 'true'\n }), addToRegistry(args));\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n }\n function getActualDropTargets(_ref2) {\n var _args$getData, _args$getData2, _args$getDropEffect, _args$getDropEffect2;\n var source = _ref2.source,\n target = _ref2.target,\n input = _ref2.input,\n _ref2$result = _ref2.result,\n result = _ref2$result === void 0 ? [] : _ref2$result;\n if (target == null) {\n return result;\n }\n if (!(target instanceof Element)) {\n // For \"text-selection\" drags, the original `target`\n // is not an `Element`, so we need to start looking from\n // the parent element\n if (target instanceof Node) {\n return getActualDropTargets({\n source: source,\n target: target.parentElement,\n input: input,\n result: result\n });\n }\n\n // not sure what we are working with,\n // so we can exit.\n return result;\n }\n var closest = target.closest(dropTargetSelector);\n\n // Cannot find anything else\n if (closest == null) {\n return result;\n }\n var args = registry.get(closest);\n\n // error: something had a dropTargetSelector but we could not\n // find a match. For now, failing silently\n if (args == null) {\n return result;\n }\n var feedback = {\n input: input,\n source: source,\n element: args.element\n };\n\n // if dropping is not allowed, skip this drop target\n // and continue looking up the DOM tree\n if (args.canDrop && !args.canDrop(feedback)) {\n return getActualDropTargets({\n source: source,\n target: args.element.parentElement,\n input: input,\n result: result\n });\n }\n\n // calculate our new record\n var data = (_args$getData = (_args$getData2 = args.getData) === null || _args$getData2 === void 0 ? void 0 : _args$getData2.call(args, feedback)) !== null && _args$getData !== void 0 ? _args$getData : {};\n var dropEffect = (_args$getDropEffect = (_args$getDropEffect2 = args.getDropEffect) === null || _args$getDropEffect2 === void 0 ? void 0 : _args$getDropEffect2.call(args, feedback)) !== null && _args$getDropEffect !== void 0 ? _args$getDropEffect : defaultDropEffect;\n var record = {\n data: data,\n element: args.element,\n dropEffect: dropEffect,\n // we are collecting _actual_ drop targets, so these are\n // being applied _not_ due to stickiness\n isActiveDueToStickiness: false\n };\n return getActualDropTargets({\n source: source,\n target: args.element.parentElement,\n input: input,\n // Using bubble ordering. Same ordering as `event.getPath()`\n result: [].concat(_toConsumableArray(result), [record])\n });\n }\n function notifyCurrent(_ref3) {\n var eventName = _ref3.eventName,\n payload = _ref3.payload;\n var _iterator = _createForOfIteratorHelper(payload.location.current.dropTargets),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var _entry$eventName;\n var record = _step.value;\n var entry = registry.get(record.element);\n var args = _objectSpread(_objectSpread({}, payload), {}, {\n self: record\n });\n entry === null || entry === void 0 || (_entry$eventName = entry[eventName]) === null || _entry$eventName === void 0 || _entry$eventName.call(entry,\n // I cannot seem to get the types right here.\n // TS doesn't seem to like that one event can need `nativeSetDragImage`\n // @ts-expect-error\n args);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n var actions = {\n onGenerateDragPreview: notifyCurrent,\n onDrag: notifyCurrent,\n onDragStart: notifyCurrent,\n onDrop: notifyCurrent,\n onDropTargetChange: function onDropTargetChange(_ref4) {\n var payload = _ref4.payload;\n var isCurrent = new Set(payload.location.current.dropTargets.map(function (record) {\n return record.element;\n }));\n var visited = new Set();\n var _iterator2 = _createForOfIteratorHelper(payload.location.previous.dropTargets),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var _entry$onDropTargetCh;\n var record = _step2.value;\n visited.add(record.element);\n var entry = registry.get(record.element);\n var isOver = isCurrent.has(record.element);\n var args = _objectSpread(_objectSpread({}, payload), {}, {\n self: record\n });\n entry === null || entry === void 0 || (_entry$onDropTargetCh = entry.onDropTargetChange) === null || _entry$onDropTargetCh === void 0 || _entry$onDropTargetCh.call(entry, args);\n\n // if we cannot find the drop target in the current array, then it has been left\n if (!isOver) {\n var _entry$onDragLeave;\n entry === null || entry === void 0 || (_entry$onDragLeave = entry.onDragLeave) === null || _entry$onDragLeave === void 0 || _entry$onDragLeave.call(entry, args);\n }\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n var _iterator3 = _createForOfIteratorHelper(payload.location.current.dropTargets),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var _entry$onDropTargetCh2, _entry$onDragEnter;\n var _record = _step3.value;\n // already published an update to this drop target\n if (visited.has(_record.element)) {\n continue;\n }\n // at this point we have a new drop target that is being entered into\n var _args = _objectSpread(_objectSpread({}, payload), {}, {\n self: _record\n });\n var _entry = registry.get(_record.element);\n _entry === null || _entry === void 0 || (_entry$onDropTargetCh2 = _entry.onDropTargetChange) === null || _entry$onDropTargetCh2 === void 0 || _entry$onDropTargetCh2.call(_entry, _args);\n _entry === null || _entry === void 0 || (_entry$onDragEnter = _entry.onDragEnter) === null || _entry$onDragEnter === void 0 || _entry$onDragEnter.call(_entry, _args);\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n };\n function dispatchEvent(args) {\n actions[args.eventName](args);\n }\n function getIsOver(_ref5) {\n var source = _ref5.source,\n target = _ref5.target,\n input = _ref5.input,\n current = _ref5.current;\n var actual = getActualDropTargets({\n source: source,\n target: target,\n input: input\n });\n\n // stickiness is only relevant when we have less\n // drop targets than we did before\n if (actual.length >= current.length) {\n return actual;\n }\n\n // less 'actual' drop targets than before,\n // we need to see if 'stickiness' applies\n\n // An old drop target will continue to be dropped on if:\n // 1. it has the same parent\n // 2. nothing exists in it's previous index\n\n var lastCaptureOrdered = copyReverse(current);\n var actualCaptureOrdered = copyReverse(actual);\n var resultCaptureOrdered = [];\n for (var index = 0; index < lastCaptureOrdered.length; index++) {\n var _argsForLast$getIsSti;\n var last = lastCaptureOrdered[index];\n var fresh = actualCaptureOrdered[index];\n\n // if a record is in the new index -> use that\n // it will have the latest data + dropEffect\n if (fresh != null) {\n resultCaptureOrdered.push(fresh);\n continue;\n }\n\n // At this point we have no drop target in the old spot\n // Check to see if we can use a previous sticky drop target\n\n // The \"parent\" is the one inside of `resultCaptureOrdered`\n // (the parent might be a drop target that was sticky)\n var parent = resultCaptureOrdered[index - 1];\n var lastParent = lastCaptureOrdered[index - 1];\n\n // Stickiness is based on parent relationships, so if the parent relationship has change\n // then we can stop our search\n if ((parent === null || parent === void 0 ? void 0 : parent.element) !== (lastParent === null || lastParent === void 0 ? void 0 : lastParent.element)) {\n break;\n }\n\n // We need to check whether the old drop target can still be dropped on\n\n var argsForLast = registry.get(last.element);\n\n // We cannot drop on a drop target that is no longer mounted\n if (!argsForLast) {\n break;\n }\n var feedback = {\n input: input,\n source: source,\n element: argsForLast.element\n };\n\n // We cannot drop on a drop target that no longer allows being dropped on\n if (argsForLast.canDrop && !argsForLast.canDrop(feedback)) {\n break;\n }\n\n // We cannot drop on a drop target that is no longer sticky\n if (!((_argsForLast$getIsSti = argsForLast.getIsSticky) !== null && _argsForLast$getIsSti !== void 0 && _argsForLast$getIsSti.call(argsForLast, feedback))) {\n break;\n }\n\n // Note: intentionally not recollecting `getData()` or `getDropEffect()`\n // Previous values for `data` and `dropEffect` will be borrowed\n // This is to prevent things like the 'closest edge' changing when\n // no longer over a drop target.\n // We could change our mind on this behaviour in the future\n\n resultCaptureOrdered.push(_objectSpread(_objectSpread({}, last), {}, {\n // making it clear to consumers this drop target is active due to stickiness\n isActiveDueToStickiness: true\n }));\n }\n\n // return bubble ordered result\n return copyReverse(resultCaptureOrdered);\n }\n return {\n dropTargetForConsumers: dropTargetForConsumers,\n getIsOver: getIsOver,\n dispatchEvent: dispatchEvent\n };\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nimport { once } from '../public-utils/once';\nexport function makeMonitor() {\n var registry = new Set();\n var dragging = null;\n function tryAddToActive(monitor) {\n if (!dragging) {\n return;\n }\n // Monitor is allowed to monitor events if:\n // 1. It has no `canMonitor` function (default is that a monitor can listen to everything)\n // 2. `canMonitor` returns true\n if (!monitor.canMonitor || monitor.canMonitor(dragging.canMonitorArgs)) {\n dragging.active.add(monitor);\n }\n }\n function monitorForConsumers(args) {\n // We are giving each `args` a new reference so that you\n // can create multiple monitors with the same `args`.\n var entry = _objectSpread({}, args);\n registry.add(entry);\n\n // if there is an active drag we need to see if this new monitor is relevant\n tryAddToActive(entry);\n function cleanup() {\n registry.delete(entry);\n\n // We need to stop publishing events during a drag to this monitor!\n if (dragging) {\n dragging.active.delete(entry);\n }\n }\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n }\n function dispatchEvent(_ref) {\n var eventName = _ref.eventName,\n payload = _ref.payload;\n if (eventName === 'onGenerateDragPreview') {\n dragging = {\n canMonitorArgs: {\n initial: payload.location.initial,\n source: payload.source\n },\n active: new Set()\n };\n var _iterator = _createForOfIteratorHelper(registry),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var monitor = _step.value;\n tryAddToActive(monitor);\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n\n // This should never happen.\n if (!dragging) {\n return;\n }\n\n // Creating an array from the set _before_ iterating\n // This is so that monitors added during the current event will not be called.\n // This behaviour matches native EventTargets where an event listener\n // cannot add another event listener during an active event to the same\n // event target in the same event (for us we have a single global event target)\n var active = Array.from(dragging.active);\n for (var _i = 0, _active = active; _i < _active.length; _i++) {\n var _monitor = _active[_i];\n // A monitor can be removed by another monitor during an event.\n // We need to check that the monitor is still registered before calling it\n if (dragging.active.has(_monitor)) {\n var _monitor$eventName;\n // @ts-expect-error: I cannot get this type working!\n (_monitor$eventName = _monitor[eventName]) === null || _monitor$eventName === void 0 || _monitor$eventName.call(_monitor, payload);\n }\n }\n if (eventName === 'onDrop') {\n dragging.active.clear();\n dragging = null;\n }\n }\n return {\n dispatchEvent: dispatchEvent,\n monitorForConsumers: monitorForConsumers\n };\n}","import { lifecycle } from '../ledger/lifecycle-manager';\nimport { register } from '../ledger/usage-ledger';\nimport { makeDropTarget } from './make-drop-target';\nimport { makeMonitor } from './make-monitor';\nexport function makeAdapter(_ref) {\n var typeKey = _ref.typeKey,\n mount = _ref.mount,\n dispatchEventToSource = _ref.dispatchEventToSource,\n onPostDispatch = _ref.onPostDispatch,\n defaultDropEffect = _ref.defaultDropEffect;\n var monitorAPI = makeMonitor();\n var dropTargetAPI = makeDropTarget({\n typeKey: typeKey,\n defaultDropEffect: defaultDropEffect\n });\n function dispatchEvent(args) {\n // 1. forward the event to source\n dispatchEventToSource === null || dispatchEventToSource === void 0 || dispatchEventToSource(args);\n\n // 2. forward the event to relevant dropTargets\n dropTargetAPI.dispatchEvent(args);\n\n // 3. forward event to monitors\n monitorAPI.dispatchEvent(args);\n\n // 4. post consumer dispatch (used for honey pot fix)\n onPostDispatch === null || onPostDispatch === void 0 || onPostDispatch(args);\n }\n function start(_ref2) {\n var event = _ref2.event,\n dragType = _ref2.dragType;\n lifecycle.start({\n event: event,\n dragType: dragType,\n getDropTargetsOver: dropTargetAPI.getIsOver,\n dispatchEvent: dispatchEvent\n });\n }\n function registerUsage() {\n function mountAdapter() {\n var api = {\n canStart: lifecycle.canStart,\n start: start\n };\n return mount(api);\n }\n return register({\n typeKey: typeKey,\n mount: mountAdapter\n });\n }\n return {\n registerUsage: registerUsage,\n dropTarget: dropTargetAPI.dropTargetForConsumers,\n monitor: monitorAPI.monitorForConsumers\n };\n}","import { once } from '../public-utils/once';\n\n// Using `once` as the value won't change in a browser\n\nexport var isAndroid = once(function isAndroid() {\n return navigator.userAgent.toLocaleLowerCase().includes('android');\n});\nexport var androidFallbackText = 'pdnd:android-fallback';","// Why we put the media types in their own files:\n//\n// - we are not putting them all in one file as not all adapters need all types\n// - we are not putting them in the external helpers as some things just need the\n// types and not the external functions code\nexport var textMediaType = 'text/plain';","// Why we put the media types in their own files:\n//\n// - we are not putting them all in one file as not all adapters need all types\n// - we are not putting them in the external helpers as some things just need the\n// types and not the external functions code\nexport var URLMediaType = 'text/uri-list';","/**\n * This key has been pulled into a separate module\n * so that the external adapter does not need to import\n * the element adapter\n */\nexport var elementAdapterNativeDataKey = 'application/vnd.pdnd';","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport { bind } from 'bind-event-listener';\nimport { getElementFromPointWithoutHoneypot } from '../honey-pot-fix/get-element-from-point-without-honey-pot';\nimport { makeHoneyPotFix } from '../honey-pot-fix/make-honey-pot-fix';\nimport { makeAdapter } from '../make-adapter/make-adapter';\nimport { combine } from '../public-utils/combine';\nimport { once } from '../public-utils/once';\nimport { addAttribute } from '../util/add-attribute';\nimport { androidFallbackText, isAndroid } from '../util/android';\nimport { getInput } from '../util/get-input';\nimport { textMediaType } from '../util/media-types/text-media-type';\nimport { URLMediaType } from '../util/media-types/url-media-type';\nimport { elementAdapterNativeDataKey } from './element-adapter-native-data-key';\nvar draggableRegistry = new WeakMap();\nfunction addToRegistry(args) {\n draggableRegistry.set(args.element, args);\n return function cleanup() {\n draggableRegistry.delete(args.element);\n };\n}\nvar honeyPotFix = makeHoneyPotFix();\nvar adapter = makeAdapter({\n typeKey: 'element',\n defaultDropEffect: 'move',\n mount: function mount(api) {\n /** Binding event listeners the `document` rather than `window` so that\n * this adapter always gets preference over the text adapter.\n * `document` is the first `EventTarget` under `window`\n * https://twitter.com/alexandereardon/status/1604658588311465985\n */\n return combine(honeyPotFix.bindEvents(), bind(document, {\n type: 'dragstart',\n listener: function listener(event) {\n var _entry$dragHandle, _entry$getInitialData, _entry$getInitialData2, _entry$dragHandle2, _entry$getInitialData3, _entry$getInitialData4;\n if (!api.canStart(event)) {\n return;\n }\n\n // If the \"dragstart\" event is cancelled, then a drag won't start\n // There will be no further drag operation events (eg no \"dragend\" event)\n if (event.defaultPrevented) {\n return;\n }\n\n // Technically `dataTransfer` can be `null` according to the types\n // But that behaviour does not seem to appear in the spec.\n // If there is not `dataTransfer`, we can assume something is wrong and not\n // start a drag\n if (!event.dataTransfer) {\n // Including this code on \"test\" and \"development\" environments:\n // - Browser tests commonly run against \"development\" builds\n // - Unit tests commonly run in \"test\"\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn(\"\\n It appears as though you have are not testing DragEvents correctly.\\n\\n - If you are unit testing, ensure you have polyfilled DragEvent.\\n - If you are browser testing, ensure you are dispatching drag events correctly.\\n\\n Please see our testing guides for more information:\\n https://atlassian.design/components/pragmatic-drag-and-drop/core-package/testing\\n \".replace(/ {2}/g, ''));\n }\n return;\n }\n\n // the closest parent that is a draggable element will be marked as\n // the `event.target` for the event\n var target = event.target;\n\n // this source is only for elements\n // Note: only HTMLElements can have the \"draggable\" attribute\n if (!(target instanceof HTMLElement)) {\n return;\n }\n\n // see if the thing being dragged is owned by us\n var entry = draggableRegistry.get(target);\n\n // no matching element found\n // → dragging an element with `draggable=\"true\"` that is not controlled by us\n if (!entry) {\n return;\n }\n\n /**\n * A text selection drag _can_ have the `draggable` element be\n * the `event.target` if the user is dragging the text selection\n * from the `draggable`.\n *\n * To know if the `draggable` is being dragged, we look at whether any\n * `\"text/plain\"` data is being dragged. If it is, then a text selection\n * drag is occurring.\n *\n * This behaviour has been validated on:\n *\n * - Chrome@128 on Android@14\n * - Chrome@128 on iOS@17.6.1\n * - Chrome@128 on Windows@11\n * - Chrome@128 on MacOS@14.6.1\n * - Firefox@129 on Windows@11 (not possible for user to select text in a draggable)\n * - Firefox@129 on MacOS@14.6.1 (not possible for user to select text in a draggable)\n *\n * Note: Could usually just use: `event.dataTransfer.types.includes(textMediaType)`\n * but unfortunately ProseMirror is always setting `\"\"` as the dragged text\n *\n * Note: Unfortunately editor is (heavily) leaning on the current functionality today\n * and unwinding it will be a decent amount of effort. So for now, a text selection\n * where the `event.target` is a `draggable` element will still trigger the\n * element adapter.\n *\n * // Future state:\n * if(event.dataTransfer.getData(textMediaType)) {\n * \treturn;\n * }\n *\n */\n\n var input = getInput(event);\n var feedback = {\n element: entry.element,\n dragHandle: (_entry$dragHandle = entry.dragHandle) !== null && _entry$dragHandle !== void 0 ? _entry$dragHandle : null,\n input: input\n };\n\n // Check: does the draggable want to allow dragging?\n if (entry.canDrag && !entry.canDrag(feedback)) {\n // cancel drag operation if we cannot drag\n event.preventDefault();\n return;\n }\n\n // Check: is there a drag handle and is the user using it?\n if (entry.dragHandle) {\n // technically don't need this util, but just being\n // consistent with how we look up what is under the users\n // cursor.\n var over = getElementFromPointWithoutHoneypot({\n x: input.clientX,\n y: input.clientY\n });\n\n // if we are not dragging from the drag handle (or something inside the drag handle)\n // then we will cancel the active drag\n if (!entry.dragHandle.contains(over)) {\n event.preventDefault();\n return;\n }\n }\n\n /**\n * **Goal**\n * Pass information to other applications\n *\n * **Approach**\n * Put data into the native data store\n *\n * **What about the native adapter?**\n * When the element adapter puts native data into the native data store\n * the native adapter is not triggered in the current window,\n * but a native adapter in an external window _can_ be triggered\n *\n * **Why bake this into core?**\n * This functionality could be pulled out and exposed inside of\n * `onGenerateDragPreview`. But decided to make it a part of the\n * base API as it felt like a common enough use case and ended\n * up being a similar amount of code to include this function as\n * it was to expose the hook for it\n */\n var nativeData = (_entry$getInitialData = (_entry$getInitialData2 = entry.getInitialDataForExternal) === null || _entry$getInitialData2 === void 0 ? void 0 : _entry$getInitialData2.call(entry, feedback)) !== null && _entry$getInitialData !== void 0 ? _entry$getInitialData : null;\n if (nativeData) {\n for (var _i = 0, _Object$entries = Object.entries(nativeData); _i < _Object$entries.length; _i++) {\n var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),\n key = _Object$entries$_i[0],\n data = _Object$entries$_i[1];\n event.dataTransfer.setData(key, data !== null && data !== void 0 ? data : '');\n }\n }\n\n /**\n * 📱 For Android devices, a drag operation will not start unless\n * \"text/plain\" or \"text/uri-list\" data exists in the native data store\n * https://twitter.com/alexandereardon/status/1732189803754713424\n *\n * Tested on:\n * Device: Google Pixel 5\n * Android version: 14 (November 5, 2023)\n * Chrome version: 120.0\n */\n if (isAndroid() && !event.dataTransfer.types.includes(textMediaType) && !event.dataTransfer.types.includes(URLMediaType)) {\n event.dataTransfer.setData(textMediaType, androidFallbackText);\n }\n\n /**\n * 1. Must set any media type for `iOS15` to work\n * 2. We are also doing adding data so that the native adapter\n * can know that the element adapter has handled this drag\n *\n * We used to wrap this `setData()` in a `try/catch` for Firefox,\n * but it looks like that was not needed.\n *\n * Tested using: https://codesandbox.io/s/checking-firefox-throw-behaviour-on-dragstart-qt8h4f\n *\n * - ✅ Firefox@70.0 (Oct 2019) on macOS Sonoma\n * - ✅ Firefox@70.0 (Oct 2019) on macOS Big Sur\n * - ✅ Firefox@70.0 (Oct 2019) on Windows 10\n *\n * // just checking a few more combinations to be super safe\n *\n * - ✅ Chrome@78 (Oct 2019) on macOS Big Sur\n * - ✅ Chrome@78 (Oct 2019) on Windows 10\n * - ✅ Safari@14.1 on macOS Big Sur\n */\n event.dataTransfer.setData(elementAdapterNativeDataKey, '');\n var payload = {\n element: entry.element,\n dragHandle: (_entry$dragHandle2 = entry.dragHandle) !== null && _entry$dragHandle2 !== void 0 ? _entry$dragHandle2 : null,\n data: (_entry$getInitialData3 = (_entry$getInitialData4 = entry.getInitialData) === null || _entry$getInitialData4 === void 0 ? void 0 : _entry$getInitialData4.call(entry, feedback)) !== null && _entry$getInitialData3 !== void 0 ? _entry$getInitialData3 : {}\n };\n var dragType = {\n type: 'element',\n payload: payload,\n startedFrom: 'internal'\n };\n api.start({\n event: event,\n dragType: dragType\n });\n }\n }));\n },\n dispatchEventToSource: function dispatchEventToSource(_ref) {\n var _draggableRegistry$ge, _draggableRegistry$ge2;\n var eventName = _ref.eventName,\n payload = _ref.payload;\n // During a drag operation, a draggable can be:\n // - remounted with different functions\n // - removed completely\n // So we need to get the latest entry from the registry in order\n // to call the latest event functions\n\n (_draggableRegistry$ge = draggableRegistry.get(payload.source.element)) === null || _draggableRegistry$ge === void 0 || (_draggableRegistry$ge2 = _draggableRegistry$ge[eventName]) === null || _draggableRegistry$ge2 === void 0 || _draggableRegistry$ge2.call(_draggableRegistry$ge,\n // I cannot seem to get the types right here.\n // TS doesn't seem to like that one event can need `nativeSetDragImage`\n // @ts-expect-error\n payload);\n },\n onPostDispatch: honeyPotFix.getOnPostDispatch()\n});\nexport var dropTargetForElements = adapter.dropTarget;\nexport var monitorForElements = adapter.monitor;\nexport function draggable(args) {\n // Guardrail: warn if the drag handle is not contained in draggable element\n if (process.env.NODE_ENV !== 'production') {\n if (args.dragHandle && !args.element.contains(args.dragHandle)) {\n // eslint-disable-next-line no-console\n console.warn('Drag handle element must be contained in draggable element', {\n element: args.element,\n dragHandle: args.dragHandle\n });\n }\n }\n // Guardrail: warn if the draggable element is already registered\n if (process.env.NODE_ENV !== 'production') {\n var existing = draggableRegistry.get(args.element);\n if (existing) {\n // eslint-disable-next-line no-console\n console.warn('You have already registered a `draggable` on the same element', {\n existing: existing,\n proposed: args\n });\n }\n }\n var cleanup = combine(\n // making the draggable register the adapter rather than drop targets\n // this is because you *must* have a draggable element to start a drag\n // but you _might_ not have any drop targets immediately\n // (You might create drop targets async)\n adapter.registerUsage(), addToRegistry(args), addAttribute(args.element, {\n attribute: 'draggable',\n value: 'true'\n }));\n\n // Wrapping in `once` to prevent unexpected side effects if consumers call\n // the clean up function multiple times.\n return once(cleanup);\n}\n\n/** Common event payload for all events */\n\n/** A map containing payloads for all events */\n\n/** Common event payload for all drop target events */\n\n/** A map containing payloads for all events on drop targets */\n\n/** Arguments given to all feedback functions (eg `canDrag()`) on for a `draggable()` */\n\n/** Arguments given to all feedback functions (eg `canDrop()`) on a `dropTargetForElements()` */\n\n/** Arguments given to all monitor feedback functions (eg `canMonitor()`) for a `monitorForElements` */","import { once } from '../public-utils/once';\nimport { isSafari } from './is-safari';\n\n// Using `once` as the value won't change in a browser\n\n/**\n * **Notes**\n *\n * All browsers on iOS (Safari, Chrome, Firefox) use the same rendering engine (Safari / Webkit).\n *\n * → https://developer.apple.com/app-store/review/guidelines/ (see 2.5.6)\n *\n * There is some ongoing change in this space, and we might see some new browser\n * engines soon on iOS (at least in Europe)\n *\n * → https://developer.apple.com/support/alternative-browser-engines/\n **/\n\n/**\n * Returns `true` if browser is Safari (WebKit) on iOS.\n */\nexport var isSafariOnIOS = once(function isSafariOnIOS() {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return isSafari() && 'ontouchend' in document;\n});","export var centerUnderPointer = function centerUnderPointer(_ref) {\n var container = _ref.container;\n var rect = container.getBoundingClientRect();\n return {\n x: rect.width / 2,\n y: rect.height / 2\n };\n};","import { isAndroid } from '../../../util/android';\nimport { isSafariOnIOS } from '../../../util/is-safari-on-ios';\nimport { centerUnderPointer } from './center-under-pointer';\n\n/** Any valid CSS string value\n * @example `calc(var(--grid) * 2)\n */\n\n/**\n * Position the native drag preview **in front** of the users pointer.\n *\n * **Distance**\n *\n * If the total width of your preview (including the offset applied by this function)\n * exceeds `280px` then the drag preview will have more opacity applied on Windows.\n *\n * https://atlassian.design/components/pragmatic-drag-and-drop/web-platform-design-constraints\n *\n * **Direction**\n *\n * This function will position the drag preview on the _right hand side for left to right (`ltr`) interfaces_, and on the _left hand side for right to left (`rtl`) languages_.\n *\n * The direction will be calculated based on the direction (`dir`) being applied to the `container`\n * element (which will be a child of the `body` element).\n *\n * **iOS, iPadOS and Android**\n *\n * The drag preview will be centered under the users pointer rather than\n * pushed away on iOS due to platform limitations.\n */\nexport function pointerOutsideOfPreview(point) {\n return function getOffset(_ref) {\n var container = _ref.container;\n /**\n * **Approach: transparent borders.**\n *\n * The only reliable cross browser technique found to push a\n * drag preview away from the cursor is to use transparent borders on the container.\n *\n * **🙅📱 Not pushing the preview away on touch devices**\n *\n * _On iOS_\n *\n * Safari will set the transparent border color to be black\n *\n * `iOS@18.4.1` on May 7th 2025:\n * - If you set the background color on the `container` the border color will be that\n * - Setting a transparent background color on the `container` still results in a\n * black border\n * - The `<body>` text or background color does not change the black border color\n *\n * While dragging, the drag preview will shift under the center of the users pointer.\n * So if you start at {x: 0, y: 0} (top left), almost immediately the preview will move\n * to be under the middle of the users pointer.\n *\n * _On Android_\n *\n * Chrome will put the center of the drag preview under the users pointer immediately.\n *\n * Tested on `Chrome@137` on `Android 14` on June 20th 2025\n *\n * _What we do_\n *\n * We don't add the transparent border\n *\n * - Avoid the black color on iOS\n * - It isn't needed on Android anyway as the preview will be under the center\n * of the users pointer\n *\n * We put the center of the drag preview under the users pointer\n *\n * - Avoids the drag preview quickly moving from a top corner to be centered under\n * the users pointer on iOS\n * - It will be under the center on Android no matter what we do\n *\n * We previously had a isTouchDevice() check, but it felt safer for now\n * to have a more targeted check, as these are the devices that have been\n * tested on.\n */\n if (isSafariOnIOS() || isAndroid()) {\n return centerUnderPointer({\n container: container\n });\n }\n Object.assign(container.style, {\n borderInlineStart: \"\".concat(point.x, \" solid transparent\"),\n borderTop: \"\".concat(point.y, \" solid transparent\")\n });\n\n // Unfortunate that we need to use `getComputedStyle`,\n // but it's only a single call when the drag is starting.\n var computed = window.getComputedStyle(container);\n if (computed.direction === 'rtl') {\n // The DOMRect will include the new border we added\n var box = container.getBoundingClientRect();\n\n // Use the top right corner (including the new border) as the offset.\n // The border will push the preview away from the pointer.\n return {\n x: box.width,\n y: 0\n };\n }\n\n // Use the top left corner as the offset. The border will\n // push the preview away from the pointer.\n return {\n x: 0,\n y: 0\n };\n };\n}","import { monitorForElements } from '../../../adapter/element-adapter';\nimport { isSafari } from '../../../util/is-safari';\nimport { maxZIndex } from '../../../util/max-z-index';\n\n/** A function to remove the element that has been added to the `container`.\n * @example () => ReactDOM.unmountComponentAtNode(container)\n */\n\n/** A function that will render a preview element into a `container` `HTMLElement` */\n\n/** By default we use the build in values for the native drag preview: {x: 0, y: 0} */\nfunction defaultOffset() {\n return {\n x: 0,\n y: 0\n };\n}\n\n/** This function provides the ability to mount an element for it to be used as the native drag preview\n *\n * @example\n * draggable({\n * onGenerateDragPreview: ({ nativeSetDragImage }) => {\n * setCustomNativeDragPreview({\n * render: ({ container }) => {\n * ReactDOM.render(<Preview item={item} />, container);\n * return () => ReactDOM.unmountComponentAtNode(container);\n * },\n * nativeSetDragImage,\n * });\n * },\n * });\n */\nexport function setCustomNativeDragPreview(_ref) {\n var render = _ref.render,\n nativeSetDragImage = _ref.nativeSetDragImage,\n _ref$getOffset = _ref.getOffset,\n getOffset = _ref$getOffset === void 0 ? defaultOffset : _ref$getOffset;\n var container = document.createElement('div');\n Object.assign(container.style, {\n // Ensuring we don't cause reflow when adding the element to the page\n // Using `position:fixed` rather than `position:absolute` so we are\n // positioned on the current viewport.\n // `position:fixed` also creates a new stacking context, so we don't need to do that here\n position: 'fixed',\n // According to `mdn`, the element can be offscreen:\n // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/setDragImage#imgelement\n //\n // However, that information does not appear in the specs:\n // https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransfer-setdragimage-dev\n //\n // If the element is _completely_ offscreen, Safari@17.1 will cancel the drag\n top: 0,\n left: 0,\n // Using maximum possible z-index so that this element will always be on top\n // https://stackoverflow.com/questions/491052/minimum-and-maximum-value-of-z-index\n // Did not use `layers` in `@atlaskit/theme` because:\n // 1. This element is not a 'layer' in the conventional sense, as this element\n // is only created for a single frame for the browser to take a photo of it,\n // and then it is destroyed\n // 2. Did not want to add a dependency onto `@atlaskit/theme`\n // 3. Want to always be on top of product UI which might have higher z-index's\n zIndex: maxZIndex,\n // Avoiding any additional events caused by the new element (being super safe)\n pointerEvents: 'none'\n });\n document.body.append(container);\n var unmount = render({\n container: container\n });\n\n /**\n * Some frameworks (eg `react`) don't render into the container until the next microtask.\n * - This will run before the browser takes it's picture of the element\n * - This will run before the animation frame that removes `container`.\n * */\n\n queueMicrotask(function () {\n var previewOffset = getOffset({\n container: container\n });\n\n /**\n * **Problem**\n * On `Safari@17.1` if a drag preview element has some opacity,\n * Safari will include elements behind the drag preview element\n * in the drag preview.\n * Bug: https://bugs.webkit.org/show_bug.cgi?id=266025\n *\n * **Fix**\n * We push the drag preview so it is _almost_ completely offscreen so that\n * there won't be any elements behind the drag preview element.\n * If the element is _completely_ offscreen, then the drag is cancelled by Safari.\n *\n * Using `-0.0001` so that any potential \"see through\" on the drag preview element\n * is effectively invisible 👻\n *\n * **Unsuccessful alternatives**\n * Setting a background color (eg \"white\") on the `container`\n * → Wrecks the opacity of the drag preview element\n *\n * Adding a parent element of the `container` with a background color (eg \"white\")\n * → Wrecks the opacity of the drag preview element\n */\n if (isSafari()) {\n var rect = container.getBoundingClientRect();\n\n // We cannot apply this fix if nothing has been rendered into the `container`\n if (rect.width === 0) {\n return;\n }\n container.style.left = \"-\".concat(rect.width - 0.0001, \"px\");\n }\n nativeSetDragImage === null || nativeSetDragImage === void 0 || nativeSetDragImage(container, previewOffset.x, previewOffset.y);\n });\n function cleanup() {\n unbindMonitor();\n unmount === null || unmount === void 0 || unmount();\n document.body.removeChild(container);\n }\n var unbindMonitor = monitorForElements({\n // Remove portal in the dragstart event so that the user will never see it\n onDragStart: cleanup,\n // Backup: remove portal when the drop finishes (this would be an error case)\n onDrop: cleanup\n });\n}","import _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\n/**\n * A function that will reorder an array (`list`).\n * `reorder` returns a new array with reordered items and does not\n * modify the original array. The items in the array are also not modified.\n */\nexport function reorder(_ref) {\n var list = _ref.list,\n startIndex = _ref.startIndex,\n finishIndex = _ref.finishIndex;\n if (startIndex === -1 || finishIndex === -1) {\n // Making this function consistently return a new array reference.\n // This is consistent with .toSorted() which always returns a new array\n // even when it does not do anything\n return Array.from(list);\n }\n var result = Array.from(list);\n var _result$splice = result.splice(startIndex, 1),\n _result$splice2 = _slicedToArray(_result$splice, 1),\n removed = _result$splice2[0];\n result.splice(finishIndex, 0, removed);\n return result;\n}","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\n// re-exporting type to make it easy to use\n\nvar getDistanceToEdge = {\n top: function top(rect, client) {\n return Math.abs(client.y - rect.top);\n },\n right: function right(rect, client) {\n return Math.abs(rect.right - client.x);\n },\n bottom: function bottom(rect, client) {\n return Math.abs(rect.bottom - client.y);\n },\n left: function left(rect, client) {\n return Math.abs(client.x - rect.left);\n }\n};\n\n// using a symbol so we can guarantee a key with a unique value\nvar uniqueKey = Symbol('closestEdge');\n\n/**\n * Adds a unique `Symbol` to the `userData` object. Use with `extractClosestEdge()` for type safe lookups.\n */\nexport function attachClosestEdge(userData, _ref) {\n var _entries$sort$0$edge, _entries$sort$;\n var element = _ref.element,\n input = _ref.input,\n allowedEdges = _ref.allowedEdges;\n var client = {\n x: input.clientX,\n y: input.clientY\n };\n // I tried caching the result of `getBoundingClientRect()` for a single\n // frame in order to improve performance.\n // However, on measurement I saw no improvement. So no longer caching\n var rect = element.getBoundingClientRect();\n var entries = allowedEdges.map(function (edge) {\n return {\n edge: edge,\n value: getDistanceToEdge[edge](rect, client)\n };\n });\n\n // edge can be `null` when `allowedEdges` is []\n var addClosestEdge = (_entries$sort$0$edge = (_entries$sort$ = entries.sort(function (a, b) {\n return a.value - b.value;\n })[0]) === null || _entries$sort$ === void 0 ? void 0 : _entries$sort$.edge) !== null && _entries$sort$0$edge !== void 0 ? _entries$sort$0$edge : null;\n return _objectSpread(_objectSpread({}, userData), {}, _defineProperty({}, uniqueKey, addClosestEdge));\n}\n\n/**\n * Returns the value added by `attachClosestEdge()` to the `userData` object. It will return `null` if there is no value.\n */\nexport function extractClosestEdge(userData) {\n var _ref2;\n return (_ref2 = userData[uniqueKey]) !== null && _ref2 !== void 0 ? _ref2 : null;\n}","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":["r","_arrayLikeToArray","_unsupportedIterableToArray","arrayLikeToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","bind_1","this","bindAll_1","require$$0","exports","require$$1","top","o","ownKeys","_objectSpread","bind","bindAll","arrayWithoutHoles","iterableToArray","nonIterableSpread","isFirefox","isSafari","rafSchd","wrapperFn","start","event","mount","_createForOfIteratorHelper","F","e","addToRegistry","record","index","dispatchEventToSource","registerUsage","isAndroid","isSafariOnIOS","centerUnderPointer","useState","useFetchClient","useEffect","useCallback","self","jsxs","Box","jsx","Typography","Flex","TextInput","Button","Plus","Drag","Dialog","Trash","SingleSelect","SingleSelectOption","Layouts","Page","pluginPermissions"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-BXToWkDF.js","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/components/ProductStatusField.tsx","../../admin/src/listView/status-cell.tsx","../../admin/src/listView/add-status-column-hook.ts","../../admin/src/permissions.ts","../../admin/src/listView/StatusFilter.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = \"primershop-status-manager\";\r\n","import { useEffect, useRef } from \"react\";\r\n\r\nimport { PLUGIN_ID } from \"../pluginId\";\r\n\r\n/**\r\n * @type {import('react').FC<{ setPlugin: (id: string) => void }>}\r\n */\r\nconst Initializer = ({ setPlugin }: { setPlugin: (id: string) => void }) => {\r\n const ref = useRef(setPlugin);\r\n\r\n useEffect(() => {\r\n ref.current(PLUGIN_ID);\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport { Initializer };\r\n","import { CheckCircle } from \"@strapi/icons\";\r\n\r\nconst PluginIcon = () => <CheckCircle />;\r\n\r\nexport { PluginIcon };\r\n","import React, { useEffect, useState, useCallback } from \"react\";\r\n\r\nimport {\r\n SingleSelect,\r\n SingleSelectOption,\r\n Box,\r\n Typography,\r\n Flex,\r\n} from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n} from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst ProductStatusField = () => {\r\n const { contentType, id } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [currentStatus, setCurrentStatus] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const { get, put } = useFetchClient();\r\n\r\n const handleStatusChange = useCallback(\r\n async (newStatus: string) => {\r\n if (!id) {\r\n setMessage(\"Save the product first and then change the status\");\r\n return;\r\n }\r\n try {\r\n await put(`primershop-status-manager/content-status`, {\r\n contentTypeUid: \"api::product.product\",\r\n contentDocumentId: id,\r\n statusId: statuses.find((status) => status.name === newStatus)\r\n ?.documentId,\r\n });\r\n setMessage(\r\n `Status updated ${currentStatus ? `from ${currentStatus}` : \"\"} to ${newStatus}`\r\n );\r\n setCurrentStatus(newStatus || \"\");\r\n } catch (error) {\r\n setMessage(\"Error updating status\");\r\n console.error(\"Error updating status:\", error);\r\n }\r\n },\r\n [id, statuses, currentStatus, put]\r\n );\r\n\r\n useEffect(() => {\r\n async function fetchCurrentStatus() {\r\n try {\r\n const { data: productData } = await get(\r\n `primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`\r\n );\r\n const status = productData?.status;\r\n if (status && status.name) return setCurrentStatus(status.name);\r\n if (statuses.length) return handleStatusChange(statuses[0].name);\r\n } catch (error) {\r\n console.error(\"Error fetching product status:\", error);\r\n }\r\n }\r\n if (id && !currentStatus.length) fetchCurrentStatus();\r\n if (!id && statuses.length) setCurrentStatus(statuses[0].name);\r\n }, [id, statuses, get]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"stretch\"\r\n width=\"100%\"\r\n >\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">\r\n {contentType?.info.displayName} status\r\n </Typography>\r\n </Box>\r\n <SingleSelect placeholder={currentStatus} onChange={handleStatusChange}>\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">{message}</Typography>\r\n </Box>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { ProductStatusField };\r\n","import { useState, useEffect } from \"react\";\r\n\r\n\r\ntype Status = {\r\n id: number;\r\n name: string;\r\n published: boolean;\r\n order: number;\r\n}\r\n\r\n\r\nexport const StatusCell = ({ row }: { row: any;}) => {\r\n const [status, setStatus] = useState<Status | null>(null);\r\n\r\n useEffect(() => {\r\n setStatus(row.statusField);\r\n }, [row]);\r\n\r\n if (!status) return null;\r\n return (\r\n <span style={{\r\n padding: \"4px 8px\",\r\n borderRadius: 4,\r\n background: status.published ? \"#eafbe7\" : \"#f0f0ff\",\r\n color: status.published ? \"#2f6846\" : \"#271fe0\",\r\n border: `1px solid ${status.published ? \"#2f6846\" : \"#271fe0\"}`,\r\n fontSize: 14,\r\n }}>\r\n {status.name}\r\n </span>\r\n );\r\n};\r\n\r\n\r\n","import { StatusCell } from \"./status-cell\";\r\nimport {\r\n ListFieldLayout,\r\n ListLayout,\r\n} from \"@strapi/content-manager/strapi-admin\";\r\nimport React from \"react\";\r\nimport { AnyDocument } from \"@strapi/types/dist/modules/documents\";\r\n\r\ninterface AddColumnToTableHookArgs {\r\n layout: ListLayout;\r\n displayedHeaders: ListFieldLayout[];\r\n}\r\nexport const addStatusColumnHook = ({\r\n displayedHeaders,\r\n layout,\r\n}: AddColumnToTableHookArgs) => {\r\n const statusHeader = {\r\n attribute: { type: \"custom\" },\r\n name: \"statusLabel\",\r\n label: { id: \"primershop-status-manager.status\", defaultMessage: \"Status\" },\r\n searchable: false,\r\n sortable: false,\r\n cellFormatter: (row: AnyDocument) => {\r\n return React.createElement(StatusCell, { row });\r\n },\r\n };\r\n\r\n return {\r\n displayedHeaders: [...displayedHeaders, statusHeader],\r\n layout,\r\n };\r\n};\r\n","/**\r\n * Admin permission actions for use in addMenuLink, Page.Protect, and useRBAC.\r\n * Action IDs must match uids registered in server bootstrap (registerMany).\r\n */\r\nconst pluginPermissions = {\r\n accessStatusManager: [\r\n {\r\n action: \"plugin::primershop-status-manager.main\",\r\n subject: null,\r\n },\r\n ],\r\n};\r\n\r\nexport default pluginPermissions;\r\n","import { useCallback, useEffect, useState } from \"react\";\r\n\r\nimport { SingleSelect, SingleSelectOption, Flex } from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n useQueryParams,\r\n} from \"@strapi/strapi/admin\";\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst StatusFilter = () => {\r\n const { contentType } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [selected, setSelected] = useState<string | undefined>(\"\");\r\n const { get } = useFetchClient();\r\n const [{ query }, setQuery] = useQueryParams<{\r\n page: number;\r\n plugins: { \"primershop-status-manager\": { statusName: string } };\r\n }>();\r\n\r\n const handleStatusChange = useCallback(\r\n (name: string) => {\r\n setQuery(\r\n {\r\n page: 1,\r\n plugins: {\r\n ...query.plugins,\r\n \"primershop-status-manager\": { statusName: name.toLowerCase() },\r\n },\r\n },\r\n \"push\",\r\n true\r\n );\r\n },\r\n\r\n [query.plugins, setQuery]\r\n );\r\n\r\n useEffect(() => {\r\n const selectedStatusName =\r\n query.plugins?.[\"primershop-status-manager\"]?.statusName;\r\n if (!selectedStatusName) return;\r\n const status = statuses.find(\r\n (status) => status.name.toLowerCase() === selectedStatusName\r\n );\r\n if (status) {\r\n setSelected(status.name);\r\n }\r\n }, [query, statuses]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n const allStatusesObject = {\r\n documentId: \"all\",\r\n name: \"All\",\r\n };\r\n setStatuses([allStatusesObject, ...data]);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex direction=\"column\" justifyContent=\"center\">\r\n <SingleSelect\r\n size=\"S\"\r\n placeholder={`${contentType?.info.displayName} status`}\r\n value={selected}\r\n onChange={handleStatusChange}\r\n >\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { StatusFilter };\r\n","import { Initializer } from \"./components/Initializer\";\r\nimport { PluginIcon } from \"./components/PluginIcon\";\r\nimport { ProductStatusField } from \"./components/ProductStatusField\";\r\nimport { PLUGIN_ID } from \"./pluginId\";\r\nimport { addStatusColumnHook } from \"./listView/add-status-column-hook\";\r\nimport pluginPermissions from \"./permissions\";\r\n\r\nimport type { StrapiApp } from \"@strapi/admin/strapi-admin\";\r\nimport { StatusFilter } from \"./listView/StatusFilter\";\r\n\r\nconst plugin = {\r\n register(app: StrapiApp) {\r\n app.registerPlugin({\r\n id: PLUGIN_ID,\r\n initializer: Initializer,\r\n isReady: true,\r\n name: PLUGIN_ID,\r\n });\r\n\r\n app.addMenuLink({\r\n to: `plugins/${PLUGIN_ID}`,\r\n icon: PluginIcon,\r\n intlLabel: {\r\n id: `${PLUGIN_ID}.plugin.name`,\r\n defaultMessage: \"Status manager\",\r\n },\r\n permissions: [pluginPermissions.accessStatusManager[0]],\r\n Component: () =>\r\n import(\"./pages/HomePage\").then((module) => ({\r\n default: module.HomePage,\r\n })),\r\n });\r\n },\r\n bootstrap(app: StrapiApp) {\r\n app\r\n .getPlugin(\"content-manager\")\r\n .injectComponent(\"editView\", \"right-links\", {\r\n name: \"Status\",\r\n Component: ProductStatusField,\r\n });\r\n\r\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addStatusColumnHook);\r\n\r\n const contentManager = app.getPlugin('content-manager');\r\n contentManager.injectComponent('listView', 'actions', {\r\n name: 'status-filter',\r\n Component: StatusFilter,\r\n });\r\n },\r\n};\r\n\r\nexport default plugin;\r\n"],"names":["useRef","useEffect","jsx","CheckCircle","useContentManagerContext","useState","useFetchClient","useCallback","jsxs","Flex","Box","Typography","SingleSelect","SingleSelectOption","React","useQueryParams","status","module"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-CzxwE0pe.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/components/ProductStatusField.tsx","../../admin/src/listView/status-cell.tsx","../../admin/src/listView/add-status-column-hook.ts","../../admin/src/permissions.ts","../../admin/src/listView/StatusFilter.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = \"primershop-status-manager\";\r\n","import { useEffect, useRef } from \"react\";\r\n\r\nimport { PLUGIN_ID } from \"../pluginId\";\r\n\r\n/**\r\n * @type {import('react').FC<{ setPlugin: (id: string) => void }>}\r\n */\r\nconst Initializer = ({ setPlugin }: { setPlugin: (id: string) => void }) => {\r\n const ref = useRef(setPlugin);\r\n\r\n useEffect(() => {\r\n ref.current(PLUGIN_ID);\r\n }, []);\r\n\r\n return null;\r\n};\r\n\r\nexport { Initializer };\r\n","import { CheckCircle } from \"@strapi/icons\";\r\n\r\nconst PluginIcon = () => <CheckCircle />;\r\n\r\nexport { PluginIcon };\r\n","import React, { useEffect, useState, useCallback } from \"react\";\r\n\r\nimport {\r\n SingleSelect,\r\n SingleSelectOption,\r\n Box,\r\n Typography,\r\n Flex,\r\n} from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n} from \"@strapi/strapi/admin\";\r\n\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst ProductStatusField = () => {\r\n const { contentType, id } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [currentStatus, setCurrentStatus] = useState(\"\");\r\n const [message, setMessage] = useState(\"\");\r\n const { get, put } = useFetchClient();\r\n\r\n const handleStatusChange = useCallback(\r\n async (newStatus: string) => {\r\n if (!id) {\r\n setMessage(\"Save the product first and then change the status\");\r\n return;\r\n }\r\n try {\r\n await put(`primershop-status-manager/content-status`, {\r\n contentTypeUid: \"api::product.product\",\r\n contentDocumentId: id,\r\n statusId: statuses.find((status) => status.name === newStatus)\r\n ?.documentId,\r\n });\r\n setMessage(\r\n `Status updated ${currentStatus ? `from ${currentStatus}` : \"\"} to ${newStatus}`\r\n );\r\n setCurrentStatus(newStatus || \"\");\r\n } catch (error) {\r\n setMessage(\"Error updating status\");\r\n console.error(\"Error updating status:\", error);\r\n }\r\n },\r\n [id, statuses, currentStatus, put]\r\n );\r\n\r\n useEffect(() => {\r\n async function fetchCurrentStatus() {\r\n try {\r\n const { data: productData } = await get(\r\n `primershop-status-manager/content-status?contentDocumentId=${id}&contentTypeUid=api::product.product`\r\n );\r\n const status = productData?.status;\r\n if (status && status.name) return setCurrentStatus(status.name);\r\n if (statuses.length) return handleStatusChange(statuses[0].name);\r\n } catch (error) {\r\n console.error(\"Error fetching product status:\", error);\r\n }\r\n }\r\n if (id && !currentStatus.length) fetchCurrentStatus();\r\n if (!id && statuses.length) setCurrentStatus(statuses[0].name);\r\n }, [id, statuses, get]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n setStatuses(data);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex\r\n direction=\"column\"\r\n justifyContent=\"center\"\r\n alignItems=\"stretch\"\r\n width=\"100%\"\r\n >\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">\r\n {contentType?.info.displayName} status\r\n </Typography>\r\n </Box>\r\n <SingleSelect placeholder={currentStatus} onChange={handleStatusChange}>\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n <Box padding={2}>\r\n <Typography variant=\"sigma\">{message}</Typography>\r\n </Box>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { ProductStatusField };\r\n","import { useState, useEffect } from \"react\";\r\n\r\n\r\ntype Status = {\r\n id: number;\r\n name: string;\r\n published: boolean;\r\n order: number;\r\n}\r\n\r\n\r\nexport const StatusCell = ({ row }: { row: any;}) => {\r\n const [status, setStatus] = useState<Status | null>(null);\r\n\r\n useEffect(() => {\r\n setStatus(row.statusField);\r\n }, [row]);\r\n\r\n if (!status) return null;\r\n return (\r\n <span style={{\r\n padding: \"4px 8px\",\r\n borderRadius: 4,\r\n background: status.published ? \"#eafbe7\" : \"#f0f0ff\",\r\n color: status.published ? \"#2f6846\" : \"#271fe0\",\r\n border: `1px solid ${status.published ? \"#2f6846\" : \"#271fe0\"}`,\r\n fontSize: 14,\r\n }}>\r\n {status.name}\r\n </span>\r\n );\r\n};\r\n\r\n\r\n","import { StatusCell } from \"./status-cell\";\r\nimport {\r\n ListFieldLayout,\r\n ListLayout,\r\n} from \"@strapi/content-manager/strapi-admin\";\r\nimport React from \"react\";\r\nimport { AnyDocument } from \"@strapi/types/dist/modules/documents\";\r\n\r\ninterface AddColumnToTableHookArgs {\r\n layout: ListLayout;\r\n displayedHeaders: ListFieldLayout[];\r\n}\r\nexport const addStatusColumnHook = ({\r\n displayedHeaders,\r\n layout,\r\n}: AddColumnToTableHookArgs) => {\r\n const statusHeader = {\r\n attribute: { type: \"custom\" },\r\n name: \"statusLabel\",\r\n label: { id: \"primershop-status-manager.status\", defaultMessage: \"Status\" },\r\n searchable: false,\r\n sortable: false,\r\n cellFormatter: (row: AnyDocument) => {\r\n return React.createElement(StatusCell, { row });\r\n },\r\n };\r\n\r\n return {\r\n displayedHeaders: [...displayedHeaders, statusHeader],\r\n layout,\r\n };\r\n};\r\n","/**\r\n * Admin permission actions for use in addMenuLink, Page.Protect, and useRBAC.\r\n * Action IDs must match uids registered in server bootstrap (registerMany).\r\n */\r\nconst pluginPermissions = {\r\n accessStatusManager: [\r\n {\r\n action: \"plugin::primershop-status-manager.main\",\r\n subject: null,\r\n },\r\n ],\r\n};\r\n\r\nexport default pluginPermissions;\r\n","import { useCallback, useEffect, useState } from \"react\";\r\n\r\nimport { SingleSelect, SingleSelectOption, Flex } from \"@strapi/design-system\";\r\nimport {\r\n useFetchClient,\r\n unstable_useContentManagerContext as useContentManagerContext,\r\n useQueryParams,\r\n} from \"@strapi/strapi/admin\";\r\ninterface Status {\r\n documentId: string;\r\n name: string;\r\n}\r\n\r\nconst StatusFilter = () => {\r\n const { contentType } = useContentManagerContext();\r\n const [statuses, setStatuses] = useState<Status[]>([]);\r\n const [selected, setSelected] = useState<string | undefined>(\"\");\r\n const { get } = useFetchClient();\r\n const [{ query }, setQuery] = useQueryParams<{\r\n page: number;\r\n plugins: { \"primershop-status-manager\": { statusName: string } };\r\n }>();\r\n\r\n const handleStatusChange = useCallback(\r\n (name: string) => {\r\n setQuery(\r\n {\r\n page: 1,\r\n plugins: {\r\n ...query.plugins,\r\n \"primershop-status-manager\": { statusName: name.toLowerCase() },\r\n },\r\n },\r\n \"push\",\r\n true\r\n );\r\n },\r\n\r\n [query.plugins, setQuery]\r\n );\r\n\r\n useEffect(() => {\r\n const selectedStatusName =\r\n query.plugins?.[\"primershop-status-manager\"]?.statusName;\r\n if (!selectedStatusName) return;\r\n const status = statuses.find(\r\n (status) => status.name.toLowerCase() === selectedStatusName\r\n );\r\n if (status) {\r\n setSelected(status.name);\r\n }\r\n }, [query, statuses]);\r\n\r\n useEffect(() => {\r\n async function fetchStatuses() {\r\n try {\r\n const { data } = await get(\"primershop-status-manager/statuses\");\r\n const allStatusesObject = {\r\n documentId: \"all\",\r\n name: \"All\",\r\n };\r\n setStatuses([allStatusesObject, ...data]);\r\n } catch (error) {\r\n console.error(\"Error fetching statuses:\", error);\r\n }\r\n }\r\n fetchStatuses();\r\n }, [get]);\r\n\r\n return (\r\n <Flex direction=\"column\" justifyContent=\"center\">\r\n <SingleSelect\r\n size=\"S\"\r\n placeholder={`${contentType?.info.displayName} status`}\r\n value={selected}\r\n onChange={handleStatusChange}\r\n >\r\n {statuses.map((status) => (\r\n <SingleSelectOption key={status.documentId} value={status.name}>\r\n {status.name}\r\n </SingleSelectOption>\r\n ))}\r\n </SingleSelect>\r\n </Flex>\r\n );\r\n};\r\n\r\nexport { StatusFilter };\r\n","import { Initializer } from \"./components/Initializer\";\r\nimport { PluginIcon } from \"./components/PluginIcon\";\r\nimport { ProductStatusField } from \"./components/ProductStatusField\";\r\nimport { PLUGIN_ID } from \"./pluginId\";\r\nimport { addStatusColumnHook } from \"./listView/add-status-column-hook\";\r\nimport pluginPermissions from \"./permissions\";\r\n\r\nimport type { StrapiApp } from \"@strapi/admin/strapi-admin\";\r\nimport { StatusFilter } from \"./listView/StatusFilter\";\r\n\r\nconst plugin = {\r\n register(app: StrapiApp) {\r\n app.registerPlugin({\r\n id: PLUGIN_ID,\r\n initializer: Initializer,\r\n isReady: true,\r\n name: PLUGIN_ID,\r\n });\r\n\r\n app.addMenuLink({\r\n to: `plugins/${PLUGIN_ID}`,\r\n icon: PluginIcon,\r\n intlLabel: {\r\n id: `${PLUGIN_ID}.plugin.name`,\r\n defaultMessage: \"Status manager\",\r\n },\r\n permissions: [pluginPermissions.accessStatusManager[0]],\r\n Component: () =>\r\n import(\"./pages/HomePage\").then((module) => ({\r\n default: module.HomePage,\r\n })),\r\n });\r\n },\r\n bootstrap(app: StrapiApp) {\r\n app\r\n .getPlugin(\"content-manager\")\r\n .injectComponent(\"editView\", \"right-links\", {\r\n name: \"Status\",\r\n Component: ProductStatusField,\r\n });\r\n\r\n app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addStatusColumnHook);\r\n\r\n const contentManager = app.getPlugin('content-manager');\r\n contentManager.injectComponent('listView', 'actions', {\r\n name: 'status-filter',\r\n Component: StatusFilter,\r\n });\r\n },\r\n};\r\n\r\nexport default plugin;\r\n"],"names":["useContentManagerContext","status"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}