@guillotinaweb/react-gmi 0.35.0 → 0.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/css/style.css +17238 -7861
  2. package/dist/css/style.css.map +1 -1
  3. package/dist/index.d.ts +2 -1823
  4. package/dist/react-gmi.js +15470 -18802
  5. package/dist/react-gmi.js.map +1 -1
  6. package/dist/react-gmi.modern.js +15453 -18934
  7. package/dist/react-gmi.modern.js.map +1 -1
  8. package/dist/src/guillo-gmi/actions/add_item.d.ts +5 -0
  9. package/dist/src/guillo-gmi/actions/change_pass.d.ts +1 -0
  10. package/dist/src/guillo-gmi/actions/copy_item.d.ts +6 -0
  11. package/dist/src/guillo-gmi/actions/copy_items.d.ts +7 -0
  12. package/dist/src/guillo-gmi/actions/index.d.ts +2 -0
  13. package/dist/src/guillo-gmi/actions/move_item.d.ts +6 -0
  14. package/dist/src/guillo-gmi/actions/move_items.d.ts +7 -0
  15. package/dist/src/guillo-gmi/actions/remove_item.d.ts +6 -0
  16. package/dist/src/guillo-gmi/actions/remove_items.d.ts +7 -0
  17. package/dist/src/guillo-gmi/components/Link.d.ts +10 -0
  18. package/dist/src/guillo-gmi/components/TdLink.d.ts +10 -0
  19. package/dist/src/guillo-gmi/components/behavior_view.d.ts +8 -0
  20. package/dist/src/guillo-gmi/components/behaviors/iattachment.d.ts +11 -0
  21. package/dist/src/guillo-gmi/components/behaviors/idublincore.d.ts +10 -0
  22. package/dist/src/guillo-gmi/components/behaviors/iimageattachment.d.ts +9 -0
  23. package/dist/src/guillo-gmi/components/behaviors/imultiattachment.d.ts +11 -0
  24. package/dist/src/guillo-gmi/components/behaviors/imultiimageattachment.d.ts +11 -0
  25. package/dist/src/guillo-gmi/components/behaviors/imultiimageorderedattachment.d.ts +11 -0
  26. package/dist/src/guillo-gmi/components/behaviors/iworkflow.d.ts +1 -0
  27. package/dist/src/guillo-gmi/components/context_toolbar.d.ts +9 -0
  28. package/dist/src/guillo-gmi/components/error_boundary.d.ts +3 -0
  29. package/dist/src/guillo-gmi/components/error_zone.d.ts +7 -0
  30. package/dist/src/guillo-gmi/components/fields/downloadField.d.ts +11 -0
  31. package/dist/src/guillo-gmi/components/fields/editComponent.d.ts +14 -0
  32. package/dist/src/guillo-gmi/components/fields/editableField.d.ts +12 -0
  33. package/dist/src/guillo-gmi/components/fields/renderField.d.ts +33 -0
  34. package/dist/src/guillo-gmi/components/flash.d.ts +1 -0
  35. package/dist/src/guillo-gmi/components/guillotina.d.ts +12 -0
  36. package/dist/src/guillo-gmi/components/index.d.ts +56 -0
  37. package/dist/src/guillo-gmi/components/input/button.d.ts +11 -0
  38. package/dist/src/guillo-gmi/components/input/checkbox.d.ts +17 -0
  39. package/dist/src/guillo-gmi/components/input/dropdown.d.ts +14 -0
  40. package/dist/src/guillo-gmi/components/input/email.d.ts +10 -0
  41. package/dist/src/guillo-gmi/components/input/form.d.ts +12 -0
  42. package/dist/src/guillo-gmi/components/input/form_builder.d.ts +14 -0
  43. package/dist/src/guillo-gmi/components/input/index.d.ts +14 -0
  44. package/dist/src/guillo-gmi/components/input/input.d.ts +26 -0
  45. package/dist/src/guillo-gmi/components/input/input_list.d.ts +9 -0
  46. package/dist/src/guillo-gmi/components/input/password.d.ts +11 -0
  47. package/dist/src/guillo-gmi/components/input/search_input.d.ts +21 -0
  48. package/dist/src/guillo-gmi/components/input/search_input_list.d.ts +21 -0
  49. package/dist/src/guillo-gmi/components/input/select.d.ts +24 -0
  50. package/dist/src/guillo-gmi/components/input/select_vocabulary.d.ts +14 -0
  51. package/dist/src/guillo-gmi/components/input/textarea.d.ts +14 -0
  52. package/dist/src/guillo-gmi/components/input/upload.d.ts +8 -0
  53. package/dist/src/guillo-gmi/components/item.d.ts +22 -0
  54. package/dist/src/guillo-gmi/components/layout.d.ts +8 -0
  55. package/dist/src/guillo-gmi/components/login.d.ts +10 -0
  56. package/dist/src/guillo-gmi/components/modal.d.ts +23 -0
  57. package/dist/src/guillo-gmi/components/notallowed.d.ts +1 -0
  58. package/dist/src/guillo-gmi/components/notfound.d.ts +1 -0
  59. package/dist/src/guillo-gmi/components/pagination.d.ts +8 -0
  60. package/dist/src/guillo-gmi/components/panel/actions.d.ts +1 -0
  61. package/dist/src/guillo-gmi/components/panel/addons.d.ts +1 -0
  62. package/dist/src/guillo-gmi/components/panel/behaviors.d.ts +1 -0
  63. package/dist/src/guillo-gmi/components/panel/index.d.ts +4 -0
  64. package/dist/src/guillo-gmi/components/panel/items.d.ts +1 -0
  65. package/dist/src/guillo-gmi/components/panel/permissions.d.ts +7 -0
  66. package/dist/src/guillo-gmi/components/panel/permissions_prinperm.d.ts +17 -0
  67. package/dist/src/guillo-gmi/components/panel/permissions_prinrole.d.ts +17 -0
  68. package/dist/src/guillo-gmi/components/panel/permissions_roleperm.d.ts +17 -0
  69. package/dist/src/guillo-gmi/components/panel/properties.d.ts +1 -0
  70. package/dist/src/guillo-gmi/components/path.d.ts +1 -0
  71. package/dist/src/guillo-gmi/components/properties_view.d.ts +7 -0
  72. package/dist/src/guillo-gmi/components/search_labels.d.ts +5 -0
  73. package/dist/src/guillo-gmi/components/search_options_labels.d.ts +9 -0
  74. package/dist/src/guillo-gmi/components/search_vocabulary_labels.d.ts +6 -0
  75. package/dist/src/guillo-gmi/components/selected_items_actions.d.ts +48 -0
  76. package/dist/src/guillo-gmi/components/tabs.d.ts +13 -0
  77. package/dist/src/guillo-gmi/components/ui/delete.d.ts +8 -0
  78. package/dist/src/guillo-gmi/components/ui/icon.d.ts +7 -0
  79. package/dist/src/guillo-gmi/components/ui/index.d.ts +6 -0
  80. package/dist/src/guillo-gmi/components/ui/loading.d.ts +6 -0
  81. package/dist/src/guillo-gmi/components/ui/notification.d.ts +6 -0
  82. package/dist/src/guillo-gmi/components/ui/table.d.ts +7 -0
  83. package/dist/src/guillo-gmi/components/ui/tag.d.ts +9 -0
  84. package/dist/src/guillo-gmi/components/widgets/index.d.ts +1 -0
  85. package/dist/src/guillo-gmi/components/widgets/tags.d.ts +13 -0
  86. package/dist/src/guillo-gmi/contexts/index.d.ts +57 -0
  87. package/dist/src/guillo-gmi/forms/base.d.ts +12 -0
  88. package/dist/src/guillo-gmi/forms/required_fields.d.ts +11 -0
  89. package/dist/src/guillo-gmi/forms/users.d.ts +12 -0
  90. package/dist/src/guillo-gmi/hooks/useClickAway.d.ts +1 -0
  91. package/dist/src/guillo-gmi/hooks/useConfig.d.ts +19 -0
  92. package/dist/src/guillo-gmi/hooks/useCrudContext.d.ts +21 -0
  93. package/dist/src/guillo-gmi/hooks/useInput.d.ts +11 -0
  94. package/dist/src/guillo-gmi/hooks/useLocation.d.ts +2 -0
  95. package/dist/src/guillo-gmi/hooks/useMountedState.d.ts +1 -0
  96. package/dist/src/guillo-gmi/hooks/useRegistry.d.ts +95 -0
  97. package/dist/src/guillo-gmi/hooks/useRemoteField.d.ts +2 -0
  98. package/dist/src/guillo-gmi/hooks/useSetState.d.ts +6 -0
  99. package/dist/src/guillo-gmi/hooks/useVocabulary.d.ts +8 -0
  100. package/dist/src/guillo-gmi/index.d.ts +30 -0
  101. package/dist/src/guillo-gmi/lib/auth.d.ts +26 -0
  102. package/dist/src/guillo-gmi/lib/client.d.ts +61 -0
  103. package/dist/src/guillo-gmi/lib/helpers.d.ts +16 -0
  104. package/dist/src/guillo-gmi/lib/processResponse.d.ts +9 -0
  105. package/dist/src/guillo-gmi/lib/rest.d.ts +16 -0
  106. package/dist/src/guillo-gmi/lib/search.d.ts +2 -0
  107. package/dist/src/guillo-gmi/lib/utils.d.ts +5 -0
  108. package/dist/src/guillo-gmi/lib/validators.d.ts +12 -0
  109. package/dist/src/guillo-gmi/locales/compiled/ca.json.d.ts +818 -0
  110. package/dist/src/guillo-gmi/locales/compiled/en.json.d.ts +818 -0
  111. package/dist/src/guillo-gmi/locales/compiled/es.json.d.ts +818 -0
  112. package/dist/src/guillo-gmi/locales/generic_messages.d.ts +248 -0
  113. package/dist/src/guillo-gmi/models/index.d.ts +17 -0
  114. package/dist/src/guillo-gmi/models/sharing.d.ts +12 -0
  115. package/dist/src/guillo-gmi/reducers/guillotina.d.ts +35 -0
  116. package/dist/src/guillo-gmi/types/global.d.ts +11 -0
  117. package/dist/src/guillo-gmi/types/guillotina.d.ts +279 -0
  118. package/dist/src/guillo-gmi/views/application.d.ts +13 -0
  119. package/dist/src/guillo-gmi/views/base.d.ts +5 -0
  120. package/dist/src/guillo-gmi/views/container.d.ts +1 -0
  121. package/dist/src/guillo-gmi/views/folder.d.ts +1 -0
  122. package/dist/src/guillo-gmi/views/groups.d.ts +3 -0
  123. package/dist/src/guillo-gmi/views/item.d.ts +1 -0
  124. package/dist/src/guillo-gmi/views/users.d.ts +3 -0
  125. package/package.json +32 -32
@@ -1 +1 @@
1
- {"version":3,"file":"react-gmi.js","sources":["../src/guillo-gmi/reducers/guillotina.ts","../src/guillo-gmi/contexts/index.tsx","../src/guillo-gmi/locales/generic_messages.ts","../src/guillo-gmi/lib/helpers.ts","../src/guillo-gmi/components/input/button.tsx","../src/guillo-gmi/lib/utils.ts","../src/guillo-gmi/components/modal.tsx","../src/guillo-gmi/lib/processResponse.ts","../src/guillo-gmi/hooks/useSetState.tsx","../src/guillo-gmi/hooks/useCrudContext.tsx","../src/guillo-gmi/actions/add_item.tsx","../src/guillo-gmi/hooks/useConfig.tsx","../src/guillo-gmi/actions/remove_items.tsx","../src/guillo-gmi/components/input/checkbox.tsx","../src/guillo-gmi/components/error_zone.tsx","../src/guillo-gmi/hooks/useInput.tsx","../src/guillo-gmi/lib/validators.ts","../src/guillo-gmi/components/input/input.tsx","../src/guillo-gmi/components/ui/icon.tsx","../src/guillo-gmi/components/input/email.tsx","../src/guillo-gmi/components/input/form.tsx","../src/guillo-gmi/components/input/password.tsx","../src/guillo-gmi/components/input/form_builder.tsx","../src/guillo-gmi/components/input/select.tsx","../src/guillo-gmi/hooks/useVocabulary.tsx","../src/guillo-gmi/components/input/select_vocabulary.tsx","../src/guillo-gmi/hooks/useLocation.tsx","../src/guillo-gmi/components/Link.tsx","../src/guillo-gmi/components/TdLink.tsx","../src/guillo-gmi/components/ui/loading.tsx","../src/guillo-gmi/components/ui/tag.tsx","../src/guillo-gmi/components/ui/delete.tsx","../src/guillo-gmi/components/ui/table.tsx","../src/guillo-gmi/components/ui/notification.tsx","../src/guillo-gmi/lib/rest.ts","../src/guillo-gmi/lib/search.ts","../src/guillo-gmi/lib/client.tsx","../src/guillo-gmi/components/input/upload.tsx","../src/guillo-gmi/components/input/textarea.tsx","../src/guillo-gmi/hooks/useClickAway.tsx","../src/guillo-gmi/components/input/search_input.tsx","../src/guillo-gmi/components/input/search_input_list.tsx","../src/guillo-gmi/components/input/input_list.tsx","../src/guillo-gmi/components/input/dropdown.tsx","../src/guillo-gmi/components/fields/editableField.tsx","../src/guillo-gmi/components/fields/downloadField.tsx","../src/guillo-gmi/components/fields/renderField.tsx","../src/guillo-gmi/components/fields/editComponent.tsx","../src/guillo-gmi/components/behaviors/iattachment.tsx","../src/guillo-gmi/components/behaviors/imultiattachment.tsx","../src/guillo-gmi/components/behaviors/iimageattachment.tsx","../src/guillo-gmi/components/behaviors/imultiimageattachment.tsx","../node_modules/.pnpm/redux@5.0.1/node_modules/redux/dist/redux.mjs","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.3/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.3/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.3/node_modules/use-sync-external-store/with-selector.js","../node_modules/.pnpm/react-redux@9.2.0_@types+react@19.2.7_react@19.2.3_redux@5.0.1/node_modules/react-redux/dist/react-redux.mjs","../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/.pnpm/css-box-model@1.2.1/node_modules/css-box-model/dist/css-box-model.esm.js","../node_modules/.pnpm/raf-schd@4.0.3/node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/.pnpm/@babel+runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/.pnpm/@hello-pangea+dnd@18.0.1_@types+react@19.2.7_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/@hello-pangea/dnd/dist/dnd.esm.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js","../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js","../src/guillo-gmi/components/behaviors/imultiimageorderedattachment.tsx","../src/guillo-gmi/components/behaviors/iworkflow.tsx","../src/guillo-gmi/components/panel/actions.tsx","../src/guillo-gmi/components/panel/addons.tsx","../src/guillo-gmi/components/panel/behaviors.tsx","../src/guillo-gmi/components/selected_items_actions.tsx","../src/guillo-gmi/components/pagination.tsx","../src/guillo-gmi/models/sharing.ts","../src/guillo-gmi/models/index.ts","../src/guillo-gmi/components/item.tsx","../src/guillo-gmi/components/search_labels.tsx","../src/guillo-gmi/components/search_options_labels.tsx","../src/guillo-gmi/components/search_vocabulary_labels.tsx","../src/guillo-gmi/components/panel/items.tsx","../src/guillo-gmi/components/behavior_view.tsx","../src/guillo-gmi/components/properties_view.tsx","../src/guillo-gmi/components/panel/properties.tsx","../src/guillo-gmi/components/panel/permissions_prinperm.tsx","../src/guillo-gmi/components/panel/permissions_prinrole.tsx","../src/guillo-gmi/components/panel/permissions_roleperm.tsx","../src/guillo-gmi/components/panel/permissions.tsx","../src/guillo-gmi/components/widgets/tags.tsx","../src/guillo-gmi/components/context_toolbar.tsx","../src/guillo-gmi/components/flash.tsx","../src/guillo-gmi/components/tabs.tsx","../src/guillo-gmi/views/folder.tsx","../src/guillo-gmi/views/item.tsx","../src/guillo-gmi/views/application.tsx","../src/guillo-gmi/views/base.tsx","../src/guillo-gmi/views/container.tsx","../src/guillo-gmi/forms/users.tsx","../src/guillo-gmi/hooks/useRemoteField.tsx","../src/guillo-gmi/views/users.tsx","../src/guillo-gmi/actions/copy_items.tsx","../src/guillo-gmi/actions/copy_item.tsx","../src/guillo-gmi/actions/move_items.tsx","../src/guillo-gmi/actions/move_item.tsx","../src/guillo-gmi/actions/remove_item.tsx","../src/guillo-gmi/actions/change_pass.tsx","../src/guillo-gmi/forms/base.tsx","../src/guillo-gmi/components/behaviors/idublincore.tsx","../src/guillo-gmi/views/groups.tsx","../src/guillo-gmi/components/error_boundary.tsx","../src/guillo-gmi/components/notallowed.tsx","../src/guillo-gmi/components/notfound.tsx","../src/guillo-gmi/components/path.tsx","../src/guillo-gmi/hooks/useRegistry.tsx","../src/guillo-gmi/components/guillotina.tsx","../src/guillo-gmi/components/layout.tsx","../src/guillo-gmi/components/login.tsx","../src/guillo-gmi/forms/required_fields.tsx","../node_modules/.pnpm/jwt-decode@3.1.2/node_modules/jwt-decode/build/jwt-decode.esm.js","../src/guillo-gmi/lib/auth.ts","../src/guillo-gmi/types/guillotina.ts"],"sourcesContent":["import { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\nexport interface GuillotinaGlobalState {\n path: string\n loading: boolean\n context?: GuillotinaCommonObject\n flash: {\n message?: string\n type?: string\n }\n action: {\n action?: string\n params?: IndexSignature\n }\n permissions: IndexSignature\n errorStatus?: string\n registry: IndexSignature\n refresh?: number\n}\n\nexport const initialState: GuillotinaGlobalState = {\n path: '',\n loading: false,\n context: undefined,\n flash: {\n message: undefined,\n type: undefined,\n },\n action: {\n action: undefined,\n params: undefined,\n },\n permissions: [],\n errorStatus: undefined,\n registry: {},\n refresh: undefined,\n}\n\nexport enum GuillotinaReducerActionTypes {\n SET_PATH = 'SET_PATH',\n SET_CONTEXT = 'SET_CONTEXT',\n SET_ERROR = 'SET_ERROR',\n SET_FLASH = 'SET_FLASH',\n CLEAR_FLASH = 'CLEAR_FLASH',\n SET_ACTION = 'SET_ACTION',\n CLEAR_ACTION = 'CLEAR_ACTION',\n REFRESH = 'REFRESH',\n APPLY = 'APPLY',\n}\nexport function guillotinaReducer(\n state: GuillotinaGlobalState,\n action: { type: GuillotinaReducerActionTypes; payload: IndexSignature }\n): GuillotinaGlobalState {\n switch (action.type) {\n case GuillotinaReducerActionTypes.SET_PATH:\n return { ...state, path: action.payload.path, loading: true }\n\n case GuillotinaReducerActionTypes.SET_CONTEXT:\n return {\n ...state,\n ...action.payload,\n errorStatus: undefined,\n loading: false,\n }\n\n case GuillotinaReducerActionTypes.SET_ERROR:\n return {\n ...state,\n errorStatus: action.payload.errorStatus,\n loading: false,\n }\n\n case GuillotinaReducerActionTypes.SET_FLASH:\n return { ...state, ...action.payload }\n\n case GuillotinaReducerActionTypes.CLEAR_FLASH:\n return {\n ...state,\n flash: {\n message: undefined,\n type: undefined,\n },\n }\n case GuillotinaReducerActionTypes.SET_ACTION:\n return { ...state, action: action.payload }\n case GuillotinaReducerActionTypes.CLEAR_ACTION:\n return { ...state, action: { action: undefined, params: undefined } }\n\n case GuillotinaReducerActionTypes.REFRESH:\n return {\n ...state,\n refresh: Date.now(),\n loading: !action.payload.transparent,\n }\n\n case GuillotinaReducerActionTypes.APPLY:\n return {\n ...state,\n context: { ...state.context, ...action.payload.context },\n }\n\n default:\n return state\n }\n}\n","import { Dispatch, useContext, createContext } from 'react'\nimport { GuillotinaClient } from '../lib/client.js'\nimport { Auth } from '../lib/auth.js'\nimport { IndexSignature } from '../types/global'\nimport {\n GuillotinaGlobalState,\n GuillotinaReducerActionTypes,\n} from '../reducers/guillotina'\nimport { GuillotinaCommonObject } from '../types/guillotina.js'\nimport { IManageRegistry } from '../hooks/useRegistry.js'\n\nexport const AuthContext = createContext({})\n\nexport const ClientContext = createContext<GuillotinaClient | null>(null)\n\ninterface PropsTraversal {\n client: GuillotinaClient\n auth: Auth\n state: GuillotinaGlobalState\n dispatch: Dispatch<{\n type: GuillotinaReducerActionTypes\n payload: IndexSignature\n }>\n registry: IManageRegistry\n flash?: (action: string, result: string) => void\n url: string\n children?: React.ReactNode\n}\n\nexport class Traversal {\n private dispatch\n public state\n public client\n public registry\n public url\n public auth\n\n constructor({ flash, ...props }: PropsTraversal) {\n this.dispatch = props.dispatch\n this.state = props.state\n this.client = props.client\n this.registry = props.registry\n this.auth = props.auth\n this.url = props.url\n if (typeof flash === 'function') this.flash = flash\n }\n\n refresh({ transparent = false } = {}) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.REFRESH,\n payload: { transparent },\n })\n }\n\n get path() {\n return this.state.path\n }\n\n get pathPrefix() {\n return this.state.path.slice(1)\n }\n\n get context(): GuillotinaCommonObject {\n if (this.state.context === undefined) {\n throw new Error('Context is not loaded')\n }\n return this.state.context\n }\n\n get containerPath() {\n return this.client.getContainerFromPath(this.path)\n }\n\n apply(data: IndexSignature) {\n // apply a optimistic update to context\n this.dispatch({\n type: GuillotinaReducerActionTypes.APPLY,\n payload: { context: data },\n })\n }\n\n flash(message: string, type: string) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.SET_FLASH,\n payload: { flash: { message, type } },\n })\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })\n }\n\n clearFlash() {\n this.dispatch({\n type: GuillotinaReducerActionTypes.CLEAR_FLASH,\n payload: {},\n })\n }\n\n doAction(action: string, params = {}) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.SET_ACTION,\n payload: { action, params },\n })\n }\n\n cancelAction() {\n this.dispatch({\n type: GuillotinaReducerActionTypes.CLEAR_ACTION,\n payload: {},\n })\n }\n\n hasPerm(permission: string) {\n return this.state.permissions[permission] === true\n }\n\n filterTabs(tabs: IndexSignature, tabsPermissions: IndexSignature) {\n const result: IndexSignature = {}\n Object.keys(tabs).forEach((item) => {\n const perm = tabsPermissions[item]\n if (perm && this.hasPerm(perm)) {\n result[item] = tabs[item]\n } else if (!perm) {\n result[item] = tabs[item]\n }\n })\n return result\n }\n}\n\nexport const TraversalContext = createContext<Traversal | null>(null)\nexport function TraversalProvider({\n children,\n ...props\n}: PropsTraversal & { children: React.ReactNode }) {\n return (\n <TraversalContext.Provider value={new Traversal(props)}>\n {children}\n </TraversalContext.Provider>\n )\n}\n\nexport function useTraversal() {\n const traversal = useContext(TraversalContext)\n if (!traversal) {\n throw new Error('useTraversal must be used within a TraversalProvider')\n }\n return traversal\n}\n\ninterface PropsClient {\n children: React.ReactNode\n client: GuillotinaClient\n}\nexport function ClientProvider({ children, client }: PropsClient) {\n return (\n <ClientContext.Provider value={client}>{children}</ClientContext.Provider>\n )\n}\n\nexport function useGuillotinaClient() {\n const client = useContext(ClientContext)\n if (!client) {\n throw new Error('useGuillotinaClient must be used within a ClientProvider')\n }\n return client\n}\n","import { defineMessages } from 'react-intl'\n\nexport const genericMessages = defineMessages({\n loading: {\n id: 'loading',\n defaultMessage: 'Loading',\n },\n remove: {\n id: 'remove',\n defaultMessage: 'Remove',\n },\n install: {\n id: 'install',\n defaultMessage: 'Install',\n },\n delete: {\n id: 'delete',\n defaultMessage: 'Delete',\n },\n move_to: {\n id: 'move_to',\n defaultMessage: 'Move to...',\n },\n copy_to: {\n id: 'copy_to',\n defaultMessage: 'Copy to...',\n },\n behaviors: {\n id: 'behaviors',\n defaultMessage: 'Behaviors',\n },\n static: {\n id: 'static',\n defaultMessage: 'Static',\n },\n disable: {\n id: 'disable',\n defaultMessage: 'Disable',\n },\n enable: {\n id: 'enable',\n defaultMessage: 'Enable',\n },\n enabled: {\n id: 'enabled',\n defaultMessage: 'Enabled',\n },\n available: {\n id: 'available',\n defaultMessage: 'Available',\n },\n invalid_form_data: {\n id: 'invalid_form_data',\n defaultMessage: 'Invalid form data',\n },\n invalid_form: {\n id: 'invalid_form',\n defaultMessage: 'Invalid form',\n },\n select_principal: {\n id: 'select_principal',\n defaultMessage: 'Select a Principal',\n },\n select_role: {\n id: 'select_role',\n defaultMessage: 'Select a Role',\n },\n select_permissions: {\n id: 'select_permissions',\n defaultMessage: 'Select permissions',\n },\n operation: {\n id: 'operation',\n defaultMessage: 'Operation',\n },\n save: {\n id: 'save',\n defaultMessage: 'Save',\n },\n choose: {\n id: 'choose',\n defaultMessage: 'Choose...',\n },\n property: {\n id: 'property',\n defaultMessage: 'Property',\n },\n value: {\n id: 'value',\n defaultMessage: 'Value',\n },\n create: {\n id: 'create',\n defaultMessage: 'Create',\n },\n upload: {\n id: 'upload',\n defaultMessage: 'Upload',\n },\n image: {\n id: 'image',\n defaultMessage: 'Image',\n },\n error_provide_key_name: {\n id: 'error_provide_key_name',\n defaultMessage: 'Provide a key name',\n },\n mandatory_field: {\n id: 'mandatory_field',\n defaultMessage: '{field} is mandatory!',\n },\n error_in_field: {\n id: 'error_in_field',\n defaultMessage: 'Error in field {field}!',\n },\n field_updated: {\n id: 'field_updated',\n defaultMessage: 'Field {field}, updated!',\n },\n field_deleted: {\n id: 'field_deleted',\n defaultMessage: 'Field {field}, deleted!',\n },\n can_not_delete_field: {\n id: 'can_not_delete_field',\n defaultMessage: 'You can not delete {field}!',\n },\n cancel: {\n id: 'cancel',\n defaultMessage: 'Cancel',\n },\n open: {\n id: 'open',\n defaultMessage: 'Open',\n },\n download: {\n id: 'download',\n defaultMessage: 'Download',\n },\n search: {\n id: 'search',\n defaultMessage: 'Search',\n },\n no_results: {\n id: 'no_results',\n defaultMessage: 'No results',\n },\n load_more: {\n id: 'load_more',\n defaultMessage: 'Load more',\n },\n add_type: {\n id: 'add_type',\n defaultMessage: 'Add {type}',\n },\n confirm: {\n id: 'confirm',\n defaultMessage: 'Confirm',\n },\n field_is_required: {\n id: 'field_is_required',\n defaultMessage: 'This field is required',\n },\n title: {\n id: 'title',\n defaultMessage: 'Title',\n },\n add: {\n id: 'add',\n defaultMessage: 'Add',\n },\n not_implemented: {\n id: 'not_implemented',\n defaultMessage: 'Not implemented',\n },\n failed_to_update: {\n id: 'failed_to_update',\n defaultMessage: 'Failed to update: {error}',\n },\n add_user: {\n id: 'add_user',\n defaultMessage: 'Add a User',\n },\n role: {\n id: 'role',\n defaultMessage: 'Role',\n },\n setting: {\n id: 'setting',\n defaultMessage: 'Setting',\n },\n permission: {\n id: 'permission',\n defaultMessage: 'Permission',\n },\n})\n\nexport const genericFileMessages = defineMessages({\n error_file_key_name: {\n id: 'error_file_key_name',\n defaultMessage: 'Provide a file and a key name',\n },\n error_upload_file: {\n id: 'error_upload_file',\n defaultMessage: 'Failed to upload file',\n },\n error_upload_file_size: {\n id: 'error_upload_file_size',\n defaultMessage: 'Failed to upload file {size}',\n },\n image_uploaded: {\n id: 'image_uploaded',\n defaultMessage: 'Image uploaded!',\n },\n file_uploaded: {\n id: 'file_uploaded',\n defaultMessage: 'File uploaded!',\n },\n failed_delete_file: {\n id: 'failed_delete_file',\n defaultMessage: 'Failed to delete file',\n },\n image_deleted: {\n id: 'image_deleted',\n defaultMessage: 'Image deleted!',\n },\n confirm_message_delete_file: {\n id: 'confirm_message_delete_file',\n defaultMessage: 'Are you sure to remove: {fileKeyToDelete}?',\n },\n confirm_message_delete_image: {\n id: 'confirm_message_delete_image',\n defaultMessage: 'Are you sure to remove the image?',\n },\n no_images_uploaded: {\n id: 'no_images_uploaded',\n defaultMessage: 'No images uploaded',\n },\n no_files_uploaded: {\n id: 'no_files_uploaded',\n defaultMessage: 'No files uploaded',\n },\n upload_an_image: {\n id: 'upload_an_image',\n defaultMessage: 'Upload an image',\n },\n upload_a_file: {\n id: 'upload_a_file',\n defaultMessage: 'Upload a file',\n },\n})\n","import { MessageDescriptor } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nexport const classnames = (classNames: (string | boolean)[]) => {\n return classNames.filter(Boolean).join(' ').trim()\n}\n\nexport const noop = () => {}\n\nlet current = 0\n\nexport const generateUID = (prefix = '') => `${prefix || 'id'}-${current++}`\n\nexport const toQueryString = (params: IndexSignature<string>) => {\n return Object.keys(params)\n .map((key) => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\n })\n .join('&')\n}\n\nexport function base64ToArrayBuffer(base64: string) {\n const binaryString = window.atob(base64)\n const binaryLen = binaryString.length\n const bytes = new Uint8Array(binaryLen)\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i)\n bytes[i] = ascii\n }\n return bytes\n}\n\nexport function stringToSlug(str: string) {\n str = str.replace(/^\\s+|\\s+$/g, '') // trim\n str = str.toLowerCase()\n\n // remove accents, swap ñ for n, etc\n const from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;'\n const to = 'aaaaeeeeiiiioooouuuunc------'\n for (let i = 0, l = from.length; i < l; i++) {\n str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))\n }\n\n str = str\n .replace(/[^a-z0-9 -]/g, '') // remove invalid chars\n .replace(/\\s+/g, '-') // collapse whitespace and replace by -\n .replace(/-+/g, '-') // collapse dashes\n\n return str\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(function () {\n resolve()\n }, ms)\n })\n}\n\nexport const getActionsObject = (\n multiple: boolean\n): {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n} => ({\n DELETE: {\n text: genericMessages.delete,\n perms: ['guillotina.DeleteContent'],\n action: multiple ? 'removeItems' : 'removeItem',\n },\n MOVE: {\n text: genericMessages.move_to,\n perms: ['guillotina.MoveContent'],\n action: multiple ? 'moveItems' : 'moveItem',\n },\n COPY: {\n text: genericMessages.copy_to,\n perms: ['guillotina.DuplicateContent'],\n action: multiple ? 'copyItems' : 'copyItem',\n },\n})\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n type?: 'submit' | 'reset' | 'button'\n loading?: boolean\n disabled?: boolean\n dataTest?: string\n}\nexport const Button = ({\n children,\n className = 'is-primary',\n onClick,\n type = 'submit',\n loading = false,\n disabled = false,\n dataTest,\n}: Props) => {\n let css = [...className.split(' '), 'button']\n if (loading) css = css.concat('is-loading')\n\n return (\n <p className=\"control\">\n <button\n type={type}\n className={classnames(css)}\n onClick={onClick}\n disabled={disabled}\n data-test={dataTest}\n >\n {children}\n </button>\n </p>\n )\n}\n","import { IndexSignature } from '../types/global'\nimport { stringToSlug } from './helpers'\n\nexport const formatDate = (str: string): string => {\n const d = new Date(str)\n const minutes = d.getMinutes() < 10 ? `0${d.getMinutes()}` : d.getMinutes()\n return `${d.getDate()}/${\n d.getMonth() + 1\n }/${d.getFullYear()} ${d.getHours()}:${minutes}`\n}\n\nexport const get = <T>(\n obj: IndexSignature,\n path: string | string[],\n defValue: T\n): T => {\n // If path is not defined or it has false value\n if (!path) return defValue\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n // Regex explained: https://regexr.com/58j0k\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n // Find value if exist return otherwise return undefined value;\n if (pathArray === null) return defValue\n\n return (pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj) ??\n defValue) as T\n}\n\nexport function getNewId(id = '') {\n const suffix = '-copy-'\n const rgx = new RegExp(`($|${suffix}\\\\d*)`)\n\n return stringToSlug(id).replace(rgx, (r: string) => {\n const num = parseInt(r.replace(suffix, '') || '0')\n return `${suffix}${num + 1}`\n })\n}\n\nexport function debounce<T extends unknown[], U>(\n callback: (...args: T) => PromiseLike<U> | U,\n wait: number\n) {\n let timer: ReturnType<typeof setTimeout>\n\n return (...args: T): Promise<U> => {\n clearTimeout(timer)\n return new Promise((resolve) => {\n timer = setTimeout(() => resolve(callback(...args)), wait)\n })\n }\n}\n","import { createPortal } from 'react-dom'\nimport { Button } from './input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { get } from '../lib/utils'\n\ninterface ModalProps {\n isActive: boolean\n setActive: (value: boolean) => void\n children: React.ReactNode\n className?: string\n}\n\nexport function Modal(props: ModalProps) {\n const { isActive, setActive, children } = props\n\n const css = 'modal ' + (isActive ? 'is-active ' : '') + props.className\n return createPortal(\n <>\n <div className={css}>\n <div className=\"modal-background\" onClick={() => setActive(false)} />\n <div className=\"modal-content\">\n <div className=\"box\">{children}</div>\n </div>\n <button\n className=\"modal-close is-large\"\n aria-label=\"close\"\n onClick={() => setActive(false)}\n />\n </div>\n </>,\n document.body\n )\n}\n\ninterface ConfirmProps {\n message?: React.ReactNode\n onCancel: () => void\n onConfirm: () => void\n loading?: boolean\n}\nexport function Confirm({\n message,\n onCancel,\n onConfirm,\n loading,\n}: ConfirmProps) {\n const intl = useIntl()\n const setActive = () => onCancel()\n return (\n <Modal isActive setActive={setActive} className=\"confirm\">\n <h1 className=\"title is-size-5\">{message || 'Are you Sure?'}</h1>\n <div className=\"level\" style={{ marginTop: 50 }}>\n <div className=\"level-left\"></div>\n <div className=\"level-right\">\n <button\n className=\"button is-danger\"\n onClick={() => onCancel()}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <Button\n loading={loading}\n className=\"is-success\"\n onClick={() => onConfirm()}\n dataTest=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n\ninterface PathTreeProps {\n title: string\n defaultPath?: string\n children?: React.ReactNode\n onConfirm: (path: string, target: EventTarget) => void\n onCancel: () => void\n}\n// @todo Improve it... Replacing the inputText to a tree\nexport function PathTree({\n title,\n defaultPath,\n children,\n onConfirm,\n onCancel,\n}: PathTreeProps) {\n const intl = useIntl()\n return (\n <Modal isActive setActive={onCancel}>\n <h1>{title}</h1>\n <form\n onSubmit={(e) => {\n e.preventDefault()\n onConfirm(get(e, 'target.0.value', ''), e.target)\n }}\n >\n <small style={{ display: 'block', marginTop: 20 }}>\n {`Example: /folder (without /db/container on front)`}\n </small>\n <input\n className=\"input mb-3\"\n defaultValue={defaultPath}\n type=\"text\"\n data-test=\"inputPathTreeTest\"\n />\n {children}\n <div className=\"level-right mt-3\">\n <button\n type=\"button\"\n className=\"button is-danger\"\n onClick={onCancel}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <button\n type=\"submit\"\n className=\"button is-success\"\n data-test=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </button>\n </div>\n </form>\n </Modal>\n )\n}\n","interface DataError {\n details: string\n reason: string\n}\nconst getErrorMessage = (\n dataError: DataError,\n defaultValue: string | number\n) => {\n if (dataError && dataError.details) {\n return dataError.details\n } else if (dataError && dataError.reason) {\n return dataError.reason\n }\n return defaultValue\n}\n\ninterface IResponse<T = unknown> {\n loading?: boolean\n isError: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\n\nexport async function processResponse<T>(\n res: Response,\n ready_body = true\n): Promise<IResponse<T>> {\n if (res.status < 400)\n return {\n isError: false,\n loading: false,\n result: ready_body ? await res.json() : res.status,\n response: res,\n }\n else\n return {\n isError: true,\n loading: false,\n errorMessage: getErrorMessage(await res.json(), res.status).toString(),\n response: res,\n }\n}\n","import { useState, useCallback } from 'react'\n\n// **** Types **** //\n\nexport type TSetState<T> = (newPartialState: Partial<T>) => void\n\n// **** Functions **** //\n\n/**\n * Do setState like react class component.\n */\nfunction useSetState<T extends object>(initialState: T): [T, TSetState<T>] {\n const [state, setState] = useState<T>(initialState)\n // Function which accepts a partial state to merge\n const setCustomState = useCallback((newPartialState: Partial<T>) => {\n try {\n setState((prevState): T => {\n return { ...prevState, ...newPartialState }\n })\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n }, [])\n // Return\n return [state, setCustomState]\n}\n\n// **** Export Default **** //\n\nexport default useSetState\n","import { Traversal, useTraversal } from '../contexts'\nimport { processResponse } from '../lib/processResponse'\nimport useSetState from './useSetState'\n\ninterface State<T> {\n loading?: boolean\n isError?: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\nconst initial = {\n loading: undefined,\n isError: false,\n errorMessage: undefined,\n result: undefined,\n response: undefined,\n}\n\nfunction patch<T>(\n setState: (value: Partial<State<T>>) => void,\n Ctx: Traversal\n) {\n return async (\n data = {},\n endpoint?: string,\n body = false\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.patch(path, data)\n newState = await processResponse<T>(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction del<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (\n data = {},\n endpoint?: string,\n body = false\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.delete(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction post<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (\n data = {},\n endpoint?: string,\n body = true\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState: State<T> = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.post(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction get<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (endpoint?: string): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.get(path)\n newState = await processResponse(res, true)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n\n setState(newState)\n return newState\n }\n}\n// const get = (\n// setState: (value: Partial<State>) => void,\n// Ctx: Traversal\n// ) =>\n\nexport function useCrudContext<T>() {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State<T>>(initial)\n\n return {\n ...state,\n Ctx,\n patch: patch(setState, Ctx),\n del: del(setState, Ctx),\n post: post(setState, Ctx),\n get: get(setState, Ctx),\n }\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n type: string\n}\n\nexport function AddItem(props: Props) {\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const { type } = props\n const { getForm } = Ctx.registry\n\n const Form = getForm(type, undefined)\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit(data: IndexSignature) {\n const form = Object.assign(\n {},\n { '@type': type },\n data.formData ? data.formData : data\n )\n\n const { isError, errorMessage } = await post(form)\n if (!isError) {\n Ctx.flash('Content created!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form\n loading={loading}\n onSubmit={doSubmit}\n actionName={'Add ' + type}\n title={'Add ' + type}\n type={type}\n dataTest={`formAdd${type}Test`}\n />\n </Modal>\n )\n}\n","import { useRef } from 'react'\nimport { GuillotinaSchemaProperty } from '../types/guillotina'\n\nexport const Permissions: string[] = [\n 'guillotina.AddContent',\n 'guillotina.ModifyContent',\n 'guillotina.ViewContent',\n 'guillotina.DeleteContent',\n 'guillotina.AccessContent',\n 'guillotina.SeePermissions',\n 'guillotina.ChangePermissions',\n 'guillotina.MoveContent',\n 'guillotina.DuplicateContent',\n 'guillotina.ReadConfiguration',\n 'guillotina.RegisterConfigurations',\n 'guillotina.WriteConfiguration',\n 'guillotina.ManageAddons',\n 'guillotina.swagger.View',\n]\n\nexport interface IConfig {\n DisabledTypes: string[]\n PageSize: number\n DelayActions: number\n Permissions: string[]\n SearchEngine: string\n SizeImages?: string[]\n icons?: { [key: string]: string }\n properties_default?: string[]\n properties_ignore_fields?: string[]\n fieldHaveDeleteButton: (schema: GuillotinaSchemaProperty) => boolean\n flash?: (message: string, type: string) => void\n}\n\nexport const defaultConfig: IConfig = {\n DisabledTypes: ['UserManager', 'GroupManager'],\n PageSize: 10,\n DelayActions: 200,\n Permissions: Permissions,\n SearchEngine: 'PostreSQL', // Elasticsearch\n fieldHaveDeleteButton: (schema) => {\n return (\n schema?.widget === 'file' ||\n schema?.widget === 'select' ||\n schema?.type === 'array'\n )\n },\n}\n\nlet calculated = Object.assign({}, defaultConfig)\n\nfunction addConfig(updates: Partial<IConfig>, currentConfig: IConfig): IConfig {\n let updatedConfig: IConfig = { ...currentConfig }\n\n Object.entries(updates).forEach(([key, value]) => {\n const currentKey = key as keyof IConfig\n const currentValue = currentConfig[currentKey]\n\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n // Correctly type the array concatenation\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: [...currentValue, ...value],\n }\n } else if (isPlainObject(value) && isPlainObject(currentValue)) {\n // Correctly type the object merging\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: { ...currentValue, ...value },\n }\n } else {\n // Directly assign all other types\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: value,\n }\n }\n })\n\n return updatedConfig as IConfig\n}\n\n// Helper function to check if a value is a plain object (and not a React node, etc.)\nfunction isPlainObject(value: any): value is object {\n return Object.prototype.toString.call(value) === '[object Object]'\n}\n\nexport function useConfig(cfg = {}) {\n const ref = useRef<IConfig | undefined>(undefined)\n if (cfg && !ref.current) {\n calculated = addConfig(cfg, calculated)\n ref.current = calculated\n }\n return calculated\n}\n","import { Confirm } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { sleep } from '../lib/helpers'\nimport { useConfig } from '../hooks/useConfig'\nimport { ItemModel } from '../models'\nimport { useState } from 'react'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\ninterface Props {\n items: ItemModel<SearchItem | GuillotinaCommonObject>[]\n}\nexport function RemoveItems(props: Props) {\n const Ctx = useTraversal()\n const cfg = useConfig()\n const [loading, setLoading] = useState(false)\n const { items = [] } = props\n const last = items[items.length - 1].id\n const itemsNames = items\n .map((item) => item.id)\n .join(', ')\n .replace(`, ${last}`, ` and ${last}`)\n\n async function removeItems() {\n const errors: unknown[] = []\n setLoading(true)\n\n const actions = items.map(async (item) => {\n const res = await Ctx.client.delete(`${Ctx.path}${item.id}`, {})\n if (!res.ok) {\n const err = await res.json()\n errors.push(err)\n }\n })\n // this sleep is here, to let elasticsearch, wait for\n // index our operations... (will work 99% of use cases)\n actions.push(sleep(cfg.DelayActions))\n\n await Promise.all(actions)\n\n if (errors.length === 0) {\n Ctx.flash(`Items removed!`, 'success')\n Ctx.refresh()\n } else {\n const errorstr = errors.map((err) => JSON.stringify(err)).join('\\n')\n Ctx.flash(`Something went wrong!! ${errorstr}`, 'danger')\n }\n setLoading(false)\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItems}\n message={`Are you sure to remove: ${itemsNames}?`}\n />\n )\n}\n","import { ChangeEvent, useEffect, useRef, useState } from 'react'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n className?: string\n classNameInput?: string\n loading?: boolean\n indeterminate?: boolean\n backgroundColor?: string\n borderColor?: string\n dataTest?: string\n onChange: (value: boolean) => void\n id?: string\n disabled?: boolean\n checked?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\nexport const Checkbox = ({\n id,\n className,\n classNameInput,\n loading,\n disabled,\n indeterminate = false,\n checked,\n children,\n placeholder,\n onChange,\n dataTest,\n}: Props) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const [state, setState] = useState<boolean>(!!checked)\n\n useEffect(() => {\n if (state !== checked) {\n setState(!!checked)\n }\n }, [checked])\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate\n }\n }, [indeterminate])\n\n const updateState = (ev: ChangeEvent<HTMLInputElement>) => {\n setState(ev.target.checked)\n onChange(ev.target.checked)\n }\n\n return (\n <div className=\"field\">\n <label htmlFor={id} className={classnames(['checkbox', className ?? ''])}>\n <input\n ref={inputRef}\n disabled={disabled || loading}\n id={id}\n type=\"checkbox\"\n className={classnames(['checkbox', classNameInput ?? ''])}\n checked={state}\n onChange={updateState}\n data-test={dataTest}\n />\n {children || placeholder}\n </label>\n </div>\n )\n}\n","import { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n id?: string\n className?: string\n}\n\nexport default function ErrorZone({ children, id, className = '' }: Props) {\n return (\n <p className={classnames(['help is-danger', className])} id={id}>\n {children}\n </p>\n )\n}\n","import { ChangeEvent, useEffect, useState } from 'react'\n\nconst applyValidators = (\n value: string,\n validators: ((value: string) => boolean)[]\n) => {\n const validation = Array.isArray(validators) ? validators : [validators]\n let result = true\n validation.forEach((func) => {\n if (func && func(value) === false) {\n result = false\n }\n })\n return result\n}\n\nconst useInput = (\n onChange: (value: string) => void | undefined,\n value: string,\n validators: ((value: string) => boolean)[]\n) => {\n const [state, setState] = useState({ hasError: false, value: value })\n\n const onUpdate = (ev: ChangeEvent<HTMLInputElement>) => {\n const value: string = ev && ev.target ? ev.target.value : ''\n setState({ value, hasError: false })\n if (onChange) onChange(value)\n }\n\n const onBlur = () => {\n const hasError = applyValidators(state.value, validators) === false\n if (hasError) setState({ value: state.value, hasError })\n }\n\n const onFocus = () => {\n if (state.hasError) {\n setState({ value: state.value, hasError: false })\n }\n }\n\n useEffect(() => {\n setState({ value, hasError: false })\n }, [value])\n\n return {\n onChange: onUpdate,\n onFocus,\n onBlur,\n state,\n }\n}\n\nexport default useInput\n","// From github.com/protonmail/proton-shared\n\n/* eslint-disable no-useless-escape */\nexport const REGEX_EMAIL =\n /(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/i\nexport const REGEX_URL =\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)/\nexport const REGEX_HEX_COLOR =\n /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\\b$/i\nexport const REGEX_NUMBER = /^\\d+$/\n\nexport const isEmpty = (value = '') => !value.length\nexport const maxLength = (value = '', limit = 0) => value.length <= limit\nexport const minLength = (value = '', limit = 0) => value.length >= limit\nexport const isEmail = (value = '') => REGEX_EMAIL.test(value)\nexport const isURL = (value = '') => REGEX_URL.test(value)\nexport const isHexColor = (value = '') => REGEX_HEX_COLOR.test(value)\nexport const isNumber = (value = '') => REGEX_NUMBER.test(value)\nexport const notEmpty = (value: string) => !!value.length\n","import { forwardRef, useRef, useState, type ReactElement } from 'react'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport ErrorZone from '../error_zone'\nimport useInput from '../../hooks/useInput'\nimport { notEmpty } from '../../lib/validators'\nimport { useEffect } from 'react'\n\nconst noop = () => true\ninterface Props {\n name?: string\n icon?: ReactElement\n iconPosition?: 'has-icons-left' | 'has-icons-right'\n error?: string\n errorZoneClassName?: string\n autoComplete?: string\n className?: string\n widget?: string\n loading?: boolean\n validator?: ((value: string) => boolean) | ((value: string) => boolean)[]\n errorMessage?: string\n dataTest?: string\n autofocus?: boolean\n onChange: (value: string) => void | undefined\n type?: string\n value?: string\n required?: boolean\n id?: string\n placeholder?: string\n disabled?: boolean\n onKeyUp?: (event: React.KeyboardEvent<HTMLInputElement>) => void\n}\n\nexport const Input = forwardRef<HTMLInputElement, Props>(\n (\n {\n icon,\n iconPosition = 'has-icons-right',\n error,\n errorZoneClassName,\n autoComplete = 'off',\n className = '',\n widget = 'input',\n type = 'text',\n loading = false,\n required = false,\n id,\n placeholder,\n value,\n autofocus = false,\n onChange,\n validator = noop,\n errorMessage,\n dataTest = 'testInput',\n disabled,\n onKeyUp,\n },\n ref\n ) => {\n let validatorFn: ((value: string) => boolean)[] = []\n if (required) {\n validatorFn = Array.isArray(validator)\n ? [...validator, notEmpty]\n : [validator, notEmpty]\n }\n\n const { state, ...handlers } = useInput(onChange, value ?? '', validatorFn)\n const [uid] = useState(generateUID('input'))\n const [mounted, setMounted] = useState(false)\n // eslint-disable-next-line\n const newRef = ref || useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (\n autofocus &&\n !error &&\n newRef != null &&\n typeof newRef !== 'function' &&\n newRef.current\n ) {\n newRef.current.focus()\n }\n }, [mounted, autofocus, newRef, error])\n\n const theError = state.hasError ? errorMessage || 'invalid field' : ''\n const statusClasses = state.hasError ? 'is-danger' : ''\n\n const cssControl = () => (icon ? ['control', iconPosition] : ['control'])\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssControl())}>\n <input\n className={classnames([widget, className, statusClasses])}\n aria-describedby={uid}\n id={id}\n ref={ref}\n type={type}\n value={state.value}\n placeholder={placeholder}\n autoComplete={autoComplete}\n disabled={loading || disabled}\n required={required}\n data-test={dataTest}\n onKeyUp={onKeyUp}\n {...handlers}\n />\n {icon && icon}\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {state.hasError ? theError : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\nexport default Input\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n icon: string\n className?: string\n align?: string\n}\n\nexport const Icon = ({ icon, className = '', align }: Props) => {\n const addClass = className ? className.split(' ') : [className]\n\n align = align || 'is-right'\n\n return (\n <span className={classnames(['icon', align, ...addClass])}>\n <i className={icon}></i>\n </span>\n )\n}\n","import { Input } from './input'\nimport { isEmail } from '../../lib/validators'\nimport { Icon } from '../ui/icon'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value?: string\n dataTest?: string\n onChange: (value: string) => void\n placeholder?: string\n id?: string\n required?: boolean\n}\nexport const EmailInput = ({\n value = '',\n dataTest,\n placeholder,\n id,\n onChange,\n required,\n}: Props) => {\n const intl = useIntl()\n return (\n <Input\n type=\"email\"\n validator={isEmail}\n errorMessage={intl.formatMessage({\n id: 'invalid_email',\n defaultMessage: 'Invalid email',\n })}\n value={value}\n dataTest={dataTest}\n icon={<Icon icon=\"fas fa-envelope\" />}\n id={id}\n placeholder={placeholder}\n onChange={onChange}\n required={required}\n />\n )\n}\n","import { noop } from '../../lib/helpers'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void\n onReset?: (event: React.FormEvent<HTMLFormElement>) => void\n autoComplete?: string\n title?: string\n error?: string\n dataTest?: string\n}\nexport const Form = ({\n children,\n className = '',\n onSubmit = noop,\n onReset = noop,\n autoComplete = 'off',\n title,\n error,\n dataTest,\n}: Props) => {\n const handleSubmit = (event: React.SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault()\n onSubmit(event)\n }\n return (\n <div data-test={dataTest}>\n {title && (\n <div className=\"level\">\n <h1 className=\"title is-size-4\">{title}</h1>\n </div>\n )}\n {error && <div className=\"notification is-danger\">{error}</div>}\n <form\n onSubmit={handleSubmit}\n onReset={onReset}\n autoComplete={autoComplete}\n className={classnames(['form', className])}\n >\n {children}\n </form>\n </div>\n )\n}\n","import { InputHTMLAttributes } from 'react'\nimport { Input } from './input'\n\ninterface Props {\n value: string\n dataTest: string\n onChange: (value: string) => void\n placeholder?: string\n id?: string\n required?: boolean\n}\n\nexport const PasswordInput = ({\n value,\n dataTest,\n onChange,\n placeholder,\n id,\n required,\n}: Props & InputHTMLAttributes<HTMLInputElement>) => {\n return (\n <Input\n value={value}\n type=\"password\"\n dataTest={dataTest}\n onChange={onChange}\n placeholder={placeholder}\n id={id}\n required={required}\n />\n )\n}\n","import { Form } from './form'\nimport { Input } from './input'\nimport { EmailInput } from './email'\nimport { PasswordInput } from './password'\nimport { Button } from './button'\nimport { Checkbox } from './checkbox'\nimport { generateUID } from '../../lib/helpers'\nimport { Children, cloneElement, isValidElement, useRef } from 'react'\nimport { IndexSignature } from '../../types/global'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\nconst formComponents = {\n string: Input,\n password: PasswordInput,\n boolean: Checkbox,\n email: EmailInput,\n}\n\ninterface Props {\n schema: GuillotinaSchema\n formData?: IndexSignature\n onSubmit: (formData: IndexSignature, initialData: IndexSignature) => void\n actionName: string\n children?: React.ReactNode\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\n\nexport function FormBuilder({\n schema,\n formData,\n onSubmit,\n actionName,\n children,\n exclude = [],\n remotes = {},\n submitButton = true,\n}: Props) {\n const ref = useRef<IndexSignature | null>(null)\n const { properties, required } = schema\n const values = Object.assign({}, formData || {})\n\n // build initial state\n const initialState: IndexSignature = {}\n const fields = Object.keys(properties).filter((x) => !exclude.includes(x))\n\n fields.forEach((element) => {\n initialState[element] = values[element] || undefined\n })\n\n // Register remotes\n if (ref.current === null) {\n ref.current = {}\n Object.keys(remotes).forEach((item) => (ref.current![item] = remotes[item]))\n } else {\n // apply remote changes\n Object.keys(remotes).forEach((key) => {\n if (JSON.stringify(ref.current![key]) !== JSON.stringify(remotes[key])) {\n ref.current![key] = remotes[key]\n }\n })\n }\n\n ref.current = ref.current || {}\n const onUpdate = (field: string) => (value: boolean | string) => {\n ref.current![field] = value\n }\n\n const GetTag = ({ field }: { field: string }) => {\n const property = properties[field] as GuillotinaSchemaProperty\n const key = (property.widget ||\n property.type) as keyof typeof formComponents\n\n const Tag: React.ComponentType<any> = formComponents[key]\n\n const props = {\n value: initialState[field],\n onChange: onUpdate(field),\n placeholder: property.title || '',\n id: generateUID(),\n dataTest: `${field}TestInput`,\n required: false,\n }\n\n if (required.includes(field)) {\n props.required = true\n props.placeholder += ' *'\n }\n return <Tag {...props} />\n }\n\n const children_ = Children.map(children, (child) => {\n if (isValidElement(child)) {\n const props = { onChange: onUpdate }\n return cloneElement(child, props)\n }\n return child\n })\n\n const changes = () => {\n onSubmit(ref.current!, values)\n }\n\n return (\n <Form onSubmit={changes} dataTest={`formAddUserTest`}>\n {fields.map((field) => (\n <GetTag field={field} key={field} />\n ))}\n {children_}\n {submitButton && <Button>{actionName}</Button>}\n </Form>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { forwardRef, useState } from 'react'\nimport { IndexSignature } from '../../types/global'\n// @ TODO implement hasErrors\n\ninterface Props {\n error?: string\n errorZoneClassName?: string\n size?: number\n placeholder?: string\n id?: string\n className?: string\n classWrap?: string\n disabled?: boolean\n multiple?: boolean\n loading?: boolean\n onChange?: (value: string | string[]) => void\n options: { text: string; value: string }[]\n appendDefault?: boolean\n style?: IndexSignature\n dataTest?: string\n value?: string | string[]\n}\n\nexport const Select = forwardRef<HTMLSelectElement, Props>(\n (\n {\n options,\n error,\n errorZoneClassName,\n size = 1,\n placeholder,\n id,\n className = '',\n classWrap = '',\n multiple = false,\n loading = false,\n onChange,\n appendDefault = false,\n style = {},\n dataTest,\n value,\n disabled,\n },\n ref\n ) => {\n const intl = useIntl()\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev: React.ChangeEvent<HTMLSelectElement>) => {\n if (multiple) {\n let selectValue: string[] = []\n for (let i = 0; i < ev.target.selectedOptions.length; i++) {\n selectValue = selectValue.concat([ev.target.selectedOptions[i].value])\n }\n if (onChange) {\n onChange(selectValue)\n }\n } else {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n }\n\n if (appendDefault) {\n options = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n ].concat(options)\n }\n const statusClasses = error ? 'is-danger' : ''\n\n const cssWrap = [\n 'select',\n statusClasses,\n multiple ? 'is-multiple' : '',\n classWrap,\n ]\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssWrap)}>\n <select\n className={classnames(['', className])}\n size={multiple ? 5 : size}\n multiple={multiple}\n disabled={loading || disabled}\n onChange={onUpdate}\n ref={ref}\n style={style}\n data-test={dataTest}\n value={value}\n >\n {options.map(({ text, ...rest }, index) => (\n <option key={index.toString()} {...rest}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\nexport default Select\n","import { useTraversal } from '../contexts'\nimport { GuillotinaVocabulary } from '../types/guillotina'\nimport useSetState from './useSetState'\nimport { useEffect } from 'react'\n\ninterface State {\n data?: GuillotinaVocabulary\n loading: boolean\n error: any\n}\nexport function useVocabulary(vocabularyName: string, path?: string) {\n const traversal = useTraversal()\n\n const [vocabulary, setVocabulary] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const getPath = () => {\n if (path) return path\n return `${traversal.path}@vocabularies/${vocabularyName}`\n }\n\n useEffect(() => {\n const getVocabulary = async () => {\n if (\n vocabularyName &&\n vocabulary.data === undefined &&\n !vocabulary.loading\n ) {\n try {\n setVocabulary({ loading: true })\n const data = await traversal.client.get(getPath())\n const dataJson = await data.json()\n setVocabulary({ loading: false, data: dataJson })\n } catch (err) {\n setVocabulary({ loading: false, error: err, data: undefined })\n }\n }\n }\n getVocabulary()\n }, [vocabularyName, vocabulary, path])\n\n return vocabulary\n}\n","import { Select } from './select'\nimport { get } from '../../lib/utils'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { forwardRef } from 'react'\nimport { GuillotinaVocabularyItem } from '../../types/guillotina'\n\ninterface Props {\n vocabularyName: string\n className?: string\n classWrap?: string\n val?: string | string[]\n dataTest?: string\n multiple?: boolean\n onChange?: (value: string | string[]) => void\n appendDefault?: boolean\n id?: string\n placeholder?: string\n}\nexport const SelectVocabulary = forwardRef<HTMLSelectElement, Props>(\n (\n {\n vocabularyName,\n className,\n classWrap,\n val,\n dataTest,\n multiple,\n onChange,\n id,\n placeholder,\n },\n ref\n ) => {\n const vocabulary = useVocabulary(vocabularyName)\n\n const getOptions = () => {\n if (\n get<GuillotinaVocabularyItem | null>(vocabulary, 'data.items', null)\n ) {\n const vocData = (vocabulary?.data?.items ?? []).map((item) => {\n return {\n text: item.title,\n value: item.token,\n }\n })\n return vocData\n }\n\n return []\n }\n\n const getProps = () => {\n if (multiple) {\n const currentValue = val || []\n return {\n multiple: true,\n size: 5,\n value: currentValue,\n options: getOptions(),\n }\n }\n\n return {\n value: val ?? '',\n appendDefault: true,\n options: getOptions(),\n }\n }\n\n if (vocabulary.data === undefined || vocabulary.loading) {\n return <div />\n }\n\n return (\n <Select\n {...getProps()}\n className={className}\n classWrap={classWrap || 'is-fullwidth'}\n dataTest={dataTest}\n ref={ref}\n onChange={onChange}\n id={id}\n placeholder={placeholder}\n />\n )\n }\n)\n\nSelectVocabulary.displayName = 'SelectVocabulary'\n","import { useEffect, useRef, useState, useCallback } from 'react'\nimport { IndexSignature } from '../types/global'\n\n// Mostly inspired from\n// https://github.com/molefrog/wouter\n\nconst setURLParams = (p: URLSearchParams) => {\n return window.history.pushState(\n 0,\n '0',\n '' + '?' + p.toString().replace(/%2F/g, '/')\n )\n}\n\nconst clean = (to: IndexSignature) => {\n const current = new URLSearchParams()\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n}\n\nexport const useLocation = (): [\n URLSearchParams,\n (to: IndexSignature, replace?: boolean) => void,\n (param: string) => void,\n] => {\n const [path, update] = useState(currentSearchParams())\n const prevPath = useRef(path)\n\n useEffect(() => {\n patchHistoryEvents()\n\n // this function checks if the location has been changed since the\n // last render and updates the state only when needed.\n // unfortunately, we can't rely on `path` value here, since it can be stale,\n // that's why we store the last pathname in a ref.\n const checkForUpdates = () => {\n const pathname = currentSearchParams()\n prevPath.current !== pathname && update((prevPath.current = pathname))\n }\n\n const events = ['popstate', 'pushState', 'replaceState']\n events.map((e) => window.addEventListener(e, checkForUpdates))\n\n // it's possible that an update has occurred between render and the effect handler,\n // so we run additional check on mount to catch these updates. Based on:\n // https://gist.github.com/bvaughn/e25397f70e8c65b0ae0d7c90b731b189\n checkForUpdates()\n\n return () => {\n events.map((e) => window.removeEventListener(e, checkForUpdates))\n }\n }, [])\n\n // the 2nd argument of the `useLocation` return value is a function\n // that allows to perform a navigation.\n //\n // the function reference should stay the same between re-renders, so that\n // it can be passed down as an element prop without any performance concerns.\n const navigate = useCallback(\n (to: IndexSignature, replace?: boolean) => {\n if (replace) {\n clean(to)\n return\n }\n const current = new URLSearchParams(path.toString())\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n },\n [path]\n )\n\n const remove = useCallback(\n (param: string) => {\n const current = new URLSearchParams(path.toString())\n current.delete(param)\n setURLParams(current)\n },\n [path]\n )\n\n return [path, navigate, remove]\n}\n\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\n\nlet patched = 0\n\nconst patchHistoryEvents = () => {\n if (patched) return\n\n const originalPushState = window.history.pushState\n window.history.pushState = function (...args) {\n const result = originalPushState.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event('pushState')\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n\n const originalReplaceState = window.history.replaceState\n window.history.replaceState = function (...args) {\n const result = originalReplaceState.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event('replaceState')\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n\n return (patched = 1)\n}\n\nconst currentSearchParams = (path = window.location.search) =>\n new URLSearchParams(path)\n","import { useLocation } from '../hooks/useLocation'\nimport { ItemModel } from '../models'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\ninterface Props {\n aRef?: React.Ref<HTMLAnchorElement>\n model: ItemModel<SearchItem | GuillotinaCommonObject>\n children: React.ReactNode\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void\n}\n\nexport function Link({ aRef, model, children, ...props }: Props) {\n const [path, navigate] = useLocation()\n const aStyle = { textDecoration: 'none', color: 'currentColor' }\n\n function onClick(e: React.MouseEvent<HTMLAnchorElement>) {\n e.stopPropagation()\n if (actAsLink(e)) return\n e.preventDefault()\n navigate({ path: model.path }, true)\n if (props.onClick) props.onClick(e)\n }\n\n return (\n <a\n ref={aRef}\n href={`?${path}${model.id}/`}\n style={aStyle}\n onClick={onClick}\n >\n {children}\n </a>\n )\n}\n\nfunction actAsLink(e: React.MouseEvent<HTMLAnchorElement>) {\n return e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button !== 0\n}\n","import { useRef } from 'react'\nimport { Link } from './Link'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\nimport { SearchOrCommonObject } from '../types/guillotina'\n\ninterface Props<T extends SearchOrCommonObject = SearchOrCommonObject> {\n model: ItemModel<T>\n children: React.ReactNode\n style?: IndexSignature\n}\nexport function TdLink({ model, children, style = {} }: Props) {\n const link = useRef<HTMLAnchorElement>(null)\n\n function onClick() {\n if (link && link.current) {\n link.current.click()\n }\n }\n\n return (\n <td onClick={onClick} style={style}>\n <Link model={model} aRef={link}>\n {children}\n </Link>\n </td>\n )\n}\n","import { IndexSignature } from '../../types/global'\n\ninterface Props {\n style?: IndexSignature\n}\nexport const Loading = ({ style = {} }: Props) => (\n <div className=\"progress-line\" style={style}></div>\n)\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n name: string\n id: string\n onRemove?: () => void\n size?: string\n color?: string\n}\nexport const Tag = ({\n name,\n id,\n onRemove,\n size = 'is-medium',\n color = 'is-warning',\n}: Props) => (\n <span className={classnames(['tag', color, size])} data-test={`tag-${id}`}>\n {name}\n {onRemove !== undefined && (\n <button className=\"delete is-small\" onClick={() => onRemove()}></button>\n )}\n </span>\n)\n","import { MouseEvent } from 'react'\n\ninterface Props {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void\n className?: string\n children?: React.ReactNode\n}\nexport function Delete({ onClick, className = '', children = null }: Props) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`delete ${className}`}\n data-test=\"btnDeleteTest\"\n >\n {children}\n </button>\n )\n}\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n headers?: string[]\n className?: string\n children: React.ReactNode\n}\nexport function Table({ headers, children, className }: Props) {\n const parsedClassName = className\n ? className.split(' ')\n : ' is-full is-fullwidth is-narrow'.split(' ')\n return (\n <table className={classnames(['table', ...parsedClassName])}>\n <thead>\n <tr>\n {headers &&\n headers.map((item, idx) => <th key={item + idx}>{item}</th>)}\n </tr>\n </thead>\n <tbody>{children}</tbody>\n </table>\n )\n}\n","interface Props {\n isColor?: string\n children: React.ReactNode\n}\nexport function Notification({ isColor = '', children }: Props) {\n return (\n <div className={'notification is-' + isColor} data-test=\"notificationTest\">\n {children}\n </div>\n )\n}\n","import { LightFile } from '../types/global'\nimport { Auth } from './auth'\n\nexport class RestClient {\n url: string\n container: string\n auth: Auth\n\n constructor(url: string, container: string, auth: Auth) {\n this.auth = auth\n this.url = url\n this.container = container\n }\n\n async request(\n path: string,\n data?: RequestInit,\n headers?: HeadersInit,\n signal?: AbortSignal\n ) {\n if (path.indexOf(this.url) !== -1) {\n path = path.replace(this.url, '')\n }\n\n if (this.container !== '/' && path.indexOf(this.container) === -1) {\n path = `${this.container}${path}`\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`\n }\n const dataRequest = data || {}\n dataRequest.headers = this.getHeaders()\n if (headers) {\n dataRequest.headers = { ...dataRequest.headers, ...headers }\n }\n if (signal) {\n dataRequest.signal = signal\n }\n return await fetch(`${this.url}${path}`, dataRequest)\n }\n\n getHeaders(): HeadersInit {\n const authToken = this.auth.getToken()\n const headersInit: HeadersInit = {}\n\n if (!authToken) return headersInit\n\n headersInit.Accept = 'application/json'\n headersInit['Content-Type'] = 'application/json'\n headersInit.Authorization = 'Bearer ' + authToken\n return headersInit\n }\n\n async post(path: string, data: unknown) {\n return await this.request(path, {\n method: 'post',\n body: JSON.stringify(data),\n })\n }\n\n async get(path: string, signal?: AbortSignal) {\n return await this.request(path, undefined, undefined, signal)\n }\n\n async put(path: string, data: unknown) {\n return await this.request(path, {\n method: 'put',\n body: JSON.stringify(data),\n })\n }\n\n async patch(path: string, data: unknown) {\n return await this.request(path, {\n method: 'PATCH',\n body: JSON.stringify(data),\n })\n }\n\n async upload(path: string, data: LightFile) {\n const headers = this.getHeaders()\n const newHeaders: HeadersInit = {}\n newHeaders['Content-Type'] = data['content-type']\n newHeaders['X-UPLOAD-FILENAME'] = data.filename\n newHeaders['Content-Encoding'] = 'base64'\n return await this.request(\n path,\n {\n method: 'PATCH',\n body: data.data,\n },\n {\n ...headers,\n ...newHeaders,\n }\n )\n }\n\n async delete(path: string, data: unknown) {\n return await this.request(path, {\n method: 'delete',\n body: JSON.stringify(data),\n })\n }\n}\n","const SEP = '='\nconst DEFAULT_FIELD = 'title__in'\nconst CLEANER = '||'\n\nexport function parser(\n qs: string,\n defaultField: string | string[] | undefined = DEFAULT_FIELD\n): string[][] {\n if (qs.includes(SEP) && Array.isArray(defaultField)) {\n throw new Error('This option is not supported')\n }\n\n if (Array.isArray(defaultField)) {\n const orParser: string[] = []\n defaultField.forEach((field) => {\n const parsed = parser(qs, field)\n orParser.push(buildQs(parsed))\n })\n const result = [['__or', orParser.join('&')]]\n return result\n }\n let lastKey: string | undefined = undefined\n qs.trim()\n\n if (qs.includes('\"')) {\n qs = qs.replace(/\"(\\w+) (\\w+)\"/, `$1${CLEANER}$2`)\n }\n\n const qsSplit = qs.split(' ')\n return qsSplit.map((part) => {\n if (part.includes(CLEANER)) {\n part = part.replace('||', ' ')\n }\n if (!part.includes(SEP)) {\n return !lastKey ? [defaultField, part] : [lastKey, part]\n }\n const [key, val] = part.split(SEP)\n lastKey = key\n return [key, val]\n })\n}\n\nexport function buildQs(parsedQuery: string[][]): string {\n return parsedQuery\n .map(\n ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`\n )\n .join('&')\n}\n","import React from 'react'\nimport { TdLink } from '../components/TdLink'\nimport { Icon } from '../components/ui'\nimport { toQueryString } from './helpers'\nimport { RestClient } from './rest'\nimport { parser } from './search'\nimport { IndexSignature, LightFile } from '../types/global'\n\nimport { Auth } from './auth'\nimport {\n GuillotinaCommonObject,\n GuillotinaGroup,\n GuillotinaUser,\n ItemColumn,\n ItemColumnChild,\n ReturnSearchCompatible,\n SearchItem,\n} from '../types/guillotina'\n\nconst cacheTypes: IndexSignature = {}\nconst cacheSchemas: IndexSignature = {}\n\nexport class GuillotinaClient {\n rest: RestClient\n pathContainsContainer: boolean\n constructor(rest: RestClient, pathContainsContainer: boolean) {\n this.rest = rest\n this.pathContainsContainer = pathContainsContainer\n }\n\n getContainerFromPath(path: string) {\n if (this.pathContainsContainer) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n const parts = path.split('/')\n return `${parts[0]}/${parts[1]}/`\n }\n return ''\n }\n\n clearContainerFromPath(path: string) {\n if (this.pathContainsContainer) {\n return `/${this.cleanPath(path)}`\n }\n return path\n }\n\n async getContext(path: string) {\n switch (path) {\n case '/':\n return await this.rest.get('')\n default:\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n }\n\n async get(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n return await this.rest.get(path)\n }\n\n getQueryParamsSearchFunction(name: string) {\n if (name === 'getQueryParamsElasticsearch') {\n return this.getQueryParamsElasticsearch\n }\n return this.getQueryParamsPostresql\n }\n getQueryParamsPostresql({\n start = 0,\n pageSize = 10,\n withDepth = true,\n }: {\n start?: number\n pageSize?: number\n path?: string\n withDepth?: boolean\n }) {\n let result = []\n\n result = [\n ...parser(start.toString(), 'b_start'),\n ...parser(pageSize.toString(), 'b_size'),\n ]\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n return result\n }\n\n getQueryParamsElasticsearch({\n start = 0,\n pageSize = 10,\n path,\n withDepth = true,\n }: {\n start?: number\n pageSize?: number\n path: string\n withDepth?: boolean\n }) {\n let result = []\n let containerPath = this.getContainerFromPath(path)\n\n if (containerPath.startsWith('/')) {\n containerPath = containerPath.slice(1)\n }\n let objectPath = path.replace(containerPath, '')\n if (objectPath.endsWith('/')) {\n objectPath = objectPath.slice(0, -1)\n }\n\n result = [\n ...parser(start.toString(), '_from'),\n ...parser(pageSize.toString(), '_size'),\n ...parser('*', '_metadata'),\n ]\n\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n if (objectPath !== '') {\n result = [...result, ...parser(objectPath, 'path__wildcard')]\n }\n return result\n }\n\n getItemsColumn<\n T extends SearchItem | GuillotinaCommonObject,\n >(): ItemColumn<T>[] {\n const smallcss = { width: 25 }\n const mediumcss = { width: 120 }\n\n return [\n {\n key: 'icon',\n label: '',\n isSortable: false,\n child: ({ model }: ItemColumnChild<T>) => (\n <td style={smallcss}>{<Icon icon={model.icon} />}</td>\n ),\n },\n {\n label: 'type',\n key: 'type_name',\n isSortable: false,\n child: ({ model }: ItemColumnChild<T>) => (\n <TdLink style={smallcss} model={model}>\n <span className=\"tag\">{model.type}</span>\n </TdLink>\n ),\n },\n {\n label: 'id/name',\n key: 'title',\n isSortable: true,\n child: ({ model, search }: ItemColumnChild<T>) => (\n <TdLink model={model}>\n {model.name}\n {search && (\n <React.Fragment>\n <br />\n <span className=\"is-size-7 tag is-light\">{model.path}</span>\n </React.Fragment>\n )}\n </TdLink>\n ),\n },\n {\n label: 'created',\n key: 'creation_date',\n isSortable: true,\n child: ({ model }: ItemColumnChild<T>) => {\n return (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {model.created}\n </td>\n )\n },\n },\n {\n label: 'modified',\n key: 'modification_date',\n isSortable: true,\n child: ({ model }: ItemColumnChild<T>) => (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {model.updated}\n </td>\n ),\n },\n ]\n }\n\n // BBB API changes. Compat G5 and G6\n applyCompat<T>(data: { items: T[]; items_total: number }) {\n const result: ReturnSearchCompatible<T> = {\n ...data,\n member: data.items,\n items_count: data.items_total,\n }\n return result\n }\n\n async search<T>(\n path: string,\n params: string | IndexSignature<string>,\n container = false,\n prepare = true,\n signal?: AbortSignal\n ) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n\n if (container) {\n path = this.getContainerFromPath(path)\n }\n\n const query = prepare\n ? toQueryString(params as IndexSignature<string>)\n : params\n const url = `${path}@search?${query}`\n const res = await this.rest.get(url, signal)\n const data = await res.json()\n return this.applyCompat<T>(data)\n }\n\n async canido(path: string, permissions: string | string[]) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (Array.isArray(permissions)) {\n permissions.join(',')\n }\n const url = `${path}@canido?permissions=${permissions}`\n return await this.rest.get(url)\n }\n\n async createObject(path: string, data: unknown) {\n return await this.rest.post(path, data)\n }\n\n cleanPath(path: string) {\n const url = path.split('/').slice(3)\n return `${url.join('/')}`\n }\n\n async delete(path: string, data: unknown) {\n return await this.rest.delete(path, data)\n }\n\n async create(path: string, data: unknown) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.post(path, data)\n }\n\n async post(path: string, data: unknown) {\n return await this.create(path, data)\n }\n\n async patch(path: string, data: unknown) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.patch(path, data)\n }\n\n async upload(path: string, file: LightFile) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.upload(path, file)\n }\n\n async download(path: string) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n\n async getTypeSchema(path: string, name: string) {\n if (!cacheSchemas[name]) {\n const url = this.getContainerFromPath(path)\n // todo: handle db case (only addable containers)\n const res = await this.rest.get(`${url}@types/${name}`)\n cacheSchemas[name] = await res.json()\n }\n return cacheSchemas[name]\n }\n\n async getAddons(path: string) {\n return await this.rest.get(`${path}@addons`)\n }\n\n async installAddon(path: string, key: string) {\n return await this.rest.post(`${path}@addons`, { id: key })\n }\n\n async removeAddon(path: string, key: string) {\n return await this.rest.delete(`${path}@addons`, { id: key })\n }\n\n async getGroups(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@groups`\n return await this.rest.get(endpoint)\n }\n\n async getUsers(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@users`\n return await this.rest.get(endpoint)\n }\n\n async getPrincipals(path: string): Promise<{\n groups: GuillotinaGroup[]\n users: GuillotinaUser[]\n }> {\n const groups = this.getGroups(path)\n const users = this.getUsers(path)\n const [responseGroups, responseUsers] = await Promise.all([groups, users])\n let groupsData: GuillotinaGroup[] = []\n let usersData: GuillotinaUser[] = []\n\n if (responseGroups.ok) {\n const groupsDataResponse = await responseGroups.json()\n groupsData = groupsDataResponse.map(\n (group: {\n '@name': string\n id: string\n title: string\n users: string[]\n roles: string[]\n }) => {\n return {\n '@name': group.id,\n user_roles: group.roles,\n users: group.users,\n }\n }\n )\n }\n if (responseUsers) {\n const usersDataResponse = await responseUsers.json()\n usersData = usersDataResponse.map(\n (user: {\n '@name': string\n id: string\n fullname: string\n email: string\n roles: string[]\n }) => {\n return {\n '@name': user.id,\n user_roles: user.roles,\n fullname: user.fullname,\n email: user.email,\n }\n }\n )\n }\n return {\n groups: groupsData,\n users: usersData,\n }\n }\n\n async getRoles(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@available-roles`\n return await this.rest.get(endpoint)\n }\n\n async getAllPermissions(path: string) {\n // paths used to query the API always has to start without a \"/\"\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n const req = await this.rest.get(path + '@all_permissions')\n const resp = await req.json()\n const permissions = Array.from(new Set(extractPermissions(resp)))\n return permissions\n }\n\n async getTypes(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (!cacheTypes[path]) {\n const types = await this.rest.get(path + '@addable-types')\n if (types.status === 401 || types.status === 404) {\n cacheTypes[path] = []\n } else {\n const res = await types.json()\n cacheTypes[path] = res\n }\n }\n return cacheTypes[path]\n }\n}\n\nexport function getClient(url: string, container: string, auth: Auth) {\n return new GuillotinaClient(\n new RestClient(url, container, auth),\n container === '/'\n )\n}\n\nexport const lightFileReader = (file: File) => {\n return new Promise<LightFile>((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsArrayBuffer(file)\n reader.onloadend = (e) => {\n const fileData = e?.target?.result\n if (fileData) {\n resolve({\n filename: file.name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''),\n data: fileData,\n 'content-type': file.type,\n })\n } else {\n reject('Error reading file')\n }\n }\n })\n}\n\nconst extractPermissions = (data: IndexSignature) => {\n let result: string[] = []\n if (typeof data !== 'object') {\n // do nothing\n } else if (!Array.isArray(data) && data.permission) {\n result = result.concat([data.permission])\n } else if (!Array.isArray(data)) {\n Object.keys(data).map(\n (key) => (result = result.concat(extractPermissions(data[key])))\n )\n } else if (Array.isArray(data)) {\n data.map((item) => (result = result.concat(extractPermissions(item))))\n }\n return result\n}\n","import { ChangeEvent } from 'react'\nimport { lightFileReader } from '../../lib/client.js'\nimport { useIntl } from 'react-intl'\nimport { LightFile } from '../../types/global'\n\ninterface Props {\n label?: string\n dataTest?: string\n onChange: (file: LightFile) => void\n}\nexport function FileUpload({ label, onChange, dataTest }: Props) {\n const intl = useIntl()\n const changed = async (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const fileToUpload = await lightFileReader(event.target.files[0])\n onChange(fileToUpload)\n }\n }\n\n return (\n <div className=\"file\">\n <label className=\"file-label\">\n <input\n className=\"file-input\"\n type=\"file\"\n name=\"file\"\n onChange={changed}\n data-test={dataTest}\n />\n <span className=\"file-cta\">\n <span className=\"file-icon\">\n <i className=\"fas fa-upload\"></i>\n </span>\n <span className=\"file-label\">\n {label ||\n intl.formatMessage({\n id: 'choose_file',\n defaultMessage: 'Choose a file',\n })}\n </span>\n </span>\n </label>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { ChangeEvent, forwardRef, useState } from 'react'\n\ninterface Props {\n value: string\n classWrap?: string\n rows?: number\n className?: string\n onChange?: (value: string) => void\n dataTest?: string\n error?: string\n errorZoneClassName?: string\n placeholder?: string\n id?: string\n}\nexport const Textarea = forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n value = '',\n classWrap = '',\n rows = 5,\n className = '',\n onChange,\n dataTest,\n error,\n errorZoneClassName,\n placeholder,\n id,\n },\n ref\n ) => {\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev: ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n const statusClasses = error ? 'is-danger' : ''\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classWrap}>\n <textarea\n className={classnames(['textarea', className, statusClasses])}\n rows={rows}\n onChange={onUpdate}\n value={value}\n data-test={dataTest}\n ref={ref}\n />\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\nexport default Textarea\n","import { useEffect, useRef } from 'react'\n\nconst defaultEvents = ['mousedown', 'touchstart']\nconst on = (\n obj: Document,\n type: keyof DocumentEventMap,\n handler: (ev: Event) => void\n) => obj.addEventListener(type, handler)\nconst off = (\n obj: Document,\n type: keyof DocumentEventMap,\n handler: (ev: Event) => void\n) => obj.removeEventListener(type, handler)\n\nexport default function useClickAway(\n ref: React.RefObject<HTMLElement>,\n onClickAway: (event: Event) => void,\n events = defaultEvents\n) {\n const savedCallback = useRef(onClickAway)\n\n useEffect(() => {\n savedCallback.current = onClickAway\n }, [onClickAway])\n\n useEffect(() => {\n const handler = (event: Event) => {\n const { current: el } = ref\n el && !el.contains(event.target as Node) && savedCallback.current(event)\n }\n\n for (const eventName of events) {\n on(document, eventName as keyof DocumentEventMap, handler)\n }\n\n return () => {\n for (const eventName of events) {\n off(document, eventName as keyof DocumentEventMap, handler)\n }\n }\n }, [events, ref])\n}\n","import { useState, useEffect, useCallback, useRef } from 'react'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { debounce, get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\nimport { IndexSignature } from '../../types/global'\n\ninterface State {\n page: number\n items?: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange?: (value: string) => void\n error?: string\n errorZoneClassName?: string\n traversal: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value?: string\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInput = ({\n onChange,\n error,\n errorZoneClassName,\n traversal,\n path = undefined,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = undefined,\n typeNameQuery = undefined,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef<HTMLInputElement>(null)\n const { PageSize, SearchEngine } = useConfig()\n const [valueLabel, setValueLabel] = useState<Partial<SearchItem> | undefined>(\n undefined\n )\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef as React.RefObject<HTMLElement>, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value) {\n let searchTermQs = ''\n const searchTermParsed = [`id`, value]\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: PageSize,\n withDepth: false,\n })\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce<IndexSignature<string>>(\n (result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n },\n {}\n )\n setValueLabel(newValuesLabel)\n }\n }\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n console.log('handle search input')\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed: string[][] = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0 ||\n sortParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const renderTextItemOptionFn = (item: SearchItem) => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (value) {\n inicializeLabels()\n } else {\n setValueLabel({})\n }\n }, [path, value])\n\n if (valueLabel === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n if (ev.target instanceof HTMLElement) {\n ev.target.blur()\n }\n\n setIsOpen(!isOpen)\n console.log('on clic btn', options)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>\n {value\n ? get(valueLabel, value, value)\n : intl.formatMessage(genericMessages.choose)}\n </span>\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value === item.id ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange) {\n onChange(item.id)\n }\n setIsOpen(false)\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { useState, useCallback, useRef, useEffect } from 'react'\n\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { debounce, get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\nimport { IndexSignature } from '../../types/global'\n\ninterface State {\n page: number\n items?: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange: (value: string[]) => void\n error?: string\n errorZoneClassName?: string\n traversal: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value: string[]\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInputList = ({\n onChange,\n error,\n errorZoneClassName,\n traversal,\n path = undefined,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = undefined,\n typeNameQuery = undefined,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [valuesLabels, setValuesLabels] = useState<IndexSignature | undefined>(\n undefined\n )\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef<HTMLInputElement>(null)\n const { PageSize, SearchEngine } = useConfig()\n const [isLoadingData, setIsLoadingData] = useState(false)\n\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef as React.RefObject<HTMLElement>, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed: string[][] = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems: SearchItem[] =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value.length > 0) {\n setIsLoadingData(true)\n let searchTermQs = ''\n const searchTermParsed = ['__or', `id=${value.join('%26id=')}`]\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce<IndexSignature<string>>(\n (result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n },\n {}\n )\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n }\n\n const renderTextItemOptionFn = (\n item: SearchItem\n ): string | React.ReactNode => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get<string>(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (!options.loading && !options.items && value.length > 0) {\n inicializeLabels()\n } else if (value.length === 0) {\n setValuesLabels({})\n }\n }, [path, options.loading, options.items])\n\n if (isLoadingData || valuesLabels === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div className=\"tags mb-2\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {get(valuesLabels, tag, tag)}\n <button\n className=\"delete is-small\"\n onClick={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }}\n ></button>\n </div>\n ))}\n </div>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n setIsOpen(!isOpen)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>{intl.formatMessage(genericMessages.choose)}</span>\n\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value.includes(item.id) ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange && !value.includes(item.id)) {\n setValuesLabels({\n ...valuesLabels,\n [item.id]: get(item, labelProperty, item.id),\n })\n onChange([...value, item.id])\n }\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { InputHTMLAttributes, forwardRef, useState } from 'react'\nimport { Input } from './input'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value: string[]\n onChange: (value: string[]) => void\n dataTest?: string\n id?: string\n}\nexport const InputList = forwardRef<\n HTMLInputElement,\n InputHTMLAttributes<HTMLInputElement> & Props\n>(({ value, onChange, dataTest, id }, ref) => {\n const intl = useIntl()\n const [inputValue, setInputValue] = useState('')\n const addTags = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Enter' &&\n (event.target as HTMLInputElement).value !== ''\n ) {\n onChange([...value, (event.target as HTMLInputElement).value])\n setInputValue('')\n }\n }\n\n return (\n <div className=\"control\">\n {(value ?? []).length > 0 && (\n <div className=\"tags\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {tag}\n <button\n className=\"delete is-small\"\n type=\"button\"\n onClick={() =>\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }\n />\n </div>\n ))}\n </div>\n )}\n\n <Input\n type=\"text\"\n id={id}\n placeholder={intl.formatMessage({\n id: 'press_enter_to_add_value',\n defaultMessage: 'Press enter to add value',\n })}\n onKeyUp={(event) => addTags(event)}\n value={inputValue}\n ref={ref}\n dataTest={dataTest}\n onChange={(value) => {\n setInputValue(value)\n }}\n />\n </div>\n )\n})\n\nInputList.displayName = 'InputList'\nexport default InputList\n","import { useState, useRef } from 'react'\nimport useClickAway from '../../hooks/useClickAway'\n\ninterface Props {\n children: React.ReactNode\n disabled?: boolean\n id?: string\n isRight?: boolean\n onChange: (value: string) => void\n optionDisabledWhen?: (option: any) => boolean\n options: { text: string; value: string }[]\n}\n\nexport default function Dropdown({\n children,\n disabled,\n id,\n isRight,\n onChange,\n optionDisabledWhen,\n options,\n}: Props) {\n const ref = useRef<HTMLDivElement>(null)\n const [isActive, setIsActive] = useState(false)\n const position = isRight ? 'is-right' : ''\n const status = isActive\n ? `dropdown ${position} is-active`\n : `dropdown ${position}`\n\n useClickAway(ref as React.RefObject<HTMLElement>, () => {\n setIsActive(false)\n })\n\n return (\n <div ref={ref} className={status}>\n <div className=\"dropdown-trigger\">\n <button\n className=\"button is-size-7\"\n onClick={() => setIsActive(!isActive)}\n aria-haspopup=\"true\"\n disabled={disabled}\n aria-controls={id}\n >\n {children}\n </button>\n </div>\n <div className=\"dropdown-menu\" id={id} role=\"menu\">\n <div className=\"dropdown-content\">\n {options.map((option) => {\n const disabled =\n typeof optionDisabledWhen === 'function'\n ? optionDisabledWhen(option)\n : false\n\n return (\n <a\n className={\n disabled ? 'dropdown-item is-active' : 'dropdown-item'\n }\n data-test={`dropdownItemTest-${option.value.toLowerCase()}`}\n key={option.text}\n onClick={disabled ? undefined : () => onChange(option.value)}\n style={\n disabled\n ? {\n cursor: 'not-allowed',\n color: 'black',\n opacity: 0.5,\n backgroundColor: '#eeeeee',\n }\n : {}\n }\n >\n {option.text}\n </a>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import { Button } from '../input/button'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useState } from 'react'\nimport { useRef } from 'react'\nimport { useEffect } from 'react'\nimport { Icon } from '../ui'\nimport { get } from '../../lib/utils'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { EditableFieldValue, LightFile } from '../../types/global'\nimport { GuillotinaSchemaProperty } from '../../types/guillotina'\n\ninterface Props {\n field: string\n value: EditableFieldValue\n ns?: string\n schema?: GuillotinaSchemaProperty\n modifyContent?: boolean\n required?: boolean\n}\n\nexport function EditableField({\n field,\n value,\n ns,\n schema = undefined,\n modifyContent,\n required,\n}: Props) {\n const intl = useIntl()\n const ref = useRef<HTMLElement>(null)\n const [isEdit, setEdit] = useState(false)\n const [val, setValue] = useState(value)\n const { patch, loading, Ctx } = useCrudContext()\n const { fieldHaveDeleteButton } = useConfig()\n\n const EditComponent = Ctx.registry.getComponent('EditComponent')\n const RenderFieldComponent = Ctx.registry.getComponent('RenderFieldComponent')\n\n useEffect(() => {\n if (isEdit && ref.current) {\n ref.current.focus()\n }\n })\n\n const canModified =\n schema !== undefined && modifyContent && !get(schema, 'readonly', false)\n\n const saveField = async (\n ev: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (ev) ev.preventDefault()\n\n if (!field) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_provide_key_name),\n 'danger'\n )\n return\n }\n\n if (!val && required) {\n Ctx.flash(\n intl.formatMessage(genericMessages.mandatory_field, { field }),\n 'danger'\n )\n return\n }\n\n if (schema?.widget === 'file') {\n const value = val as LightFile\n\n if (value) {\n value['filename'] = unescape(encodeURIComponent(value['filename']))\n }\n const endpoint = `${Ctx.path}@upload/${field}`\n const req = await Ctx.client.upload(endpoint, value)\n if (req.status !== 200) {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.error_upload_file),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.file_uploaded),\n 'success'\n )\n }\n } else {\n const data = ns ? { [ns]: { [field]: val } } : { [field]: val }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_updated, { field }),\n 'success'\n )\n }\n }\n\n setEdit(false)\n Ctx.refresh()\n }\n\n const deleteField = async (\n ev: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (ev) ev.preventDefault()\n if (schema?.widget === 'file') {\n if (!field || (!val && required)) {\n Ctx.flash(\n intl.formatMessage(genericMessages.can_not_delete_field, { field }),\n 'danger'\n )\n return\n }\n\n const data = ns ? { [ns]: { [field]: null } } : { [field]: null }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_deleted, { field }),\n 'success'\n )\n }\n\n setEdit(false)\n Ctx.refresh()\n } else if (schema?.type === 'string' && schema?.enum) {\n setValue(null)\n } else if (schema?.type === 'array' && schema?.items?.type === 'string') {\n setValue([])\n }\n }\n\n return (\n <>\n {!isEdit && (\n <div\n className={canModified ? 'editable' : ''}\n onClick={() => {\n setEdit(!!canModified)\n }}\n data-test={`editableFieldTest-${field}`}\n >\n <RenderFieldComponent\n schema={schema}\n field={field}\n val={val}\n modifyContent={modifyContent}\n />\n {canModified && <Icon icon=\"fas fa-edit\" />}\n </div>\n )}\n\n {isEdit && (\n <div className=\"field\" data-test={`editableFieldTest-${field}`}>\n <div className=\"control\">\n <EditComponent\n ref={ref}\n schema={schema}\n val={val}\n setValue={setValue}\n dataTest={`editableFieldEditTest`}\n />\n </div>\n <div className=\"field is-grouped\">\n <div className=\"control\">\n <Button\n className=\"is-small is-primary\"\n loading={loading}\n onClick={saveField}\n dataTest=\"editableFieldBtnSaveTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n <div className=\"control\">\n <Button\n className=\"is-small\"\n onClick={() => setEdit(false)}\n dataTest=\"editableFieldBtnCancelTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </Button>\n </div>\n {!required && schema && fieldHaveDeleteButton(schema) && (\n <div className=\"control\">\n <Button\n className=\"is-small is-danger\"\n onClick={deleteField}\n dataTest=\"editableFieldBtnDeleteTest\"\n >\n {intl.formatMessage(genericMessages.delete)}\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface DownloadFieldProps {\n value: {\n data: {\n filename: string\n content_type: string\n }\n field: string\n }\n}\nexport const DownloadField = ({ value }: DownloadFieldProps) => {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { data, field } = value\n\n const getField = async (downloadFile: boolean) => {\n const endpoint = `${Ctx.path}@download/${field}`\n const res = await Ctx.client.download(endpoint)\n const text = await res.blob()\n const blob = new Blob([text], {\n type: data.content_type,\n })\n const url = window.URL.createObjectURL(blob)\n\n // Create blob link to download\n const link = document.createElement('a')\n link.href = url\n if (downloadFile) {\n link.setAttribute('download', `${data.filename}`)\n } else {\n link.setAttribute('target', `_blank`)\n }\n\n document.body.appendChild(link)\n link.click()\n setTimeout(function () {\n // For Firefox it is necessary to delay revoking the ObjectURL\n window.URL.revokeObjectURL(url)\n link.parentNode?.removeChild(link)\n }, 100)\n }\n\n return (\n <div className=\"field\">\n <div className=\"label\">{data.filename}</div>\n <div className=\"columns\">\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-left\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(false)\n }}\n >\n {intl.formatMessage(genericMessages.open)}\n </button>\n </div>\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-right\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(true)\n }}\n >\n {intl.formatMessage(genericMessages.download)}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { DownloadField } from './downloadField'\nimport { IntlShape, useIntl } from 'react-intl'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { buildQs } from '../../lib/search'\nimport { useTraversal } from '../../contexts'\nimport { useConfig } from '../../hooks/useConfig'\nimport {\n GuillotinaSchemaProperty,\n GuillotinaVocabularyItem,\n SearchItem,\n} from '../../types/guillotina'\nimport { EditableFieldValue, IndexSignature } from '../../types/global'\n\nconst plain = ['string', 'number', 'boolean']\ntype PlainType = string | boolean | number\n\ninterface RenderFieldProps {\n value: EditableFieldValue\n Widget?: React.ComponentType<{\n value: EditableFieldValue\n schema?: GuillotinaSchemaProperty\n modifyContent?: boolean\n }>\n schema?: GuillotinaSchemaProperty\n}\n\nexport function RenderField({ value, Widget, schema }: RenderFieldProps) {\n if (value === null || value === undefined) return ''\n\n if (Widget) {\n return <Widget value={value} schema={schema} />\n }\n\n const type = typeof value\n if (plain.includes(type)) {\n return value as PlainType\n }\n if (type === 'object') {\n if (Array.isArray(value)) {\n return value.map((item: EditableFieldValue, index) => (\n <div key={`renderField_${index}_${schema?.title}`}>\n <RenderField value={item} />\n </div>\n ))\n }\n if (schema?.properties?.key !== undefined) {\n return Object.keys(value).map((key) => (\n <FieldValue\n field={get(schema, `properties.${key}.title`, key)}\n schema={schema.properties!.key as GuillotinaSchemaProperty}\n value={get(value as IndexSignature, key, {})}\n key={key}\n />\n ))\n }\n }\n return <p>No render for {JSON.stringify(value)}</p>\n}\n\ninterface FieldValueProps {\n field: string\n value: EditableFieldValue\n schema: GuillotinaSchemaProperty\n}\nconst FieldValue = ({ field, value, schema }: FieldValueProps) => (\n <div className=\"field\">\n <div className=\"label\">{field}</div>\n <div className=\"value\">\n <RenderFieldComponent val={value} schema={schema} field={field} />\n </div>\n </div>\n)\n\nconst DEFAULT_VALUE_NO_EDITABLE_FIELD = ' -- '\nconst getDefaultValueEditableField = (intl: IntlShape) => {\n return intl.formatMessage({\n id: 'default_value_editable_field',\n defaultMessage: 'Click to edit',\n })\n}\n\ninterface SearchRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const SearchRenderField = ({\n schema,\n value,\n modifyContent,\n}: SearchRenderFieldProps) => {\n const intl = useIntl()\n const [valuesLabels, setValuesLabels] = useState<string[]>([])\n const [isLoadingData, setIsLoadingData] = useState(false)\n const traversal = useTraversal()\n const { SearchEngine } = useConfig()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n useEffect(() => {\n const fetchData = async (valuesToSearch: string[]) => {\n setIsLoadingData(true)\n let searchTermQs = ''\n\n const searchTermParsed = ['__or', `id=${valuesToSearch.join('%26id=')}`]\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n\n if (searchTermParsed.length > 0 || qsParsed.length > 0) {\n searchTermQs = buildQs([searchTermParsed, ...qsParsed])\n }\n const data = await traversal.client.search<SearchItem>(\n traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n\n const newValuesLabel = data.items.map((item) => {\n return get(item, schema?.labelProperty ?? 'title', item.id)\n })\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n\n let valuesToSearch: string[] = []\n if (typeof value === 'string' && value) {\n valuesToSearch = [value]\n } else if (Array.isArray(value)) {\n valuesToSearch = value\n }\n if (valuesToSearch.length > 0) {\n fetchData(valuesToSearch)\n } else {\n setValuesLabels([])\n }\n }, [value])\n\n const getRenderValue = () => {\n if (value === undefined) {\n if (modifyContent) {\n return DEFAULT_VALUE_EDITABLE_FIELD\n }\n return DEFAULT_VALUE_NO_EDITABLE_FIELD\n }\n if (isLoadingData) {\n return 'Loading...'\n }\n\n return valuesLabels\n }\n\n return <RenderField value={getRenderValue()} />\n}\n\ninterface VocabularyRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const VocabularyRenderField = ({\n schema,\n value,\n modifyContent,\n}: VocabularyRenderFieldProps) => {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const vocabularyName =\n schema?.items?.vocabularyName || schema?.vocabularyName || ''\n const vocabulary = useVocabulary(vocabularyName)\n\n const getRenderProps = () => {\n const renderProps = {\n value:\n value ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n }\n\n if (schema?.vocabularyName) {\n const vocabularyValue = get<GuillotinaVocabularyItem[]>(\n vocabulary,\n 'data.items',\n []\n ).find((item) => item.token === value)\n renderProps['value'] = vocabularyValue?.title ?? ''\n } else {\n renderProps['value'] = ((renderProps['value'] as string[]) ?? []).map(\n (value: string) => {\n return (\n get<GuillotinaVocabularyItem[]>(vocabulary, 'data.items', []).find(\n (item) => item.token === value\n )?.title ?? ''\n )\n }\n )\n }\n\n return renderProps\n }\n return <RenderField {...getRenderProps()} />\n}\n\ninterface RenderFieldComponentProps {\n schema: GuillotinaSchemaProperty\n field: string\n val: EditableFieldValue\n modifyContent?: boolean\n}\nexport function RenderFieldComponent({\n schema,\n field,\n val,\n modifyContent,\n}: RenderFieldComponentProps) {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const getRenderProps = () => {\n const renderProps: {\n value: EditableFieldValue\n schema: GuillotinaSchemaProperty\n Widget?: React.ComponentType<any>\n } = {\n value:\n val ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n schema: schema,\n }\n if (val && schema?.widget === 'file') {\n renderProps['value'] = {\n data: val,\n field: field,\n }\n renderProps['Widget'] = DownloadField\n } else if (schema?.type === 'boolean') {\n renderProps['value'] = val?.toString() ?? renderProps['value']\n } else if (val && schema?.type === 'datetime') {\n renderProps['value'] = new Date(val as string).toLocaleString()\n } else if (schema?.items?.vocabularyName || schema?.vocabularyName) {\n renderProps['Widget'] = VocabularyRenderField\n } else if (\n schema?.widget === 'search' ||\n schema?.widget === 'search_list'\n ) {\n renderProps['Widget'] = SearchRenderField\n renderProps['value'] = val as string | string[]\n }\n return renderProps\n }\n\n return <RenderField {...getRenderProps()} />\n}\n","import { Textarea } from '../input/textarea'\nimport { Checkbox } from '../input/checkbox'\nimport { FileUpload } from '../input/upload'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { InputList } from '../input/input_list'\nimport { get } from '../../lib/utils'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { SearchInputList } from '../input/search_input_list'\nimport { SearchInput } from '../input/search_input'\nimport { useTraversal } from '../../contexts'\nimport { Ref, forwardRef } from 'react'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport {\n EditableFieldValue,\n IndexSignature,\n LightFile,\n} from '../../types/global'\n\ninterface Props {\n schema: GuillotinaSchemaProperty\n val: EditableFieldValue\n setValue: (value: EditableFieldValue) => void\n dataTest?: string\n className?: string\n placeholder?: string\n id?: string\n required?: boolean\n}\n\nexport const EditComponent = forwardRef(\n (\n {\n schema,\n val,\n setValue,\n dataTest,\n className,\n placeholder,\n id,\n required,\n }: Props,\n ref\n ) => {\n const traversal = useTraversal()\n\n if (schema?.widget === 'search_list') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInputList\n value={(val || []) as string[]}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery}\n />\n </>\n )\n } else if (schema?.widget === 'search') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInput\n value={val as string}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery}\n />\n </>\n )\n } else if (schema?.widget === 'textarea' || schema?.widget === 'richtext') {\n return (\n <Textarea\n value={(val || '') as string}\n className={className}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLTextAreaElement>}\n dataTest={dataTest}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'boolean') {\n return (\n <Checkbox\n checked={Boolean(val)}\n className={className}\n onChange={(ev) => setValue(ev)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.type === 'array') {\n if (schema.items && schema.items.type === 'string') {\n if (schema.items.vocabularyName) {\n return (\n <SelectVocabulary\n vocabularyName={get(schema, 'items.vocabularyName', '')}\n val={(val || []) as string[]}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n multiple\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.items?.vocabulary) {\n return (\n <Select\n value={(val || []) as string[]}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={schema?.items.vocabulary.map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n multiple\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n }\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <InputList\n value={(val || []) as string[]}\n className={className}\n onChange={(val) => setValue(val as string[])}\n ref={ref as Ref<HTMLInputElement>}\n dataTest={dataTest}\n />\n </>\n )\n } else if (schema?.widget === 'file') {\n const value = val as GuillotinaFile\n return (\n <FileUpload\n onChange={(ev) => setValue(ev as LightFile)}\n label={get(value, 'filename', undefined)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.widget === 'select' && schema.type === 'string') {\n if (schema?.vocabularyName) {\n return (\n <SelectVocabulary\n val={(val || '') as string}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n vocabularyName={get(schema, 'vocabularyName', '')}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n\n return (\n <Select\n value={(val || '') as string}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={(schema?.vocabulary ?? []).map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'object' && schema.widget !== 'file') {\n const value = val as IndexSignature\n return (\n <>\n {schema.title && <h4 className=\"subtitle mt-2\">{schema.title}</h4>}\n {Object.keys(get(schema, 'properties', {})).map((key) => {\n const subSchema = get<GuillotinaSchemaProperty | null>(\n schema,\n `properties.${key}`,\n null\n )\n const requiredFields: string[] = get(schema, 'required', [])\n if (!subSchema) return null\n return (\n <EditComponent\n key={`${id}[${key}]`}\n id={`${id}[${key}]`}\n schema={subSchema}\n val={value && key in value ? value[key] : ''}\n placeholder={subSchema?.title ?? ''}\n required={requiredFields.includes(key)}\n setValue={(ev) => {\n setValue({ ...value, [key]: ev } as IndexSignature)\n }}\n dataTest={`${key}TestInput`}\n />\n )\n })}\n </>\n )\n }\n const getInputType = () => {\n switch (schema?.type) {\n case 'integer':\n return 'number'\n case 'date':\n return 'date'\n case 'datetime':\n return 'datetime-local'\n case 'time':\n return 'time'\n default:\n return 'text'\n }\n }\n return (\n <Input\n value={(val || '') as string}\n className={className}\n dataTest={dataTest}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLInputElement>}\n type={getInputType()}\n required={required}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n)\n\nEditComponent.displayName = 'EditComponent'\nexport default EditComponent\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\ninterface Props {\n properties: {\n file: GuillotinaSchemaProperty\n }\n values: {\n file: GuillotinaFile\n }\n}\n\nexport function IAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'attachment_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values.file}\n ns=\"guillotina.behaviors.attachment.IAttachment\"\n schema={properties.file}\n modifyContent={modifyContent && ['file'].includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { Input } from '../input/input'\nimport { FileUpload } from '../input/upload'\nimport { Button } from '../input/button'\nimport { useState } from 'react'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport ErrorZone from '../error_zone'\nimport { EditableField } from '../fields/editableField'\nimport { Delete } from '../ui'\nimport { Confirm } from '../modal'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { LightFile } from '../../types/global'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/files/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.file_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/files/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['files']).map((key) => (\n <tr key={'multiattachment_' + key}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`files/${key}`}\n value={values['files'][key]}\n ns=\"guillotina.behaviors.attachment.IMultiAttachment.files\"\n schema={\n get(\n properties,\n 'files.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['files']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_files_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_a_file)}\n </label>\n <form className=\"columns\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <ErrorZone>{error}</ErrorZone>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Delete } from '../ui'\nimport { Button } from '../input/button'\nimport { FileUpload } from '../input/upload'\nimport { Confirm } from '../modal'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { LightFile } from '../../types/global'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n image: GuillotinaFile\n }\n}\nexport function IImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n const [file, setFile] = useState<LightFile | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const [showConfirmToDelete, setShowConfirmToDelete] = useState(false)\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/image`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/image/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(null)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/image`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {showConfirmToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setShowConfirmToDelete(false)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_image\n )}\n />\n )}\n {values['image'] && (\n <tr>\n <td key={1} style={{ width: '150px' }}>\n {intl.formatMessage(genericMessages.image)}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={'image'}\n value={values['image']}\n ns=\"guillotina.behaviors.behaviors.IImageAttachment\"\n schema={properties['image'] as GuillotinaSchemaProperty}\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setShowConfirmToDelete(true)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formImageAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\n\nimport { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Table } from '../ui'\nimport { Input } from '../input/input'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { LightFile } from '../../types/global'\nimport { get } from '../../lib/utils'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['images']).map((key) => (\n <tr key={`multiimageattachment_${key}`}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={\n get(\n properties,\n 'images.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['images']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {' '}\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form className=\"columns\" data-test=\"formMultiimageAttachmentTest\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <p className=\"help is-danger\">{error}</p>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","// src/utils/react.ts\nimport * as React from \"react\";\n\n// src/utils/react-is.ts\nvar IS_REACT_19 = /* @__PURE__ */ React.version.startsWith(\"19\");\nvar REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(\n IS_REACT_19 ? \"react.transitional.element\" : \"react.element\"\n);\nvar REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\nvar REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.fragment\");\nvar REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for(\"react.strict_mode\");\nvar REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for(\"react.profiler\");\nvar REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for(\"react.consumer\");\nvar REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for(\"react.context\");\nvar REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for(\"react.forward_ref\");\nvar REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense\");\nvar REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for(\n \"react.suspense_list\"\n);\nvar REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for(\"react.memo\");\nvar REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for(\"react.lazy\");\nvar REACT_OFFSCREEN_TYPE = /* @__PURE__ */ Symbol.for(\"react.offscreen\");\nvar REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for(\n \"react.client.reference\"\n);\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nfunction isValidElementType(type) {\n return typeof type === \"string\" || typeof type === \"function\" || type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_OFFSCREEN_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_CLIENT_REFERENCE || type.getModuleId !== void 0) ? true : false;\n}\nfunction typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n const { $$typeof } = object;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (object = object.type, object) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return object;\n default:\n switch (object = object && object.$$typeof, object) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nfunction isContextConsumer(object) {\n return IS_REACT_19 ? typeOf(object) === REACT_CONSUMER_TYPE : typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/connect/verifySubselectors.ts\nfunction verify(selector, methodName) {\n if (!selector) {\n throw new Error(`Unexpected value for ${methodName} in connect.`);\n } else if (methodName === \"mapStateToProps\" || methodName === \"mapDispatchToProps\") {\n if (!Object.prototype.hasOwnProperty.call(selector, \"dependsOnOwnProps\")) {\n warning(\n `The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`\n );\n }\n }\n}\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {\n verify(mapStateToProps, \"mapStateToProps\");\n verify(mapDispatchToProps, \"mapDispatchToProps\");\n verify(mergeProps, \"mergeProps\");\n}\n\n// src/connect/selectorFactory.ts\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps)\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps)\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps)\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged)\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(\n nextState,\n state,\n nextOwnProps,\n ownProps\n );\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\nfunction finalPropsSelectorFactory(dispatch, {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps,\n ...options\n}) {\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n if (process.env.NODE_ENV !== \"production\") {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n// src/utils/bindActionCreators.ts\nfunction bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n return boundActionCreators;\n}\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null) return false;\n const proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n let baseProto = proto;\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n return proto === baseProto;\n}\n\n// src/utils/verifyPlainObject.ts\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(\n `${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`\n );\n }\n}\n\n// src/connect/wrapMapToProps.ts\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n}\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, { displayName }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, void 0);\n };\n proxy.dependsOnOwnProps = true;\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n if (typeof props === \"function\") {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n if (process.env.NODE_ENV !== \"production\")\n verifyPlainObject(props, displayName, methodName);\n return props;\n };\n return proxy;\n };\n}\n\n// src/connect/invalidArgFactory.ts\nfunction createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(\n `Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`\n );\n };\n}\n\n// src/connect/mapDispatchToProps.ts\nfunction mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === \"object\" ? wrapMapToPropsConstant(\n (dispatch) => (\n // @ts-ignore\n bindActionCreators(mapDispatchToProps, dispatch)\n )\n ) : !mapDispatchToProps ? wrapMapToPropsConstant((dispatch) => ({\n dispatch\n })) : typeof mapDispatchToProps === \"function\" ? (\n // @ts-ignore\n wrapMapToPropsFunc(mapDispatchToProps, \"mapDispatchToProps\")\n ) : createInvalidArgFactory(mapDispatchToProps, \"mapDispatchToProps\");\n}\n\n// src/connect/mapStateToProps.ts\nfunction mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === \"function\" ? (\n // @ts-ignore\n wrapMapToPropsFunc(mapStateToProps, \"mapStateToProps\")\n ) : createInvalidArgFactory(mapStateToProps, \"mapStateToProps\");\n}\n\n// src/connect/mergeProps.ts\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return { ...ownProps, ...stateProps, ...dispatchProps };\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, { displayName, areMergedPropsEqual }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps))\n mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== \"production\")\n verifyPlainObject(mergedProps, displayName, \"mergeProps\");\n }\n return mergedProps;\n };\n };\n}\nfunction mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === \"function\" ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, \"mergeProps\");\n}\n\n// src/utils/batch.ts\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\n// src/utils/Subscription.ts\nfunction createListenerCollection() {\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n notify() {\n defaultNoopBatch(() => {\n let listener = first;\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get() {\n const listeners = [];\n let listener = first;\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n return listeners;\n },\n subscribe(callback) {\n let isSubscribed = true;\n const listener = last = {\n callback,\n next: null,\n prev: last\n };\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\nvar nullListeners = {\n notify() {\n },\n get: () => []\n};\nfunction createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n let subscriptionsAmount = 0;\n let selfSubscribed = false;\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener);\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n function notifyNestedSubs() {\n listeners.notify();\n }\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n function isSubscribed() {\n return selfSubscribed;\n }\n function trySubscribe() {\n subscriptionsAmount++;\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n function tryUnsubscribe() {\n subscriptionsAmount--;\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = void 0;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}\n\n// src/utils/useIsomorphicLayoutEffect.ts\nvar canUseDOM = () => !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nvar isDOM = /* @__PURE__ */ canUseDOM();\nvar isRunningInReactNative = () => typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\nvar isReactNative = /* @__PURE__ */ isRunningInReactNative();\nvar getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? React.useLayoutEffect : React.useEffect;\nvar useIsomorphicLayoutEffect = /* @__PURE__ */ getUseIsomorphicLayoutEffect();\n\n// src/utils/shallowEqual.ts\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\n// src/utils/hoistStatics.ts\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {\n [ForwardRef]: FORWARD_REF_STATICS,\n [Memo]: MEMO_STATICS\n};\nfunction getStatics(component) {\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n}\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent) {\n if (typeof sourceComponent !== \"string\") {\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent);\n }\n }\n let keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!KNOWN_STATICS[key] && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {\n }\n }\n }\n }\n return targetComponent;\n}\n\n// src/components/Context.ts\nvar ContextKey = /* @__PURE__ */ Symbol.for(`react-redux-context`);\nvar gT = typeof globalThis !== \"undefined\" ? globalThis : (\n /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n {}\n);\nfunction getContext() {\n if (!React.createContext) return {};\n const contextMap = gT[ContextKey] ??= /* @__PURE__ */ new Map();\n let realContext = contextMap.get(React.createContext);\n if (!realContext) {\n realContext = React.createContext(\n null\n );\n if (process.env.NODE_ENV !== \"production\") {\n realContext.displayName = \"ReactRedux\";\n }\n contextMap.set(React.createContext, realContext);\n }\n return realContext;\n}\nvar ReactReduxContext = /* @__PURE__ */ getContext();\n\n// src/components/connect.tsx\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\nvar stringifyComponent = (Comp) => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n}\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false;\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, additionalSubscribeListener) {\n if (!shouldHandleStateChanges) return () => {\n };\n let didUnsubscribe = false;\n let lastThrownError = null;\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n return;\n }\n const latestStoreState = store.getState();\n let newChildProps, error;\n try {\n newChildProps = childPropsSelector(\n latestStoreState,\n lastWrapperProps.current\n );\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n if (!error) {\n lastThrownError = null;\n }\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true;\n additionalSubscribeListener();\n }\n };\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n if (lastThrownError) {\n throw lastThrownError;\n }\n };\n return unsubscribeWrapper;\n}\nfunction strictEqual(a, b) {\n return a === b;\n}\nvar hasWarnedAboutDeprecatedPureOption = false;\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== \"production\") {\n if (pure !== void 0 && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning(\n 'The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component'\n );\n }\n }\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n const wrapWithConnect = (WrappedComponent) => {\n if (process.env.NODE_ENV !== \"production\") {\n const isValid = /* @__PURE__ */ isValidElementType(WrappedComponent);\n if (!isValid)\n throw new Error(\n `You must pass a component to the function returned by connect. Instead received ${stringifyComponent(\n WrappedComponent\n )}`\n );\n }\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n const { reactReduxForwardedRef: reactReduxForwardedRef2, ...wrapperProps2 } = props;\n return [props.context, reactReduxForwardedRef2, wrapperProps2];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n let ResultContext = Context;\n if (propsContext?.Consumer) {\n if (process.env.NODE_ENV !== \"production\") {\n const isValid = /* @__PURE__ */ isContextConsumer(\n // @ts-ignore\n /* @__PURE__ */ React.createElement(propsContext.Consumer, null)\n );\n if (!isValid) {\n throw new Error(\n \"You must pass a valid React context consumer as `props.context`\"\n );\n }\n ResultContext = propsContext;\n }\n }\n return ResultContext;\n }, [propsContext, Context]);\n const contextValue = React.useContext(ContextToUse);\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n if (process.env.NODE_ENV !== \"production\" && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\n `Could not find \"store\" in the context of \"${displayName}\". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to ${displayName} in connect options.`\n );\n }\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n return finalPropsSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY;\n const subscription2 = createSubscription(\n store,\n didStoreComeFromProps ? void 0 : contextValue.subscription\n );\n const notifyNestedSubs2 = subscription2.notifyNestedSubs.bind(subscription2);\n return [subscription2, notifyNestedSubs2];\n }, [store, didStoreComeFromProps, contextValue]);\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n return contextValue;\n }\n return {\n ...contextValue,\n subscription\n };\n }, [didStoreComeFromProps, contextValue, subscription]);\n const lastChildProps = React.useRef(void 0);\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef(void 0);\n const renderIsScheduled = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef(\n void 0\n );\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n }\n return childPropsSelector(store.getState(), wrapperProps);\n };\n return selector;\n }, [store, wrapperProps]);\n const subscribeForReact = React.useMemo(() => {\n const subscribe = (reactListener) => {\n if (!subscription) {\n return () => {\n };\n }\n return subscribeUpdates(\n shouldHandleStateChanges,\n store,\n subscription,\n // @ts-ignore\n childPropsSelector,\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n isMounted,\n childPropsFromStoreUpdate,\n notifyNestedSubs,\n reactListener\n );\n };\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n wrapperProps,\n childPropsFromStoreUpdate,\n notifyNestedSubs\n ]);\n let actualChildProps;\n try {\n actualChildProps = React.useSyncExternalStore(\n // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact,\n // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector,\n getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector\n );\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n`;\n }\n throw err;\n }\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = void 0;\n childPropsFromStoreUpdate.current = void 0;\n lastChildProps.current = actualChildProps;\n });\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n // @ts-ignore\n /* @__PURE__ */ React.createElement(\n WrappedComponent,\n {\n ...actualChildProps,\n ref: reactReduxForwardedRef\n }\n )\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]);\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n return /* @__PURE__ */ React.createElement(ContextToUse.Provider, { value: overriddenContextValue }, renderedWrappedComponent);\n }\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n const _Connect = React.memo(ConnectFunction);\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n if (forwardRef) {\n const _forwarded = React.forwardRef(\n function forwardConnectRef(props, ref) {\n return /* @__PURE__ */ React.createElement(Connect, { ...props, reactReduxForwardedRef: ref });\n }\n );\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return /* @__PURE__ */ hoistNonReactStatics(forwarded, WrappedComponent);\n }\n return /* @__PURE__ */ hoistNonReactStatics(Connect, WrappedComponent);\n };\n return wrapWithConnect;\n}\nvar connect_default = connect;\n\n// src/components/Provider.tsx\nfunction Provider(providerProps) {\n const { children, context, serverState, store } = providerProps;\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n const baseContextValue = {\n store,\n subscription,\n getServerState: serverState ? () => serverState : void 0\n };\n if (process.env.NODE_ENV === \"production\") {\n return baseContextValue;\n } else {\n const { identityFunctionCheck = \"once\", stabilityCheck = \"once\" } = providerProps;\n return /* @__PURE__ */ Object.assign(baseContextValue, {\n stabilityCheck,\n identityFunctionCheck\n });\n }\n }, [store, serverState]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const { subscription } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = void 0;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext;\n return /* @__PURE__ */ React.createElement(Context.Provider, { value: contextValue }, children);\n}\nvar Provider_default = Provider;\n\n// src/hooks/useReduxContext.ts\nfunction createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext2() {\n const contextValue = React.useContext(context);\n if (process.env.NODE_ENV !== \"production\" && !contextValue) {\n throw new Error(\n \"could not find react-redux context value; please ensure the component is wrapped in a <Provider>\"\n );\n }\n return contextValue;\n };\n}\nvar useReduxContext = /* @__PURE__ */ createReduxContextHook();\n\n// src/hooks/useStore.ts\nfunction createStoreHook(context = ReactReduxContext) {\n const useReduxContext2 = context === ReactReduxContext ? useReduxContext : (\n // @ts-ignore\n createReduxContextHook(context)\n );\n const useStore2 = () => {\n const { store } = useReduxContext2();\n return store;\n };\n Object.assign(useStore2, {\n withTypes: () => useStore2\n });\n return useStore2;\n}\nvar useStore = /* @__PURE__ */ createStoreHook();\n\n// src/hooks/useDispatch.ts\nfunction createDispatchHook(context = ReactReduxContext) {\n const useStore2 = context === ReactReduxContext ? useStore : createStoreHook(context);\n const useDispatch2 = () => {\n const store = useStore2();\n return store.dispatch;\n };\n Object.assign(useDispatch2, {\n withTypes: () => useDispatch2\n });\n return useDispatch2;\n}\nvar useDispatch = /* @__PURE__ */ createDispatchHook();\n\n// src/hooks/useSelector.ts\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/with-selector.js\";\nvar refEquality = (a, b) => a === b;\nfunction createSelectorHook(context = ReactReduxContext) {\n const useReduxContext2 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context);\n const useSelector2 = (selector, equalityFnOrOptions = {}) => {\n const { equalityFn = refEquality } = typeof equalityFnOrOptions === \"function\" ? { equalityFn: equalityFnOrOptions } : equalityFnOrOptions;\n if (process.env.NODE_ENV !== \"production\") {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n if (typeof selector !== \"function\") {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n if (typeof equalityFn !== \"function\") {\n throw new Error(\n `You must pass a function as an equality function to useSelector`\n );\n }\n }\n const reduxContext = useReduxContext2();\n const { store, subscription, getServerState } = reduxContext;\n const firstRun = React.useRef(true);\n const wrappedSelector = React.useCallback(\n {\n [selector.name](state) {\n const selected = selector(state);\n if (process.env.NODE_ENV !== \"production\") {\n const { devModeChecks = {} } = typeof equalityFnOrOptions === \"function\" ? {} : equalityFnOrOptions;\n const { identityFunctionCheck, stabilityCheck } = reduxContext;\n const {\n identityFunctionCheck: finalIdentityFunctionCheck,\n stabilityCheck: finalStabilityCheck\n } = {\n stabilityCheck,\n identityFunctionCheck,\n ...devModeChecks\n };\n if (finalStabilityCheck === \"always\" || finalStabilityCheck === \"once\" && firstRun.current) {\n const toCompare = selector(state);\n if (!equalityFn(selected, toCompare)) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"Selector \" + (selector.name || \"unknown\") + \" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization\",\n {\n state,\n selected,\n selected2: toCompare,\n stack\n }\n );\n }\n }\n if (finalIdentityFunctionCheck === \"always\" || finalIdentityFunctionCheck === \"once\" && firstRun.current) {\n if (selected === state) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"Selector \" + (selector.name || \"unknown\") + \" returned the root state when called. This can lead to unnecessary rerenders.\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.\",\n { stack }\n );\n }\n }\n if (firstRun.current) firstRun.current = false;\n }\n return selected;\n }\n }[selector.name],\n [selector]\n );\n const selectedState = useSyncExternalStoreWithSelector(\n subscription.addNestedSub,\n store.getState,\n getServerState || store.getState,\n wrappedSelector,\n equalityFn\n );\n React.useDebugValue(selectedState);\n return selectedState;\n };\n Object.assign(useSelector2, {\n withTypes: () => useSelector2\n });\n return useSelector2;\n}\nvar useSelector = /* @__PURE__ */ createSelectorHook();\n\n// src/exports.ts\nvar batch = defaultNoopBatch;\nexport {\n Provider_default as Provider,\n ReactReduxContext,\n batch,\n connect_default as connect,\n createDispatchHook,\n createSelectorHook,\n createStoreHook,\n shallowEqual,\n useDispatch,\n useSelector,\n useStore\n};\n//# sourceMappingURL=react-redux.mjs.map","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\n\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\n\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n _ref2$border = _ref2.border,\n border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\n\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n\n if (suffix !== 'px') {\n return 0;\n }\n\n var result = Number(value);\n !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\n\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox,\n border = original.border,\n margin = original.margin,\n padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\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","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import React, { useState, useRef, useEffect, useLayoutEffect, useContext } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport { createStore as createStore$1, compose, applyMiddleware, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { getRect, expand, offset, withScroll, calculateBox, getBox, createBox } from 'css-box-model';\nimport rafSchd from 'raf-schd';\nimport _extends from '@babel/runtime/helpers/esm/extends';\n\nconst isProduction$1 = process.env.NODE_ENV === 'production';\nconst spacesAndTabs = /[ \\t]{2,}/g;\nconst lineStartWithSpaces = /^[ \\t]*/gm;\nconst clean$2 = value => value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\nconst getDevMessage = message => clean$2(`\n %c@hello-pangea/dnd\n\n %c${clean$2(message)}\n\n %c👷‍ This is a development only message. It will be removed in production builds.\n`);\nconst getFormattedMessage = message => [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\nconst isDisabledFlag = '__@hello-pangea/dnd-disable-dev-warnings';\nfunction log(type, message) {\n if (isProduction$1) {\n return;\n }\n if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n return;\n }\n console[type](...getFormattedMessage(message));\n}\nconst warning = log.bind(null, 'warn');\nconst error = log.bind(null, 'error');\n\nfunction noop$2() {}\n\nfunction getOptions(shared, fromBinding) {\n return {\n ...shared,\n ...fromBinding\n };\n}\nfunction bindEvents(el, bindings, sharedOptions) {\n const unbindings = bindings.map(binding => {\n const options = getOptions(sharedOptions, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(unbind => {\n unbind();\n });\n };\n}\n\nconst isProduction = process.env.NODE_ENV === 'production';\nconst prefix$1 = 'Invariant failed';\nclass RbdInvariant extends Error {}\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\nfunction invariant(condition, message) {\n if (isProduction) {\n throw new RbdInvariant(prefix$1);\n } else {\n throw new RbdInvariant(`${prefix$1}: ${message || ''}`);\n }\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(...args) {\n super(...args);\n this.callbacks = null;\n this.unbind = noop$2;\n this.onWindowError = event => {\n const callbacks = this.getCallbacks();\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n process.env.NODE_ENV !== \"production\" ? warning(`\n An error was caught by our window 'error' event listener while a drag was occurring.\n The active drag has been aborted.\n `) : void 0;\n }\n const err = event.error;\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n }\n };\n this.getCallbacks = () => {\n if (!this.callbacks) {\n throw new Error('Unable to find AppCallbacks in <ErrorBoundary/>');\n }\n return this.callbacks;\n };\n this.setCallbacks = callbacks => {\n this.callbacks = callbacks;\n };\n }\n componentDidMount() {\n this.unbind = bindEvents(window, [{\n eventName: 'error',\n fn: this.onWindowError\n }]);\n }\n componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n this.setState({});\n return;\n }\n throw err;\n }\n componentWillUnmount() {\n this.unbind();\n }\n render() {\n return this.props.children(this.setCallbacks);\n }\n}\n\nconst dragHandleUsageInstructions = `\n Press space bar to start a drag.\n When dragging you can use the arrow keys to move the item around and escape to cancel.\n Some screen readers may require you to be in focus mode or to use your pass through key\n`;\nconst position = index => index + 1;\nconst onDragStart = start => `\n You have lifted an item in position ${position(start.source.index)}\n`;\nconst withLocation = (source, destination) => {\n const isInHomeList = source.droppableId === destination.droppableId;\n const startPosition = position(source.index);\n const endPosition = position(destination.index);\n if (isInHomeList) {\n return `\n You have moved the item from position ${startPosition}\n to position ${endPosition}\n `;\n }\n return `\n You have moved the item from position ${startPosition}\n in list ${source.droppableId}\n to list ${destination.droppableId}\n in position ${endPosition}\n `;\n};\nconst withCombine = (id, source, combine) => {\n const inHomeList = source.droppableId === combine.droppableId;\n if (inHomeList) {\n return `\n The item ${id}\n has been combined with ${combine.draggableId}`;\n }\n return `\n The item ${id}\n in list ${source.droppableId}\n has been combined with ${combine.draggableId}\n in list ${combine.droppableId}\n `;\n};\nconst onDragUpdate = update => {\n const location = update.destination;\n if (location) {\n return withLocation(update.source, location);\n }\n const combine = update.combine;\n if (combine) {\n return withCombine(update.draggableId, update.source, combine);\n }\n return 'You are over an area that cannot be dropped on';\n};\nconst returnedToStart = source => `\n The item has returned to its starting position\n of ${position(source.index)}\n`;\nconst onDragEnd = result => {\n if (result.reason === 'CANCEL') {\n return `\n Movement cancelled.\n ${returnedToStart(result.source)}\n `;\n }\n const location = result.destination;\n const combine = result.combine;\n if (location) {\n return `\n You have dropped the item.\n ${withLocation(result.source, location)}\n `;\n }\n if (combine) {\n return `\n You have dropped the item.\n ${withCombine(result.draggableId, result.source, combine)}\n `;\n }\n return `\n The item has been dropped while not over a drop area.\n ${returnedToStart(result.source)}\n `;\n};\nconst preset = {\n dragHandleUsageInstructions,\n onDragStart,\n onDragUpdate,\n onDragEnd\n};\n\nfunction isEqual$2(first, second) {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (let i = 0; i < newInputs.length; i++) {\n if (!isEqual$2(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction useMemo(getResult, inputs) {\n const initial = useState(() => ({\n inputs,\n result: getResult()\n }))[0];\n const isFirstRun = useRef(true);\n const committed = useRef(initial);\n const useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n const cache = useCache ? committed.current : {\n inputs,\n result: getResult()\n };\n useEffect(() => {\n isFirstRun.current = false;\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallback(callback, inputs) {\n return useMemo(() => callback, inputs);\n}\n\nconst origin = {\n x: 0,\n y: 0\n};\nconst add = (point1, point2) => ({\n x: point1.x + point2.x,\n y: point1.y + point2.y\n});\nconst subtract = (point1, point2) => ({\n x: point1.x - point2.x,\n y: point1.y - point2.y\n});\nconst isEqual$1 = (point1, point2) => point1.x === point2.x && point1.y === point2.y;\nconst negate = point => ({\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n});\nconst patch = (line, value, otherValue = 0) => {\n if (line === 'x') {\n return {\n x: value,\n y: otherValue\n };\n }\n return {\n x: otherValue,\n y: value\n };\n};\nconst distance = (point1, point2) => Math.sqrt((point2.x - point1.x) ** 2 + (point2.y - point1.y) ** 2);\nconst closest$1 = (target, points) => Math.min(...points.map(point => distance(target, point)));\nconst apply = fn => point => ({\n x: fn(point.x),\n y: fn(point.y)\n});\n\nvar executeClip = (frame, subject) => {\n const result = getRect({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n return result;\n};\n\nconst offsetByPosition = (spacing, point) => ({\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n});\nconst getCorners = spacing => [{\n x: spacing.left,\n y: spacing.top\n}, {\n x: spacing.right,\n y: spacing.top\n}, {\n x: spacing.left,\n y: spacing.bottom\n}, {\n x: spacing.right,\n y: spacing.bottom\n}];\nconst noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nconst scroll$1 = (target, frame) => {\n if (!frame) {\n return target;\n }\n return offsetByPosition(target, frame.scroll.diff.displacement);\n};\nconst increase = (target, axis, withPlaceholder) => {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n return {\n ...target,\n [axis.end]: target[axis.end] + withPlaceholder.increasedBy[axis.line]\n };\n }\n return target;\n};\nconst clip = (target, frame) => {\n if (frame && frame.shouldClipSubject) {\n return executeClip(frame.pageMarginBox, target);\n }\n return getRect(target);\n};\nvar getSubject = ({\n page,\n withPlaceholder,\n axis,\n frame\n}) => {\n const scrolled = scroll$1(page.marginBox, frame);\n const increased = increase(scrolled, axis, withPlaceholder);\n const clipped = clip(increased, frame);\n return {\n page,\n withPlaceholder,\n active: clipped\n };\n};\n\nvar scrollDroppable = (droppable, newScroll) => {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const scrollable = droppable.frame;\n const scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n const scrollDisplacement = negate(scrollDiff);\n const frame = {\n ...scrollable,\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n };\n const subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: droppable.subject.withPlaceholder,\n axis: droppable.axis,\n frame\n });\n const result = {\n ...droppable,\n frame,\n subject\n };\n return result;\n};\n\nfunction memoizeOne(resultFn, isEqual = areInputsEqual) {\n let cache = null;\n function memoized(...newArgs) {\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n const lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult,\n lastArgs: newArgs,\n lastThis: this\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nconst toDroppableMap = memoizeOne(droppables => droppables.reduce((previous, current) => {\n previous[current.descriptor.id] = current;\n return previous;\n}, {}));\nconst toDraggableMap = memoizeOne(draggables => draggables.reduce((previous, current) => {\n previous[current.descriptor.id] = current;\n return previous;\n}, {}));\nconst toDroppableList = memoizeOne(droppables => Object.values(droppables));\nconst toDraggableList = memoizeOne(draggables => Object.values(draggables));\n\nvar getDraggablesInsideDroppable = memoizeOne((droppableId, draggables) => {\n const result = toDraggableList(draggables).filter(draggable => droppableId === draggable.descriptor.droppableId).sort((a, b) => a.descriptor.index - b.descriptor.index);\n return result;\n});\n\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === 'REORDER') {\n return impact.at.destination;\n }\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === 'COMBINE') {\n return impact.at.combine;\n }\n return null;\n}\n\nvar removeDraggableFromList = memoizeOne((remove, list) => list.filter(item => item.descriptor.id !== remove.descriptor.id));\n\nvar moveToNextCombine = ({\n isMovingForward,\n draggable,\n destination,\n insideDestination,\n previousImpact\n}) => {\n if (!destination.isCombineEnabled) {\n return null;\n }\n const location = tryGetDestination(previousImpact);\n if (!location) {\n return null;\n }\n function getImpact(target) {\n const at = {\n type: 'COMBINE',\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return {\n ...previousImpact,\n at\n };\n }\n const all = previousImpact.displaced.all;\n const closestId = all.length ? all[0] : null;\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n const withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n const last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n const indexOfClosest = withoutDraggable.findIndex(d => d.descriptor.id === closestId);\n !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant() : void 0;\n const proposedIndex = indexOfClosest - 1;\n if (proposedIndex < 0) {\n return null;\n }\n const before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n};\n\nvar isHomeOf = (draggable, destination) => draggable.descriptor.droppableId === destination.descriptor.id;\n\nconst noDisplacedBy = {\n point: origin,\n value: 0\n};\nconst emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nconst noImpact = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: null\n};\n\nvar isWithin = (lowerBound, upperBound) => value => lowerBound <= value && value <= upperBound;\n\nvar isPartiallyVisibleThroughFrame = frame => {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return subject => {\n const isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n if (isContained) {\n return true;\n }\n const isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n const isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n const isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n if (isPartiallyContained) {\n return true;\n }\n const isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n const isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n const isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n if (isTargetBiggerThanFrame) {\n return true;\n }\n const isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n};\n\nvar isTotallyVisibleThroughFrame = frame => {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return subject => {\n const isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n};\n\nconst vertical = {\n direction: 'vertical',\n line: 'y',\n crossAxisLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\nconst horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossAxisLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = axis => frame => {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return subject => {\n if (axis === vertical) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n};\n\nconst getDroppableDisplaced = (target, destination) => {\n const displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n return offsetByPosition(target, displacement);\n};\nconst isVisibleInDroppable = (target, destination, isVisibleThroughFrameFn) => {\n if (!destination.subject.active) {\n return false;\n }\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\nconst isVisibleInViewport = (target, viewport, isVisibleThroughFrameFn) => isVisibleThroughFrameFn(viewport)(target);\nconst isVisible$1 = ({\n target: toBeDisplaced,\n destination,\n viewport,\n withDroppableDisplacement,\n isVisibleThroughFrameFn\n}) => {\n const displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\nconst isPartiallyVisible = args => isVisible$1({\n ...args,\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n});\nconst isTotallyVisible = args => isVisible$1({\n ...args,\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n});\nconst isTotallyVisibleOnAxis = args => isVisible$1({\n ...args,\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n});\n\nconst getShouldAnimate = (id, last, forceShouldAnimate) => {\n if (typeof forceShouldAnimate === 'boolean') {\n return forceShouldAnimate;\n }\n if (!last) {\n return true;\n }\n const {\n invisible,\n visible\n } = last;\n if (invisible[id]) {\n return false;\n }\n const previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\nfunction getTarget(draggable, displacedBy) {\n const marginBox = draggable.page.marginBox;\n const expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return getRect(expand(marginBox, expandBy));\n}\nfunction getDisplacementGroups({\n afterDragging,\n destination,\n displacedBy,\n viewport,\n forceShouldAnimate,\n last\n}) {\n return afterDragging.reduce(function process(groups, draggable) {\n const target = getTarget(draggable, displacedBy);\n const id = draggable.descriptor.id;\n groups.all.push(id);\n const isVisible = isPartiallyVisible({\n target,\n destination,\n viewport,\n withDroppableDisplacement: true\n });\n if (!isVisible) {\n groups.invisible[draggable.descriptor.id] = true;\n return groups;\n }\n const shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n const displacement = {\n draggableId: id,\n shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n const indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\nfunction goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n}) {\n const newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\nfunction calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n displacedBy,\n last,\n index,\n forceShouldAnimate\n}) {\n const inHomeList = isHomeOf(draggable, destination);\n if (index == null) {\n return goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n });\n }\n const match = insideDestination.find(item => item.descriptor.index === index);\n if (!match) {\n return goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n });\n }\n const withoutDragging = removeDraggableFromList(draggable, insideDestination);\n const sliceFrom = insideDestination.indexOf(match);\n const impacted = withoutDragging.slice(sliceFrom);\n const displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination,\n displacedBy,\n last,\n viewport: viewport.frame,\n forceShouldAnimate\n });\n return {\n displaced,\n displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index\n }\n }\n };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = ({\n isMovingForward,\n destination,\n draggables,\n combine,\n afterCritical\n}) => {\n if (!destination.isCombineEnabled) {\n return null;\n }\n const combineId = combine.draggableId;\n const combineWith = draggables[combineId];\n const combineWithIndex = combineWith.descriptor.index;\n const didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n return combineWithIndex - 1;\n }\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n return combineWithIndex;\n};\n\nvar fromReorder = ({\n isMovingForward,\n isInHomeList,\n insideDestination,\n location\n}) => {\n if (!insideDestination.length) {\n return null;\n }\n const currentIndex = location.index;\n const proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n const firstIndex = insideDestination[0].descriptor.index;\n const lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n const upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n if (proposedIndex < firstIndex) {\n return null;\n }\n if (proposedIndex > upperBound) {\n return null;\n }\n return proposedIndex;\n};\n\nvar moveToNextIndex = ({\n isMovingForward,\n isInHomeList,\n draggable,\n draggables,\n destination,\n insideDestination,\n previousImpact,\n viewport,\n afterCritical\n}) => {\n const wasAt = previousImpact.at;\n !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant() : void 0;\n if (wasAt.type === 'REORDER') {\n const newIndex = fromReorder({\n isMovingForward,\n isInHomeList,\n location: wasAt.destination,\n insideDestination\n });\n if (newIndex == null) {\n return null;\n }\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n }\n const newIndex = fromCombine({\n isMovingForward,\n destination,\n displaced: previousImpact.displaced,\n draggables,\n combine: wasAt.combine,\n afterCritical\n });\n if (newIndex == null) {\n return null;\n }\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n};\n\nvar getCombinedItemDisplacement = ({\n displaced,\n afterCritical,\n combineWith,\n displacedBy\n}) => {\n const isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin : negate(displacedBy.point);\n }\n return isDisplaced ? displacedBy.point : origin;\n};\n\nvar whenCombining = ({\n afterCritical,\n impact,\n draggables\n}) => {\n const combine = tryGetCombine(impact);\n !combine ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const combineWith = combine.draggableId;\n const center = draggables[combineWith].page.borderBox.center;\n const displaceBy = getCombinedItemDisplacement({\n displaced: impact.displaced,\n afterCritical,\n combineWith,\n displacedBy: impact.displacedBy\n });\n return add(center, displaceBy);\n};\n\nconst distanceFromStartToBorderBoxCenter = (axis, box) => box.margin[axis.start] + box.borderBox[axis.size] / 2;\nconst distanceFromEndToBorderBoxCenter = (axis, box) => box.margin[axis.end] + box.borderBox[axis.size] / 2;\nconst getCrossAxisBorderBoxCenter = (axis, target, isMoving) => target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\nconst goAfter = ({\n axis,\n moveRelativeTo,\n isMoving\n}) => patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\nconst goBefore = ({\n axis,\n moveRelativeTo,\n isMoving\n}) => patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\nconst goIntoStart = ({\n axis,\n moveInto,\n isMoving\n}) => patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n\nvar whenReordering = ({\n impact,\n draggable,\n draggables,\n droppable,\n afterCritical\n}) => {\n const insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n const draggablePage = draggable.page;\n const axis = droppable.axis;\n if (!insideDestination.length) {\n return goIntoStart({\n axis,\n moveInto: droppable.page,\n isMoving: draggablePage\n });\n }\n const {\n displaced,\n displacedBy\n } = impact;\n const closestAfter = displaced.all[0];\n if (closestAfter) {\n const closest = draggables[closestAfter];\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore({\n axis,\n moveRelativeTo: closest.page,\n isMoving: draggablePage\n });\n }\n const withDisplacement = offset(closest.page, displacedBy.point);\n return goBefore({\n axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n const last = insideDestination[insideDestination.length - 1];\n if (last.descriptor.id === draggable.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n const page = offset(last.page, negate(afterCritical.displacedBy.point));\n return goAfter({\n axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n return goAfter({\n axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n};\n\nvar withDroppableDisplacement = (droppable, point) => {\n const frame = droppable.frame;\n if (!frame) {\n return point;\n }\n return add(point, frame.scroll.diff.displacement);\n};\n\nconst getResultWithoutDroppableDisplacement = ({\n impact,\n draggable,\n droppable,\n draggables,\n afterCritical\n}) => {\n const original = draggable.page.borderBox.center;\n const at = impact.at;\n if (!droppable) {\n return original;\n }\n if (!at) {\n return original;\n }\n if (at.type === 'REORDER') {\n return whenReordering({\n impact,\n draggable,\n draggables,\n droppable,\n afterCritical\n });\n }\n return whenCombining({\n impact,\n draggables,\n afterCritical\n });\n};\nvar getPageBorderBoxCenterFromImpact = args => {\n const withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n const droppable = args.droppable;\n const withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n};\n\nvar scrollViewport = (viewport, newScroll) => {\n const diff = subtract(newScroll, viewport.scroll.initial);\n const displacement = negate(diff);\n const frame = getRect({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n const updated = {\n frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff,\n displacement\n }\n }\n };\n return updated;\n};\n\nfunction getDraggables$1(ids, draggables) {\n return ids.map(id => draggables[id]);\n}\nfunction tryGetVisible(id, groups) {\n for (let i = 0; i < groups.length; i++) {\n const displacement = groups[i].visible[id];\n if (displacement) {\n return displacement;\n }\n }\n return null;\n}\nvar speculativelyIncrease = ({\n impact,\n viewport,\n destination,\n draggables,\n maxScrollChange\n}) => {\n const scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n const scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n const last = impact.displaced;\n const withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables$1(last.all, draggables),\n destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last,\n forceShouldAnimate: false\n });\n const withDroppableScroll = getDisplacementGroups({\n afterDragging: getDraggables$1(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last,\n forceShouldAnimate: false\n });\n const invisible = {};\n const visible = {};\n const groups = [last, withViewportScroll, withDroppableScroll];\n last.all.forEach(id => {\n const displacement = tryGetVisible(id, groups);\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n invisible[id] = true;\n });\n const newImpact = {\n ...impact,\n displaced: {\n all: last.all,\n invisible,\n visible\n }\n };\n return newImpact;\n};\n\nvar withViewportDisplacement = (viewport, point) => add(viewport.scroll.diff.displacement, point);\n\nvar getClientFromPageBorderBoxCenter = ({\n pageBorderBoxCenter,\n draggable,\n viewport\n}) => {\n const withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n const offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n return add(draggable.client.borderBox.center, offset);\n};\n\nvar isTotallyVisibleInNewLocation = ({\n draggable,\n destination,\n newPageBorderBoxCenter,\n viewport,\n withDroppableDisplacement,\n onlyOnMainAxis = false\n}) => {\n const changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n const shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n const args = {\n target: shifted,\n destination,\n withDroppableDisplacement,\n viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n};\n\nvar moveToNextPlace = ({\n isMovingForward,\n draggable,\n destination,\n draggables,\n previousImpact,\n viewport,\n previousPageBorderBoxCenter,\n previousClientSelection,\n afterCritical\n}) => {\n if (!destination.isEnabled) {\n return null;\n }\n const insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n const isInHomeList = isHomeOf(draggable, destination);\n const impact = moveToNextCombine({\n isMovingForward,\n draggable,\n destination,\n insideDestination,\n previousImpact\n }) || moveToNextIndex({\n isMovingForward,\n isInHomeList,\n draggable,\n draggables,\n destination,\n insideDestination,\n previousImpact,\n viewport,\n afterCritical\n });\n if (!impact) {\n return null;\n }\n const pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact,\n draggable,\n droppable: destination,\n draggables,\n afterCritical\n });\n const isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable,\n destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n if (isVisibleInNewLocation) {\n const clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter,\n draggable,\n viewport\n });\n return {\n clientSelection,\n impact,\n scrollJumpRequest: null\n };\n }\n const distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n const cautious = speculativelyIncrease({\n impact,\n viewport,\n destination,\n draggables,\n maxScrollChange: distance\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance\n };\n};\n\nconst getKnownActive = droppable => {\n const rect = droppable.subject.active;\n !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant() : void 0;\n return rect;\n};\nvar getBestCrossAxisDroppable = ({\n isMovingForward,\n pageBorderBoxCenter,\n source,\n droppables,\n viewport\n}) => {\n const active = source.subject.active;\n if (!active) {\n return null;\n }\n const axis = source.axis;\n const isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n const candidates = toDroppableList(droppables).filter(droppable => droppable !== source).filter(droppable => droppable.isEnabled).filter(droppable => Boolean(droppable.subject.active)).filter(droppable => isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable))).filter(droppable => {\n const activeOfTarget = getKnownActive(droppable);\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(droppable => {\n const activeOfTarget = getKnownActive(droppable);\n const isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort((a, b) => {\n const first = getKnownActive(a)[axis.crossAxisStart];\n const second = getKnownActive(b)[axis.crossAxisStart];\n if (isMovingForward) {\n return first - second;\n }\n return second - first;\n }).filter((droppable, index, array) => getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart]);\n if (!candidates.length) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const contains = candidates.filter(droppable => {\n const isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n if (contains.length === 1) {\n return contains[0];\n }\n if (contains.length > 1) {\n return contains.sort((a, b) => getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start])[0];\n }\n return candidates.sort((a, b) => {\n const first = closest$1(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n const second = closest$1(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n if (first !== second) {\n return first - second;\n }\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n};\n\nconst getCurrentPageBorderBoxCenter = (draggable, afterCritical) => {\n const original = draggable.page.borderBox.center;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nconst getCurrentPageBorderBox = (draggable, afterCritical) => {\n const original = draggable.page.borderBox;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = ({\n pageBorderBoxCenter,\n viewport,\n destination,\n insideDestination,\n afterCritical\n}) => {\n const sorted = insideDestination.filter(draggable => isTotallyVisible({\n target: getCurrentPageBorderBox(draggable, afterCritical),\n destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n })).sort((a, b) => {\n const distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n const distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n if (distanceToA < distanceToB) {\n return -1;\n }\n if (distanceToB < distanceToA) {\n return 1;\n }\n return a.descriptor.index - b.descriptor.index;\n });\n return sorted[0] || null;\n};\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n const displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch(axis.line, displacement)\n };\n});\n\nconst getRequiredGrowthForPlaceholder = (droppable, placeholderSize, draggables) => {\n const axis = droppable.axis;\n if (droppable.descriptor.mode === 'virtual') {\n return patch(axis.line, placeholderSize[axis.line]);\n }\n const availableSpace = droppable.subject.page.contentBox[axis.size];\n const insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n const spaceUsed = insideDroppable.reduce((sum, dimension) => sum + dimension.client.marginBox[axis.size], 0);\n const requiredSpace = spaceUsed + placeholderSize[axis.line];\n const needsToGrowBy = requiredSpace - availableSpace;\n if (needsToGrowBy <= 0) {\n return null;\n }\n return patch(axis.line, needsToGrowBy);\n};\nconst withMaxScroll = (frame, max) => ({\n ...frame,\n scroll: {\n ...frame.scroll,\n max\n }\n});\nconst addPlaceholder = (droppable, draggable, draggables) => {\n const frame = droppable.frame;\n !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant() : void 0;\n !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant() : void 0;\n const placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n const requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n const added = {\n placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n };\n if (!frame) {\n const subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: droppable.frame\n });\n return {\n ...droppable,\n subject\n };\n }\n const maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n const newFrame = withMaxScroll(frame, maxScroll);\n const subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: newFrame\n });\n return {\n ...droppable,\n subject,\n frame: newFrame\n };\n};\nconst removePlaceholder = droppable => {\n const added = droppable.subject.withPlaceholder;\n !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant() : void 0;\n const frame = droppable.frame;\n if (!frame) {\n const subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: null,\n withPlaceholder: null\n });\n return {\n ...droppable,\n subject\n };\n }\n const oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant() : void 0;\n const newFrame = withMaxScroll(frame, oldMaxScroll);\n const subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return {\n ...droppable,\n subject,\n frame: newFrame\n };\n};\n\nvar moveToNewDroppable = ({\n previousPageBorderBoxCenter,\n moveRelativeTo,\n insideDestination,\n draggable,\n draggables,\n destination,\n viewport,\n afterCritical\n}) => {\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n const proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n const proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: proposed,\n draggable,\n droppable: destination,\n draggables,\n afterCritical\n });\n const withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n const isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n const isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n const proposedIndex = (() => {\n const relativeTo = moveRelativeTo.descriptor.index;\n if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n return relativeTo;\n }\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n return relativeTo + 1;\n })();\n const displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n};\n\nvar moveCrossAxis = ({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable,\n isOver,\n draggables,\n droppables,\n viewport,\n afterCritical\n}) => {\n const destination = getBestCrossAxisDroppable({\n isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables,\n viewport\n });\n if (!destination) {\n return null;\n }\n const insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n const moveRelativeTo = getClosestDraggable({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport,\n destination,\n insideDestination,\n afterCritical\n });\n const impact = moveToNewDroppable({\n previousPageBorderBoxCenter,\n destination,\n draggable,\n draggables,\n moveRelativeTo,\n insideDestination,\n viewport,\n afterCritical\n });\n if (!impact) {\n return null;\n }\n const pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact,\n draggable,\n droppable: destination,\n draggables,\n afterCritical\n });\n const clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter,\n draggable,\n viewport\n });\n return {\n clientSelection,\n impact,\n scrollJumpRequest: null\n };\n};\n\nvar whatIsDraggedOver = impact => {\n const at = impact.at;\n if (!at) {\n return null;\n }\n if (at.type === 'REORDER') {\n return at.destination.droppableId;\n }\n return at.combine.droppableId;\n};\n\nconst getDroppableOver$1 = (impact, droppables) => {\n const id = whatIsDraggedOver(impact);\n return id ? droppables[id] : null;\n};\nvar moveInDirection = ({\n state,\n type\n}) => {\n const isActuallyOver = getDroppableOver$1(state.impact, state.dimensions.droppables);\n const isMainAxisMovementAllowed = Boolean(isActuallyOver);\n const home = state.dimensions.droppables[state.critical.droppable.id];\n const isOver = isActuallyOver || home;\n const direction = isOver.axis.direction;\n const isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n const isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n const draggable = state.dimensions.draggables[state.critical.draggable.id];\n const previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n const {\n draggables,\n droppables\n } = state.dimensions;\n return isMovingOnMainAxis ? moveToNextPlace({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable,\n destination: isOver,\n draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable,\n isOver,\n draggables,\n droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n};\n\nfunction isMovementAllowed(state) {\n return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return function run(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\n\nfunction getHasOverlap(first, second) {\n return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\nfunction getFurthestAway({\n pageBorderBox,\n draggable,\n candidates\n}) {\n const startCenter = draggable.page.borderBox.center;\n const sorted = candidates.map(candidate => {\n const axis = candidate.axis;\n const target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance(startCenter, target)\n };\n }).sort((a, b) => b.distance - a.distance);\n return sorted[0] ? sorted[0].id : null;\n}\nfunction getDroppableOver({\n pageBorderBox,\n draggable,\n droppables\n}) {\n const candidates = toDroppableList(droppables).filter(item => {\n if (!item.isEnabled) {\n return false;\n }\n const active = item.subject.active;\n if (!active) {\n return false;\n }\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n if (isPositionInFrame(active)(pageBorderBox.center)) {\n return true;\n }\n const axis = item.axis;\n const childCenter = active.center[axis.crossAxisLine];\n const crossAxisStart = pageBorderBox[axis.crossAxisStart];\n const crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n const isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n const isStartContained = isContained(crossAxisStart);\n const isEndContained = isContained(crossAxisEnd);\n if (!isStartContained && !isEndContained) {\n return true;\n }\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n return crossAxisEnd > childCenter;\n });\n if (!candidates.length) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n return getFurthestAway({\n pageBorderBox,\n draggable,\n candidates\n });\n}\n\nconst offsetRectByPosition = (rect, point) => getRect(offsetByPosition(rect, point));\n\nvar withDroppableScroll = (droppable, area) => {\n const frame = droppable.frame;\n if (!frame) {\n return area;\n }\n return offsetRectByPosition(area, frame.scroll.diff.value);\n};\n\nfunction getIsDisplaced({\n displaced,\n id\n}) {\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex({\n draggable,\n closest,\n inHomeList\n}) {\n if (!closest) {\n return null;\n }\n if (!inHomeList) {\n return closest.descriptor.index;\n }\n if (closest.descriptor.index > draggable.descriptor.index) {\n return closest.descriptor.index - 1;\n }\n return closest.descriptor.index;\n}\nvar getReorderImpact = ({\n pageBorderBoxWithDroppableScroll: targetRect,\n draggable,\n destination,\n insideDestination,\n last,\n viewport,\n afterCritical\n}) => {\n const axis = destination.axis;\n const displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n const displacement = displacedBy.value;\n const targetStart = targetRect[axis.start];\n const targetEnd = targetRect[axis.end];\n const withoutDragging = removeDraggableFromList(draggable, insideDestination);\n const closest = withoutDragging.find(child => {\n const id = child.descriptor.id;\n const childCenter = child.page.borderBox.center[axis.line];\n const didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n const isDisplaced = getIsDisplaced({\n displaced: last,\n id\n });\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n return targetStart < childCenter - displacement;\n }\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n return targetStart < childCenter;\n }) || null;\n const newIndex = atIndex({\n draggable,\n closest,\n inHomeList: isHomeOf(draggable, destination)\n });\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n last,\n displacedBy,\n index: newIndex\n });\n};\n\nconst combineThresholdDivisor = 4;\nvar getCombineImpact = ({\n draggable,\n pageBorderBoxWithDroppableScroll: targetRect,\n previousImpact,\n destination,\n insideDestination,\n afterCritical\n}) => {\n if (!destination.isCombineEnabled) {\n return null;\n }\n const axis = destination.axis;\n const displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n const displacement = displacedBy.value;\n const targetStart = targetRect[axis.start];\n const targetEnd = targetRect[axis.end];\n const withoutDragging = removeDraggableFromList(draggable, insideDestination);\n const combineWith = withoutDragging.find(child => {\n const id = child.descriptor.id;\n const childRect = child.page.borderBox;\n const childSize = childRect[axis.size];\n const threshold = childSize / combineThresholdDivisor;\n const didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n const isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id\n });\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n if (!combineWith) {\n return null;\n }\n const impact = {\n displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: 'COMBINE',\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n};\n\nvar getDragImpact = ({\n pageOffset,\n draggable,\n draggables,\n droppables,\n previousImpact,\n viewport,\n afterCritical\n}) => {\n const pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n const destinationId = getDroppableOver({\n pageBorderBox,\n draggable,\n droppables\n });\n if (!destinationId) {\n return noImpact;\n }\n const destination = droppables[destinationId];\n const insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n const pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n return getCombineImpact({\n pageBorderBoxWithDroppableScroll,\n draggable,\n previousImpact,\n destination,\n insideDestination,\n afterCritical\n }) || getReorderImpact({\n pageBorderBoxWithDroppableScroll,\n draggable,\n destination,\n insideDestination,\n last: previousImpact.displaced,\n viewport,\n afterCritical\n });\n};\n\nvar patchDroppableMap = (droppables, updated) => ({\n ...droppables,\n [updated.descriptor.id]: updated\n});\n\nconst clearUnusedPlaceholder = ({\n previousImpact,\n impact,\n droppables\n}) => {\n const last = whatIsDraggedOver(previousImpact);\n const now = whatIsDraggedOver(impact);\n if (!last) {\n return droppables;\n }\n if (last === now) {\n return droppables;\n }\n const lastDroppable = droppables[last];\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n const updated = removePlaceholder(lastDroppable);\n return patchDroppableMap(droppables, updated);\n};\nvar recomputePlaceholders = ({\n draggable,\n draggables,\n droppables,\n previousImpact,\n impact\n}) => {\n const cleaned = clearUnusedPlaceholder({\n previousImpact,\n impact,\n droppables\n });\n const isOver = whatIsDraggedOver(impact);\n if (!isOver) {\n return cleaned;\n }\n const droppable = droppables[isOver];\n if (isHomeOf(draggable, droppable)) {\n return cleaned;\n }\n if (droppable.subject.withPlaceholder) {\n return cleaned;\n }\n const patched = addPlaceholder(droppable, draggable, draggables);\n return patchDroppableMap(cleaned, patched);\n};\n\nvar update = ({\n state,\n clientSelection: forcedClientSelection,\n dimensions: forcedDimensions,\n viewport: forcedViewport,\n impact: forcedImpact,\n scrollJumpRequest\n}) => {\n const viewport = forcedViewport || state.viewport;\n const dimensions = forcedDimensions || state.dimensions;\n const clientSelection = forcedClientSelection || state.current.client.selection;\n const offset = subtract(clientSelection, state.initial.client.selection);\n const client = {\n offset,\n selection: clientSelection,\n borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n };\n const page = {\n selection: add(client.selection, viewport.scroll.current),\n borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n offset: add(client.offset, viewport.scroll.diff.value)\n };\n const current = {\n client,\n page\n };\n if (state.phase === 'COLLECTING') {\n return {\n ...state,\n dimensions,\n viewport,\n current\n };\n }\n const draggable = dimensions.draggables[state.critical.draggable.id];\n const newImpact = forcedImpact || getDragImpact({\n pageOffset: page.offset,\n draggable,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport,\n afterCritical: state.afterCritical\n });\n const withUpdatedPlaceholders = recomputePlaceholders({\n draggable,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n const result = {\n ...state,\n current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n };\n return result;\n};\n\nfunction getDraggables(ids, draggables) {\n return ids.map(id => draggables[id]);\n}\nvar recompute = ({\n impact,\n viewport,\n draggables,\n destination,\n forceShouldAnimate\n}) => {\n const last = impact.displaced;\n const afterDragging = getDraggables(last.all, draggables);\n const displaced = getDisplacementGroups({\n afterDragging,\n destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate,\n last\n });\n return {\n ...impact,\n displaced\n };\n};\n\nvar getClientBorderBoxCenter = ({\n impact,\n draggable,\n droppable,\n draggables,\n viewport,\n afterCritical\n}) => {\n const pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact,\n draggable,\n draggables,\n droppable,\n afterCritical\n });\n return getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter,\n draggable,\n viewport\n });\n};\n\nvar refreshSnap = ({\n state,\n dimensions: forcedDimensions,\n viewport: forcedViewport\n}) => {\n !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const needsVisibilityCheck = state.impact;\n const viewport = forcedViewport || state.viewport;\n const dimensions = forcedDimensions || state.dimensions;\n const {\n draggables,\n droppables\n } = dimensions;\n const draggable = draggables[state.critical.draggable.id];\n const isOver = whatIsDraggedOver(needsVisibilityCheck);\n !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant() : void 0;\n const destination = droppables[isOver];\n const impact = recompute({\n impact: needsVisibilityCheck,\n viewport,\n destination,\n draggables\n });\n const clientSelection = getClientBorderBoxCenter({\n impact,\n draggable,\n droppable: destination,\n draggables,\n viewport,\n afterCritical: state.afterCritical\n });\n return update({\n impact,\n clientSelection,\n state,\n dimensions,\n viewport\n });\n};\n\nvar getHomeLocation = descriptor => ({\n index: descriptor.index,\n droppableId: descriptor.droppableId\n});\n\nvar getLiftEffect = ({\n draggable,\n home,\n draggables,\n viewport\n}) => {\n const displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n const insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n const rawIndex = insideHome.indexOf(draggable);\n !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant() : void 0;\n const afterDragging = insideHome.slice(rawIndex + 1);\n const effected = afterDragging.reduce((previous, item) => {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n const afterCritical = {\n inVirtualList: home.descriptor.mode === 'virtual',\n displacedBy,\n effected\n };\n const displaced = getDisplacementGroups({\n afterDragging,\n destination: home,\n displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n const impact = {\n displaced,\n displacedBy,\n at: {\n type: 'REORDER',\n destination: getHomeLocation(draggable.descriptor)\n }\n };\n return {\n impact,\n afterCritical\n };\n};\n\nvar patchDimensionMap = (dimensions, updated) => ({\n draggables: dimensions.draggables,\n droppables: patchDroppableMap(dimensions.droppables, updated)\n});\n\nconst start = key => {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\nconst finish = key => {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\n\nvar offsetDraggable = ({\n draggable,\n offset: offset$1,\n initialWindowScroll\n}) => {\n const client = offset(draggable.client, offset$1);\n const page = withScroll(client, initialWindowScroll);\n const moved = {\n ...draggable,\n placeholder: {\n ...draggable.placeholder,\n client\n },\n client,\n page\n };\n return moved;\n};\n\nvar getFrame = droppable => {\n const frame = droppable.frame;\n !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant() : void 0;\n return frame;\n};\n\nvar adjustAdditionsForScrollChanges = ({\n additions,\n updatedDroppables,\n viewport\n}) => {\n const windowScrollChange = viewport.scroll.diff.value;\n return additions.map(draggable => {\n const droppableId = draggable.descriptor.droppableId;\n const modified = updatedDroppables[droppableId];\n const frame = getFrame(modified);\n const droppableScrollChange = frame.scroll.diff.value;\n const totalChange = add(windowScrollChange, droppableScrollChange);\n const moved = offsetDraggable({\n draggable,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n};\n\nvar publishWhileDraggingInVirtual = ({\n state,\n published\n}) => {\n start();\n const withScrollChange = published.modified.map(update => {\n const existing = state.dimensions.droppables[update.droppableId];\n const scrolled = scrollDroppable(existing, update.scroll);\n return scrolled;\n });\n const droppables = {\n ...state.dimensions.droppables,\n ...toDroppableMap(withScrollChange)\n };\n const updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n const draggables = {\n ...state.dimensions.draggables,\n ...updatedAdditions\n };\n published.removals.forEach(id => {\n delete draggables[id];\n });\n const dimensions = {\n droppables,\n draggables\n };\n const wasOverId = whatIsDraggedOver(state.impact);\n const wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n const draggable = dimensions.draggables[state.critical.draggable.id];\n const home = dimensions.droppables[state.critical.droppable.id];\n const {\n impact: onLiftImpact,\n afterCritical\n } = getLiftEffect({\n draggable,\n home,\n draggables,\n viewport: state.viewport\n });\n const previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n const impact = getDragImpact({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact,\n viewport: state.viewport,\n afterCritical\n });\n finish();\n const draggingState = {\n ...state,\n phase: 'DRAGGING',\n impact,\n onLiftImpact,\n dimensions,\n afterCritical,\n forceShouldAnimate: false\n };\n if (state.phase === 'COLLECTING') {\n return draggingState;\n }\n const dropPending = {\n ...draggingState,\n phase: 'DROP_PENDING',\n reason: state.reason,\n isWaiting: false\n };\n return dropPending;\n};\n\nconst isSnapping = state => state.movementMode === 'SNAP';\nconst postDroppableChange = (state, updated, isEnabledChanging) => {\n const dimensions = patchDimensionMap(state.dimensions, updated);\n if (!isSnapping(state) || isEnabledChanging) {\n return update({\n state,\n dimensions\n });\n }\n return refreshSnap({\n state,\n dimensions\n });\n};\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === 'SNAP') {\n return {\n ...state,\n scrollJumpRequest: null\n };\n }\n return state;\n}\nconst idle$2 = {\n phase: 'IDLE',\n completed: null,\n shouldFlush: false\n};\nvar reducer = (state = idle$2, action) => {\n if (action.type === 'FLUSH') {\n return {\n ...idle$2,\n shouldFlush: true\n };\n }\n if (action.type === 'INITIAL_PUBLISH') {\n !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant() : void 0;\n const {\n critical,\n clientSelection,\n viewport,\n dimensions,\n movementMode\n } = action.payload;\n const draggable = dimensions.draggables[critical.draggable.id];\n const home = dimensions.droppables[critical.droppable.id];\n const client = {\n selection: clientSelection,\n borderBoxCenter: draggable.client.borderBox.center,\n offset: origin\n };\n const initial = {\n client,\n page: {\n selection: add(client.selection, viewport.scroll.initial),\n borderBoxCenter: add(client.selection, viewport.scroll.initial),\n offset: add(client.selection, viewport.scroll.diff.value)\n }\n };\n const isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(item => !item.isFixedOnPage);\n const {\n impact,\n afterCritical\n } = getLiftEffect({\n draggable,\n home,\n draggables: dimensions.draggables,\n viewport\n });\n const result = {\n phase: 'DRAGGING',\n isDragging: true,\n critical,\n movementMode,\n dimensions,\n initial,\n current: initial,\n isWindowScrollAllowed,\n impact,\n afterCritical,\n onLiftImpact: impact,\n viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n if (action.type === 'COLLECTION_STARTING') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Collection cannot start from phase ${state.phase}`) : invariant() : void 0;\n const result = {\n ...state,\n phase: 'COLLECTING'\n };\n return result;\n }\n if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Unexpected ${action.type} received in phase ${state.phase}`) : invariant() : void 0;\n return publishWhileDraggingInVirtual({\n state,\n published: action.payload\n });\n }\n if (action.type === 'MOVE') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${action.type} not permitted in phase ${state.phase}`) : invariant() : void 0;\n const {\n client: clientSelection\n } = action.payload;\n if (isEqual$1(clientSelection, state.current.client.selection)) {\n return state;\n }\n return update({\n state,\n clientSelection,\n impact: isSnapping(state) ? state.impact : null\n });\n }\n if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n if (state.phase === 'DROP_PENDING') {\n return removeScrollJumpRequest(state);\n }\n if (state.phase === 'COLLECTING') {\n return removeScrollJumpRequest(state);\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${action.type} not permitted in phase ${state.phase}`) : invariant() : void 0;\n const {\n id,\n newScroll\n } = action.payload;\n const target = state.dimensions.droppables[id];\n if (!target) {\n return state;\n }\n const scrolled = scrollDroppable(target, newScroll);\n return postDroppableChange(state, scrolled, false);\n }\n if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Attempting to move in an unsupported phase ${state.phase}`) : invariant() : void 0;\n const {\n id,\n isEnabled\n } = action.payload;\n const target = state.dimensions.droppables[id];\n !target ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find Droppable[id: ${id}] to toggle its enabled state`) : invariant() : void 0;\n !(target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Trying to set droppable isEnabled to ${String(isEnabled)}\n but it is already ${String(target.isEnabled)}`) : invariant() : void 0;\n const updated = {\n ...target,\n isEnabled\n };\n return postDroppableChange(state, updated, true);\n }\n if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Attempting to move in an unsupported phase ${state.phase}`) : invariant() : void 0;\n const {\n id,\n isCombineEnabled\n } = action.payload;\n const target = state.dimensions.droppables[id];\n !target ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find Droppable[id: ${id}] to toggle its isCombineEnabled state`) : invariant() : void 0;\n !(target.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Trying to set droppable isCombineEnabled to ${String(isCombineEnabled)}\n but it is already ${String(target.isCombineEnabled)}`) : invariant() : void 0;\n const updated = {\n ...target,\n isCombineEnabled\n };\n return postDroppableChange(state, updated, true);\n }\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot move by window in phase ${state.phase}`) : invariant() : void 0;\n !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant() : void 0;\n const newScroll = action.payload.newScroll;\n if (isEqual$1(state.viewport.scroll.current, newScroll)) {\n return removeScrollJumpRequest(state);\n }\n const viewport = scrollViewport(state.viewport, newScroll);\n if (isSnapping(state)) {\n return refreshSnap({\n state,\n viewport\n });\n }\n return update({\n state,\n viewport\n });\n }\n if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n if (!isMovementAllowed(state)) {\n return state;\n }\n const maxScroll = action.payload.maxScroll;\n if (isEqual$1(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n const withMaxScroll = {\n ...state.viewport,\n scroll: {\n ...state.viewport.scroll,\n max: maxScroll\n }\n };\n return {\n ...state,\n viewport: withMaxScroll\n };\n }\n if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${action.type} received while not in DRAGGING phase`) : invariant() : void 0;\n const result = moveInDirection({\n state,\n type: action.type\n });\n if (!result) {\n return state;\n }\n return update({\n state,\n impact: result.impact,\n clientSelection: result.clientSelection,\n scrollJumpRequest: result.scrollJumpRequest\n });\n }\n if (action.type === 'DROP_PENDING') {\n const reason = action.payload.reason;\n !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant() : void 0;\n const newState = {\n ...state,\n phase: 'DROP_PENDING',\n isWaiting: true,\n reason\n };\n return newState;\n }\n if (action.type === 'DROP_ANIMATE') {\n const {\n completed,\n dropDuration,\n newHomeClientOffset\n } = action.payload;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot animate drop from phase ${state.phase}`) : invariant() : void 0;\n const result = {\n phase: 'DROP_ANIMATING',\n completed,\n dropDuration,\n newHomeClientOffset,\n dimensions: state.dimensions\n };\n return result;\n }\n if (action.type === 'DROP_COMPLETE') {\n const {\n completed\n } = action.payload;\n return {\n phase: 'IDLE',\n completed,\n shouldFlush: false\n };\n }\n return state;\n};\n\nfunction guard(action, predicate) {\n return action instanceof Object && 'type' in action && action.type === predicate;\n}\nconst beforeInitialCapture = args => ({\n type: 'BEFORE_INITIAL_CAPTURE',\n payload: args\n});\nconst lift$1 = args => ({\n type: 'LIFT',\n payload: args\n});\nconst initialPublish = args => ({\n type: 'INITIAL_PUBLISH',\n payload: args\n});\nconst publishWhileDragging = args => ({\n type: 'PUBLISH_WHILE_DRAGGING',\n payload: args\n});\nconst collectionStarting = () => ({\n type: 'COLLECTION_STARTING',\n payload: null\n});\nconst updateDroppableScroll = args => ({\n type: 'UPDATE_DROPPABLE_SCROLL',\n payload: args\n});\nconst updateDroppableIsEnabled = args => ({\n type: 'UPDATE_DROPPABLE_IS_ENABLED',\n payload: args\n});\nconst updateDroppableIsCombineEnabled = args => ({\n type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n payload: args\n});\nconst move = args => ({\n type: 'MOVE',\n payload: args\n});\nconst moveByWindowScroll = args => ({\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: args\n});\nconst updateViewportMaxScroll = args => ({\n type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n payload: args\n});\nconst moveUp = () => ({\n type: 'MOVE_UP',\n payload: null\n});\nconst moveDown = () => ({\n type: 'MOVE_DOWN',\n payload: null\n});\nconst moveRight = () => ({\n type: 'MOVE_RIGHT',\n payload: null\n});\nconst moveLeft = () => ({\n type: 'MOVE_LEFT',\n payload: null\n});\nconst flush = () => ({\n type: 'FLUSH',\n payload: null\n});\nconst animateDrop = args => ({\n type: 'DROP_ANIMATE',\n payload: args\n});\nconst completeDrop = args => ({\n type: 'DROP_COMPLETE',\n payload: args\n});\nconst drop = args => ({\n type: 'DROP',\n payload: args\n});\nconst dropPending = args => ({\n type: 'DROP_PENDING',\n payload: args\n});\nconst dropAnimationFinished = () => ({\n type: 'DROP_ANIMATION_FINISHED',\n payload: null\n});\n\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n const indexes = insideDestination.map(d => d.descriptor.index);\n const errors = {};\n for (let i = 1; i < indexes.length; i++) {\n const current = indexes[i];\n const previous = indexes[i - 1];\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n if (!Object.keys(errors).length) {\n return;\n }\n const formatted = indexes.map(index => {\n const hasError = Boolean(errors[index]);\n return hasError ? `[🔥${index}]` : `${index}`;\n }).join(', ');\n process.env.NODE_ENV !== \"production\" ? warning(`\n Detected non-consecutive <Draggable /> indexes.\n\n (This can cause unexpected bugs)\n\n ${formatted}\n `) : void 0;\n}\nfunction validateDimensions(critical, dimensions) {\n if (process.env.NODE_ENV !== 'production') {\n const insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\n\nvar lift = marshal => ({\n getState,\n dispatch\n}) => next => action => {\n if (!guard(action, 'LIFT')) {\n next(action);\n return;\n }\n const {\n id,\n clientSelection,\n movementMode\n } = action.payload;\n const initial = getState();\n if (initial.phase === 'DROP_ANIMATING') {\n dispatch(completeDrop({\n completed: initial.completed\n }));\n }\n !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant() : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode\n }));\n const scrollOptions = {\n shouldPublishImmediately: movementMode === 'SNAP'\n };\n const request = {\n draggableId: id,\n scrollOptions\n };\n const {\n critical,\n dimensions,\n viewport\n } = marshal.startPublishing(request);\n validateDimensions(critical, dimensions);\n dispatch(initialPublish({\n critical,\n dimensions,\n clientSelection,\n movementMode,\n viewport\n }));\n};\n\nvar style = marshal => () => next => action => {\n if (guard(action, 'INITIAL_PUBLISH')) {\n marshal.dragging();\n }\n if (guard(action, 'DROP_ANIMATE')) {\n marshal.dropping(action.payload.completed.result.reason);\n }\n if (guard(action, 'FLUSH') || guard(action, 'DROP_COMPLETE')) {\n marshal.resting();\n }\n next(action);\n};\n\nconst curves = {\n outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n drop: 'cubic-bezier(.2,1,.1,1)'\n};\nconst combine = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nconst timings = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nconst outOfTheWayTiming = `${timings.outOfTheWay}s ${curves.outOfTheWay}`;\nconst transitions = {\n fluid: `opacity ${outOfTheWayTiming}`,\n snap: `transform ${outOfTheWayTiming}, opacity ${outOfTheWayTiming}`,\n drop: duration => {\n const timing = `${duration}s ${curves.drop}`;\n return `transform ${timing}, opacity ${timing}`;\n },\n outOfTheWay: `transform ${outOfTheWayTiming}`,\n placeholder: `height ${outOfTheWayTiming}, width ${outOfTheWayTiming}, margin ${outOfTheWayTiming}`\n};\nconst moveTo = offset => isEqual$1(offset, origin) ? undefined : `translate(${offset.x}px, ${offset.y}px)`;\nconst transforms = {\n moveTo,\n drop: (offset, isCombining) => {\n const translate = moveTo(offset);\n if (!translate) {\n return undefined;\n }\n if (!isCombining) {\n return translate;\n }\n return `${translate} scale(${combine.scale.drop})`;\n }\n};\n\nconst {\n minDropTime,\n maxDropTime\n} = timings;\nconst dropTimeRange = maxDropTime - minDropTime;\nconst maxDropTimeAtDistance = 1500;\nconst cancelDropModifier = 0.6;\nvar getDropDuration = ({\n current,\n destination,\n reason\n}) => {\n const distance$1 = distance(current, destination);\n if (distance$1 <= 0) {\n return minDropTime;\n }\n if (distance$1 >= maxDropTimeAtDistance) {\n return maxDropTime;\n }\n const percentage = distance$1 / maxDropTimeAtDistance;\n const duration = minDropTime + dropTimeRange * percentage;\n const withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n return Number(withDuration.toFixed(2));\n};\n\nvar getNewHomeClientOffset = ({\n impact,\n draggable,\n dimensions,\n viewport,\n afterCritical\n}) => {\n const {\n draggables,\n droppables\n } = dimensions;\n const droppableId = whatIsDraggedOver(impact);\n const destination = droppableId ? droppables[droppableId] : null;\n const home = droppables[draggable.descriptor.droppableId];\n const newClientCenter = getClientBorderBoxCenter({\n impact,\n draggable,\n draggables,\n afterCritical,\n droppable: destination || home,\n viewport\n });\n const offset = subtract(newClientCenter, draggable.client.borderBox.center);\n return offset;\n};\n\nvar getDropImpact = ({\n draggables,\n reason,\n lastImpact,\n home,\n viewport,\n onLiftImpact\n}) => {\n if (!lastImpact.at || reason !== 'DROP') {\n const recomputedHomeImpact = recompute({\n draggables,\n impact: onLiftImpact,\n destination: home,\n viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n if (lastImpact.at.type === 'REORDER') {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n const withoutMovement = {\n ...lastImpact,\n displaced: emptyGroups\n };\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n};\n\nconst dropMiddleware = ({\n getState,\n dispatch\n}) => next => action => {\n if (!guard(action, 'DROP')) {\n next(action);\n return;\n }\n const state = getState();\n const reason = action.payload.reason;\n if (state.phase === 'COLLECTING') {\n dispatch(dropPending({\n reason\n }));\n return;\n }\n if (state.phase === 'IDLE') {\n return;\n }\n const isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant() : void 0;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot drop in phase: ${state.phase}`) : invariant() : void 0;\n const critical = state.critical;\n const dimensions = state.dimensions;\n const draggable = dimensions.draggables[state.critical.draggable.id];\n const {\n impact,\n didDropInsideDroppable\n } = getDropImpact({\n reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n });\n const destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n const combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n const source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n const result = {\n draggableId: draggable.descriptor.id,\n type: draggable.descriptor.type,\n source,\n reason,\n mode: state.movementMode,\n destination,\n combine\n };\n const newHomeClientOffset = getNewHomeClientOffset({\n impact,\n draggable,\n dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n const completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result,\n impact\n };\n const isAnimationRequired = !isEqual$1(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n if (!isAnimationRequired) {\n dispatch(completeDrop({\n completed\n }));\n return;\n }\n const dropDuration = getDropDuration({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason\n });\n const args = {\n newHomeClientOffset,\n dropDuration,\n completed\n };\n dispatch(animateDrop(args));\n};\n\nvar getWindowScroll = () => ({\n x: window.pageXOffset,\n y: window.pageYOffset\n});\n\nfunction getWindowScrollBinding(update) {\n return {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: event => {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n update();\n }\n };\n}\nfunction getScrollListener({\n onWindowScroll\n}) {\n function updateScroll() {\n onWindowScroll(getWindowScroll());\n }\n const scheduled = rafSchd(updateScroll);\n const binding = getWindowScrollBinding(scheduled);\n let unbind = noop$2;\n function isActive() {\n return unbind !== noop$2;\n }\n function start() {\n !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant() : void 0;\n unbind = bindEvents(window, [binding]);\n }\n function stop() {\n !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant() : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop$2;\n }\n return {\n start,\n stop,\n isActive\n };\n}\n\nconst shouldStop$1 = action => guard(action, 'DROP_COMPLETE') || guard(action, 'DROP_ANIMATE') || guard(action, 'FLUSH');\nconst scrollListener = store => {\n const listener = getScrollListener({\n onWindowScroll: newScroll => {\n store.dispatch(moveByWindowScroll({\n newScroll\n }));\n }\n });\n return next => action => {\n if (!listener.isActive() && guard(action, 'INITIAL_PUBLISH')) {\n listener.start();\n }\n if (listener.isActive() && shouldStop$1(action)) {\n listener.stop();\n }\n next(action);\n };\n};\n\nvar getExpiringAnnounce = announce => {\n let wasCalled = false;\n let isExpired = false;\n const timeoutId = setTimeout(() => {\n isExpired = true;\n });\n const result = message => {\n if (wasCalled) {\n process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n return;\n }\n if (isExpired) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Announcements cannot be made asynchronously.\n Default message has already been announced.\n `) : void 0;\n return;\n }\n wasCalled = true;\n announce(message);\n clearTimeout(timeoutId);\n };\n result.wasCalled = () => wasCalled;\n return result;\n};\n\nvar getAsyncMarshal = () => {\n const entries = [];\n const execute = timerId => {\n const index = entries.findIndex(item => item.timerId === timerId);\n !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant() : void 0;\n const [entry] = entries.splice(index, 1);\n entry.callback();\n };\n const add = fn => {\n const timerId = setTimeout(() => execute(timerId));\n const entry = {\n timerId,\n callback: fn\n };\n entries.push(entry);\n };\n const flush = () => {\n if (!entries.length) {\n return;\n }\n const shallow = [...entries];\n entries.length = 0;\n shallow.forEach(entry => {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n return {\n add,\n flush\n };\n};\n\nconst areLocationsEqual = (first, second) => {\n if (first == null && second == null) {\n return true;\n }\n if (first == null || second == null) {\n return false;\n }\n return first.droppableId === second.droppableId && first.index === second.index;\n};\nconst isCombineEqual = (first, second) => {\n if (first == null && second == null) {\n return true;\n }\n if (first == null || second == null) {\n return false;\n }\n return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nconst isCriticalEqual = (first, second) => {\n if (first === second) {\n return true;\n }\n const isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n const isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\n\nconst withTimings = (key, fn) => {\n start();\n fn();\n finish();\n};\nconst getDragStart = (critical, mode) => ({\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode\n});\nfunction execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n const willExpire = getExpiringAnnounce(announce);\n const provided = {\n announce: willExpire\n };\n responder(data, provided);\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n}\nvar getPublisher = (getResponders, announce) => {\n const asyncMarshal = getAsyncMarshal();\n let dragging = null;\n const beforeCapture = (draggableId, mode) => {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant() : void 0;\n withTimings('onBeforeCapture', () => {\n const fn = getResponders().onBeforeCapture;\n if (fn) {\n const before = {\n draggableId,\n mode\n };\n fn(before);\n }\n });\n };\n const beforeStart = (critical, mode) => {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant() : void 0;\n withTimings('onBeforeDragStart', () => {\n const fn = getResponders().onBeforeDragStart;\n if (fn) {\n fn(getDragStart(critical, mode));\n }\n });\n };\n const start = (critical, mode) => {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant() : void 0;\n const data = getDragStart(critical, mode);\n dragging = {\n mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(() => {\n withTimings('onDragStart', () => execute(getResponders().onDragStart, data, announce, preset.onDragStart));\n });\n };\n const update = (critical, impact) => {\n const location = tryGetDestination(impact);\n const combine = tryGetCombine(impact);\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant() : void 0;\n const hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n const hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n const hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n if (hasGroupingChanged) {\n dragging.lastCombine = combine;\n }\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n const data = {\n ...getDragStart(critical, dragging.mode),\n combine,\n destination: location\n };\n asyncMarshal.add(() => {\n withTimings('onDragUpdate', () => execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate));\n });\n };\n const flush = () => {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant() : void 0;\n asyncMarshal.flush();\n };\n const drop = result => {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant() : void 0;\n dragging = null;\n withTimings('onDragEnd', () => execute(getResponders().onDragEnd, result, announce, preset.onDragEnd));\n };\n const abort = () => {\n if (!dragging) {\n return;\n }\n const result = {\n ...getDragStart(dragging.lastCritical, dragging.mode),\n combine: null,\n destination: null,\n reason: 'CANCEL'\n };\n drop(result);\n };\n return {\n beforeCapture,\n beforeStart,\n start,\n update,\n flush,\n drop,\n abort\n };\n};\n\nvar responders = (getResponders, announce) => {\n const publisher = getPublisher(getResponders, announce);\n return store => next => action => {\n if (guard(action, 'BEFORE_INITIAL_CAPTURE')) {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n if (guard(action, 'INITIAL_PUBLISH')) {\n const critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n if (guard(action, 'DROP_COMPLETE')) {\n const result = action.payload.completed.result;\n publisher.flush();\n next(action);\n publisher.drop(result);\n return;\n }\n next(action);\n if (guard(action, 'FLUSH')) {\n publisher.abort();\n return;\n }\n const state = store.getState();\n if (state.phase === 'DRAGGING') {\n publisher.update(state.critical, state.impact);\n }\n };\n};\n\nconst dropAnimationFinishMiddleware = store => next => action => {\n if (!guard(action, 'DROP_ANIMATION_FINISHED')) {\n next(action);\n return;\n }\n const state = store.getState();\n !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant() : void 0;\n store.dispatch(completeDrop({\n completed: state.completed\n }));\n};\n\nconst dropAnimationFlushOnScrollMiddleware = store => {\n let unbind = null;\n let frameId = null;\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n return next => action => {\n if (guard(action, 'FLUSH') || guard(action, 'DROP_COMPLETE') || guard(action, 'DROP_ANIMATION_FINISHED')) {\n clear();\n }\n next(action);\n if (!guard(action, 'DROP_ANIMATE')) {\n return;\n }\n const binding = {\n eventName: 'scroll',\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n const state = store.getState();\n if (state.phase === 'DROP_ANIMATING') {\n store.dispatch(dropAnimationFinished());\n }\n }\n };\n frameId = requestAnimationFrame(() => {\n frameId = null;\n unbind = bindEvents(window, [binding]);\n });\n };\n};\n\nvar dimensionMarshalStopper = marshal => () => next => action => {\n if (guard(action, 'DROP_COMPLETE') || guard(action, 'FLUSH') || guard(action, 'DROP_ANIMATE')) {\n marshal.stopPublishing();\n }\n next(action);\n};\n\nvar focus = marshal => {\n let isWatching = false;\n return () => next => action => {\n if (guard(action, 'INITIAL_PUBLISH')) {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n next(action);\n if (!isWatching) {\n return;\n }\n if (guard(action, 'FLUSH')) {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n if (guard(action, 'DROP_COMPLETE')) {\n isWatching = false;\n const result = action.payload.completed.result;\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n marshal.tryRestoreFocusRecorded();\n }\n };\n};\n\nconst shouldStop = action => guard(action, 'DROP_COMPLETE') || guard(action, 'DROP_ANIMATE') || guard(action, 'FLUSH');\nvar autoScroll = autoScroller => store => next => action => {\n if (shouldStop(action)) {\n autoScroller.stop();\n next(action);\n return;\n }\n if (guard(action, 'INITIAL_PUBLISH')) {\n next(action);\n const state = store.getState();\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant() : void 0;\n autoScroller.start(state);\n return;\n }\n next(action);\n autoScroller.scroll(store.getState());\n};\n\nconst pendingDrop = store => next => action => {\n next(action);\n if (!guard(action, 'PUBLISH_WHILE_DRAGGING')) {\n return;\n }\n const postActionState = store.getState();\n if (postActionState.phase !== 'DROP_PENDING') {\n return;\n }\n if (postActionState.isWaiting) {\n return;\n }\n store.dispatch(drop({\n reason: postActionState.reason\n }));\n};\n\nconst composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: '@hello-pangea/dnd'\n}) : compose;\nvar createStore = ({\n dimensionMarshal,\n focusMarshal,\n styleMarshal,\n getResponders,\n announce,\n autoScroller\n}) => createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift(dimensionMarshal), dropMiddleware, dropAnimationFinishMiddleware, dropAnimationFlushOnScrollMiddleware, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n\nconst clean$1 = () => ({\n additions: {},\n removals: {},\n modified: {}\n});\nfunction createPublisher({\n registry,\n callbacks\n}) {\n let staging = clean$1();\n let frameId = null;\n const collect = () => {\n if (frameId) {\n return;\n }\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(() => {\n frameId = null;\n start();\n const {\n additions,\n removals,\n modified\n } = staging;\n const added = Object.keys(additions).map(id => registry.draggable.getById(id).getDimension(origin)).sort((a, b) => a.descriptor.index - b.descriptor.index);\n const updated = Object.keys(modified).map(id => {\n const entry = registry.droppable.getById(id);\n const scroll = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll\n };\n });\n const result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1();\n finish();\n callbacks.publish(result);\n });\n };\n const add = entry => {\n const id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n collect();\n };\n const remove = entry => {\n const descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n collect();\n };\n const stop = () => {\n if (!frameId) {\n return;\n }\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1();\n };\n return {\n add,\n remove,\n stop\n };\n}\n\nvar getMaxScroll = ({\n scrollHeight,\n scrollWidth,\n height,\n width\n}) => {\n const maxScroll = subtract({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n const adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n};\n\nvar getDocumentElement = () => {\n const doc = document.documentElement;\n !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant() : void 0;\n return doc;\n};\n\nvar getMaxWindowScroll = () => {\n const doc = getDocumentElement();\n const maxScroll = getMaxScroll({\n scrollHeight: doc.scrollHeight,\n scrollWidth: doc.scrollWidth,\n width: doc.clientWidth,\n height: doc.clientHeight\n });\n return maxScroll;\n};\n\nvar getViewport = () => {\n const scroll = getWindowScroll();\n const maxScroll = getMaxWindowScroll();\n const top = scroll.y;\n const left = scroll.x;\n const doc = getDocumentElement();\n const width = doc.clientWidth;\n const height = doc.clientHeight;\n const right = left + width;\n const bottom = top + height;\n const frame = getRect({\n top,\n left,\n right,\n bottom\n });\n const viewport = {\n frame,\n scroll: {\n initial: scroll,\n current: scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n return viewport;\n};\n\nvar getInitialPublish = ({\n critical,\n scrollOptions,\n registry\n}) => {\n start();\n const viewport = getViewport();\n const windowScroll = viewport.scroll.current;\n const home = critical.droppable;\n const droppables = registry.droppable.getAllByType(home.type).map(entry => entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions));\n const draggables = registry.draggable.getAllByType(critical.draggable.type).map(entry => entry.getDimension(windowScroll));\n const dimensions = {\n draggables: toDraggableMap(draggables),\n droppables: toDroppableMap(droppables)\n };\n finish();\n const result = {\n dimensions,\n critical,\n viewport\n };\n return result;\n};\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n const home = registry.droppable.getById(entry.descriptor.droppableId);\n if (home.descriptor.mode !== 'virtual') {\n process.env.NODE_ENV !== \"production\" ? warning(`\n You are attempting to add or remove a Draggable [id: ${entry.descriptor.id}]\n while a drag is occurring. This is only supported for virtual lists.\n\n See https://github.com/hello-pangea/dnd/blob/main/docs/patterns/virtual-lists.md\n `) : void 0;\n return false;\n }\n return true;\n}\nvar createDimensionMarshal = (registry, callbacks) => {\n let collection = null;\n const publisher = createPublisher({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry\n });\n const updateDroppableIsEnabled = (id, isEnabled) => {\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update is enabled flag of Droppable ${id} as it is not registered`) : invariant() : void 0;\n if (!collection) {\n return;\n }\n callbacks.updateDroppableIsEnabled({\n id,\n isEnabled\n });\n };\n const updateDroppableIsCombineEnabled = (id, isCombineEnabled) => {\n if (!collection) {\n return;\n }\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update isCombineEnabled flag of Droppable ${id} as it is not registered`) : invariant() : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id,\n isCombineEnabled\n });\n };\n const updateDroppableScroll = (id, newScroll) => {\n if (!collection) {\n return;\n }\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update the scroll on Droppable ${id} as it is not registered`) : invariant() : void 0;\n callbacks.updateDroppableScroll({\n id,\n newScroll\n });\n };\n const scrollDroppable = (id, change) => {\n if (!collection) {\n return;\n }\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n const stopPublishing = () => {\n if (!collection) {\n return;\n }\n publisher.stop();\n const home = collection.critical.droppable;\n registry.droppable.getAllByType(home.type).forEach(entry => entry.callbacks.dragStopped());\n collection.unsubscribe();\n collection = null;\n };\n const subscriber = event => {\n !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant() : void 0;\n const dragging = collection.critical.draggable;\n if (event.type === 'ADDITION') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n if (event.type === 'REMOVAL') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n const startPublishing = request => {\n !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant() : void 0;\n const entry = registry.draggable.getById(request.draggableId);\n const home = registry.droppable.getById(entry.descriptor.droppableId);\n const critical = {\n draggable: entry.descriptor,\n droppable: home.descriptor\n };\n const unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical,\n unsubscribe\n };\n return getInitialPublish({\n critical,\n registry,\n scrollOptions: request.scrollOptions\n });\n };\n const marshal = {\n updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled,\n scrollDroppable,\n updateDroppableScroll,\n startPublishing,\n stopPublishing\n };\n return marshal;\n};\n\nvar canStartDrag = (state, id) => {\n if (state.phase === 'IDLE') {\n return true;\n }\n if (state.phase !== 'DROP_ANIMATING') {\n return false;\n }\n if (state.completed.result.draggableId === id) {\n return false;\n }\n return state.completed.result.reason === 'DROP';\n};\n\nvar scrollWindow = change => {\n window.scrollBy(change.x, change.y);\n};\n\nconst getScrollableDroppables = memoizeOne(droppables => toDroppableList(droppables).filter(droppable => {\n if (!droppable.isEnabled) {\n return false;\n }\n if (!droppable.frame) {\n return false;\n }\n return true;\n}));\nconst getScrollableDroppableOver = (target, droppables) => {\n const maybe = getScrollableDroppables(droppables).find(droppable => {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant() : void 0;\n return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n }) || null;\n return maybe;\n};\nvar getBestScrollableDroppable = ({\n center,\n destination,\n droppables\n}) => {\n if (destination) {\n const dimension = droppables[destination];\n if (!dimension.frame) {\n return null;\n }\n return dimension;\n }\n const dimension = getScrollableDroppableOver(center, droppables);\n return dimension;\n};\n\nconst defaultAutoScrollerOptions = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: percentage => percentage ** 2,\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n },\n disabled: false\n};\n\nvar getDistanceThresholds = (container, axis, getAutoScrollerOptions = () => defaultAutoScrollerOptions) => {\n const autoScrollerOptions = getAutoScrollerOptions();\n const startScrollingFrom = container[axis.size] * autoScrollerOptions.startFromPercentage;\n const maxScrollValueAt = container[axis.size] * autoScrollerOptions.maxScrollAtPercentage;\n const thresholds = {\n startScrollingFrom,\n maxScrollValueAt\n };\n return thresholds;\n};\n\nvar getPercentage = ({\n startOfRange,\n endOfRange,\n current\n}) => {\n const range = endOfRange - startOfRange;\n if (range === 0) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Detected distance range of 0 in the fluid auto scroller\n This is unexpected and would cause a divide by 0 issue.\n Not allowing an auto scroll\n `) : void 0;\n return 0;\n }\n const currentInRange = current - startOfRange;\n const percentage = currentInRange / range;\n return percentage;\n};\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (distanceToEdge, thresholds, getAutoScrollerOptions = () => defaultAutoScrollerOptions) => {\n const autoScrollerOptions = getAutoScrollerOptions();\n if (distanceToEdge > thresholds.startScrollingFrom) {\n return 0;\n }\n if (distanceToEdge <= thresholds.maxScrollValueAt) {\n return autoScrollerOptions.maxPixelScroll;\n }\n if (distanceToEdge === thresholds.startScrollingFrom) {\n return minScroll;\n }\n const percentageFromMaxScrollValueAt = getPercentage({\n startOfRange: thresholds.maxScrollValueAt,\n endOfRange: thresholds.startScrollingFrom,\n current: distanceToEdge\n });\n const percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n const scroll = autoScrollerOptions.maxPixelScroll * autoScrollerOptions.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll);\n};\n\nvar dampenValueByTime = (proposedScroll, dragStartTime, getAutoScrollerOptions) => {\n const autoScrollerOptions = getAutoScrollerOptions();\n const accelerateAt = autoScrollerOptions.durationDampening.accelerateAt;\n const stopAt = autoScrollerOptions.durationDampening.stopDampeningAt;\n const startOfRange = dragStartTime;\n const endOfRange = stopAt;\n const now = Date.now();\n const runTime = now - startOfRange;\n if (runTime >= stopAt) {\n return proposedScroll;\n }\n if (runTime < accelerateAt) {\n return minScroll;\n }\n const betweenAccelerateAtAndStopAtPercentage = getPercentage({\n startOfRange: accelerateAt,\n endOfRange,\n current: runTime\n });\n const scroll = proposedScroll * autoScrollerOptions.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll);\n};\n\nvar getValue = ({\n distanceToEdge,\n thresholds,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const scroll = getValueFromDistance(distanceToEdge, thresholds, getAutoScrollerOptions);\n if (scroll === 0) {\n return 0;\n }\n if (!shouldUseTimeDampening) {\n return scroll;\n }\n return Math.max(dampenValueByTime(scroll, dragStartTime, getAutoScrollerOptions), minScroll);\n};\n\nvar getScrollOnAxis = ({\n container,\n distanceToEdges,\n dragStartTime,\n axis,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const thresholds = getDistanceThresholds(container, axis, getAutoScrollerOptions);\n const isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n if (isCloserToEnd) {\n return getValue({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n }\n return -1 * getValue({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n};\n\nvar adjustForSizeLimits = ({\n container,\n subject,\n proposedScroll\n}) => {\n const isTooBigVertically = subject.height > container.height;\n const isTooBigHorizontally = subject.width > container.width;\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n};\n\nconst clean = apply(value => value === 0 ? 0 : value);\nvar getScroll$1 = ({\n dragStartTime,\n container,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n const y = getScrollOnAxis({\n container,\n distanceToEdges,\n dragStartTime,\n axis: vertical,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n const x = getScrollOnAxis({\n container,\n distanceToEdges,\n dragStartTime,\n axis: horizontal,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n const required = clean({\n x,\n y\n });\n if (isEqual$1(required, origin)) {\n return null;\n }\n const limited = adjustForSizeLimits({\n container,\n subject,\n proposedScroll: required\n });\n if (!limited) {\n return null;\n }\n return isEqual$1(limited, origin) ? null : limited;\n};\n\nconst smallestSigned = apply(value => {\n if (value === 0) {\n return 0;\n }\n return value > 0 ? 1 : -1;\n});\nconst getOverlap = (() => {\n const getRemainder = (target, max) => {\n if (target < 0) {\n return target;\n }\n if (target > max) {\n return target - max;\n }\n return 0;\n };\n return ({\n current,\n max,\n change\n }) => {\n const targetScroll = add(current, change);\n const overlap = {\n x: getRemainder(targetScroll.x, max.x),\n y: getRemainder(targetScroll.y, max.y)\n };\n if (isEqual$1(overlap, origin)) {\n return null;\n }\n return overlap;\n };\n})();\nconst canPartiallyScroll = ({\n max: rawMax,\n current,\n change\n}) => {\n const max = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n const smallestChange = smallestSigned(change);\n const overlap = getOverlap({\n max,\n current,\n change: smallestChange\n });\n if (!overlap) {\n return true;\n }\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n return false;\n};\nconst canScrollWindow = (viewport, change) => canPartiallyScroll({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change\n});\nconst getWindowOverlap = (viewport, change) => {\n if (!canScrollWindow(viewport, change)) {\n return null;\n }\n const max = viewport.scroll.max;\n const current = viewport.scroll.current;\n return getOverlap({\n current,\n max,\n change\n });\n};\nconst canScrollDroppable = (droppable, change) => {\n const frame = droppable.frame;\n if (!frame) {\n return false;\n }\n return canPartiallyScroll({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change\n });\n};\nconst getDroppableOverlap = (droppable, change) => {\n const frame = droppable.frame;\n if (!frame) {\n return null;\n }\n if (!canScrollDroppable(droppable, change)) {\n return null;\n }\n return getOverlap({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change\n });\n};\n\nvar getWindowScrollChange = ({\n viewport,\n subject,\n center,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const scroll = getScroll$1({\n dragStartTime,\n container: viewport.frame,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n};\n\nvar getDroppableScrollChange = ({\n droppable,\n subject,\n center,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const frame = droppable.frame;\n if (!frame) {\n return null;\n }\n const scroll = getScroll$1({\n dragStartTime,\n container: frame.pageMarginBox,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n};\n\nvar scroll = ({\n state,\n dragStartTime,\n shouldUseTimeDampening,\n scrollWindow,\n scrollDroppable,\n getAutoScrollerOptions\n}) => {\n const center = state.current.page.borderBoxCenter;\n const draggable = state.dimensions.draggables[state.critical.draggable.id];\n const subject = draggable.page.marginBox;\n if (state.isWindowScrollAllowed) {\n const viewport = state.viewport;\n const change = getWindowScrollChange({\n dragStartTime,\n viewport,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n if (change) {\n scrollWindow(change);\n return;\n }\n }\n const droppable = getBestScrollableDroppable({\n center,\n destination: whatIsDraggedOver(state.impact),\n droppables: state.dimensions.droppables\n });\n if (!droppable) {\n return;\n }\n const change = getDroppableScrollChange({\n dragStartTime,\n droppable,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n if (change) {\n scrollDroppable(droppable.descriptor.id, change);\n }\n};\n\nvar createFluidScroller = ({\n scrollWindow,\n scrollDroppable,\n getAutoScrollerOptions = () => defaultAutoScrollerOptions\n}) => {\n const scheduleWindowScroll = rafSchd(scrollWindow);\n const scheduleDroppableScroll = rafSchd(scrollDroppable);\n let dragging = null;\n const tryScroll = state => {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant() : void 0;\n const {\n shouldUseTimeDampening,\n dragStartTime\n } = dragging;\n scroll({\n state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n };\n const start$1 = state => {\n start();\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant() : void 0;\n const dragStartTime = Date.now();\n let wasScrollNeeded = false;\n const fakeScrollCallback = () => {\n wasScrollNeeded = true;\n };\n scroll({\n state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback,\n getAutoScrollerOptions\n });\n dragging = {\n dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish();\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n const stop = () => {\n if (!dragging) {\n return;\n }\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n return {\n start: start$1,\n stop,\n scroll: tryScroll\n };\n};\n\nvar createJumpScroller = ({\n move,\n scrollDroppable,\n scrollWindow\n}) => {\n const moveByOffset = (state, offset) => {\n const client = add(state.current.client.selection, offset);\n move({\n client\n });\n };\n const scrollDroppableAsMuchAsItCan = (droppable, change) => {\n if (!canScrollDroppable(droppable, change)) {\n return change;\n }\n const overlap = getDroppableOverlap(droppable, change);\n if (!overlap) {\n scrollDroppable(droppable.descriptor.id, change);\n return null;\n }\n const whatTheDroppableCanScroll = subtract(change, overlap);\n scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n const remainder = subtract(change, whatTheDroppableCanScroll);\n return remainder;\n };\n const scrollWindowAsMuchAsItCan = (isWindowScrollAllowed, viewport, change) => {\n if (!isWindowScrollAllowed) {\n return change;\n }\n if (!canScrollWindow(viewport, change)) {\n return change;\n }\n const overlap = getWindowOverlap(viewport, change);\n if (!overlap) {\n scrollWindow(change);\n return null;\n }\n const whatTheWindowCanScroll = subtract(change, overlap);\n scrollWindow(whatTheWindowCanScroll);\n const remainder = subtract(change, whatTheWindowCanScroll);\n return remainder;\n };\n const jumpScroller = state => {\n const request = state.scrollJumpRequest;\n if (!request) {\n return;\n }\n const destination = whatIsDraggedOver(state.impact);\n !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant() : void 0;\n const droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n if (!droppableRemainder) {\n return;\n }\n const viewport = state.viewport;\n const windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n if (!windowRemainder) {\n return;\n }\n moveByOffset(state, windowRemainder);\n };\n return jumpScroller;\n};\n\nvar createAutoScroller = ({\n scrollDroppable,\n scrollWindow,\n move,\n getAutoScrollerOptions\n}) => {\n const fluidScroller = createFluidScroller({\n scrollWindow,\n scrollDroppable,\n getAutoScrollerOptions\n });\n const jumpScroll = createJumpScroller({\n move,\n scrollWindow,\n scrollDroppable\n });\n const scroll = state => {\n const autoScrollerOptions = getAutoScrollerOptions();\n if (autoScrollerOptions.disabled || state.phase !== 'DRAGGING') {\n return;\n }\n if (state.movementMode === 'FLUID') {\n fluidScroller.scroll(state);\n return;\n }\n if (!state.scrollJumpRequest) {\n return;\n }\n jumpScroll(state);\n };\n const scroller = {\n scroll,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n};\n\nconst prefix = 'data-rfd';\nconst dragHandle = (() => {\n const base = `${prefix}-drag-handle`;\n return {\n base,\n draggableId: `${base}-draggable-id`,\n contextId: `${base}-context-id`\n };\n})();\nconst draggable = (() => {\n const base = `${prefix}-draggable`;\n return {\n base,\n contextId: `${base}-context-id`,\n id: `${base}-id`\n };\n})();\nconst droppable = (() => {\n const base = `${prefix}-droppable`;\n return {\n base,\n contextId: `${base}-context-id`,\n id: `${base}-id`\n };\n})();\nconst scrollContainer = {\n contextId: `${prefix}-scroll-container-context-id`\n};\n\nconst makeGetSelector = context => attribute => `[${attribute}=\"${context}\"]`;\nconst getStyles = (rules, property) => rules.map(rule => {\n const value = rule.styles[property];\n if (!value) {\n return '';\n }\n return `${rule.selector} { ${value} }`;\n}).join(' ');\nconst noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = contextId => {\n const getSelector = makeGetSelector(contextId);\n const dragHandle$1 = (() => {\n const grabCursor = `\n cursor: -webkit-grab;\n cursor: grab;\n `;\n return {\n selector: getSelector(dragHandle.contextId),\n styles: {\n always: `\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n `,\n resting: grabCursor,\n dragging: noPointerEvents,\n dropAnimating: grabCursor\n }\n };\n })();\n const draggable$1 = (() => {\n const transition = `\n transition: ${transitions.outOfTheWay};\n `;\n return {\n selector: getSelector(draggable.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n })();\n const droppable$1 = {\n selector: getSelector(droppable.contextId),\n styles: {\n always: `overflow-anchor: none;`\n }\n };\n const body = {\n selector: 'body',\n styles: {\n dragging: `\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n overflow-anchor: none;\n `\n }\n };\n const rules = [draggable$1, dragHandle$1, droppable$1, body];\n return {\n always: getStyles(rules, 'always'),\n resting: getStyles(rules, 'resting'),\n dragging: getStyles(rules, 'dragging'),\n dropAnimating: getStyles(rules, 'dropAnimating'),\n userCancel: getStyles(rules, 'userCancel')\n };\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nconst getHead = () => {\n const head = document.querySelector('head');\n !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant() : void 0;\n return head;\n};\nconst createStyleEl = nonce => {\n const el = document.createElement('style');\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n el.type = 'text/css';\n return el;\n};\nfunction useStyleMarshal(contextId, nonce) {\n const styles = useMemo(() => getStyles$1(contextId), [contextId]);\n const alwaysRef = useRef(null);\n const dynamicRef = useRef(null);\n const setDynamicStyle = useCallback(memoizeOne(proposed => {\n const el = dynamicRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant() : void 0;\n el.textContent = proposed;\n }), []);\n const setAlwaysStyle = useCallback(proposed => {\n const el = alwaysRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant() : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect(() => {\n !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant() : void 0;\n const always = createStyleEl(nonce);\n const dynamic = createStyleEl(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(`${prefix}-always`, contextId);\n dynamic.setAttribute(`${prefix}-dynamic`, contextId);\n getHead().appendChild(always);\n getHead().appendChild(dynamic);\n setAlwaysStyle(styles.always);\n setDynamicStyle(styles.resting);\n return () => {\n const remove = ref => {\n const current = ref.current;\n !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant() : void 0;\n getHead().removeChild(current);\n ref.current = null;\n };\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n const dragging = useCallback(() => setDynamicStyle(styles.dragging), [setDynamicStyle, styles.dragging]);\n const dropping = useCallback(reason => {\n if (reason === 'DROP') {\n setDynamicStyle(styles.dropAnimating);\n return;\n }\n setDynamicStyle(styles.userCancel);\n }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n const resting = useCallback(() => {\n if (!dynamicRef.current) {\n return;\n }\n setDynamicStyle(styles.resting);\n }, [setDynamicStyle, styles.resting]);\n const marshal = useMemo(() => ({\n dragging,\n dropping,\n resting\n }), [dragging, dropping, resting]);\n return marshal;\n}\n\nfunction querySelectorAll(parentNode, selector) {\n return Array.from(parentNode.querySelectorAll(selector));\n}\n\nvar getWindowFromEl = el => {\n if (el && el.ownerDocument && el.ownerDocument.defaultView) {\n return el.ownerDocument.defaultView;\n }\n return window;\n};\n\nfunction isHtmlElement(el) {\n return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n const selector = `[${dragHandle.contextId}=\"${contextId}\"]`;\n const possible = querySelectorAll(document, selector);\n if (!possible.length) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find any drag handles in the context \"${contextId}\"`) : void 0;\n return null;\n }\n const handle = possible.find(el => {\n return el.getAttribute(dragHandle.draggableId) === draggableId;\n });\n if (!handle) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find drag handle with id \"${draggableId}\" as no handle with a matching id was found`) : void 0;\n return null;\n }\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n return null;\n }\n return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n const entriesRef = useRef({});\n const recordRef = useRef(null);\n const restoreFocusFrameRef = useRef(null);\n const isMountedRef = useRef(false);\n const register = useCallback(function register(id, focus) {\n const entry = {\n id,\n focus\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n const entries = entriesRef.current;\n const current = entries[id];\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n const tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n const handle = findDragHandle(contextId, tryGiveFocusTo);\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n const tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n const tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n if (!isMountedRef.current) {\n return;\n }\n restoreFocusFrameRef.current = requestAnimationFrame(() => {\n restoreFocusFrameRef.current = null;\n const record = recordRef.current;\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n const tryRecordFocus = useCallback(function tryRecordFocus(id) {\n recordRef.current = null;\n const focused = document.activeElement;\n if (!focused) {\n return;\n }\n if (focused.getAttribute(dragHandle.draggableId) !== id) {\n return;\n }\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect(() => {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n const frameId = restoreFocusFrameRef.current;\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n const marshal = useMemo(() => ({\n register,\n tryRecordFocus,\n tryRestoreFocusRecorded,\n tryShiftRecord\n }), [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\n\nfunction createRegistry() {\n const entries = {\n draggables: {},\n droppables: {}\n };\n const subscribers = [];\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n const index = subscribers.indexOf(cb);\n if (index === -1) {\n return;\n }\n subscribers.splice(index, 1);\n };\n }\n function notify(event) {\n if (subscribers.length) {\n subscribers.forEach(cb => cb(event));\n }\n }\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n function getDraggableById(id) {\n const entry = findDraggableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find draggable entry with id [${id}]`) : invariant() : void 0;\n return entry;\n }\n const draggableAPI = {\n register: entry => {\n entries.draggables[entry.descriptor.id] = entry;\n notify({\n type: 'ADDITION',\n value: entry\n });\n },\n update: (entry, last) => {\n const current = entries.draggables[last.descriptor.id];\n if (!current) {\n return;\n }\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: entry => {\n const draggableId = entry.descriptor.id;\n const current = findDraggableById(draggableId);\n if (!current) {\n return;\n }\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n delete entries.draggables[draggableId];\n if (entries.droppables[entry.descriptor.droppableId]) {\n notify({\n type: 'REMOVAL',\n value: entry\n });\n }\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: id => Boolean(findDraggableById(id)),\n getAllByType: type => Object.values(entries.draggables).filter(entry => entry.descriptor.type === type)\n };\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n function getDroppableById(id) {\n const entry = findDroppableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find droppable entry with id [${id}]`) : invariant() : void 0;\n return entry;\n }\n const droppableAPI = {\n register: entry => {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: entry => {\n const current = findDroppableById(entry.descriptor.id);\n if (!current) {\n return;\n }\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: id => Boolean(findDroppableById(id)),\n getAllByType: type => Object.values(entries.droppables).filter(entry => entry.descriptor.type === type)\n };\n function clean() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe,\n clean\n };\n}\n\nfunction useRegistry() {\n const registry = useMemo(createRegistry, []);\n useEffect(() => {\n return function unmount() {\n registry.clean();\n };\n }, [registry]);\n return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = () => {\n const body = document.body;\n !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant() : void 0;\n return body;\n};\n\nconst visuallyHidden = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n border: '0',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n 'clip-path': 'inset(100%)'\n};\n\nconst getId = contextId => `rfd-announcement-${contextId}`;\nfunction useAnnouncer(contextId) {\n const id = useMemo(() => getId(contextId), [contextId]);\n const ref = useRef(null);\n useEffect(function setup() {\n const el = document.createElement('div');\n ref.current = el;\n el.id = id;\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n _extends(el.style, visuallyHidden);\n getBodyElement().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n const body = getBodyElement();\n if (body.contains(el)) {\n body.removeChild(el);\n }\n if (el === ref.current) {\n ref.current = null;\n }\n });\n };\n }, [id]);\n const announce = useCallback(message => {\n const el = ref.current;\n if (el) {\n el.textContent = message;\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n A screen reader message was trying to be announced but it was unable to do so.\n This can occur if you unmount your <DragDropContext /> in your onDragEnd.\n Consider calling provided.announce() before the unmount so that the instruction will\n not be lost for users relying on a screen reader.\n\n Message not passed to screen reader:\n\n \"${message}\"\n `) : void 0;\n }, []);\n return announce;\n}\n\nconst defaults = {\n separator: '::'\n};\nfunction useUniqueId(prefix, options = defaults) {\n const id = React.useId();\n return useMemo(() => `${prefix}${options.separator}${id}`, [options.separator, prefix, id]);\n}\n\nfunction getElementId({\n contextId,\n uniqueId\n}) {\n return `rfd-hidden-text-${contextId}-${uniqueId}`;\n}\nfunction useHiddenTextElement({\n contextId,\n text\n}) {\n const uniqueId = useUniqueId('hidden-text', {\n separator: '-'\n });\n const id = useMemo(() => getElementId({\n contextId,\n uniqueId\n }), [uniqueId, contextId]);\n useEffect(function mount() {\n const el = document.createElement('div');\n el.id = id;\n el.textContent = text;\n el.style.display = 'none';\n getBodyElement().appendChild(el);\n return function unmount() {\n const body = getBodyElement();\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^18.0.0 || ^19.0.0\"};\n\nconst semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\nconst getVersion = value => {\n const result = semver.exec(value);\n !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Unable to parse React version ${value}`) : invariant() : void 0;\n const major = Number(result[1]);\n const minor = Number(result[2]);\n const patch = Number(result[3]);\n return {\n major,\n minor,\n patch,\n raw: value\n };\n};\nconst isSatisfied = (expected, actual) => {\n if (actual.major > expected.major) {\n return true;\n }\n if (actual.major < expected.major) {\n return false;\n }\n if (actual.minor > expected.minor) {\n return true;\n }\n if (actual.minor < expected.minor) {\n return false;\n }\n return actual.patch >= expected.patch;\n};\nvar checkReactVersion = (peerDepValue, actualValue) => {\n const peerDep = getVersion(peerDepValue);\n const actual = getVersion(actualValue);\n if (isSatisfied(peerDep, actual)) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n React version: [${actual.raw}]\n does not satisfy expected peer dependency version: [${peerDep.raw}]\n\n This can result in run time bugs, and even fatal crashes\n `) : void 0;\n};\n\nconst suffix = `\n We expect a html5 doctype: <!doctype html>\n This is to ensure consistent browser layout and measurement\n\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/guides/doctype.md\n`;\nvar checkDoctype = doc => {\n const doctype = doc.doctype;\n if (!doctype) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n No <!doctype html> found.\n\n ${suffix}\n `) : void 0;\n return;\n }\n if (doctype.name.toLowerCase() !== 'html') {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Unexpected <!doctype> found: (${doctype.name})\n\n ${suffix}\n `) : void 0;\n }\n if (doctype.publicId !== '') {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Unexpected <!doctype> publicId found: (${doctype.publicId})\n A html5 doctype does not have a publicId\n\n ${suffix}\n `) : void 0;\n }\n};\n\nfunction useDev(useHook) {\n if (process.env.NODE_ENV !== 'production') {\n useHook();\n }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n useDev(() => {\n useEffect(() => {\n try {\n fn();\n } catch (e) {\n error(`\n A setup problem was encountered.\n\n > ${e.message}\n `);\n }\n }, inputs);\n });\n}\n\nfunction useStartupValidation() {\n useDevSetupWarning(() => {\n checkReactVersion(peerDependencies.react, React.version);\n checkDoctype(document);\n }, []);\n}\n\nfunction usePrevious(current) {\n const ref = useRef(current);\n useEffect(() => {\n ref.current = current;\n });\n return ref;\n}\n\nfunction create() {\n let lock = null;\n function isClaimed() {\n return Boolean(lock);\n }\n function isActive(value) {\n return value === lock;\n }\n function claim(abandon) {\n !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant() : void 0;\n const newLock = {\n abandon\n };\n lock = newLock;\n return newLock;\n }\n function release() {\n !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant() : void 0;\n lock = null;\n }\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n return {\n isClaimed,\n isActive,\n claim,\n release,\n tryAbandon\n };\n}\n\nfunction isDragging(state) {\n if (state.phase === 'IDLE' || state.phase === 'DROP_ANIMATING') {\n return false;\n }\n return state.isDragging;\n}\n\nconst tab = 9;\nconst enter = 13;\nconst escape = 27;\nconst space = 32;\nconst pageUp = 33;\nconst pageDown = 34;\nconst end = 35;\nconst home = 36;\nconst arrowLeft = 37;\nconst arrowUp = 38;\nconst arrowRight = 39;\nconst arrowDown = 40;\n\nconst preventedKeys = {\n [enter]: true,\n [tab]: true\n};\nvar preventStandardKeyEvents = event => {\n if (preventedKeys[event.keyCode]) {\n event.preventDefault();\n }\n};\n\nconst supportedEventName = (() => {\n const base = 'visibilitychange';\n if (typeof document === 'undefined') {\n return base;\n }\n const candidates = [base, `ms${base}`, `webkit${base}`, `moz${base}`, `o${base}`];\n const supported = candidates.find(eventName => `on${eventName}` in document);\n return supported || base;\n})();\n\nconst primaryButton = 0;\nconst sloppyClickThreshold = 5;\nfunction isSloppyClickThresholdExceeded(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\nconst idle$1 = {\n type: 'IDLE'\n};\nfunction getCaptureBindings({\n cancel,\n completed,\n getPhase,\n setPhase\n}) {\n return [{\n eventName: 'mousemove',\n fn: event => {\n const {\n button,\n clientX,\n clientY\n } = event;\n if (button !== primaryButton) {\n return;\n }\n const point = {\n x: clientX,\n y: clientY\n };\n const phase = getPhase();\n if (phase.type === 'DRAGGING') {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant() : void 0;\n const pending = phase.point;\n if (!isSloppyClickThresholdExceeded(pending, point)) {\n return;\n }\n event.preventDefault();\n const actions = phase.actions.fluidLift(point);\n setPhase({\n type: 'DRAGGING',\n actions\n });\n }\n }, {\n eventName: 'mouseup',\n fn: event => {\n const phase = getPhase();\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'mousedown',\n fn: event => {\n if (getPhase().type === 'DRAGGING') {\n event.preventDefault();\n }\n cancel();\n }\n }, {\n eventName: 'keydown',\n fn: event => {\n const phase = getPhase();\n if (phase.type === 'PENDING') {\n cancel();\n return;\n }\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: () => {\n if (getPhase().type === 'PENDING') {\n cancel();\n }\n }\n }, {\n eventName: 'webkitmouseforcedown',\n fn: event => {\n const phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant() : void 0;\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction useMouseSensor(api) {\n const phaseRef = useRef(idle$1);\n const unbindEventsRef = useRef(noop$2);\n const startCaptureBinding = useMemo(() => ({\n eventName: 'mousedown',\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n if (event.button !== primaryButton) {\n return;\n }\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n const draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n const actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!actions) {\n return;\n }\n event.preventDefault();\n const point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n }), [api]);\n const preventForcePressBinding = useMemo(() => ({\n eventName: 'webkitmouseforcewillbegin',\n fn: event => {\n if (event.defaultPrevented) {\n return;\n }\n const id = api.findClosestDraggableId(event);\n if (!id) {\n return;\n }\n const options = api.findOptionsForDraggable(id);\n if (!options) {\n return;\n }\n if (options.shouldRespectForcePress) {\n return;\n }\n if (!api.canGetLock(id)) {\n return;\n }\n event.preventDefault();\n }\n }), [api]);\n const listenForCapture = useCallback(function listenForCapture() {\n const options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n const stop = useCallback(() => {\n const current = phaseRef.current;\n if (current.type === 'IDLE') {\n return;\n }\n phaseRef.current = idle$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n const cancel = useCallback(() => {\n const phase = phaseRef.current;\n stop();\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n const bindCapturingEvents = useCallback(function bindCapturingEvents() {\n const options = {\n capture: true,\n passive: false\n };\n const bindings = getCaptureBindings({\n cancel,\n completed: stop,\n getPhase: () => phaseRef.current,\n setPhase: phase => {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents(window, bindings, options);\n }, [cancel, stop]);\n const startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant() : void 0;\n phaseRef.current = {\n type: 'PENDING',\n point,\n actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nfunction noop$1() {}\nconst scrollJumpKeys = {\n [pageDown]: true,\n [pageUp]: true,\n [home]: true,\n [end]: true\n};\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n function drop() {\n stop();\n actions.drop();\n }\n return [{\n eventName: 'keydown',\n fn: event => {\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n if (event.keyCode === space) {\n event.preventDefault();\n drop();\n return;\n }\n if (event.keyCode === arrowDown) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n if (event.keyCode === arrowUp) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n if (event.keyCode === arrowRight) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n if (event.keyCode === arrowLeft) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n if (scrollJumpKeys[event.keyCode]) {\n event.preventDefault();\n return;\n }\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'mousedown',\n fn: cancel\n }, {\n eventName: 'mouseup',\n fn: cancel\n }, {\n eventName: 'click',\n fn: cancel\n }, {\n eventName: 'touchstart',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'wheel',\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction useKeyboardSensor(api) {\n const unbindEventsRef = useRef(noop$1);\n const startCaptureBinding = useMemo(() => ({\n eventName: 'keydown',\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n if (event.keyCode !== space) {\n return;\n }\n const draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n const preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!preDrag) {\n return;\n }\n event.preventDefault();\n let isCapturing = true;\n const actions = preDrag.snapLift();\n unbindEventsRef.current();\n function stop() {\n !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant() : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n }), [api]);\n const listenForCapture = useCallback(function tryStartCapture() {\n const options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nconst idle = {\n type: 'IDLE'\n};\nconst timeForLongPress = 120;\nconst forcePressThreshold = 0.15;\nfunction getWindowBindings({\n cancel,\n getPhase\n}) {\n return [{\n eventName: 'orientationchange',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'contextmenu',\n fn: event => {\n event.preventDefault();\n }\n }, {\n eventName: 'keydown',\n fn: event => {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n if (event.keyCode === escape) {\n event.preventDefault();\n }\n cancel();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction getHandleBindings({\n cancel,\n completed,\n getPhase\n}) {\n return [{\n eventName: 'touchmove',\n options: {\n capture: false\n },\n fn: event => {\n const phase = getPhase();\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n phase.hasMoved = true;\n const {\n clientX,\n clientY\n } = event.touches[0];\n const point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: 'touchend',\n fn: event => {\n const phase = getPhase();\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'touchcancel',\n fn: event => {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: 'touchforcechange',\n fn: event => {\n const phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n const isForcePress = touch.force >= forcePressThreshold;\n if (!isForcePress) {\n return;\n }\n const shouldRespect = phase.actions.shouldRespectForcePress();\n if (phase.type === 'PENDING') {\n if (shouldRespect) {\n cancel();\n }\n return;\n }\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n cancel();\n return;\n }\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction useTouchSensor(api) {\n const phaseRef = useRef(idle);\n const unbindEventsRef = useRef(noop$2);\n const getPhase = useCallback(function getPhase() {\n return phaseRef.current;\n }, []);\n const setPhase = useCallback(function setPhase(phase) {\n phaseRef.current = phase;\n }, []);\n const startCaptureBinding = useMemo(() => ({\n eventName: 'touchstart',\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n const draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n const actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!actions) {\n return;\n }\n const touch = event.touches[0];\n const {\n clientX,\n clientY\n } = touch;\n const point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n }), [api]);\n const listenForCapture = useCallback(function listenForCapture() {\n const options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n const stop = useCallback(() => {\n const current = phaseRef.current;\n if (current.type === 'IDLE') {\n return;\n }\n if (current.type === 'PENDING') {\n clearTimeout(current.longPressTimerId);\n }\n setPhase(idle);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n const cancel = useCallback(() => {\n const phase = phaseRef.current;\n stop();\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n const bindCapturingEvents = useCallback(function bindCapturingEvents() {\n const options = {\n capture: true,\n passive: false\n };\n const args = {\n cancel,\n completed: stop,\n getPhase\n };\n const unbindTarget = bindEvents(window, getHandleBindings(args), options);\n const unbindWindow = bindEvents(window, getWindowBindings(args), options);\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n const startDragging = useCallback(function startDragging() {\n const phase = getPhase();\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot start dragging from phase ${phase.type}`) : invariant() : void 0;\n const actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: 'DRAGGING',\n actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n const startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant() : void 0;\n const longPressTimerId = setTimeout(startDragging, timeForLongPress);\n setPhase({\n type: 'PENDING',\n point,\n actions,\n longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n const phase = getPhase();\n if (phase.type === 'PENDING') {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect(function webkitHack() {\n const unbind = bindEvents(window, [{\n eventName: 'touchmove',\n fn: () => {},\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(() => {\n const previousRef = usePrevious(sensorHooks);\n useDevSetupWarning(() => {\n !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n });\n });\n}\n\nconst interactiveTagNames = ['input', 'button', 'textarea', 'select', 'option', 'optgroup', 'video', 'audio'];\nfunction isAnInteractiveElement(parent, current) {\n if (current == null) {\n return false;\n }\n const hasAnInteractiveTag = interactiveTagNames.includes(current.tagName.toLowerCase());\n if (hasAnInteractiveTag) {\n return true;\n }\n const attribute = current.getAttribute('contenteditable');\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n if (current === parent) {\n return false;\n }\n return isAnInteractiveElement(parent, current.parentElement);\n}\nfunction isEventInInteractiveElement(draggable, event) {\n const target = event.target;\n if (!isHtmlElement(target)) {\n return false;\n }\n return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = el => getRect(el.getBoundingClientRect()).center;\n\nfunction isElement(el) {\n return el instanceof getWindowFromEl(el).Element;\n}\n\nconst supportedMatchesName = (() => {\n const base = 'matches';\n if (typeof document === 'undefined') {\n return base;\n }\n const candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n const value = candidates.find(name => name in Element.prototype);\n return value || base;\n})();\nfunction closestPonyfill(el, selector) {\n if (el == null) {\n return null;\n }\n if (el[supportedMatchesName](selector)) {\n return el;\n }\n return closestPonyfill(el.parentElement, selector);\n}\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n return `[${dragHandle.contextId}=\"${contextId}\"]`;\n}\nfunction findClosestDragHandleFromEvent(contextId, event) {\n const target = event.target;\n if (!isElement(target)) {\n process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n return null;\n }\n const selector = getSelector(contextId);\n const handle = closest(target, selector);\n if (!handle) {\n return null;\n }\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n return null;\n }\n return handle;\n}\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n const handle = findClosestDragHandleFromEvent(contextId, event);\n if (!handle) {\n return null;\n }\n return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n const selector = `[${draggable.contextId}=\"${contextId}\"]`;\n const possible = querySelectorAll(document, selector);\n const draggable$1 = possible.find(el => {\n return el.getAttribute(draggable.id) === draggableId;\n });\n if (!draggable$1) {\n return null;\n }\n if (!isHtmlElement(draggable$1)) {\n process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n return null;\n }\n return draggable$1;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction isActive({\n expected,\n phase,\n isLockActive,\n shouldWarn\n}) {\n if (!isLockActive()) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Cannot perform action.\n The sensor no longer has an action lock.\n\n Tips:\n\n - Throw away your action handlers when forceStop() is called\n - Check actions.isActive() if you really need to\n `) : void 0;\n }\n return false;\n }\n if (expected !== phase) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Cannot perform action.\n The actions you used belong to an outdated phase\n\n Current phase: ${expected}\n You called an action from outdated phase: ${phase}\n\n Tips:\n\n - Do not use preDragActions actions after calling preDragActions.lift()\n `) : void 0;\n }\n return false;\n }\n return true;\n}\nfunction canStart({\n lockAPI,\n store,\n registry,\n draggableId\n}) {\n if (lockAPI.isClaimed()) {\n return false;\n }\n const entry = registry.draggable.findById(draggableId);\n if (!entry) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find draggable with id: ${draggableId}`) : void 0;\n return false;\n }\n if (!entry.options.isEnabled) {\n return false;\n }\n if (!canStartDrag(store.getState(), draggableId)) {\n return false;\n }\n return true;\n}\nfunction tryStart({\n lockAPI,\n contextId,\n store,\n registry,\n draggableId,\n forceSensorStop,\n sourceEvent\n}) {\n const shouldStart = canStart({\n lockAPI,\n store,\n registry,\n draggableId\n });\n if (!shouldStart) {\n return null;\n }\n const entry = registry.draggable.getById(draggableId);\n const el = findDraggable(contextId, entry.descriptor.id);\n if (!el) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find draggable element with id: ${draggableId}`) : void 0;\n return null;\n }\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n const lock = lockAPI.claim(forceSensorStop || noop$2);\n let phase = 'PRE_DRAG';\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n function tryDispatch(expected, getAction) {\n if (isActive({\n expected,\n phase,\n isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n const tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n function lift(args) {\n function completed() {\n lockAPI.release();\n phase = 'COMPLETED';\n }\n if (phase !== 'PRE_DRAG') {\n completed();\n process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot lift in phase ${phase}`) : invariant() ;\n }\n store.dispatch(lift$1(args.liftActionArgs));\n phase = 'DRAGGING';\n function finish(reason, options = {\n shouldBlockNextClick: false\n }) {\n args.cleanup();\n if (options.shouldBlockNextClick) {\n const unbind = bindEvents(window, [{\n eventName: 'click',\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n completed();\n store.dispatch(drop({\n reason\n }));\n }\n return {\n isActive: () => isActive({\n expected: 'DRAGGING',\n phase,\n isLockActive,\n shouldWarn: false\n }),\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: options => finish('DROP', options),\n cancel: options => finish('CANCEL', options),\n ...args.actions\n };\n }\n function fluidLift(clientSelection) {\n const move$1 = rafSchd(client => {\n tryDispatchWhenDragging(() => move({\n client\n }));\n });\n const api = lift({\n liftActionArgs: {\n id: draggableId,\n clientSelection,\n movementMode: 'FLUID'\n },\n cleanup: () => move$1.cancel(),\n actions: {\n move: move$1\n }\n });\n return {\n ...api,\n move: move$1\n };\n }\n function snapLift() {\n const actions = {\n moveUp: () => tryDispatchWhenDragging(moveUp),\n moveRight: () => tryDispatchWhenDragging(moveRight),\n moveDown: () => tryDispatchWhenDragging(moveDown),\n moveLeft: () => tryDispatchWhenDragging(moveLeft)\n };\n return lift({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition(el),\n movementMode: 'SNAP'\n },\n cleanup: noop$2,\n actions\n });\n }\n function abortPreDrag() {\n const shouldRelease = isActive({\n expected: 'PRE_DRAG',\n phase,\n isLockActive,\n shouldWarn: true\n });\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n const preDrag = {\n isActive: () => isActive({\n expected: 'PRE_DRAG',\n phase,\n isLockActive,\n shouldWarn: false\n }),\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift,\n snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\nconst defaultSensors = [useMouseSensor, useKeyboardSensor, useTouchSensor];\nfunction useSensorMarshal({\n contextId,\n store,\n registry,\n customSensors,\n enableDefaultSensors\n}) {\n const useSensors = [...(enableDefaultSensors ? defaultSensors : []), ...(customSensors || [])];\n const lockAPI = useState(() => create())[0];\n const tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n if (isDragging(previous) && !isDragging(current)) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect(function listenToStore() {\n let previous = store.getState();\n const unsubscribe = store.subscribe(() => {\n const current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect(() => {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n const canGetLock = useCallback(draggableId => {\n return canStart({\n lockAPI,\n registry,\n store,\n draggableId\n });\n }, [lockAPI, registry, store]);\n const tryGetLock = useCallback((draggableId, forceStop, options) => tryStart({\n lockAPI,\n registry,\n contextId,\n store,\n draggableId,\n forceSensorStop: forceStop || null,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n }), [contextId, lockAPI, registry, store]);\n const findClosestDraggableId = useCallback(event => tryGetClosestDraggableIdFromEvent(contextId, event), [contextId]);\n const findOptionsForDraggable = useCallback(id => {\n const entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n const tryReleaseLock = useCallback(function tryReleaseLock() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n lockAPI.tryAbandon();\n if (store.getState().phase !== 'IDLE') {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n const isLockClaimed = useCallback(() => lockAPI.isClaimed(), [lockAPI]);\n const api = useMemo(() => ({\n canGetLock,\n tryGetLock,\n findClosestDraggableId,\n findOptionsForDraggable,\n tryReleaseLock,\n isLockClaimed\n }), [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n for (let i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\n\nconst createResponders = props => ({\n onBeforeCapture: t => {\n const onBeforeCapureCallback = () => {\n if (props.onBeforeCapture) {\n props.onBeforeCapture(t);\n }\n };\n flushSync(onBeforeCapureCallback);\n },\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n});\nconst createAutoScrollerOptions = props => ({\n ...defaultAutoScrollerOptions,\n ...props.autoScrollerOptions,\n durationDampening: {\n ...defaultAutoScrollerOptions.durationDampening,\n ...props.autoScrollerOptions\n }\n});\nfunction getStore(lazyRef) {\n !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant() : void 0;\n return lazyRef.current;\n}\nfunction App(props) {\n const {\n contextId,\n setCallbacks,\n sensors,\n nonce,\n dragHandleUsageInstructions\n } = props;\n const lazyStoreRef = useRef(null);\n useStartupValidation();\n const lastPropsRef = usePrevious(props);\n const getResponders = useCallback(() => {\n return createResponders(lastPropsRef.current);\n }, [lastPropsRef]);\n const getAutoScrollerOptions = useCallback(() => {\n return createAutoScrollerOptions(lastPropsRef.current);\n }, [lastPropsRef]);\n const announce = useAnnouncer(contextId);\n const dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId,\n text: dragHandleUsageInstructions\n });\n const styleMarshal = useStyleMarshal(contextId, nonce);\n const lazyDispatch = useCallback(action => {\n getStore(lazyStoreRef).dispatch(action);\n }, []);\n const marshalCallbacks = useMemo(() => bindActionCreators({\n publishWhileDragging,\n updateDroppableScroll,\n updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled,\n collectionStarting\n }, lazyDispatch), [lazyDispatch]);\n const registry = useRegistry();\n const dimensionMarshal = useMemo(() => {\n return createDimensionMarshal(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n const autoScroller = useMemo(() => createAutoScroller({\n scrollWindow,\n scrollDroppable: dimensionMarshal.scrollDroppable,\n getAutoScrollerOptions,\n ...bindActionCreators({\n move\n }, lazyDispatch)\n }), [dimensionMarshal.scrollDroppable, lazyDispatch, getAutoScrollerOptions]);\n const focusMarshal = useFocusMarshal(contextId);\n const store = useMemo(() => createStore({\n announce,\n autoScroller,\n dimensionMarshal,\n focusMarshal,\n getResponders,\n styleMarshal\n }), [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n if (process.env.NODE_ENV !== 'production') {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n }\n }\n lazyStoreRef.current = store;\n const tryResetStore = useCallback(() => {\n const current = getStore(lazyStoreRef);\n const state = current.getState();\n if (state.phase !== 'IDLE') {\n current.dispatch(flush());\n }\n }, []);\n const isDragging = useCallback(() => {\n const state = getStore(lazyStoreRef).getState();\n if (state.phase === 'DROP_ANIMATING') {\n return true;\n }\n if (state.phase === 'IDLE') {\n return false;\n }\n return state.isDragging;\n }, []);\n const appCallbacks = useMemo(() => ({\n isDragging,\n tryAbort: tryResetStore\n }), [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n const getCanLift = useCallback(id => canStartDrag(getStore(lazyStoreRef).getState(), id), []);\n const getIsMovementAllowed = useCallback(() => isMovementAllowed(getStore(lazyStoreRef).getState()), []);\n const appContext = useMemo(() => ({\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId,\n registry\n }), [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId,\n store,\n registry,\n customSensors: sensors || null,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n useEffect(() => {\n return tryResetStore;\n }, [tryResetStore]);\n return React.createElement(AppContext.Provider, {\n value: appContext\n }, React.createElement(Provider, {\n context: StoreContext,\n store: store\n }, props.children));\n}\n\nfunction useUniqueContextId() {\n return React.useId();\n}\n\nfunction DragDropContext(props) {\n const contextId = useUniqueContextId();\n const dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n return React.createElement(ErrorBoundary, null, setCallbacks => React.createElement(App, {\n nonce: props.nonce,\n contextId: contextId,\n setCallbacks: setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd,\n autoScrollerOptions: props.autoScrollerOptions\n }, props.children));\n}\n\nconst zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\nconst getDraggingTransition = (shouldAnimateDragMovement, dropping) => {\n if (dropping) {\n return transitions.drop(dropping.duration);\n }\n if (shouldAnimateDragMovement) {\n return transitions.snap;\n }\n return transitions.fluid;\n};\nconst getDraggingOpacity = (isCombining, isDropAnimating) => {\n if (!isCombining) {\n return undefined;\n }\n return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\nconst getShouldDraggingAnimate = dragging => {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n return dragging.mode === 'SNAP';\n};\nfunction getDraggingStyle(dragging) {\n const dimension = dragging.dimension;\n const box = dimension.client;\n const {\n offset,\n combineWith,\n dropping\n } = dragging;\n const isCombining = Boolean(combineWith);\n const shouldAnimate = getShouldDraggingAnimate(dragging);\n const isDropAnimating = Boolean(dropping);\n const transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n const style = {\n position: 'fixed',\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: 'border-box',\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition(shouldAnimate, dropping),\n transform,\n opacity: getDraggingOpacity(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n pointerEvents: 'none'\n };\n return style;\n}\nfunction getSecondaryStyle(secondary) {\n return {\n transform: transforms.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? undefined : 'none'\n };\n}\nfunction getStyle$1(mapped) {\n return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll = origin) {\n const computedStyles = window.getComputedStyle(el);\n const borderBox = el.getBoundingClientRect();\n const client = calculateBox(borderBox, computedStyles);\n const page = withScroll(client, windowScroll);\n const placeholder = {\n client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n const displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n const dimension = {\n descriptor,\n placeholder,\n displaceBy,\n client,\n page\n };\n return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n const uniqueId = useUniqueId('draggable');\n const {\n descriptor,\n registry,\n getDraggableRef,\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n } = args;\n const options = useMemo(() => ({\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n }), [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n const getDimension = useCallback(windowScroll => {\n const el = getDraggableRef();\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant() : void 0;\n return getDimension$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n const entry = useMemo(() => ({\n uniqueId,\n descriptor,\n options,\n getDimension\n }), [descriptor, getDimension, options, uniqueId]);\n const publishedRef = useRef(entry);\n const isFirstPublishRef = useRef(true);\n useIsomorphicLayoutEffect(() => {\n registry.draggable.register(publishedRef.current);\n return () => registry.draggable.unregister(publishedRef.current);\n }, [registry.draggable]);\n useIsomorphicLayoutEffect(() => {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n const last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `\n provided.innerRef has not been provided with a HTMLElement.\n\n You can find a guide on using the innerRef callback functions at:\n https://github.com/hello-pangea/dnd/blob/main/docs/guides/using-inner-ref.md\n `) : invariant() : void 0;\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n useDevSetupWarning(() => {\n function prefix(id) {\n return `Draggable[id: ${id}]: `;\n }\n const id = props.draggableId;\n !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Draggable requires a [string] draggableId.\n Provided: [type: ${typeof id}] (value: ${id})`) : invariant(false) : void 0;\n !Number.isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${prefix(id)} requires an integer index prop`) : invariant(false) : void 0;\n if (props.mapped.type === 'DRAGGING') {\n return;\n }\n checkIsValidInnerRef(getRef());\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${prefix(id)} Unable to find drag handle`) : invariant(false) : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(() => {\n const initialRef = useRef(isClone);\n useDevSetupWarning(() => {\n !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n }, [isClone]);\n });\n}\n\nfunction useRequiredContext(Context) {\n const result = useContext(Context);\n !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant() : void 0;\n return result;\n}\n\nfunction preventHtml5Dnd(event) {\n event.preventDefault();\n}\nconst Draggable = props => {\n const ref = useRef(null);\n const setRef = useCallback((el = null) => {\n ref.current = el;\n }, []);\n const getRef = useCallback(() => ref.current, []);\n const {\n contextId,\n dragHandleUsageInstructionsId,\n registry\n } = useRequiredContext(AppContext);\n const {\n type,\n droppableId\n } = useRequiredContext(DroppableContext);\n const descriptor = useMemo(() => ({\n id: props.draggableId,\n index: props.index,\n type,\n droppableId\n }), [props.draggableId, props.index, type, droppableId]);\n const {\n children,\n draggableId,\n isEnabled,\n shouldRespectForcePress,\n canDragInteractiveElements,\n isClone,\n mapped,\n dropAnimationFinished: dropAnimationFinishedAction\n } = props;\n useValidation$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n if (!isClone) {\n const forPublisher = useMemo(() => ({\n descriptor,\n registry,\n getDraggableRef: getRef,\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n }), [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n const dragHandleProps = useMemo(() => isEnabled ? {\n tabIndex: 0,\n role: 'button',\n 'aria-describedby': dragHandleUsageInstructionsId,\n 'data-rfd-drag-handle-draggable-id': draggableId,\n 'data-rfd-drag-handle-context-id': contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd\n } : null, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n const onMoveEnd = useCallback(event => {\n if (mapped.type !== 'DRAGGING') {\n return;\n }\n if (!mapped.dropping) {\n return;\n }\n if (event.propertyName !== 'transform') {\n return;\n }\n flushSync(dropAnimationFinishedAction);\n }, [dropAnimationFinishedAction, mapped]);\n const provided = useMemo(() => {\n const style = getStyle$1(mapped);\n const onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : undefined;\n const result = {\n innerRef: setRef,\n draggableProps: {\n 'data-rfd-draggable-context-id': contextId,\n 'data-rfd-draggable-id': draggableId,\n style,\n onTransitionEnd\n },\n dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n const rubric = useMemo(() => ({\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n }), [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return React.createElement(React.Fragment, null, children(provided, mapped.snapshot, rubric));\n};\n\nvar isStrictEqual = (a, b) => a === b;\n\nvar whatIsDraggedOverFromResult = result => {\n const {\n combine,\n destination\n } = result;\n if (destination) {\n return destination.droppableId;\n }\n if (combine) {\n return combine.droppableId;\n }\n return null;\n};\n\nconst getCombineWithFromResult = result => {\n return result.combine ? result.combine.draggableId : null;\n};\nconst getCombineWithFromImpact = impact => {\n return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\nfunction getDraggableSelector() {\n const memoizedOffset = memoizeOne((x, y) => ({\n x,\n y\n }));\n const getMemoizedSnapshot = memoizeOne((mode, isClone, draggingOver = null, combineWith = null, dropping = null) => ({\n isDragging: true,\n isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode,\n draggingOver,\n combineWith,\n combineTargetFor: null\n }));\n const getMemoizedProps = memoizeOne((offset, mode, dimension, isClone, draggingOver = null, combineWith = null, forceShouldAnimate = null) => ({\n mapped: {\n type: 'DRAGGING',\n dropping: null,\n draggingOver,\n combineWith,\n mode,\n offset,\n dimension,\n forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n }));\n const selector = (state, ownProps) => {\n if (isDragging(state)) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n const offset = state.current.client.offset;\n const dimension = state.dimensions.draggables[ownProps.draggableId];\n const draggingOver = whatIsDraggedOver(state.impact);\n const combineWith = getCombineWithFromImpact(state.impact);\n const forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n if (state.phase === 'DROP_ANIMATING') {\n const completed = state.completed;\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n const isClone = ownProps.isClone;\n const dimension = state.dimensions.draggables[ownProps.draggableId];\n const result = completed.result;\n const mode = result.mode;\n const draggingOver = whatIsDraggedOverFromResult(result);\n const combineWith = getCombineWithFromResult(result);\n const duration = state.dropDuration;\n const dropping = {\n duration,\n curve: curves.drop,\n moveTo: state.newHomeClientOffset,\n opacity: combineWith ? combine.opacity.drop : null,\n scale: combineWith ? combine.scale.drop : null\n };\n return {\n mapped: {\n type: 'DRAGGING',\n offset: state.newHomeClientOffset,\n dimension,\n dropping,\n draggingOver,\n combineWith,\n mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, dropping)\n }\n };\n }\n return null;\n };\n return selector;\n}\nfunction getSecondarySnapshot(combineTargetFor = null) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor,\n combineWith: null\n };\n}\nconst atRest = {\n mapped: {\n type: 'SECONDARY',\n offset: origin,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\nfunction getSecondarySelector() {\n const memoizedOffset = memoizeOne((x, y) => ({\n x,\n y\n }));\n const getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n const getMemoizedProps = memoizeOne((offset, combineTargetFor = null, shouldAnimateDisplacement) => ({\n mapped: {\n type: 'SECONDARY',\n offset,\n combineTargetFor,\n shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n }));\n const getFallback = combineTargetFor => {\n return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n };\n const getProps = (ownId, draggingId, impact, afterCritical) => {\n const visualDisplacement = impact.displaced.visible[ownId];\n const isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n const combine = tryGetCombine(impact);\n const combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n const change = negate(afterCritical.displacedBy.point);\n const offset = memoizedOffset(change.x, change.y);\n return getMemoizedProps(offset, combineTargetFor, true);\n }\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n const displaceBy = impact.displacedBy.point;\n const offset = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n const selector = (state, ownProps) => {\n if (isDragging(state)) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n if (state.phase === 'DROP_ANIMATING') {\n const completed = state.completed;\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n return null;\n };\n return selector;\n}\nconst makeMapStateToProps$1 = () => {\n const draggingSelector = getDraggableSelector();\n const secondarySelector = getSecondarySelector();\n const selector = (state, ownProps) => draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n return selector;\n};\nconst mapDispatchToProps$1 = {\n dropAnimationFinished: dropAnimationFinished\n};\nconst ConnectedDraggable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n context: StoreContext,\n areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n const droppableContext = useRequiredContext(DroppableContext);\n const isUsingCloneFor = droppableContext.isUsingCloneFor;\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n const isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n const canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n const shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return React.createElement(PrivateDraggable, _extends({}, props, {\n isClone: false,\n isEnabled: isEnabled,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress\n }));\n}\n\nconst isEqual = base => value => base === value;\nconst isScroll = isEqual('scroll');\nconst isAuto = isEqual('auto');\nconst isVisible = isEqual('visible');\nconst isEither = (overflow, fn) => fn(overflow.overflowX) || fn(overflow.overflowY);\nconst isBoth = (overflow, fn) => fn(overflow.overflowX) && fn(overflow.overflowY);\nconst isElementScrollable = el => {\n const style = window.getComputedStyle(el);\n const overflow = {\n overflowX: style.overflowX,\n overflowY: style.overflowY\n };\n return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\nconst isBodyScrollable = () => {\n if (process.env.NODE_ENV === 'production') {\n return false;\n }\n const body = getBodyElement();\n const html = document.documentElement;\n !html ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n if (!isElementScrollable(body)) {\n return false;\n }\n const htmlStyle = window.getComputedStyle(html);\n const htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n if (isBoth(htmlOverflow, isVisible)) {\n return false;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n We have detected that your <body> element might be a scroll container.\n We have found no reliable way of detecting whether the <body> element is a scroll container.\n Under most circumstances a <body> scroll bar will be on the <html> element (document.documentElement)\n\n Because we cannot determine if the <body> is a scroll container, and generally it is not one,\n we will be treating the <body> as *not* a scroll container\n\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/guides/how-we-detect-scroll-containers.md\n `) : void 0;\n return false;\n};\nconst getClosestScrollable = el => {\n if (el == null) {\n return null;\n }\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n if (el === document.documentElement) {\n return null;\n }\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n return el;\n};\n\nvar checkForNestedScrollContainers = scrollable => {\n if (!scrollable) {\n return;\n }\n const anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n if (!anotherScrollParent) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n Droppable: unsupported nested scroll container detected.\n A Droppable can only have one scroll parent (which can be itself)\n Nested scroll containers are currently not supported.\n\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\n `) : void 0;\n};\n\nvar getScroll = el => ({\n x: el.scrollLeft,\n y: el.scrollTop\n});\n\nconst getIsFixed = el => {\n if (!el) {\n return false;\n }\n const style = window.getComputedStyle(el);\n if (style.position === 'fixed') {\n return true;\n }\n return getIsFixed(el.parentElement);\n};\nvar getEnv = start => {\n const closestScrollable = getClosestScrollable(start);\n const isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable,\n isFixedOnPage\n };\n};\n\nvar getDroppableDimension = ({\n descriptor,\n isEnabled,\n isCombineEnabled,\n isFixedOnPage,\n direction,\n client,\n page,\n closest\n}) => {\n const frame = (() => {\n if (!closest) {\n return null;\n }\n const {\n scrollSize,\n client: frameClient\n } = closest;\n const maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient,\n scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n })();\n const axis = direction === 'vertical' ? vertical : horizontal;\n const subject = getSubject({\n page,\n withPlaceholder: null,\n axis,\n frame\n });\n const dimension = {\n descriptor,\n isCombineEnabled,\n isFixedOnPage,\n axis,\n isEnabled,\n client,\n page,\n frame,\n subject\n };\n return dimension;\n};\n\nconst getClient = (targetRef, closestScrollable) => {\n const base = getBox(targetRef);\n if (!closestScrollable) {\n return base;\n }\n if (targetRef !== closestScrollable) {\n return base;\n }\n const top = base.paddingBox.top - closestScrollable.scrollTop;\n const left = base.paddingBox.left - closestScrollable.scrollLeft;\n const bottom = top + closestScrollable.scrollHeight;\n const right = left + closestScrollable.scrollWidth;\n const paddingBox = {\n top,\n right,\n bottom,\n left\n };\n const borderBox = expand(paddingBox, base.border);\n const client = createBox({\n borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\nvar getDimension = ({\n ref,\n descriptor,\n env,\n windowScroll,\n direction,\n isDropDisabled,\n isCombineEnabled,\n shouldClipSubject\n}) => {\n const closestScrollable = env.closestScrollable;\n const client = getClient(ref, closestScrollable);\n const page = withScroll(client, windowScroll);\n const closest = (() => {\n if (!closestScrollable) {\n return null;\n }\n const frameClient = getBox(closestScrollable);\n const scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: withScroll(frameClient, windowScroll),\n scroll: getScroll(closestScrollable),\n scrollSize,\n shouldClipSubject\n };\n })();\n const dimension = getDroppableDimension({\n descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction,\n client,\n page,\n closest\n });\n return dimension;\n};\n\nconst immediate = {\n passive: false\n};\nconst delayed = {\n passive: true\n};\nvar getListenerOptions = options => options.shouldPublishImmediately ? immediate : delayed;\n\nconst getClosestScrollableFromDrag = dragging => dragging && dragging.env.closestScrollable || null;\nfunction useDroppablePublisher(args) {\n const whileDraggingRef = useRef(null);\n const appContext = useRequiredContext(AppContext);\n const uniqueId = useUniqueId('droppable');\n const {\n registry,\n marshal\n } = appContext;\n const previousRef = usePrevious(args);\n const descriptor = useMemo(() => ({\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n }), [args.droppableId, args.mode, args.type]);\n const publishedDescriptorRef = useRef(descriptor);\n const memoizedUpdateScroll = useMemo(() => memoizeOne((x, y) => {\n !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant() : void 0;\n const scroll = {\n x,\n y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n }), [descriptor.id, marshal]);\n const getClosestScroll = useCallback(() => {\n const dragging = whileDraggingRef.current;\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n return getScroll(dragging.env.closestScrollable);\n }, []);\n const updateScroll = useCallback(() => {\n const scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n const scheduleScrollUpdate = useMemo(() => rafSchd(updateScroll), [updateScroll]);\n const onClosestScroll = useCallback(() => {\n const dragging = whileDraggingRef.current;\n const closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant() : void 0;\n const options = dragging.scrollOptions;\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n const getDimensionAndWatchScroll = useCallback((windowScroll, options) => {\n !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant() : void 0;\n const previous = previousRef.current;\n const ref = previous.getDroppableRef();\n !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant() : void 0;\n const env = getEnv(ref);\n const dragging = {\n ref,\n descriptor,\n env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n const dimension = getDimension({\n ref,\n descriptor,\n env,\n windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n const scrollable = env.closestScrollable;\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n if (process.env.NODE_ENV !== 'production') {\n checkForNestedScrollContainers(scrollable);\n }\n }\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n const getScrollWhileDragging = useCallback(() => {\n const dragging = whileDraggingRef.current;\n const closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant() : void 0;\n return getScroll(closest);\n }, []);\n const dragStopped = useCallback(() => {\n const dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant() : void 0;\n const closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n if (!closest) {\n return;\n }\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n const scroll = useCallback(change => {\n const dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant() : void 0;\n const closest = getClosestScrollableFromDrag(dragging);\n !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant() : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n const callbacks = useMemo(() => {\n return {\n getDimensionAndWatchScroll,\n getScrollWhileDragging,\n dragStopped,\n scroll\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n const entry = useMemo(() => ({\n uniqueId,\n descriptor,\n callbacks\n }), [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect(() => {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return () => {\n if (whileDraggingRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n dragStopped();\n }\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect(() => {\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect(() => {\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop() {}\nconst empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\nconst getSize = ({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n}) => {\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n if (animate === 'close') {\n return empty;\n }\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\nconst getStyle = ({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n}) => {\n const size = getSize({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n });\n return {\n display: placeholder.display,\n boxSizing: 'border-box',\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: '0',\n flexGrow: '0',\n pointerEvents: 'none',\n transition: animate !== 'none' ? transitions.placeholder : null\n };\n};\nconst Placeholder = props => {\n const animateOpenTimerRef = useRef(null);\n const tryClearAnimateOpenTimer = useCallback(() => {\n if (!animateOpenTimerRef.current) {\n return;\n }\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n const {\n animate,\n onTransitionEnd,\n onClose,\n contextId\n } = props;\n const [isAnimatingOpenOnMount, setIsAnimatingOpenOnMount] = useState(props.animate === 'open');\n useEffect(() => {\n if (!isAnimatingOpenOnMount) {\n return noop;\n }\n if (animate !== 'open') {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop;\n }\n if (animateOpenTimerRef.current) {\n return noop;\n }\n animateOpenTimerRef.current = setTimeout(() => {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n const onSizeChangeEnd = useCallback(event => {\n if (event.propertyName !== 'height') {\n return;\n }\n onTransitionEnd();\n if (animate === 'close') {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n const style = getStyle({\n isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return React.createElement(props.placeholder.tagName, {\n style,\n 'data-rfd-placeholder-context-id': contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n};\nvar Placeholder$1 = React.memo(Placeholder);\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\nfunction runChecks(args, checks) {\n checks.forEach(check => check(args));\n}\nconst shared = [function required({\n props\n}) {\n !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant() : void 0;\n !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `A Droppable requires a [string] droppableId. Provided: [${typeof props.droppableId}]`) : invariant() : void 0;\n}, function boolean({\n props\n}) {\n !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant() : void 0;\n !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant() : void 0;\n !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant() : void 0;\n}, function ref({\n getDroppableRef\n}) {\n checkIsValidInnerRef(getDroppableRef());\n}];\nconst standard = [function placeholder({\n props,\n getPlaceholderRef\n}) {\n if (!props.placeholder) {\n return;\n }\n const ref = getPlaceholderRef();\n if (ref) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n Droppable setup issue [droppableId: \"${props.droppableId}\"]:\n DroppableProvided > placeholder could not be found.\n\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/api/droppable.md\n `) : void 0;\n}];\nconst virtual = [function hasClone({\n props\n}) {\n !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant() : void 0;\n}, function hasNoPlaceholder({\n getPlaceholderRef\n}) {\n !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant() : void 0;\n}];\nfunction useValidation(args) {\n useDevSetupWarning(() => {\n runChecks(args, shared);\n if (args.props.mode === 'standard') {\n runChecks(args, standard);\n }\n if (args.props.mode === 'virtual') {\n runChecks(args, virtual);\n }\n });\n}\n\nclass AnimateInOut extends React.PureComponent {\n constructor(...args) {\n super(...args);\n this.state = {\n isVisible: Boolean(this.props.on),\n data: this.props.on,\n animate: this.props.shouldAnimate && this.props.on ? 'open' : 'none'\n };\n this.onClose = () => {\n if (this.state.animate !== 'close') {\n return;\n }\n this.setState({\n isVisible: false\n });\n };\n }\n static getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: 'none'\n };\n }\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: 'open'\n };\n }\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: 'close'\n };\n }\n return {\n isVisible: false,\n animate: 'close',\n data: null\n };\n }\n render() {\n if (!this.state.isVisible) {\n return null;\n }\n const provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n }\n}\n\nconst Droppable = props => {\n const appContext = useContext(AppContext);\n !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant() : void 0;\n const {\n contextId,\n isMovementAllowed\n } = appContext;\n const droppableRef = useRef(null);\n const placeholderRef = useRef(null);\n const {\n children,\n droppableId,\n type,\n mode,\n direction,\n ignoreContainerClipping,\n isDropDisabled,\n isCombineEnabled,\n snapshot,\n useClone,\n updateViewportMaxScroll,\n getContainerForClone\n } = props;\n const getDroppableRef = useCallback(() => droppableRef.current, []);\n const setDroppableRef = useCallback((value = null) => {\n droppableRef.current = value;\n }, []);\n const getPlaceholderRef = useCallback(() => placeholderRef.current, []);\n const setPlaceholderRef = useCallback((value = null) => {\n placeholderRef.current = value;\n }, []);\n useValidation({\n props,\n getDroppableRef,\n getPlaceholderRef\n });\n const onPlaceholderTransitionEnd = useCallback(() => {\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [isMovementAllowed, updateViewportMaxScroll]);\n useDroppablePublisher({\n droppableId,\n type,\n mode,\n direction,\n isDropDisabled,\n isCombineEnabled,\n ignoreContainerClipping,\n getDroppableRef\n });\n const placeholder = useMemo(() => React.createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, ({\n onClose,\n data,\n animate\n }) => React.createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n })), [contextId, onPlaceholderTransitionEnd, props.placeholder, props.shouldAnimatePlaceholder, setPlaceholderRef]);\n const provided = useMemo(() => ({\n innerRef: setDroppableRef,\n placeholder,\n droppableProps: {\n 'data-rfd-droppable-id': droppableId,\n 'data-rfd-droppable-context-id': contextId\n }\n }), [contextId, droppableId, placeholder, setDroppableRef]);\n const isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n const droppableContext = useMemo(() => ({\n droppableId,\n type,\n isUsingCloneFor\n }), [droppableId, isUsingCloneFor, type]);\n function getClone() {\n if (!useClone) {\n return null;\n }\n const {\n dragging,\n render\n } = useClone;\n const node = React.createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, (draggableProvided, draggableSnapshot) => render(draggableProvided, draggableSnapshot, dragging));\n return ReactDOM.createPortal(node, getContainerForClone());\n }\n return React.createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n};\n\nfunction getBody() {\n !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant() : void 0;\n return document.body;\n}\nconst defaultProps = {\n mode: 'standard',\n type: 'DEFAULT',\n direction: 'vertical',\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nconst attachDefaultPropsToOwnProps = ownProps => {\n let mergedProps = {\n ...ownProps\n };\n let defaultPropKey;\n for (defaultPropKey in defaultProps) {\n if (ownProps[defaultPropKey] === undefined) {\n mergedProps = {\n ...mergedProps,\n [defaultPropKey]: defaultProps[defaultPropKey]\n };\n }\n }\n return mergedProps;\n};\nconst isMatchingType = (type, critical) => type === critical.droppable.type;\nconst getDraggable = (critical, dimensions) => dimensions.draggables[critical.draggable.id];\nconst makeMapStateToProps = () => {\n const idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n const idleWithoutAnimation = {\n ...idleWithAnimation,\n shouldAnimatePlaceholder: false\n };\n const getDraggableRubric = memoizeOne(descriptor => ({\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n }));\n const getMapProps = memoizeOne((id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) => {\n const draggableId = dragging.descriptor.id;\n const isHome = dragging.descriptor.droppableId === id;\n if (isHome) {\n const useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n const snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot,\n useClone\n };\n }\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n const snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot,\n useClone: null\n };\n });\n const selector = (state, ownProps) => {\n const ownPropsWithDefaultProps = attachDefaultPropsToOwnProps(ownProps);\n const id = ownPropsWithDefaultProps.droppableId;\n const type = ownPropsWithDefaultProps.type;\n const isEnabled = !ownPropsWithDefaultProps.isDropDisabled;\n const renderClone = ownPropsWithDefaultProps.renderClone;\n if (isDragging(state)) {\n const critical = state.critical;\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n const dragging = getDraggable(critical, state.dimensions);\n const isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n if (state.phase === 'DROP_ANIMATING') {\n const completed = state.completed;\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n const dragging = getDraggable(completed.critical, state.dimensions);\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, dragging, renderClone);\n }\n if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n const completed = state.completed;\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n const wasOver = whatIsDraggedOver(completed.impact) === id;\n const wasCombining = Boolean(completed.impact.at && completed.impact.at.type === 'COMBINE');\n const isHome = completed.critical.droppable.id === id;\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n if (isHome) {\n return idleWithAnimation;\n }\n return idleWithoutAnimation;\n }\n return idleWithoutAnimation;\n };\n return selector;\n};\nconst mapDispatchToProps = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\nconst ConnectedDroppable = connect(makeMapStateToProps, mapDispatchToProps, (stateProps, dispatchProps, ownProps) => {\n return {\n ...attachDefaultPropsToOwnProps(ownProps),\n ...stateProps,\n ...dispatchProps\n };\n}, {\n context: StoreContext,\n areStatePropsEqual: isStrictEqual\n})(Droppable);\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, useKeyboardSensor, useMouseSensor, useTouchSensor };\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect, useState } from 'react'\nimport {\n DragDropContext,\n Draggable,\n DropResult,\n Droppable,\n DroppableProvided,\n DroppableStateSnapshot,\n} from '@hello-pangea/dnd'\nimport { v4 as uuidv4 } from 'uuid'\nimport { defineMessages, useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\nimport { LightFile } from '../../types/global'\n\ninterface StrictModeDroppableProps {\n children(\n provided: DroppableProvided,\n snapshot: DroppableStateSnapshot\n ): React.ReactElement<HTMLElement>\n droppableId: string\n}\nconst StrictModeDroppable = ({\n children,\n droppableId,\n}: StrictModeDroppableProps) => {\n const [enabled, setEnabled] = useState(false)\n useEffect(() => {\n const animation = requestAnimationFrame(() => setEnabled(true))\n return () => {\n cancelAnimationFrame(animation)\n setEnabled(false)\n }\n }, [])\n if (!enabled) {\n return null\n }\n return <Droppable droppableId={droppableId}>{children}</Droppable>\n}\n\nconst reorder = (list: string[], startIndex: number, endIndex: number) => {\n const result: string[] = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\nconst messages = defineMessages({\n failed_to_sort_images: {\n id: 'failed_to_sort_images',\n defaultMessage: 'Failed to sort images',\n },\n images_sorted: {\n id: 'images_sorted',\n defaultMessage: 'Images sorted',\n },\n})\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageOrderedAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [sortedList, setSortedList] = useState<string[]>(\n Object.keys(values['images'])\n )\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const sizesImages = cfg.SizeImages || _sizesImages\n\n async function onDragEnd(result: DropResult) {\n if (!result.destination) {\n return\n }\n\n if (result.destination.index === result.source.index) {\n return\n }\n\n const resultSorted = reorder(\n sortedList,\n result.source.index,\n result.destination.index\n )\n\n setSortedList(resultSorted)\n setLoading(true)\n const endpoint = `${Ctx.path}@sort/images/`\n const req = await Ctx.client.patch(endpoint, resultSorted)\n if (req.status !== 200) {\n setError(intl.formatMessage(messages.failed_to_sort_images))\n setLoading(false)\n return\n }\n\n setLoading(false)\n Ctx.flash(intl.formatMessage(messages.images_sorted), 'success')\n Ctx.refresh()\n }\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n const fileKey = uuidv4()\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <>\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n <section>\n <DragDropContext onDragEnd={onDragEnd}>\n <StrictModeDroppable droppableId=\"list\">\n {(provided) => (\n <div ref={provided.innerRef} {...provided.droppableProps}>\n {sortedList.map((key, index) => (\n <Draggable\n key={`multiimageattachment_${key}`}\n draggableId={`multiimageattachment_${key}`}\n index={index}\n >\n {(providedChild) => (\n <div\n className=\"is-flex is-align-items-center pt-2 pb-2\"\n style={{ borderTop: '1px solid #dbdbdb' }}\n ref={providedChild.innerRef}\n {...providedChild.draggableProps}\n {...providedChild.dragHandleProps}\n >\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={\n get(\n properties,\n 'images.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </StrictModeDroppable>\n </DragDropContext>\n </section>\n\n {Object.keys(values['images']).length === 0 && (\n <section>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </section>\n )}\n {modifyContent && (\n <section>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formMultiimageOrderedAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </section>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { Confirm } from '../modal'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { useEffect, useState } from 'react'\n\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { Workflow } from '../../types/guillotina'\nconst messages = defineMessages({\n status_changed_ok: {\n id: 'status_changed_ok',\n defaultMessage: 'Great status changed!',\n },\n status_changed_error: {\n id: 'status_changed_error',\n defaultMessage: 'Failed to status changed!: {error}',\n },\n confirm_message: {\n id: 'confirm_message',\n defaultMessage: 'Are you sure to change state: {title}?',\n },\n current_state: {\n id: 'current_state',\n defaultMessage: 'Current state: {state}',\n },\n actions: {\n id: 'actions',\n defaultMessage: 'Actions:',\n },\n})\n\nexport function IWorkflow() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext<Workflow>()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const [definition, setDefinition] = useState<Workflow | undefined>(undefined)\n const [workflowAction, setWorkflowAction] = useState<string | undefined>(\n undefined\n )\n const vocabulary = useVocabulary('workflow_states')\n const currentState =\n Ctx.context['guillotina.contrib.workflows.interfaces.IWorkflowBehavior']![\n 'review_state'\n ]\n\n async function loadDefinition() {\n const response = await Ctx.client.get(`${Ctx.path}/@workflow`)\n const workflow = await response.json()\n setDefinition(workflow)\n }\n\n useEffect(() => {\n loadDefinition()\n }, [Ctx.path])\n\n const doWorkflowAction = async () => {\n const { isError, errorMessage } = await post(\n {},\n `@workflow/${workflowAction}`,\n false\n )\n await loadDefinition()\n if (!isError) {\n Ctx.flash(intl.formatMessage(messages.status_changed_ok), 'success')\n } else {\n Ctx.flash(\n intl.formatMessage(messages.status_changed_error, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n\n Ctx.refresh()\n setWorkflowAction(undefined)\n }\n\n const getStateTitle = () => {\n if ((vocabulary.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary?.data?.items.find(\n (item) => item.token === currentState\n )\n if (vocabularyValue) {\n const translatedValue = get(\n vocabularyValue,\n `title.translated_title.${intl.locale}`,\n null\n )\n if (translatedValue !== null) {\n return translatedValue\n }\n const titleValue = get(\n vocabularyValue,\n `title.title.${intl.locale}`,\n null\n )\n if (titleValue !== null) {\n return titleValue\n }\n }\n }\n return currentState\n }\n\n if (definition === undefined) return null\n\n return (\n <>\n {workflowAction && (\n <Confirm\n loading={loading}\n onCancel={() => setWorkflowAction(undefined)}\n onConfirm={doWorkflowAction}\n message={intl.formatMessage(messages.confirm_message, {\n title: Ctx.context.title || Ctx.context['@name'],\n })}\n />\n )}\n\n <div className=\"is-flex is-align-items-center mb-3\">\n <div\n className=\"has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n {intl.formatMessage(messages.current_state, {\n state: getStateTitle(),\n })}\n </div>\n </div>\n {modifyContent && definition.transitions.length > 0 && (\n <div\n className=\" is-flex is-align-items-center has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n <label>{intl.formatMessage(messages.actions)}</label>&nbsp;&nbsp;\n {definition.transitions.map((transition) => {\n return (\n <button\n key={transition['@id']}\n className=\"button mr-4\"\n onClick={() =>\n setWorkflowAction(\n transition['@id'].split('@workflow')[1].slice(1)\n )\n }\n >\n {get(\n transition,\n `metadata.translated_title.${intl.locale}`,\n transition.title\n )}\n </button>\n )\n })}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { Fragment } from 'react'\n\nexport function PanelActions() {\n const traversal = useTraversal()\n const intl = useIntl()\n const ACTIONS_OBJECT = traversal.registry.getActionsList(\n traversal.context['@type'],\n false\n )\n\n const hasPerm = (perms: string[]) => {\n return perms.some((perm) => traversal.hasPerm(perm))\n }\n\n const onAction = (actionKey: keyof typeof ACTIONS_OBJECT) => {\n traversal.doAction(ACTIONS_OBJECT[actionKey].action, {\n item: traversal.context,\n })\n }\n\n return (\n <Fragment>\n {Object.keys(ACTIONS_OBJECT).map((actionKey) => {\n const actionKeyTyped = actionKey as keyof typeof ACTIONS_OBJECT\n const actionObject = ACTIONS_OBJECT[actionKeyTyped]\n if (hasPerm(actionObject.perms)) {\n return (\n <button\n key={`panel_action_${actionObject.text}`}\n className=\"button mr-4\"\n onClick={() => {\n onAction(actionKeyTyped)\n }}\n >\n {intl.formatMessage(actionObject.text)}\n </button>\n )\n }\n })}\n </Fragment>\n )\n}\n","import { Traversal, useTraversal } from '../../contexts'\nimport { useIntl, defineMessages } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { AddonAvailable, Addons } from '../../types/guillotina'\n\nconst messages = defineMessages({\n available_addons: {\n id: 'available_addons',\n defaultMessage: 'Available Addons',\n },\n no_available_addons_container: {\n id: 'no_available_addons_container',\n defaultMessage: 'No Addon available in this container',\n },\n installed_addons: {\n id: 'installed_addons',\n defaultMessage: 'Installed Addons',\n },\n})\n\n// TODO: Refactor without useAsync... just crudContext\nexport function PanelAddons() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [action, setAction] = useState(false)\n const [state, setState] = useState<{\n data?: {\n available: AddonAvailable[]\n installed: AddonAvailable[]\n }\n loading: boolean\n error?: Error\n }>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n useEffect(() => {\n const getAddons = async () => {\n if (!state.loading && !state.data && !state.error) {\n try {\n const response = await Ctx.client.getAddons(Ctx.pathPrefix)\n const data: Addons = await response.json()\n setState({ ...state, loading: false, data: prepareData(data) })\n } catch (err) {\n setState({ ...state, loading: false, error: err as Error })\n }\n }\n }\n getAddons()\n }, [action])\n\n const installAddon = async (Ctx: Traversal, key: string) => {\n await Ctx.client.installAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} installed`, 'success')\n setAction(!action)\n }\n\n const removeAddon = async (Ctx: Traversal, key: string) => {\n await Ctx.client.removeAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} removed`, 'success')\n setAction(!action)\n }\n\n return (\n <Fragment>\n {state.loading ? (\n <div>{intl.formatMessage(genericMessages.loading)}</div>\n ) : state.error ? (\n <p>Error: {state.error.message}</p>\n ) : (\n <div className=\"columns\">\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.available_addons)}\n </h2>\n <hr />\n {(state.data?.available ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.available ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-primary is-small\"\n onClick={() => installAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.install)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.installed_addons)}\n </h2>\n <hr />\n {(state.data?.installed ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.installed ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-danger is-small\"\n onClick={() => removeAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.remove)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nconst prepareData = (result: Addons) => {\n const addons = arrayToObject(result.available)\n return {\n available: result.available.filter(\n (item) => !result.installed.includes(item.id)\n ),\n installed: result.installed.map((id) => addons[id]),\n }\n}\n\nconst arrayToObject = (\n array: AddonAvailable[]\n): {\n [key: string]: AddonAvailable\n} =>\n array.reduce((obj, item) => {\n return {\n ...obj,\n [item.id]: item,\n }\n }, {})\n","import { useCrudContext } from '../../hooks/useCrudContext'\nimport { Table } from '../ui/table'\nimport { Button } from '../input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { GuillotinaBehaviors } from '../../types/guillotina'\n\nexport function PanelBehaviors() {\n const intl = useIntl()\n const { Ctx, get, result, loading, isError } =\n useCrudContext<GuillotinaBehaviors>()\n const ops = useCrudContext()\n\n const [state, setState] = useState(false)\n\n const enableBehavior = (behavior: string) => async () => {\n await ops.patch({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n const disableBehavior = (behavior: string) => async () => {\n await ops.del({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n useEffect(() => {\n get('@behaviors')\n }, [])\n\n return (\n <div className=\"columns behaviors\">\n <div className=\"column is-8 is-size-7\">\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(genericMessages.behaviors)}\n </h2>\n {!loading && !isError && result && (\n <Fragment>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.static)}\n </h3>\n </td>\n </tr>\n {result.static.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.static)}</td>\n <td>{behavior}</td>\n <td className=\"\">\n <Button className=\"is-small is-pulled-right\" disabled>\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.enabled)}\n </h3>\n </td>\n </tr>\n {result.dynamic.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.enabled)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-danger is-pulled-right\"\n onClick={disableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.available)}\n </h3>\n </td>\n </tr>\n {result.available.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.available)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-primary is-pulled-right\"\n onClick={enableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.enable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n </Fragment>\n )}\n </div>\n <div className=\"column is-4\"></div>\n </div>\n )\n}\n","import { createContext, useState, useContext } from 'react'\nimport Dropdown from './input/dropdown'\nimport { Checkbox } from './input/checkbox'\nimport { useTraversal } from '../contexts'\nimport { useIntl } from 'react-intl'\nimport { SearchItem } from '../types/guillotina'\n\nexport const ItemsActionsCtx = createContext<{\n selected: {\n all: boolean\n [key: string]: boolean\n }\n onSelectOneItem?: (item: SearchItem) => void\n onSelectAllItems?: (chedked: boolean) => void\n onAction?: (action: string) => void\n}>({\n selected: {\n all: false,\n },\n})\n\n/**\n * Actions to apply after select some items\n * Ex: Delete, Move, Copy...\n */\ninterface PropsItemsActionsProvider {\n items: SearchItem[]\n children: React.ReactNode\n}\nexport function ItemsActionsProvider({\n items,\n children,\n}: PropsItemsActionsProvider) {\n const traversal = useTraversal()\n const actions = traversal.registry.getActionsList(\n traversal.context['@type'],\n true\n )\n const [selected, setSelected] = useState<{\n all: boolean\n [key: string]: boolean\n }>({\n all: false,\n })\n function onSelectAllItems(checked: boolean) {\n setSelected(\n items.reduce(\n (obj, item) => {\n return {\n ...obj,\n [`${item.path}/${item.id}`]: checked,\n }\n },\n { all: checked }\n )\n )\n }\n\n function onSelectOneItem(item: SearchItem) {\n setSelected((state) => ({\n ...state,\n all: false,\n [`${item.path}/${item.id}`]: !state[`${item.path}/${item.id}`],\n }))\n }\n\n function onAction(actionKey: string) {\n traversal.doAction(actions[actionKey].action, {\n items: items.filter((item) => selected[`${item.path}/${item.id}`]),\n })\n }\n\n return (\n <ItemsActionsCtx.Provider\n value={{\n onAction,\n onSelectAllItems,\n onSelectOneItem,\n selected,\n }}\n >\n {children}\n </ItemsActionsCtx.Provider>\n )\n}\n\nexport const useItemsActions = () => {\n const { onAction, onSelectOneItem, onSelectAllItems, selected } =\n useContext(ItemsActionsCtx)\n if (!onAction || !onSelectOneItem || !onSelectAllItems || !selected) {\n throw new Error('useItemsActions must be used inside ItemsActionsProvider')\n }\n return { onAction, onSelectOneItem, onSelectAllItems, selected }\n}\n/**\n * Checkbox component without props that consume the ItemsActionsContext\n * and it select/unselect all items of the page.\n */\nexport function AllItemsCheckbox({ dataTest }: { dataTest?: string }) {\n const { onSelectAllItems, selected } = useItemsActions()\n\n return (\n <Checkbox\n onChange={onSelectAllItems}\n checked={selected.all}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Checkbox component to select ONE item.\n */\ninterface PropsItemCheckbox {\n item: SearchItem\n dataTest?: string\n}\nexport function ItemCheckbox({ item, dataTest }: PropsItemCheckbox) {\n const { selected, onSelectOneItem } = useItemsActions()\n const absId = `${item.path}/${item.id}`\n const value = selected[absId]\n\n return (\n <Checkbox\n onChange={() => onSelectOneItem(item)}\n checked={value}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Dropdown to choose some action to apply to the selected items.\n */\nexport function ItemsActionsDropdown() {\n const intl = useIntl()\n const traversal = useTraversal()\n const ACTIONS_OBJECT = traversal.registry.getActionsList(\n traversal.context['@type'],\n true\n )\n const { selected, onAction } = useItemsActions()\n const disabled = Object.values(selected).every((v) => !v)\n const options = Object.keys(ACTIONS_OBJECT).map((action) => ({\n text: intl.formatMessage(ACTIONS_OBJECT[action].text),\n value: action,\n }))\n\n return (\n <Dropdown\n disabled={disabled}\n id=\"items-actions\"\n onChange={onAction}\n optionDisabledWhen={(o) =>\n ACTIONS_OBJECT[o.value].perms.some((perm) => !traversal.hasPerm(perm))\n }\n options={options}\n isRight={false}\n >\n <div data-test=\"btnChooseActionTest\">\n {intl.formatMessage({\n id: 'choose_action',\n defaultMessage: 'Choose action...',\n })}\n </div>\n </Dropdown>\n )\n}\n","import { useIntl } from 'react-intl'\n\ninterface Props {\n current: number\n total: number\n doPaginate: (page: number) => void\n pager: number\n}\nexport function Pagination({ current, total, doPaginate, pager }: Props) {\n const intl = useIntl()\n const maxPages = Math.ceil(total / pager)\n if (maxPages <= 1) {\n return null\n }\n\n return (\n <div>\n <p className=\"level-right has-text-grey is-size-7\">\n <span>\n {intl.formatMessage(\n {\n id: 'pagination',\n defaultMessage:\n '{currentPage} / {totalPages} of {totalItems} items',\n },\n {\n currentPage: current + 1,\n totalPages: maxPages,\n totalItems: total,\n }\n )}\n </span>\n </p>\n <nav\n className=\"pagination is-size-7\"\n role=\"navigation\"\n aria-label=\"pagination\"\n >\n <a\n className=\"pagination-previous is-small\"\n // disabled={current === 0}\n onClick={() => (current > 0 ? doPaginate(current - 1) : null)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-left\"></i>\n </span>\n </a>\n <a\n className=\"pagination-next is-small\"\n // disabled={current >= maxPages - 1}\n onClick={() => doPaginate(current + 1)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-right\"></i>\n </span>\n </a>\n </nav>\n </div>\n )\n}\n","import {\n GuillotinaSharing,\n GuillotinaSharingInheritItem,\n GuillotinaSharingMap,\n} from '../types/guillotina'\n\nconst base: GuillotinaSharing = {\n local: {\n roleperm: {},\n prinperm: {},\n prinrole: {},\n },\n inherit: [],\n}\n\nexport class Sharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n\n constructor(element: GuillotinaSharing | undefined) {\n if (element === undefined) {\n throw new Error('Sharing element is undefined')\n }\n this.local = element.local || base.local\n this.inherit = element.inherit || base.inherit\n }\n get roles() {\n return Object.keys(this.local.roleperm)\n }\n\n getRole(role: string) {\n return this.local.roleperm[role]\n }\n\n get principals() {\n return Object.keys(this.local.prinperm)\n }\n\n getPrincipals(principal: string) {\n return this.local.prinperm[principal]\n }\n\n get prinrole() {\n return Object.keys(this.local.prinrole)\n }\n\n getPrinroles(role: string) {\n return this.local.prinrole[role]\n }\n}\n","import { formatDate } from '../lib/utils'\nimport { useConfig } from '../hooks/useConfig'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\nexport * from './sharing'\n\nexport class ItemModel<\n T extends SearchItem | GuillotinaCommonObject =\n | SearchItem\n | GuillotinaCommonObject,\n> {\n item: T\n url: string\n constructor(item: T, url = '') {\n this.item = item\n this.url = url\n }\n\n get path() {\n // Compat\n const item = this.item['@id']\n ? this.item['@id']\n : this.item['@absolute_url']\n let path = item.split('//')[1].split('/').splice(1).join('/')\n path = `/${path}/`\n if (this.url.length > 0) {\n if (this.url.startsWith('/')) {\n path = path.replace(this.url.substring(1), '')\n } else {\n path = path.replace(this.url, '')\n }\n }\n\n return path\n }\n\n get name() {\n return this.item.title || this.item['@name']\n }\n\n get icon() {\n const cfg = useConfig()\n if (cfg.icons && cfg.icons[this.type]) {\n return cfg.icons[this.type]\n }\n\n switch (this.type) {\n case 'GroupManager':\n return 'fas fa-users-cog'\n case 'UserManager':\n return 'fas fa-user-cog'\n case 'User':\n return 'fas fa-user'\n case 'Group':\n return 'fas fa-users'\n case 'Folder':\n return 'fas fa-folder'\n default:\n return 'fas fa-file'\n }\n }\n\n get fullPath() {\n return this.url + this.id\n }\n\n get id() {\n if ('id' in this.item) {\n return this.item.id\n }\n const id = this.item['@id'].split('&')[0].split('/')\n return id[id.length - 1]\n }\n\n get uid() {\n return this.item['@uid']\n }\n\n get type(): string {\n return this.item['@type'] || this.item.type_name\n }\n\n get title() {\n return this.item.title\n }\n\n get created() {\n return this.item.creation_date ? formatDate(this.item.creation_date) : ''\n }\n\n get updated() {\n return this.item.modification_date\n ? formatDate(this.item.modification_date)\n : ''\n }\n}\n","import React from 'react'\n\nimport { ItemModel } from '../models'\nimport { useLocation } from '../hooks/useLocation'\nimport { useTraversal } from '../contexts'\nimport { Icon } from './ui/icon'\nimport { ItemCheckbox } from './selected_items_actions'\nimport { Delete } from './ui'\nimport {\n GuillotinaCommonObject,\n ItemColumn,\n SearchItem,\n} from '../types/guillotina'\n\ninterface ItemProps {\n item: { id: string; path: string }\n icon?: string\n}\nexport function Item({ item, icon }: ItemProps) {\n const [, navigate] = useLocation()\n const link = () => navigate({ path: item.path }, true)\n return (\n <tr>\n <td onClick={link} style={{ width: '25px' }}>\n {icon && <Icon icon={icon} />}\n </td>\n <td onClick={link}>{item.id}</td>\n </tr>\n )\n}\n\nconst smallcss = {\n width: 25,\n}\n\ninterface RItemProps {\n item: SearchItem\n search: string\n columns: ItemColumn<SearchItem | GuillotinaCommonObject>[]\n}\nexport function RItem({ item, search, columns }: RItemProps) {\n const [, navigate] = useLocation()\n const traversal = useTraversal()\n const model = new ItemModel(item, traversal.url)\n const link = () => navigate({ path: model.path }, true)\n\n return (\n <tr key={item.id} data-test={`itemTest-${item.id}`}>\n <td style={smallcss}>\n <ItemCheckbox item={item} dataTest=\"itemCheckboxRowTest\" />\n </td>\n {columns.map((i) => (\n <React.Fragment key={i.label}>\n {i.child({ model, link, search })}\n </React.Fragment>\n ))}\n <td style={smallcss}>\n {traversal.hasPerm('guillotina.DeleteContent') && (\n <Delete\n onClick={() =>\n traversal.doAction('removeItems', { items: [model.item] })\n }\n />\n )}\n </td>\n </tr>\n )\n}\n\ninterface ItemTitleProps {\n title: string\n actions?: React.ReactNode\n}\nexport function ItemTitle({ title, actions }: ItemTitleProps) {\n return (\n <nav className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <h4 className=\"title has-text-primary is-size-5\">{title}</h4>\n </div>\n </div>\n <div className=\"level-right\">\n <div className=\"level-item\">{actions && actions}</div>\n </div>\n </nav>\n )\n}\n","import { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n}\nexport function SearchLabels({ query }: Props) {\n const [location, , del] = useLocation()\n const search = location.get(query ?? 'q')\n\n const clearSearch = () => {\n del(query ?? 'q')\n }\n\n if (search) {\n return (\n <div className=\"tags\">\n <Tag\n id={search}\n name={search}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n options?: { value: string; text: string }[]\n}\nexport function SearchOptionsLabels({ query = 'q', options }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState<string | undefined>(undefined)\n const defaultRenderValue = location.get(query) || ''\n\n useEffect(() => {\n let value = defaultRenderValue\n if (options && (options ?? []).length > 0) {\n const option = options.find((item) => item.value === value)\n if (option) {\n value = option.text\n }\n }\n setRenderValue(value)\n }, [defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\nimport { useVocabulary } from '../hooks/useVocabulary'\n\ninterface Props {\n query?: string\n vocabularyName: string\n}\n\nexport function SearchVocabularyLabels({ query = 'q', vocabularyName }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState<string | undefined>(undefined)\n const vocabulary = useVocabulary(vocabularyName)\n const defaultRenderValue = location.get(query) || ''\n\n useEffect(() => {\n let value: string = defaultRenderValue\n\n if ((vocabulary?.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary?.data?.items.find(\n (item) => item.token === value\n )\n if (vocabularyValue) {\n value = vocabularyValue.title\n }\n }\n setRenderValue(value)\n }, [vocabulary, defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import useSetState from '../../hooks/useSetState'\nimport {\n ItemsActionsProvider,\n AllItemsCheckbox,\n ItemsActionsDropdown,\n} from '../selected_items_actions'\nimport { Pagination } from '../pagination'\nimport { RItem } from '../item'\nimport { SearchLabels } from '../search_labels'\nimport { SearchOptionsLabels } from '../search_options_labels'\nimport { SearchVocabularyLabels } from '../search_vocabulary_labels'\nimport { useTraversal } from '../../contexts'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect } from 'react'\nimport { useLocation } from '../../hooks/useLocation'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { RegistrySchemaFilter, SearchItem } from '../../types/guillotina'\n\ninterface InitialState {\n page: number\n items: SearchItem[]\n loading: boolean\n total: number\n}\nconst initialState: InitialState = {\n page: 0,\n items: [],\n loading: true,\n total: 0,\n}\n\nexport function PanelItems() {\n const [location, setLocation, del] = useLocation()\n const { PageSize, SearchEngine } = useConfig()\n const intl = useIntl()\n\n const Ctx = useTraversal()\n const [state, setState] = useSetState<InitialState>(initialState)\n const { items, loading, total } = state\n\n const filterSchema: RegistrySchemaFilter[] =\n Ctx.registry.getSchemas(Ctx.context['@type']).filters || []\n\n const columns =\n Ctx.registry.getItemsColumn(Ctx.context['@type']) ||\n Ctx.client.getItemsColumn()\n\n const search = location.get('q')\n const type = location.get('type')\n const sort = location.get('sort')\n const sortDirection = location.get('sort_direction')\n let page: number\n\n try {\n page = parseInt(location.get('page') || '0')\n } catch {\n page = 0\n }\n\n let searchParsed: string[][] | undefined = undefined\n if (search && search !== '') {\n const fieldsToFilter = Ctx.registry.getFieldsToFilter(Ctx.context['@type'])\n searchParsed = parser(search, fieldsToFilter)\n }\n\n let typeParsed: string[][] | undefined = undefined\n if (type && type !== '') {\n typeParsed = parser(type, 'type_name')\n }\n\n let sortParsed: string[][] | undefined = undefined\n if (sort && sort !== '') {\n if (sortDirection === 'asc') {\n sortParsed = parser(`_sort_asc=${sort}`)\n } else if (sortDirection === 'des') {\n sortParsed = parser(`_sort_des=${sort}`)\n }\n }\n\n const onSort = (key: string) => {\n if (sort === key && sortDirection === 'des') {\n setLocation({\n sort: key,\n sort_direction: 'asc',\n page: 0,\n })\n } else {\n setLocation({\n sort: key,\n sort_direction: 'des',\n page: 0,\n })\n }\n }\n\n let resultQueryParams: string[][] = []\n const resultDynamicLocation: string[] = []\n filterSchema.forEach((filter) => {\n const itemParam = location.get(filter.attribute_key) || ''\n resultDynamicLocation.push(itemParam)\n if (itemParam) {\n const filterParsed = parser(itemParam, filter.attribute_key)\n resultQueryParams = [...resultQueryParams, ...filterParsed]\n }\n })\n\n useEffect(() => {\n const controller = new AbortController()\n if (Ctx.state.loading) return\n const getData = async () => {\n setState({ loading: true, total: Ctx.context.length })\n const { getSearchEngineQueryParamsFunction } = Ctx.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n if (sortParsed === undefined) {\n const defaultSortValue = Ctx.registry.getDefaultSortValue(\n Ctx.context['@type'],\n undefined\n )\n sortParsed = parser(\n `_sort_${defaultSortValue.direction}=${defaultSortValue.key}`\n )\n }\n const qsParsed = Ctx.client.getQueryParamsSearchFunction(fnName)({\n path: Ctx.path,\n start: page * PageSize,\n pageSize: PageSize,\n })\n let qs = ''\n if (search || type || resultQueryParams.length > 0) {\n qs = buildQs([\n ...qsParsed,\n ...(searchParsed ?? []),\n ...(typeParsed ?? []),\n ...(sortParsed ?? []),\n ...resultQueryParams,\n ])\n } else {\n qs = buildQs([...qsParsed, ...(sortParsed ?? [])])\n }\n\n const { signal } = controller\n const data = await Ctx.client.search<SearchItem>(\n Ctx.path,\n qs,\n false,\n false,\n signal\n )\n setState({\n items: data.items,\n loading: false,\n total: data.items_count,\n })\n }\n getData()\n return () => {\n controller.abort()\n }\n }, [\n search,\n type,\n Ctx.state.refresh,\n page,\n sort,\n sortDirection,\n ...resultDynamicLocation,\n ])\n\n const doPaginate = (page: number) => {\n setLocation({ page: page })\n }\n\n const getIcon = (key: string, isSortable: boolean) => {\n let icon = null\n if (isSortable) {\n if (sort !== key) {\n icon = <i className=\"fas fa-sort\" />\n } else if (sortDirection === 'des') {\n icon = <i className=\"fas fa-sort-down\" />\n } else {\n icon = <i className=\"fas fa-sort-up\"></i>\n }\n }\n return <span className=\"icon is-small\">{icon}</span>\n }\n\n return (\n <ItemsActionsProvider items={items}>\n {filterSchema.length > 0 && (\n <div className=\"filters-items-view\">\n {filterSchema.map((filter) => {\n if (filter.type === 'select' && (filter.values ?? []).length > 0) {\n return (\n <Select\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n classWrap=\"is-size-7 is-fullwidth\"\n options={filter.values ?? []}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'select' && filter.vocabulary) {\n return (\n <SelectVocabulary\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n vocabularyName={filter.vocabulary}\n classWrap=\"is-size-7 is-fullwidth\"\n val={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'input') {\n return (\n <Input\n id={filter.attribute_key}\n key={`filter-${filter.attribute_key}`}\n placeholder={filter.label}\n className=\"is-size-7 is-fullwidth\"\n type={filter.input_type || 'text'}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n }\n return null\n })}\n </div>\n )}\n <div className=\"wrapper-filters-info\">\n <div className=\"is-size-7\">\n <ItemsActionsDropdown />\n </div>\n <div className=\"wrapper-filters-tags\">\n {location.get('q') && <SearchLabels />}\n {location.get('type') && <SearchLabels query=\"type\" />}\n\n {(filterSchema ?? []).map((filter) => {\n const filterData = location.get(filter.attribute_key)\n if (filterData) {\n if (filter.type === 'select' && filter.vocabulary) {\n return (\n <div key={filter.attribute_key}>\n <SearchVocabularyLabels\n query={filter.attribute_key}\n vocabularyName={filter?.vocabulary}\n />\n </div>\n )\n } else if (\n filter.type === 'select' &&\n (filter.values ?? []).length > 0\n ) {\n return (\n <div key={filter.attribute_key}>\n <SearchOptionsLabels\n query={filter.attribute_key}\n options={filter?.values}\n />\n </div>\n )\n }\n return (\n <div key={filter.attribute_key}>\n <SearchLabels query={filter.attribute_key} />\n </div>\n )\n }\n return null\n })}\n </div>\n <div>\n <Pagination\n current={page}\n total={total}\n key=\"pagination-top\"\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </div>\n\n {loading && <div className=\"progress-line\"></div>}\n {!loading && (\n <table\n className=\"table is-fullwidth is-hoverable\"\n data-test=\"itemPanelTableTest\"\n >\n <thead className=\"is-size-7\">\n <tr>\n <th>\n <AllItemsCheckbox />\n </th>\n {columns.map((column) => (\n <th\n key={`table-col-${column.label}`}\n onClick={() => column.isSortable && onSort(column.key)}\n data-test={`sortableColumn${column.key}`}\n >\n <div className=\"has-text-info is-flex is-align-items-center\">\n <span>{column.label}</span>\n {getIcon(column.key, !!column.isSortable)}\n </div>\n </th>\n ))}\n <th>&nbsp;</th>\n </tr>\n </thead>\n <tbody>\n {items &&\n items.map((item) => (\n <RItem\n item={item}\n key={item['@uid']}\n search={search ?? ''}\n columns={columns}\n />\n ))}\n {items && items.length === 0 && (\n <tr>\n <td colSpan={6} className=\"has-text-centered\">\n {intl.formatMessage(genericMessages.no_results)}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n )}\n <div className=\"columns is-centered\">\n <Pagination\n current={page}\n key=\"pagination-bottom\"\n total={total}\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </ItemsActionsProvider>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { get } from '../lib/utils'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaCommonObject, GuillotinaSchema } from '../types/guillotina'\n\ninterface Props {\n context: GuillotinaCommonObject\n schema: GuillotinaSchema\n}\nexport function BehaviorsView({ context, schema }: Props) {\n const Ctx = useTraversal()\n const { getBehavior } = Ctx.registry\n\n const behaviors: string[] = [\n ...(context.__behaviors__ ?? []),\n ...Object(context['@static_behaviors']),\n ]\n\n const GetBehavior = (behaviorName: string) => {\n const Cls = getBehavior(behaviorName, BehaviorNotImplemented)\n return (\n <Cls\n values={context[behaviorName as keyof GuillotinaCommonObject]}\n properties={get(\n schema,\n ['definitions', behaviorName, 'properties'],\n {}\n )}\n />\n )\n }\n\n return (\n <>\n {behaviors.map((behavior) => (\n <div className=\"container\" key={behavior}>\n <h3 className=\"title is-size-6 has-text-grey\">{behavior}</h3>\n {GetBehavior(behavior)}\n <hr />\n </div>\n ))}\n </>\n )\n}\n\nexport function BehaviorNotImplemented() {\n const intl = useIntl()\n return (\n <tr>\n <td colSpan={3}>{intl.formatMessage(genericMessages.not_implemented)}</td>\n </tr>\n )\n}\n","import React from 'react'\nimport { useTraversal } from '../contexts'\n\nexport function PropertiesButtonView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Buttons) {\n const Element = React.cloneElement(Props.Buttons, { Ctx: Ctx })\n return Element\n }\n return null\n}\n\nexport function PropertiesView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Panels) {\n const Element = React.cloneElement(Props.Panels, { Ctx: Ctx })\n return Element\n }\n return null\n}\n","import { useEffect } from 'react'\nimport { ItemModel } from '../../models'\nimport { BehaviorsView } from '../behavior_view'\nimport { Icon } from '../ui/icon'\nimport { EditableField } from '../fields/editableField'\nimport { PropertiesButtonView } from '../properties_view'\nimport { PropertiesView } from '../properties_view'\nimport { useConfig } from '../../hooks/useConfig'\nimport useSetState from '../../hooks/useSetState'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\n\nconst _showProperties = ['@id', '@name', '@uid']\nconst _ignoreFields = [\n 'guillotina.behaviors.dublincore.IDublinCore',\n 'guillotina.behaviors.attachment.IAttachment',\n 'guillotina.behaviors.attachment.IMultiAttachment',\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior',\n 'guillotina.contrib.image.behaviors.IImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment',\n '__behaviors__',\n 'type_name',\n 'creation_date',\n 'modification_date',\n 'uuid',\n 'title',\n]\n\ninterface State {\n data?: GuillotinaSchema\n loading: boolean\n error: string | unknown\n}\n\nexport function PanelProperties() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const cfg = useConfig()\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const model = new ItemModel(Ctx.context)\n\n const showProperties: string[] =\n Ctx.registry.getProperties(Ctx.context['@type']).default ||\n cfg.properties_default ||\n _showProperties\n\n const ignoreFields =\n Ctx.registry.getProperties(Ctx.context['@type']).ignoreField ||\n cfg.properties_ignore_fields ||\n _ignoreFields\n\n const properties = Object.keys(schema?.data?.properties || [])\n .filter((key) => !ignoreFields.includes(key))\n .map((key) => ({\n key,\n value: schema?.data?.properties[key] as GuillotinaSchemaProperty,\n }))\n\n useEffect(() => {\n async function getSchema() {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(\n Ctx.path,\n Ctx.context.type_name\n )\n setSchema({ loading: false, data: dataJson })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n return (\n <div className=\"container\">\n <div className=\"level\">\n <div className=\"level-left\">\n <h2 className=\"title is-size-4 is-primary\">\n <Icon icon={model.icon} align=\"is-left\" className=\"has-text-grey\" />\n &nbsp;\n <span>{Ctx.context.title || Ctx.context['@name']}</span>\n </h2>\n </div>\n <div className=\"level-right\">\n <PropertiesButtonView />\n </div>\n </div>\n\n <hr />\n {schema && schema.data && !schema.loading && (\n <div className=\"columns\">\n <div className=\"column\">\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {showProperties.map((prop) => (\n <tr key={'prop' + prop}>\n <td style={{ width: '150px' }}>{prop}</td>\n <td>\n <EditableField\n field={prop}\n value={get(Ctx.context, prop, '')}\n modifyContent={false}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {properties.length > 0 && (\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {properties.map(({ key, value }) => {\n return (\n <tr key={'prop' + key}>\n <td style={{ width: '150px' }}>{value.title || key}</td>\n <td>\n <EditableField\n field={key}\n value={get(Ctx.context, key, '')}\n schema={value}\n modifyContent={modifyContent}\n required={(schema.data?.required ?? []).includes(\n key\n )}\n />\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n <PropertiesView />\n <BehaviorsView context={Ctx.context} schema={schema.data} />\n </div>\n </div>\n )}\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal?: string\n permission: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n principals?: { text: string; value: string }[]\n permissions?: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinperm({\n principals,\n permissions,\n operations,\n refresh,\n}: Props) {\n const Ctx = useTraversal()\n const intl = useIntl()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinperm: state.permission.map((perm) => ({\n principal: state.principal,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals ?? []}\n onChange={(value) => setState({ principal: value as string })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions ?? []}\n onChange={(values) => {\n setState({ permission: values as string[] })\n }}\n size={5}\n multiple\n dataTest=\"selectPermissionsTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal?: string\n roles: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n principals?: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinrole({\n principals,\n roles,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n roles: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.roles.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form_data) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinrole: state.roles.map((perm) => ({\n principal: state.principal,\n role: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals ?? []}\n onChange={(value) => setState({ principal: value as string })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n options={roles}\n onChange={(values) => {\n setState({ roles: values as string[] })\n }}\n size={5}\n multiple\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n role?: string\n permission: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n roles: { text: string; value: string }[]\n permissions?: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionRoleperm({\n roles,\n permissions,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n role: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.role || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n roleperm: state.permission.map((perm) => ({\n role: state.role,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n appendDefault\n options={roles}\n onChange={(value) => setState({ role: value as string })}\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions ?? []}\n onChange={(values) => {\n setState({ permission: values as string[] })\n }}\n dataTest=\"selectPermissionsTest\"\n size={5}\n multiple\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import useSetState from '../../hooks/useSetState'\nimport { PermissionPrinperm } from './permissions_prinperm'\nimport { PermissionPrinrole } from './permissions_prinrole'\nimport { PermissionRoleperm } from './permissions_roleperm'\nimport { Select } from '../input/select'\nimport { Sharing } from '../../models'\nimport { Table } from '../ui/table'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useMemo, useState } from 'react'\nimport { GuillotinaSharing } from '../../types/guillotina'\n\nconst messages = defineMessages({\n role_permissions: {\n id: 'role_permissions',\n defaultMessage: 'Role Permissions',\n },\n no_role_permissions: {\n id: 'no_role_permissions',\n defaultMessage: 'No roles permissions defined',\n },\n no_principal_permissions: {\n id: 'no_principal_permissions',\n defaultMessage: 'No principal permissions defined',\n },\n no_principal_roles: {\n id: 'no_principal_roles',\n defaultMessage: 'No principal roles defined',\n },\n principal_permissions: {\n id: 'principal_permissions',\n defaultMessage: 'Principal Permissions',\n },\n principal_roles: {\n id: 'principal_roles',\n defaultMessage: 'Principal Roles',\n },\n allow: {\n id: 'allow',\n defaultMessage: 'Allow',\n },\n deny: {\n id: 'deny',\n defaultMessage: 'Deny',\n },\n allow_single: {\n id: 'allow_single',\n defaultMessage: 'AllowSingle',\n },\n unset: {\n id: 'unset',\n defaultMessage: 'Unset',\n },\n add_permissions: {\n id: 'add_permissions',\n defaultMessage: 'Add Permissions',\n },\n select_type: {\n id: 'select_type',\n defaultMessage: 'Select a type:',\n },\n})\n\nexport function PanelPermissions() {\n const intl = useIntl()\n const { get, result, loading } = useCrudContext<GuillotinaSharing>()\n const ctx = useTraversal()\n\n const [reset, setReset] = useState(1)\n\n useEffect(() => {\n get('@sharing')\n }, [reset])\n\n const perms = useMemo(() => {\n if (result) {\n return new Sharing(result)\n }\n return null\n }, [result])\n if (perms === null) {\n return null\n }\n return (\n <div className=\"columns\">\n {!loading && (\n <div\n className=\"column is-8 is-size-7 permissions\"\n data-test=\"containerPermissionsInfoTest\"\n >\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.role_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.roles.map((role, idx) => (\n <Fragment key={'ff' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n {/* <td>\n <Icon icon=\"fas fa-ban\" />\n <span>Remove</span>\n </td> */}\n </tr>\n {Object.keys(perms.getRole(role)).map((row, idx) => (\n <tr key={'k' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getRole(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.roles.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.principals.map((role, idx) => (\n <Fragment key={'f2' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrincipals(role)).map((row, idx) => (\n <tr key={'x' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrincipals(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.principals.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_principal_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_roles)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.prinrole.map((role, idx) => (\n <Fragment key={role + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrinroles(role)).map((row, idx) => (\n <tr key={'xx' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrinroles(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.prinrole.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n </div>\n )}\n {ctx.hasPerm('guillotina.ChangePermissions') && (\n <AddPermission refresh={setReset} reset={reset} />\n )}\n </div>\n )\n}\n\ninterface State {\n permissions?: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n principals?: { text: string; value: string }[]\n current: string\n}\nconst initial: State = {\n permissions: undefined,\n roles: [],\n principals: undefined,\n current: '',\n}\n\ninterface AddPermissionProps {\n refresh: (state: number) => void\n reset: number\n}\nexport function AddPermission({ refresh, reset }: AddPermissionProps) {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State>(initial)\n const intl = useIntl()\n\n const operations = [\n { text: intl.formatMessage(messages.allow), value: 'Allow' },\n { text: intl.formatMessage(messages.deny), value: 'Deny' },\n { text: intl.formatMessage(messages.allow_single), value: 'AllowSingle' },\n { text: intl.formatMessage(messages.unset), value: 'Unset' },\n ]\n\n const defaultOptions = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n { text: intl.formatMessage(messages.role_permissions), value: 'roleperm' },\n {\n text: intl.formatMessage(messages.principal_permissions),\n value: 'prinperm',\n },\n { text: intl.formatMessage(messages.principal_roles), value: 'prinrole' },\n ]\n\n useEffect(() => {\n async function init() {\n const permissions = (await Ctx.client.getAllPermissions(Ctx.path)).map(\n (perm) => ({\n text: perm,\n value: perm,\n })\n )\n let principals = []\n let roles = []\n\n const principalsData = await Ctx.client.getPrincipals(Ctx.path)\n const groups = principalsData.groups.map((group) => ({\n text: group['@name'],\n value: group['@name'],\n }))\n const users = principalsData.users.map((user) => ({\n text: user.fullname || user['@name'],\n value: user['@name'],\n }))\n principals = [...groups, ...users]\n\n const req = await Ctx.client.getRoles(Ctx.path)\n if (req.ok) {\n roles = (await req.json()).map((role: string) => ({\n text: role,\n value: role,\n }))\n }\n setState({ permissions, roles, principals })\n }\n\n init()\n }, [reset])\n\n return (\n <div className=\"column is-4 is-size-7\">\n <h1 className=\"title is-size-5\">\n {intl.formatMessage(messages.add_permissions)}\n </h1>\n <p>{intl.formatMessage(messages.select_type)}</p>\n <Select\n options={defaultOptions}\n onChange={(value) => setState({ current: value as string })}\n dataTest=\"selectPermissionTypeTest\"\n />\n <hr />\n {state.current && state.current === 'roleperm' && (\n <PermissionRoleperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinperm' && (\n <PermissionPrinperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinrole' && (\n <PermissionPrinrole\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n </div>\n )\n}\n","import { Select } from '../input/select'\nimport { Tag } from '../ui/tag'\nimport { Loading } from '../ui/loading'\nimport { useRef, useState } from 'react'\n\nconst prepareAvailable = (\n items: {\n value: string\n text: string\n }[],\n already: string[],\n title: string\n) => {\n const def = { value: '', text: `Add ${title}` }\n if (items.length === 0) return []\n return [def].concat(items).filter((item) => !already.includes(item.value))\n}\n\ninterface Props {\n items: string[]\n available?: {\n value: string\n text: string\n }[]\n title: string\n noData: string\n onChange: (items: string[]) => void\n loading?: boolean\n}\nexport function TagsWidget({\n items,\n available,\n title,\n noData,\n onChange,\n loading,\n}: Props) {\n const selectRef = useRef<HTMLSelectElement>(null)\n\n const [result, setResult] = useState(items)\n const availableData = prepareAvailable(available || [], result, title)\n\n const remove = (value: string) => {\n const items = result.filter((item) => item !== value)\n setResult(items)\n onChange(items)\n }\n\n const addItem = (value: string) => {\n if (value === '') return\n const items = result.concat([value])\n setResult(items)\n onChange(items)\n }\n\n return (\n <>\n <h3 className=\"title is-size-6\">{title}</h3>\n {loading ? <Loading style={{ marginBottom: '1.5rem' }} /> : <hr />}\n <ul>\n <div className=\"tags\">\n {result.map((item) => (\n <Tag\n id={item}\n name={item}\n onRemove={() => remove(item)}\n key={item}\n />\n ))}\n </div>\n {result.length === 0 && (\n <li style={{ marginBottom: '20px' }}>{noData}</li>\n )}\n {(available ?? []).length > 1 && (\n <li className=\"widget-list-add select is-small\">\n <Select\n options={availableData}\n ref={selectRef}\n onChange={(value) => {\n addItem(value as string)\n if (selectRef.current) {\n selectRef.current.value = ''\n }\n }}\n />\n </li>\n )}\n </ul>\n </>\n )\n}\n","import { useEffect, useState } from 'react'\n\nimport Dropdown from './input/dropdown'\nimport { Button } from './input/button'\nimport { Icon } from './ui/icon'\nimport { useTraversal } from '../contexts'\nimport { useConfig } from '../hooks/useConfig'\nimport { useLocation } from '../hooks/useLocation'\nimport { Select } from './input/select'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { FilterFormElement } from '../types/global'\n\ninterface CreateButtonProps {\n types: string[]\n}\n\nexport function CreateButton({ types }: CreateButtonProps) {\n const intl = useIntl()\n const Ctx = useTraversal()\n\n const doAction = (item: string) => {\n Ctx.doAction('addItem', { type: item })\n }\n\n if (types.length === 0) {\n return null\n }\n\n if (types.length === 1) {\n return (\n <Button\n className={'is-small is-success'}\n onClick={() => doAction(types[0])}\n dataTest=\"itemAddTypeTest\"\n >\n {intl.formatMessage(genericMessages.add_type, { type: types[0] })}\n </Button>\n )\n }\n\n return (\n <Dropdown\n id=\"dropdown-menu\"\n isRight\n onChange={doAction}\n options={types.map((item) => ({ text: item, value: item }))}\n >\n <span className=\"icon\" data-test=\"itemAddTypeTest\">\n <i className=\"fas fa-plus\"></i>\n </span>\n </Dropdown>\n )\n}\n\ninterface Props {\n AddButton?: React.FC<CreateButtonProps>\n}\nexport function ContextToolbar({ AddButton }: Props) {\n const intl = useIntl()\n const [types, setTypes] = useState<string[]>([])\n const [location, setLocation, del] = useLocation()\n const traversal = useTraversal()\n const Config = useConfig()\n const searchText = location.get('q') || ''\n const [searchValue, setSearchValue] = useState(searchText || '')\n\n useEffect(() => {\n async function loadTypes() {\n const fetchedTypes: string[] = await traversal.client.getTypes(\n traversal.path\n )\n setTypes(\n fetchedTypes.filter((item) => !Config.DisabledTypes.includes(item))\n )\n }\n loadTypes()\n }, [traversal.path])\n\n useEffect(() => {\n setSearchValue(searchText)\n }, [searchText])\n\n const onSearchQuery = (event: React.FormEvent<FilterFormElement>) => {\n event.preventDefault()\n setLocation({\n q: event.currentTarget.elements.filterInput.value,\n tab: 'Items',\n page: 0,\n })\n }\n\n const onSearchByType = (typeText: string) => {\n if (typeText && typeText !== '') {\n setLocation({ type: typeText, tab: 'Items', page: 0 })\n } else {\n del('type')\n }\n }\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n value={searchValue || ''}\n onChange={(ev) => setSearchValue(ev.target.value)}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <div className=\"level-item\">\n <Select\n appendDefault\n dataTest=\"selectFilterTypeTest\"\n classWrap=\"is-size-7\"\n options={types.map((item) => ({\n text: item,\n value: item,\n }))}\n onChange={(value) => onSearchByType(value as string)}\n />\n </div>\n {traversal.hasPerm('guillotina.AddContent') && (\n <div className=\"level-item\">\n {AddButton !== undefined ? (\n <AddButton types={types} />\n ) : (\n <CreateButton types={types} />\n )}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Notification } from './ui/notification'\nimport { Delete } from './ui/delete'\n\nexport function Flash() {\n const Ctx = useTraversal()\n const { flash } = Ctx.state\n\n if (!flash.message) return null\n\n return (\n <Notification isColor={flash.type}>\n {flash.message}\n <Delete onClick={() => Ctx.clearFlash()} />\n </Notification>\n )\n}\n","import React, { useState } from 'react'\nimport { useLocation } from '../hooks/useLocation'\nimport { IndexSignature } from '../types/global'\n\nfunction FallbackTab({ title }: { title: string }) {\n return <div>Tab &apos;{title}&apos; not found</div>\n}\n\ninterface TabsPanelProps {\n tabs: IndexSignature\n currentTab: string\n rightToolbar?: React.ReactNode\n fallback?: React.ComponentType<{ title: string }>\n}\n\ntype TabsPanelPropsWithChildren<T = Record<string, unknown>> = TabsPanelProps &\n T\n\nexport function TabsPanel<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({\n tabs,\n currentTab,\n rightToolbar,\n fallback = FallbackTab,\n ...restProps\n}: TabsPanelPropsWithChildren<T>) {\n const [location, setLocation] = useLocation()\n\n currentTab = location.get('tab') || Object.keys(tabs)[0]\n /*if (!Object.keys(tabs).includes(currentTab)) {\n setLocation(defaultTab)\n currentTab = defaultTab\n }*/\n\n const [current, setTab] = useState(currentTab)\n const CurrentComp = tabs[current] || fallback\n\n React.useEffect(() => {\n if (Object.keys(tabs).includes(currentTab)) {\n setTab(currentTab)\n // setLocation({tab: currentTab})\n }\n }, [currentTab, tabs])\n\n const changeTab = (tab: string) => {\n setLocation({ tab: tab })\n }\n\n return (\n <div className=\"container\">\n <div className=\"level is-flex-wrap-wrap\">\n <div className=\"level-left mb-4\">\n <div className=\"tabs\">\n <ul>\n {Object.keys(tabs).map((tab) => (\n <li\n className={\n 'is-size-7 ' + (tab === current ? 'is-active' : '')\n }\n key={tab}\n >\n <a\n data-test={`tabTest-${tab.toLowerCase()}`}\n onClick={() => changeTab(tab)}\n >\n {tab}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n {rightToolbar && <div className=\"level-right\">{rightToolbar}</div>}\n </div>\n <div className=\"container\">\n <CurrentComp title={current} {...restProps} />\n </div>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { useTraversal } from '../contexts'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function FolderCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { useTraversal } from '../contexts'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelActions } from '../components/panel/actions'\n\nconst tabs = {\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ItemCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return <TabsPanel tabs={calculated} currentTab=\"Properties\" />\n}\n","import { Item } from '../components/item'\nimport { ItemTitle } from '../components/item'\nimport { Button } from '../components/input/button'\nimport { useState } from 'react'\nimport { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { Form } from '../components/input/form'\nimport { Input } from '../components/input/input'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaApplication, GuillotinaDatabase } from '../types/guillotina'\n\nexport function ApplicationCtx() {\n const intl = useIntl()\n const traversal = useTraversal()\n const appContext = traversal.state.context as GuillotinaApplication\n const { databases } = appContext\n return (\n <>\n <h3>\n {intl.formatMessage({\n id: 'databases',\n defaultMessage: 'Databases',\n })}\n </h3>\n <div className=\"container\">\n <ItemTitle title=\"Objects\" />\n <table>\n <tbody>\n {databases.map((db) => (\n <Item\n item={{ id: db, path: `/${db}/` }}\n key={db}\n icon={'fas fa-database'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function DatabaseCtx() {\n const traversal = useTraversal()\n const { containers } = traversal.state.context as GuillotinaDatabase\n const { path } = traversal.state\n return (\n <>\n <div className=\"container\">\n <ItemTitle title=\"Containers\" actions={<CreateContainer />} />\n <table className=\"table is-fullwidth is-hoverable\">\n <tbody>\n {containers.map((db) => (\n <Item\n item={{ id: db, path: `${path}${db}/` }}\n key={db}\n icon={'fas fa-archive'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function CreateContainer() {\n const intl = useIntl()\n const [isActive, setActive] = useState(false)\n\n return (\n <>\n <ModalAddContainer isActive={isActive} setActive={setActive} />\n <button\n className=\"button is-warning is-pulled-right\"\n onClick={() => setActive(true)}\n >\n <span className=\"icon is-small\">\n <i className=\"fas fa-plus\"></i>\n </span>\n <span>{intl.formatMessage(genericMessages.create)}</span>\n </button>\n </>\n )\n}\n\nexport const messages = defineMessages({\n add_container: {\n id: 'add_container',\n defaultMessage: 'Add Container',\n },\n container_created: {\n id: 'container_created',\n defaultMessage: 'Container Created',\n },\n})\n\ninterface ModalAddContainerProps {\n isActive: boolean\n setActive: (value: boolean) => void\n}\nfunction ModalAddContainer({ isActive, setActive }: ModalAddContainerProps) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [isLoading, setLoading] = useState(false)\n const [idField, setId] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n async function createContainer() {\n setLoading(true)\n const data = {\n '@type': 'Container',\n id: idField,\n }\n try {\n const res = await Ctx.client.createObject(Ctx.path, data)\n const result = await res.json()\n if (res.status === 200) {\n Ctx.refresh()\n setId('')\n setLoading(false)\n setActive(false)\n Ctx.flash(intl.formatMessage(messages.container_created), 'primary')\n } else {\n setId('')\n setLoading(false)\n setError(result.message)\n }\n } catch {\n setError('Error-submitting-form')\n setLoading(false)\n }\n }\n\n return (\n <Modal isActive={isActive} setActive={setActive}>\n <Form\n onSubmit={createContainer}\n title={intl.formatMessage(messages.add_container)}\n error={error}\n >\n <Input\n required\n placeholder=\"Container Name\"\n onChange={(v) => {\n setId(v)\n }}\n value={idField}\n loading={isLoading}\n />\n <Button loading={isLoading}>\n {intl.formatMessage(messages.add_container)}\n </Button>\n </Form>\n </Modal>\n )\n}\n","import { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface Props {\n title: string\n}\nexport function PanelNotImplemented(props: Props) {\n const intl = useIntl()\n return (\n <div className=\"container\">\n <h2 className=\"title\">{props.title}</h2>\n <p>{intl.formatMessage(genericMessages.not_implemented)}</p>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { PanelAddons } from '../components/panel/addons'\nimport { useTraversal } from '../contexts'\nimport { PanelNotImplemented } from './base'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Addons: PanelAddons,\n Registry: PanelNotImplemented,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Addons: 'guillotina.ManageAddons',\n Registry: 'guillotina.ReadConfiguration',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ContainerCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { FormBuilder } from '../components/input/form_builder'\nimport { useIntl } from 'react-intl'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n children: React.ReactNode\n onSubmit: (data: IndexSignature) => void\n actionName: string\n formData?: IndexSignature\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\nexport const UserForm = ({\n children,\n actionName,\n onSubmit,\n formData,\n exclude,\n remotes,\n submitButton,\n}: Props) => {\n const intl = useIntl()\n\n const schema = {\n $schema: '',\n title: '',\n type: 'object',\n definitions: {},\n required: ['username', 'password'],\n properties: {\n username: {\n type: 'string',\n title: intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n }),\n },\n email: {\n type: 'string',\n title: intl.formatMessage({\n id: 'email',\n defaultMessage: 'Email',\n }),\n widget: 'email',\n },\n name: {\n type: 'string',\n title: intl.formatMessage({\n id: 'name',\n defaultMessage: 'Name',\n }),\n },\n password: {\n type: 'string',\n title: intl.formatMessage({\n id: 'password',\n defaultMessage: 'Password',\n }),\n widget: 'password',\n },\n disabled: {\n type: 'boolean',\n title: 'Disabled',\n },\n },\n }\n\n return (\n <FormBuilder\n schema={schema}\n actionName={actionName}\n onSubmit={onSubmit}\n formData={formData}\n exclude={exclude}\n remotes={remotes}\n submitButton={submitButton}\n >\n {children}\n </FormBuilder>\n )\n}\n","/*\n This hook allows to bind (remote) fields on the DOM\n to a form generated with Formbuilder.\n You can link whatever field you want...\n\n const [remoteFields, updateRemoteField] = useRemoteField({widget_1: ['a', 'b']})\n\n <Form remotes={remoteFields} onSubmit={ev => console.log(ev)}>\n <Input />\n </Form>\n\n <Widget onChange={updateRemoteField('widgte_1')}>\n\n This will add the values from a remote field into the desired widget\n\n*/\n\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nexport const useRemoteField = (\n initial: IndexSignature<string[]>\n): [IndexSignature<string[]>, (name: string) => (value: string[]) => void] => {\n const [remotes, setRemote] = useState(initial)\n\n const updateRemote = (name: string) => (value: string[]) => {\n setRemote({\n ...remotes,\n [name]: value,\n })\n }\n\n return [remotes, updateRemote]\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { UserForm } from '../forms/users'\nimport { formatDate } from '../lib/utils'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { TagsWidget } from '../components/widgets/tags'\nimport { Icon } from '../components/ui/icon'\nimport { Button } from '../components/input/button'\nimport { useRemoteField } from '../hooks/useRemoteField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { useEffect, useRef, useState } from 'react'\nimport { GuillotinaUser, SearchItem } from '../types/guillotina'\nimport { FilterFormElement, IndexSignature } from '../types/global'\n\nconst tabs = {\n Users: PanelItems,\n}\n\nexport function UsersToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef<HTMLInputElement>(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (event: React.FormEvent<FilterFormElement>) => {\n event.preventDefault()\n setLocation({ q: event.currentTarget.elements.filterInput.value, page: 0 })\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (ref.current && (!searchText || searchText === '')) {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'User' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-user\" />\n <span>{intl.formatMessage(genericMessages.add_user)}</span>\n </button>\n </>\n )\n}\n\nexport function UsersCtx() {\n return (\n <TabsPanel tabs={tabs} currentTab=\"Users\" rightToolbar={<UsersToolbar />} />\n )\n}\n\ninterface State {\n roles: string[]\n groups: {\n value: string\n text: string\n }[]\n}\nexport function UserCtx() {\n const intl = useIntl()\n const { Ctx, patch, loading } = useCrudContext()\n\n const [state, setState] = useState<State>({ roles: [], groups: [] })\n\n const userDataContext = Ctx.context as GuillotinaUser\n const fields = {\n user_groups: [],\n user_roles: userDataContext.user_roles,\n }\n\n const [remotes, updateRemote] = useRemoteField(fields)\n\n useEffect(() => {\n async function getRolesAndGroups() {\n const [requestGetGroups, requestGetRoles] = await Promise.all([\n Ctx.client.search<SearchItem>(Ctx.path, { type_name: 'Group' }, true),\n Ctx.client.getRoles(Ctx.path),\n ])\n\n const groups = requestGetGroups\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = await requestGetRoles.json()\n }\n\n setState({\n roles: roles,\n groups: groups.items.map((item) => ({\n value: item.id,\n text: item['@name'],\n })),\n })\n }\n getRolesAndGroups()\n }, [])\n\n const updateObject = async (data: IndexSignature) => {\n Ctx.apply(data)\n const { isError, errorMessage } = await patch(data)\n if (isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage({\n id: 'user_updated',\n defaultMessage: 'User updated',\n }),\n 'primary'\n )\n Ctx.refresh()\n }\n }\n\n return (\n <div className=\"container\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-user\"></Icon>\n &nbsp;\n {intl.formatMessage({\n id: 'user',\n defaultMessage: 'User',\n })}\n </h2>\n\n <hr />\n <div className=\"columns\">\n <div className=\"column\">\n <div className=\"container user-props\">\n <p>\n <label>\n {intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n })}\n :{' '}\n </label>{' '}\n {userDataContext.username} ({userDataContext.email})\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'creation_date',\n defaultMessage: 'Creation Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(userDataContext.creation_date)}\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'modification_date',\n defaultMessage: 'Modification Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(userDataContext.modification_date)}\n </p>\n <Button\n className=\"is-size-7 is-info\"\n onClick={() => {\n Ctx.doAction('changePassword')\n }}\n >\n {intl.formatMessage({\n id: 'change_password',\n defaultMessage: 'Change Password',\n })}\n </Button>\n </div>\n <hr />\n <UserForm\n actionName=\"Save\"\n onSubmit={(ev) => updateObject(ev)}\n formData={userDataContext}\n exclude={['password']}\n remotes={remotes}\n submitButton={false}\n >\n <Button loading={loading} dataTest=\"formUserTestBtnSubmit\">\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </UserForm>\n </div>\n <div className=\"column\">\n <TagsWidget\n onChange={updateRemote('user_groups')}\n items={userDataContext.user_groups}\n title=\"Groups\"\n noData={intl.formatMessage({\n id: 'there_is_no_groups_for_this_user',\n defaultMessage: 'There is no groups for this user',\n })}\n available={state.groups}\n />\n <hr />\n <TagsWidget\n onChange={updateRemote('user_roles')}\n items={remotes.user_roles}\n title=\"Roles\"\n noData={intl.formatMessage({\n id: 'the_user_doesnt_have_any_role',\n defaultMessage: \"The user doesn't have any role\",\n })}\n available={state.roles.map((x) => ({ value: x, text: x }))}\n />\n </div>\n </div>\n </div>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { getNewId } from '../lib/utils'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\nimport { SearchItem } from '../types/guillotina'\n\nconst withError = (res: Response) => res.status >= 300\n\ninterface Props {\n items: Array<ItemModel<SearchItem | GuillotinaCommonObject>>\n}\nexport function CopyItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function copyItems(path: string, form: IndexSignature) {\n const responses = await Promise.all(\n items.map((item, i) => {\n const input = form[i + 1] || {}\n return Ctx.client.post(`${Ctx.path}${item.id}/@duplicate`, {\n destination: path,\n new_id: input.value || getNewId(item.id),\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be copied to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not copied correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items copied!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={Ctx.client.clearContainerFromPath(Ctx.path)}\n onConfirm={copyItems}\n onCancel={() => Ctx.cancelAction()}\n >\n {items.map((item) => (\n <Fragment key={item.id}>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item.id}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item.id}`}\n defaultValue={getNewId(item.id)}\n />\n </Fragment>\n ))}\n &nbsp;\n </PathTree>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { getNewId } from '../lib/utils'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function CopyItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext()\n const { item } = props\n\n async function copyItem(path: string, form: IndexSignature) {\n const input = form[1] || {}\n const { isError, errorMessage } = await post(\n {\n destination: path,\n new_id: input.value || getNewId(item['@name']),\n },\n '@duplicate'\n )\n\n if (!isError) {\n Ctx.flash(`Field copied!`, 'success')\n } else {\n Ctx.flash(`Failed to copy item!: ${errorMessage}`, 'danger')\n }\n Ctx.refresh()\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={`/${item['parent']['@name'] ?? '/'}`}\n onConfirm={copyItem}\n onCancel={() => Ctx.cancelAction()}\n >\n <Fragment>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item['@name']}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item['@name']}`}\n defaultValue={getNewId(item['@name'])}\n />\n </Fragment>\n </PathTree>\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { ItemModel } from '../models'\nimport { GuillotinaCommonObject } from '../types/guillotina'\nimport { SearchItem } from '../types/guillotina'\n\nconst withError = (res: Response) => res.status >= 300\n\ninterface Props {\n items: ItemModel<SearchItem | GuillotinaCommonObject>[]\n}\nexport function MoveItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function moveItems(path: string) {\n const responses = await Promise.all(\n items.map((item) => {\n return Ctx.client.post(`${Ctx.path}${item.id}/@move`, {\n destination: path,\n new_id: item.id,\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be moved to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not moved correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items moved!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItems}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function MoveItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext<{ '@url': string }>()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function moveItem(path: string) {\n const { isError, errorMessage, result } = await post(\n {\n destination: path,\n new_id: item['@name'],\n },\n '@move'\n )\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(result!['@url'])}/`,\n tab: '',\n })\n Ctx.flash(`Field moved!`, 'success')\n } else {\n Ctx.flash(`Failed to move item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItem}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { Confirm } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function RemoveItem(props: Props) {\n const Ctx = useTraversal()\n const { del, loading } = useCrudContext()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function removeItem() {\n const { isError, errorMessage } = await del()\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(item['parent']['@id'])}/`,\n tab: '',\n })\n Ctx.flash(`Field removed!`, 'success')\n } else {\n Ctx.flash(`Failed to delete item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItem}\n message={`Are you sure to remove: ${item['@name']}?`}\n />\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Input } from '../components/input/input'\nimport { Button } from '../components/input/button'\nimport { Form } from '../components/input/form'\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nconst initial = {\n pass1: '',\n pass2: '',\n}\n\nexport function ChangePassword() {\n const [state, setState] = useState(initial)\n const [perror, setPerror] = useState<string | undefined>(undefined)\n\n const Ctx = useTraversal()\n const { patch } = useCrudContext()\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit() {\n if (state.pass1 === '') {\n setPerror('provide a password')\n return\n }\n\n if (state.pass1 !== state.pass2) {\n setPerror(\"passwords doesn't match\")\n return\n }\n\n setPerror(undefined)\n\n const form = {\n password: state.pass1,\n }\n\n const { isError, errorMessage } = await patch(form)\n if (!isError) {\n Ctx.flash('Password Changed', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n const setPass = (field: string) => (val: string) => {\n const n: IndexSignature = {}\n n[field] = val\n setState((state) => ({ ...state, ...n }))\n setPerror(undefined)\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form onSubmit={doSubmit} title=\"Change Password\">\n {perror && (\n <div className=\"notification is-danger is-size-7\">\n <button className=\"delete\"></button>\n {perror}\n </div>\n )}\n <Input\n id=\"pass\"\n placeholder=\"New Password\"\n type=\"password\"\n value={state.pass1}\n onChange={setPass('pass1')}\n />\n\n <Input\n id=\"pass\"\n placeholder=\"Repeat Password\"\n type=\"password\"\n value={state.pass2}\n onChange={setPass('pass2')}\n />\n <Button>Change</Button>\n </Form>\n </Modal>\n )\n}\n","import { useState } from 'react'\nimport { Input } from '../components/input/input'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\nexport interface BaseFormProps {\n onSubmit: (data: { title: string; id: string }) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n type: string\n}\nexport function BaseForm({\n onSubmit,\n actionName,\n title,\n dataTest,\n loading,\n}: BaseFormProps) {\n const intl = useIntl()\n const [name, setName] = useState('')\n const [id, setId] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n const submit = () => {\n if (name === '') {\n setError(intl.formatMessage(genericMessages.field_is_required))\n return\n }\n onSubmit({ title: name, id })\n }\n\n const setTitle = (value: string) => {\n setId(stringToSlug(value))\n setName(value)\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n <Input\n id=\"title\"\n placeholder={intl.formatMessage(genericMessages.title)}\n required\n value={name}\n onChange={setTitle}\n autofocus\n error={error}\n dataTest=\"titleTestInput\"\n />\n\n <Input\n id=\"id\"\n placeholder=\"Id\"\n value={id}\n onChange={setId}\n dataTest=\"idTestInput\"\n />\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\nconst editableFields = [\n 'title',\n 'description',\n 'effective_date',\n 'expiration_date',\n]\n\ninterface Props {\n properties: { [key: string]: any }\n values: { [key: string]: any }\n}\n\nexport function IDublinCore({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'dublin_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values[key]}\n ns=\"guillotina.behaviors.dublincore.IDublinCore\"\n schema={properties[key]}\n modifyContent={modifyContent && editableFields.includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Icon } from '../components/ui/icon'\nimport { useEffect, useRef } from 'react'\nimport { useState } from 'react'\nimport { Select } from '../components/input/select'\nimport { SearchInput } from '../components/input/search_input'\nimport { Tag } from '../components/ui/tag'\nimport { parser } from '../lib/search'\nimport { EditableField } from '../components/fields/editableField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { FilterFormElement } from '../types/global'\nimport { GuillotinaGroup } from '../types/guillotina'\nimport { processResponse } from '../lib/processResponse'\n\nconst tabs = {\n Groups: PanelItems,\n}\n\nexport function GroupToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef<HTMLInputElement>(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (event: React.FormEvent<FilterFormElement>) => {\n event.preventDefault()\n setLocation({ q: event.currentTarget.elements.filterInput.value, page: 0 })\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (ref.current && (!searchText || searchText === '')) {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'Group' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-users\" />\n <span>\n {intl.formatMessage({\n id: 'add_group',\n defaultMessage: 'Add Group',\n })}\n </span>\n </button>\n </>\n )\n}\n\nexport function GroupsCtx() {\n return (\n <TabsPanel\n tabs={tabs}\n currentTab=\"Groups\"\n rightToolbar={<GroupToolbar />}\n />\n )\n}\n\nconst sortParsed = parser(`_sort_asc=id`)\nconst searchParsed = parser('type_name=User')\n\nexport function GroupCtx() {\n const intl = useIntl()\n const { Ctx, patch } = useCrudContext()\n const [roles, setRoles] = useState<{ text: string; value: string }[]>([])\n const groupDataContext = Ctx.context as GuillotinaGroup\n\n useEffect(() => {\n async function getRoles() {\n const requestGetRoles = await Ctx.client.getRoles(Ctx.path)\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = (await requestGetRoles.json()).map((role: string) => ({\n text: role,\n value: role,\n }))\n }\n setRoles(roles)\n }\n getRoles()\n }, [])\n\n const handleResponse = async (\n isError: boolean,\n message: string,\n errorMessage: string\n ) => {\n if (!isError) {\n Ctx.flash(message, 'success')\n Ctx.refresh()\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n }\n\n const addRole = async (role: string) => {\n const { isError, errorMessage } = await patch({\n user_roles: groupDataContext.user_roles.concat(role),\n })\n handleResponse(\n !!isError,\n intl.formatMessage(\n {\n id: 'role_added_to_group',\n defaultMessage: 'Role {role} added to group',\n },\n { role }\n ),\n errorMessage ?? ''\n )\n }\n\n const removeRole = async (role: string) => {\n const { isError, errorMessage } = await patch({\n user_roles: groupDataContext.user_roles.filter((r) => r !== role),\n })\n handleResponse(\n !!isError,\n intl.formatMessage(\n {\n id: 'role_removed_from_group',\n defaultMessage: 'Role {role} removed from group',\n },\n { role }\n ),\n errorMessage ?? ''\n )\n }\n\n const addUser = async (newUserId: string) => {\n const data: { [key: string]: boolean } = {}\n groupDataContext.users.forEach((user) => {\n data[user] = true\n })\n data[newUserId] = true\n const response = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n const { isError, errorMessage } = await processResponse(response)\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_added_to_group',\n defaultMessage: 'User {user} added to group',\n },\n { user: newUserId }\n ),\n errorMessage ?? ''\n )\n }\n\n const removeUser = async (userToRemove: string) => {\n const data: { [key: string]: boolean } = {}\n groupDataContext.users.forEach((user: string) => {\n data[user] = userToRemove !== user\n })\n const response = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n const { isError, errorMessage } = await processResponse(response)\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_removed_from_group',\n defaultMessage: 'User {user} removed from group',\n },\n { user: userToRemove }\n ),\n errorMessage ?? ''\n )\n }\n\n return (\n <div className=\"container group-view\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-users\"></Icon>\n <span>\n &nbsp;\n {intl.formatMessage({\n id: 'group',\n defaultMessage: 'Group',\n })}\n </span>\n </h2>\n <hr />\n <div className=\"columns\">\n <div className=\"column is-4\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.title)}{' '}\n </label>\n <EditableField\n field=\"title\"\n modifyContent\n value={Ctx.context.title}\n />\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'roles',\n defaultMessage: 'Roles',\n })}\n </h3>\n <p>\n {intl.formatMessage({\n id: 'add_role',\n defaultMessage: 'Add a Role',\n })}\n </p>\n <Select\n options={roles.filter(\n (role) => !groupDataContext.user_roles.includes(role.value)\n )}\n appendDefault\n onChange={(value) => addRole(value as string)}\n />\n <hr />\n {groupDataContext.user_roles.map((urole) => (\n <p className=\"control\" key={`roles_${urole}`}>\n <Tag\n name={urole}\n onRemove={() => removeRole(urole)}\n size=\"is-small\"\n id={`roles_${urole}`}\n />\n </p>\n ))}\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'users',\n defaultMessage: 'Users',\n })}\n </h3>\n <p>{intl.formatMessage(genericMessages.add_user)}</p>\n <SearchInput\n path={`${Ctx.containerPath}/users/`}\n qs={[...searchParsed, ...sortParsed]}\n traversal={Ctx}\n onChange={addUser}\n btnClass=\"is-small\"\n />\n <hr />\n {groupDataContext.users.map((user) => (\n <p className=\"control\" key={`user_${user}`}>\n <Tag\n name={user}\n onRemove={() => removeUser(user)}\n size=\"is-small\"\n id={`user_${user}`}\n />\n </p>\n ))}\n </div>\n </div>\n </div>\n )\n}\n","import { Component, ErrorInfo } from 'react'\nimport { IntlShape, useIntl } from 'react-intl'\n\nconst style = { color: '#F44336', fontSize: 20, paddingBottom: 20 }\n\nclass ErrorBoundaryComponent extends Component<\n { intl: IntlShape; children: React.ReactNode },\n { hasError: boolean; errorMsg: string; errorStack: string | null | undefined }\n> {\n state = {\n hasError: false,\n errorMsg: '',\n errorStack: '',\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n this.setState({\n hasError: true,\n errorMsg: error.message,\n errorStack: errorInfo.componentStack,\n })\n }\n\n render() {\n const { hasError, errorMsg, errorStack } = this.state\n\n if (hasError) {\n return (\n <div className=\"box main-panel\">\n <div style={style}>\n {this.props.intl.formatMessage({\n id: 'something_went_wrong',\n defaultMessage: 'Something went wrong.',\n })}\n </div>\n {errorMsg && (\n <p>\n <b>{errorMsg}</b>\n </p>\n )}\n {errorStack && <p>{errorStack}</p>}\n </div>\n )\n }\n\n return this.props.children\n }\n}\n\nexport function ErrorBoundary({ children }: { children: React.ReactNode }) {\n const intl = useIntl()\n\n return <ErrorBoundaryComponent intl={intl}>{children}</ErrorBoundaryComponent>\n}\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotAllowed() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-danger\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-ban\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_allowed',\n defaultMessage: 'Not Allowed',\n })}\n </h1>\n </div>\n )\n}\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotFound() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-grey\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-dizzy\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_found',\n defaultMessage: '404. Not Found',\n })}\n </h1>\n </div>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { useLocation } from '../hooks/useLocation'\n\nexport function Path() {\n const ctx = useTraversal()\n const [, navigate] = useLocation()\n\n const segments = ctx.path.replace(/\\/$/, '').split('/')\n const links = buildPaths(segments)\n\n if (segments.length === 1) {\n return null\n }\n\n return (\n <nav className=\"breadcrumb\" aria-label=\"breadcrumbs\">\n <ul>\n {segments.map((item, indx) => {\n const path = links[indx]\n const onClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (e.ctrlKey || e.metaKey) return\n e.preventDefault()\n navigate({ path }, true)\n }\n\n return indx === 0 ? (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-home`}\n >\n <span className=\"icon\">\n <i className=\"fas fa-home\"></i>\n </span>\n </a>\n </li>\n ) : (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-${item.toLowerCase()}`}\n >\n {item}\n </a>\n </li>\n )\n })}\n </ul>\n </nav>\n )\n}\n\nconst buildPaths = (segments: string[]) => {\n let current = ''\n const results: string[] = []\n segments.map((item, indx) => {\n if (indx === 0) {\n current += '/'\n } else {\n current += item + '/'\n }\n results.push(current)\n return item\n })\n return results\n}\n","import { FolderCtx } from '../views/folder'\nimport { ItemCtx } from '../views/item'\nimport { ApplicationCtx } from '../views/application'\nimport { DatabaseCtx } from '../views/application'\nimport { ContainerCtx } from '../views/container'\nimport { UsersCtx } from '../views/users'\nimport { UserCtx } from '../views/users'\nimport { CopyItems } from '../actions/copy_items'\nimport { CopyItem } from '../actions/copy_item'\nimport { MoveItems } from '../actions/move_items'\nimport { MoveItem } from '../actions/move_item'\nimport { RemoveItems } from '../actions/remove_items'\nimport { RemoveItem } from '../actions/remove_item'\nimport { AddItem } from '../actions/add_item'\nimport { ChangePassword } from '../actions/change_pass'\nimport { BaseForm, BaseFormProps } from '../forms/base'\nimport { UserForm } from '../forms/users'\nimport { IAttachment } from '../components/behaviors/iattachment'\nimport { IDublinCore } from '../components/behaviors/idublincore'\nimport { IMultiAttachment } from '../components/behaviors/imultiattachment'\nimport { IImageAttachment } from '../components/behaviors/iimageattachment'\nimport { IMultiImageAttachment } from '../components/behaviors/imultiimageattachment'\nimport { IMultiImageOrderedAttachment } from '../components/behaviors/imultiimageorderedattachment'\nimport { IWorkflow } from '../components/behaviors/iworkflow'\nimport { GroupCtx, GroupsCtx } from '../views/groups'\nimport { ErrorBoundary } from '../components/error_boundary'\nimport React from 'react'\nimport { NotAllowed } from '../components/notallowed'\nimport { NotFound } from '../components/notfound'\nimport { Path } from '../components/path'\nimport { EditComponent } from '../components/fields/editComponent'\nimport { RenderFieldComponent } from '../components/fields/renderField'\nimport {\n GuillotinaCommonObject,\n ItemColumn,\n RegistrySchema,\n SearchOrCommonObject,\n} from '../types/guillotina'\nimport { buildQs, parser } from '../lib/search'\nimport { MessageDescriptor } from 'react-intl'\nimport { getActionsObject } from '../lib/helpers'\nimport { Traversal } from '../contexts'\n\nexport interface RegistrySortValue {\n direction: 'asc' | 'des'\n key: string\n}\nexport interface RegistryProperties {\n Buttons: React.ReactElement<{ Ctx?: Traversal }>\n Panels: React.ReactElement<{ Ctx?: Traversal }>\n default: string[]\n ignoreField: string[]\n}\nexport interface IRegistry {\n paths: {\n [key: string]: React.FC\n }\n views: {\n [key: string]: React.ComponentType<any>\n }\n actions: {\n [key: string]: (props: any) => React.ReactElement\n }\n forms: {\n [key: string]: (props: any) => React.ReactElement\n }\n behaviors: {\n [key: string]: (props: any | undefined) => React.ReactElement | null\n }\n itemsColumn: {\n [key: string]: <\n T extends SearchOrCommonObject = SearchOrCommonObject,\n >() => ItemColumn<T>[]\n }\n schemas: {\n [key: string]: RegistrySchema\n }\n properties: {\n [key: string]: RegistryProperties\n }\n components: {\n [key: string]: (props: any) => React.ReactNode | null | undefined\n }\n searchEngineQueryParamsFunction: {\n [key: string]: string\n }\n fieldsToFilter: {\n [key: string]: string[]\n }\n parseSearchQueryParamFunction: {\n [key: string]: (query: string, type: string) => string\n }\n defaultSortValue: {\n [key: string]: RegistrySortValue\n }\n actionsList: {\n [key: string]: (multiple: boolean) => {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n }\n }\n}\n\nconst registry: IRegistry = {\n paths: {},\n views: {\n ErrorBoundary: ErrorBoundary,\n NotAllowed: NotAllowed,\n NotFound: NotFound,\n Application: ApplicationCtx,\n Database: DatabaseCtx,\n Container: ContainerCtx,\n UserManager: UsersCtx,\n User: UserCtx,\n Group: GroupCtx,\n GroupManager: GroupsCtx,\n Folder: FolderCtx,\n Item: ItemCtx,\n },\n actions: {\n addItem: AddItem,\n copyItems: CopyItems,\n copyItem: CopyItem,\n moveItems: MoveItems,\n moveItem: MoveItem,\n removeItems: RemoveItems,\n changePassword: ChangePassword,\n removeItem: RemoveItem,\n },\n forms: {\n UserManager: BaseForm,\n GroupManager: BaseForm,\n Folder: BaseForm,\n Item: BaseForm,\n User: UserForm,\n Group: BaseForm,\n },\n behaviors: {\n 'guillotina.behaviors.dublincore.IDublinCore': IDublinCore,\n 'guillotina.behaviors.attachment.IAttachment': IAttachment,\n 'guillotina.behaviors.attachment.IMultiAttachment': IMultiAttachment,\n 'guillotina.contrib.image.behaviors.IImageAttachment': IImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment':\n IMultiImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment':\n IMultiImageOrderedAttachment,\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior': IWorkflow,\n },\n itemsColumn: {},\n schemas: {},\n properties: {},\n components: {\n Path: Path,\n EditComponent: EditComponent,\n RenderFieldComponent: RenderFieldComponent,\n },\n searchEngineQueryParamsFunction: {\n PostreSQL: 'getQueryParamsPostresql',\n Elasticsearch: 'getQueryParamsElasticsearch',\n },\n fieldsToFilter: {\n UserManager: ['id', 'email', 'user_name'],\n },\n parseSearchQueryParamFunction: {},\n defaultSortValue: {},\n actionsList: {},\n}\n\nexport interface IManageRegistry {\n registry: IRegistry\n getPathComponent: (\n context: GuillotinaCommonObject | undefined,\n path: string,\n fallback?: React.FC\n ) => React.ComponentType<any>\n getComponent: (name: string) => React.ComponentType<any>\n getView: (name: string) => React.ComponentType<any>\n getForm: (type: string, fallback?: React.FC) => React.FC<BaseFormProps>\n getAction: (type: string, fallback?: React.FC) => React.FC\n getBehavior: (type: string, fallback?: React.FC) => React.FC<any>\n getProperties: (type: string) => RegistryProperties\n getItemsColumn: <T extends SearchOrCommonObject = SearchOrCommonObject>(\n type: string\n ) => ItemColumn<T>[] | undefined\n getSchemas: (type: string) => RegistrySchema\n getFieldsToFilter: (type: string, fallback?: string[]) => string[]\n getParsedSearchQueryParam: (query: string, type: string) => string\n getDefaultSortValue: (\n type: string,\n fallback?: RegistrySortValue\n ) => RegistrySortValue\n getSearchEngineQueryParamsFunction: (type: string) => string\n getActionsList: (\n type: string,\n multiple: boolean\n ) => {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n }\n}\n\nconst getPathComponent = (\n context: GuillotinaCommonObject | undefined,\n path: string,\n fallback: React.FC | undefined = undefined\n) => {\n if (!context) return () => null\n // console.log(\"Component for path\", path)\n // lookup by path\n if (registry.paths[path]) {\n return registry.paths[path]\n }\n // by type\n if (registry.views[context['@type']]) {\n return registry.views[context['@type']]\n }\n if (fallback) {\n return fallback\n }\n return defaultComponent(context)\n}\n\nconst getItemsColumn = (type: string) => {\n const funcCols = registry.itemsColumn[type]\n if (funcCols) {\n return funcCols()\n }\n return undefined\n}\n\nconst getComponent = (name: string) => {\n return registry.components[name]\n}\n\nconst getView = (name: string) => {\n return registry.views[name]\n}\n\nconst getForm = (type: string, fallback?: React.FC<BaseFormProps>) => {\n return registry.forms[type] || fallback || BaseForm\n}\n\nconst getAction = (type: string, fallback?: React.FC) => {\n return registry.actions[type] || fallback\n}\n\nconst getBehavior = (type: string, fallback?: React.FC) => {\n return registry.behaviors[type] || fallback\n}\n\nconst getProperties = (type: string) => {\n return registry.properties[type] || {}\n}\n\nconst getSchemas = (type: string): RegistrySchema => {\n return registry.schemas[type] || {}\n}\n\nconst getFieldsToFilter = (type: string, fallback: string[] = ['title']) => {\n return registry.fieldsToFilter[type] || fallback\n}\n\nconst getDefaultSortValue = (\n type: string,\n fallback: RegistrySortValue | undefined = {\n key: 'id',\n direction: 'des',\n }\n) => {\n return registry.defaultSortValue[type] || fallback\n}\n\nconst getSearchEngineQueryParamsFunction = (type: string) => {\n return registry.searchEngineQueryParamsFunction[type]\n}\n\nconst getParsedSearchQueryParam = (query: string, type: string) => {\n const parsedFunction = registry.parseSearchQueryParamFunction[type]\n if (!parsedFunction) {\n const fieldsToFilter = getFieldsToFilter(type)\n return buildQs(parser(query, fieldsToFilter))\n }\n return parsedFunction(query, type)\n}\n\nconst getActionsList = (\n type: string,\n multiple: boolean\n): {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n} => {\n const funcActionsList = registry.actionsList[type]\n if (funcActionsList) {\n return funcActionsList(multiple)\n }\n return getActionsObject(multiple)\n}\n\nexport const defaultComponent = (context: GuillotinaCommonObject) => {\n return context.is_folderish ? FolderCtx : ItemCtx\n}\n\nexport function useRegistry(data: Partial<IRegistry>): IManageRegistry {\n // if data is provided we need to merge it into actual registry\n const ref = React.useRef<unknown>(undefined)\n if (data && !ref.current) {\n ref.current = true\n Object.keys(data).map((key) => {\n const registryKey = key as keyof IRegistry\n registry[registryKey] = {\n ...registry[registryKey],\n ...data[registryKey],\n } as any\n })\n }\n\n return {\n registry,\n getForm,\n getComponent,\n getPathComponent,\n getAction,\n getBehavior,\n getProperties,\n getItemsColumn,\n getFieldsToFilter,\n getParsedSearchQueryParam,\n getDefaultSortValue,\n getSchemas,\n getView,\n getSearchEngineQueryParamsFunction,\n getActionsList,\n }\n}\n\n/*\n\nconst registry = {\n paths: {\n \"/db/guillotina/tags/\": TagsContext\n },\n forms: {\n Tag: AddTagForm\n }\n}\n\n\n<guillotina registry={registry} />\n\n\n*/\n","import React from 'react'\nimport { useReducer } from 'react'\nimport { useEffect } from 'react'\nimport { Flash } from './flash'\nimport { TraversalProvider, useGuillotinaClient } from '../contexts'\nimport { IConfig, useConfig } from '../hooks/useConfig'\nimport { IRegistry, useRegistry } from '../hooks/useRegistry'\nimport { useLocation } from '../hooks/useLocation'\nimport {\n GuillotinaGlobalState,\n GuillotinaReducerActionTypes,\n guillotinaReducer,\n} from '../reducers/guillotina'\nimport { initialState } from '../reducers/guillotina'\nimport { Loading } from './ui/loading'\nimport { IntlProvider } from 'react-intl'\nimport langCA from '../locales/compiled/ca.json'\nimport langES from '../locales/compiled/es.json'\nimport langEN from '../locales/compiled/en.json'\nimport { Auth } from '../lib/auth'\n\nfunction loadLocaleData(locale: string) {\n switch (locale) {\n case 'ca':\n return langCA\n case 'es':\n return langES\n default:\n return langEN\n }\n}\n\ninterface GuillotinaProps {\n auth: Auth\n locale: string\n url: string\n config?: Partial<IConfig>\n registry: Partial<IRegistry>\n}\nexport function Guillotina({ auth, locale, ...props }: GuillotinaProps) {\n const messages = loadLocaleData(locale)\n const url = props.url || 'http://localhost:8080' // without trailing slash\n const config = props.config || {}\n const client = useGuillotinaClient()\n\n const { Permissions } = useConfig(config)\n const registry = useRegistry(props.registry)\n // Location is cooked routing solution (only uses search params)\n const [location] = useLocation()\n\n // if there is no path provided just go to root\n const searchPath = location.get('path') || '/'\n if (searchPath && searchPath !== '') {\n initialState.path = searchPath\n }\n\n const [state, dispatch] = useReducer(guillotinaReducer, initialState)\n\n const { path, refresh } = state\n\n useEffect(() => {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_PATH,\n payload: {\n path: searchPath,\n },\n })\n }, [searchPath])\n\n useEffect(() => {\n const initContext = async () => {\n const data = await client.getContext(path)\n if (data.status === 401) {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_ERROR,\n payload: {\n errorStatus: 'notallowed',\n },\n })\n return\n } else if (data.status === 404) {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_ERROR,\n payload: {\n errorStatus: 'notallowed',\n },\n })\n return\n }\n const context = await data.json()\n const pr = await client.canido(path, Permissions)\n const permissions = await pr.json()\n dispatch({\n type: GuillotinaReducerActionTypes.SET_CONTEXT,\n payload: { context, permissions },\n })\n }\n initContext()\n }, [path, refresh, client])\n\n const ErrorBoundary: React.ComponentType<{\n children: React.ReactNode\n }> = registry.getView('ErrorBoundary')\n const NotAllowed = registry.getView('NotAllowed')\n const NotFound = registry.getView('NotFound')\n const Path = registry.getComponent('Path')\n\n const contextData = {\n url,\n client,\n auth,\n state,\n dispatch,\n registry,\n flash: config.flash,\n }\n\n const { action, errorStatus, permissions } = state\n const Main = registry.getPathComponent(state.context, path) as React.FC<{\n state: GuillotinaGlobalState\n }>\n const Action = action.action\n ? (registry.getAction(action.action) as React.FC<any>)\n : null\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={messages}>\n <ErrorBoundary>\n {!errorStatus && (\n <TraversalProvider {...contextData}>\n {permissions && (\n <React.Fragment>\n {action.action && Action !== null && (\n <Action {...action.params} />\n )}\n <div className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <Path />\n </div>\n </div>\n </div>\n <Flash />\n {Main !== undefined && (\n <ErrorBoundary>\n <div className=\"box main-panel\">\n {state.loading && <Loading />}\n {!state.loading && <Main state={state} />}\n </div>\n </ErrorBoundary>\n )}\n {/* <p>Guillotina {JSON.stringify(state.context)}</p> */}\n </React.Fragment>\n )}\n </TraversalProvider>\n )}\n {errorStatus === 'notallowed' && <NotAllowed />}\n {errorStatus === 'notfound' && <NotFound />}\n </ErrorBoundary>\n </IntlProvider>\n )\n}\n","import { useState } from 'react'\nimport { Auth } from '../lib/auth'\nimport { Icon } from './ui/icon'\nimport { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n onLogout: () => void\n auth: Auth\n}\nexport function Layout({ children, onLogout, auth }: Props) {\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const doLogout = () => {\n auth.logout()\n // Clear query parameters from URL\n if (window.location.search) {\n window.history.replaceState({}, '', window.location.pathname)\n }\n onLogout()\n }\n\n return (\n <>\n <header>\n <nav className=\"navbar\" role=\"navigation\" aria-label=\"main navigation\">\n <div className=\"navbar-brand\" style={{ alignItems: 'center' }}>\n <a className=\"navbar-item\" href=\"/\">\n <img src=\"/logo.svg\" alt=\"Guillotina logo\" height=\"80\" />\n </a>\n <div\n id=\"burger\"\n role=\"button\"\n className={classnames([\n 'navbar-burger',\n 'burger',\n isMenuOpen && 'is-active',\n ])}\n aria-label=\"menu\"\n aria-expanded=\"false\"\n data-target=\"navbarmenu\"\n onClick={() => setIsMenuOpen(!isMenuOpen)}\n >\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n </div>\n </div>\n <div\n id=\"navbarmenu\"\n className={classnames(['navbar-menu', isMenuOpen && 'is-active'])}\n >\n <div className=\"navbar-start\"></div>\n <div className=\"navbar-end\">\n <div className=\"navbar-item\">\n {auth.isLogged && (\n <div className=\"buttons\">\n <button className=\"button is-size-7\" onClick={doLogout}>\n <Icon icon=\"fas fa-sign-out-alt\" />\n <span>Logout</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n </nav>\n </header>\n <section className=\"section main\">\n <div className=\"container\">\n <div className=\"column\">{children}</div>\n </div>\n </section>\n </>\n )\n}\n","import React, { useRef, useEffect } from 'react'\nimport useSetState from '../hooks/useSetState'\nimport { Auth } from '../lib/auth'\n\nconst ERRORS: { [key: string]: string } = {\n failed_to_fetch: 'Failed to fetch data: Backend not running?',\n invalid_credentials: 'Failed! Invalid credentials',\n}\ninterface State {\n username: string\n password: string\n loading: boolean\n errors?: string\n}\nconst initialState = {\n username: '',\n password: '',\n loading: false,\n errors: undefined,\n}\n\ninterface Props {\n currentSchema: string\n setCurrentSchema: (schema: string) => void\n schemas: string[]\n auth: Auth\n onLogin?: () => void\n}\nexport const Login = ({\n currentSchema,\n setCurrentSchema,\n schemas,\n auth,\n onLogin,\n}: Props) => {\n const [state, setState] = useSetState<State>(initialState)\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.focus()\n }\n }, [inputRef])\n\n const doLogin = async (ev: React.FormEvent) => {\n ev.preventDefault()\n setState({ loading: true, errors: undefined })\n const { username, password } = state\n\n if (currentSchema !== '') {\n auth.setAccount(currentSchema)\n }\n const res = await auth.login(username, password)\n\n if (!res) {\n setState({ errors: auth.errors, loading: false })\n return\n }\n\n if (onLogin) {\n onLogin()\n }\n }\n\n return (\n <React.Fragment>\n <form\n className=\"login__form\"\n action=\"\"\n onSubmit={doLogin}\n data-test=\"formLoginTest\"\n >\n <div className=\"field\">\n <label className=\"label\">Username:</label>\n <input\n type=\"text\"\n className=\"input\"\n placeholder=\"Username\"\n onChange={(e) => setState({ username: e.target.value })}\n value={state.username}\n ref={inputRef}\n data-test=\"inputUsernameLoginTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">Password:</label>\n <input\n type=\"password\"\n className=\"input\"\n placeholder=\"Password\"\n onChange={(e) => setState({ password: e.target.value })}\n value={state.password}\n data-test=\"inputPasswordLoginTest\"\n />\n </div>\n {schemas && schemas.length > 1 && (\n <div className=\"field\">\n <label className=\"label\">Schema:</label>\n <div className=\"select\">\n <select\n data-test=\"selectSchemaTest\"\n onChange={(e) => setCurrentSchema(e.target.value)}\n >\n {schemas.map((s) => (\n <option value={s} key={s}>\n {s}\n </option>\n ))}\n </select>\n </div>\n </div>\n )}\n <div className=\"field\">\n <button\n className=\"button is-warning\"\n type=\"submit\"\n data-test=\"btnLoginTest\"\n >\n Login\n </button>\n </div>\n <div className=\"field\">\n {state.errors && (\n <p className=\"has-text-danger\">\n {ERRORS[state.errors] || 'Generic error'}\n </p>\n )}\n </div>\n </form>\n </React.Fragment>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useTraversal } from '../contexts'\nimport useSetState from '../hooks/useSetState'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nconst ignoreFiels: string[] = []\nconst extraFields = ['title']\n\ninterface Props {\n onSubmit: (data: IndexSignature) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n type: string\n}\ninterface State {\n data?: IndexSignature\n loading: boolean\n error?: unknown\n formFields: string[]\n}\nexport function RequiredFieldsForm({\n loading,\n onSubmit,\n actionName,\n title,\n dataTest,\n type,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n\n const EditComponent = Ctx.registry.getComponent('EditComponent')\n\n const [formData, setFormData] = useState<IndexSignature>({})\n const [errors, setErrors] = useState<IndexSignature<string>>({})\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n formFields: [],\n })\n\n useEffect(() => {\n const getSchema = async () => {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(Ctx.path, type)\n setSchema({\n loading: false,\n data: dataJson,\n formFields: [...dataJson.required, ...extraFields],\n })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n const submit = () => {\n const currentErrors: IndexSignature<string> = {}\n\n schema.formFields.forEach((key) => {\n if (!formData[key]) {\n currentErrors[key] = intl.formatMessage(\n genericMessages.field_is_required\n )\n }\n })\n\n if (Object.keys(currentErrors).length > 0) {\n setErrors(currentErrors)\n return\n }\n\n onSubmit({ id: formData.uuid, ...formData })\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n {schema &&\n schema.data &&\n !schema.loading &&\n schema.formFields.map((key) => {\n if (!ignoreFiels.includes(key)) {\n const value = schema.data?.properties[key]\n return (\n <EditComponent\n key={key}\n id={key}\n placeholder={value?.title ?? ''}\n className=\"\"\n required\n schema={schema.data?.properties[key]}\n setValue={(value: string) => {\n if (key === 'title') {\n setFormData({\n ...formData,\n uuid: stringToSlug(value),\n [key]: value,\n })\n } else if (key === 'uuid') {\n setFormData({\n ...formData,\n uuid: stringToSlug(value),\n })\n } else {\n setFormData({ ...formData, [key]: value })\n }\n }}\n error={errors[key]}\n dataTest={`${key}TestInput`}\n val={key in formData ? formData[key] : ''}\n />\n )\n }\n return null\n })}\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","function e(e){this.message=e}e.prototype=new Error,e.prototype.name=\"InvalidCharacterError\";var r=\"undefined\"!=typeof window&&window.atob&&window.atob.bind(window)||function(r){var t=String(r).replace(/=+$/,\"\");if(t.length%4==1)throw new e(\"'atob' failed: The string to be decoded is not correctly encoded.\");for(var n,o,a=0,i=0,c=\"\";o=t.charAt(i++);~o&&(n=a%4?64*n+o:o,a++%4)?c+=String.fromCharCode(255&n>>(-2*a&6)):0)o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\".indexOf(o);return c};function t(e){var t=e.replace(/-/g,\"+\").replace(/_/g,\"/\");switch(t.length%4){case 0:break;case 2:t+=\"==\";break;case 3:t+=\"=\";break;default:throw\"Illegal base64url string!\"}try{return function(e){return decodeURIComponent(r(e).replace(/(.)/g,(function(e,r){var t=r.charCodeAt(0).toString(16).toUpperCase();return t.length<2&&(t=\"0\"+t),\"%\"+t})))}(t)}catch(e){return r(t)}}function n(e){this.message=e}function o(e,r){if(\"string\"!=typeof e)throw new n(\"Invalid token specified\");var o=!0===(r=r||{}).header?0:1;try{return JSON.parse(t(e.split(\".\")[o]))}catch(e){throw new n(\"Invalid token specified: \"+e.message)}}n.prototype=new Error,n.prototype.name=\"InvalidTokenError\";export default o;export{n as InvalidTokenError};\n//# sourceMappingURL=jwt-decode.esm.js.map\n","import jwt_decode from 'jwt-decode'\nimport { IndexSignature } from '../types/global'\n\nexport class Auth {\n maxRetry = 1\n retryRefresh = 0\n events = {}\n url: string\n base_url: string\n errors?: string\n\n constructor(url: string) {\n this.url = url\n this.base_url = url\n this.errors = undefined\n }\n\n getUrl(endpoint: string) {\n return `${this.url}${endpoint}`\n }\n\n setAccount(account: string) {\n this.url = this.base_url + account\n }\n\n async login(username: string, password: string) {\n const url = this.getUrl('@login')\n try {\n const data = await fetch(url, {\n method: 'post',\n body: JSON.stringify({\n username: username,\n password: password,\n }),\n })\n if (data.status === 200) {\n const credentials = await data.json()\n this.storeAuth(credentials)\n return true\n } else {\n this.errors = 'invalid_credentials'\n }\n } catch (e) {\n this.errors = 'failed_to_fetch'\n return false\n }\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n return false\n }\n\n get isLogged() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token, expires] = this._getToken()\n if (!token || !expires) {\n return false\n }\n if (this.isExpired(expires)) {\n return false\n }\n return true\n }\n\n get username() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token] = this._getToken()\n const data: IndexSignature = jwt_decode(token as string)\n console.log(token)\n return data.id\n }\n\n storeAuth(data: { token: string; exp: number }) {\n localStorage.setItem('auth', data.token)\n localStorage.setItem(\n 'auth_expires',\n new Date(data.exp).getTime().toString()\n )\n }\n\n cleanAuth() {\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n }\n\n logout() {\n this.cleanAuth()\n }\n\n async refreshToken() {\n console.log('refresh!!!')\n this.retryRefresh++\n const data = await fetch(this.getUrl('@login-renew'), {\n headers: this.getHeaders(),\n method: 'post',\n })\n if (data.status === 401) {\n // invalid token\n this.cleanAuth()\n this.logout()\n return\n }\n const res = await data.json()\n console.log('refresh data', res)\n this.storeAuth(res)\n console.log('token refreshed')\n this.retryRefresh = 0\n return res.token\n }\n\n willExpire(expiration: string) {\n const now = new Date().getTime()\n if (parseInt(expiration) < now + 10) {\n return true\n }\n return false\n }\n\n isExpired(expiration: string) {\n const now = new Date().getTime()\n if (parseInt(expiration) > now) {\n return false\n }\n return true\n }\n\n _getToken() {\n return [localStorage.getItem('auth'), localStorage.getItem('auth_expires')]\n }\n\n getToken() {\n const [token] = this._getToken()\n return token\n }\n\n getHeaders(): HeadersInit {\n const [authToken, expires] = this._getToken()\n if (!authToken) return {}\n\n if (this.willExpire(expires ?? '') && this.retryRefresh < this.maxRetry) {\n // eslint-disable-next-line no-extra-semi\n ;(async () => await this.refreshToken())()\n }\n\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + authToken,\n }\n }\n}\n","import { ItemModel } from '../models'\nimport { IndexSignature } from './global'\n\ntype ItemsPropertyObject = {\n '@id': string\n '@name': string\n '@type': string\n '@uid': string\n '@absolute_url': string\n title: string\n creation_date: string\n modification_date: string\n uuid: string\n type_name: string\n}\n\nexport type GuillotinaCommonObject = {\n type_name: string\n uuid: string\n is_folderish: boolean\n parent: GuillotinaParentObject\n length: number\n __behaviors__?: string[]\n '@static_behaviors': string[]\n 'guillotina.behaviors.dublincore.IDublinCore'?: IBehaviorDublinCore\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior'?: IWorkflowBehavior\n 'guillotina.behaviors.attachment.IAttachment'?: {\n file: GuillotinaFile\n }\n 'guillotina.behaviors.attachment.IMultiAttachment'?: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n 'guillotina.contrib.image.behaviors.IImageAttachment'?: {\n image: GuillotinaFile\n }\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment'?: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment'?: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n} & ItemsPropertyObject\n\nexport type SearchItem = {\n id: string\n parent_uuid: string\n path: string\n tid: string\n depth: number\n description: string\n access_roles: string[]\n access_users: string[]\n contributors: string[]\n tags: string[]\n creators: string[]\n} & ItemsPropertyObject\n\nexport interface IBehaviorDublinCore {\n title: string\n description: string | null\n creation_date: string\n modification_date: string\n effective_date: string | null\n expiration_date: string | null\n creators: string[]\n tags: string[] | null\n publisher: string | null\n contributors: string[]\n}\n\nexport interface IWorkflowBehavior {\n review_state: string\n history: WorkflowHistory[]\n}\n\ninterface GuillotinaParentObject {\n '@id': string\n '@name': string\n '@type': string\n '@uid': string\n}\n\nexport interface GuillotinaSchema {\n title: string\n $schema: string\n type: string\n required: string[]\n definitions: Definitions\n properties: GuillotinaSchemaProperties\n}\n\nexport interface GuillotinaSchemaProperties {\n [key: string]: GuillotinaSchemaProperty | { $ref: string }[]\n}\n\nexport interface Definitions {\n [key: string]: {\n type: string\n properties: GuillotinaSchemaProperties\n required: string[]\n title: string\n description: string\n }\n}\n\nexport interface GuillotinaSchemaProperty {\n type: string\n title: string\n widget?: string\n readonly?: boolean\n description?: string\n vocabularyName?: string\n vocabulary?: string[]\n items?: GuillotinaSchemaProperty\n properties?: GuillotinaSchemaProperties\n additionalProperties?: GuillotinaSchemaProperties\n typeNameQuery?: string\n labelProperty?: string\n enum?: string[]\n queryCondition?: string\n queryPath?: string\n}\n\nexport type GuillotinaFile = {\n filename: string\n content_type: string\n extension: string\n size: number\n md5: string\n}\n\nexport interface GuillotinaVocabulary {\n '@id': string\n items: GuillotinaVocabularyItem[]\n items_total: number\n}\n\nexport interface GuillotinaVocabularyItem {\n title: string\n token: string\n}\nexport interface GuillotinaSharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n}\n\nexport interface GuillotinaSharingInheritItem extends GuillotinaSharingMap {\n '@id': string\n}\nexport interface GuillotinaSharingMap {\n roleperm: {\n [key: string]: IndexSignature<string>\n }\n prinperm: {\n [key: string]: IndexSignature<string>\n }\n prinrole: {\n [key: string]: IndexSignature<string>\n }\n}\n\nexport interface GuillotinaBehaviors {\n static: string[]\n dynamic: string[]\n available: string[]\n}\n\nexport interface AllPermissions {\n [key: string]: AllPermissionsItem\n}\n\nexport interface AllPermissionsItem {\n prinperm?: PrimPerm[]\n prinrole?: Prinrole[]\n roleperm?: Roleperm[]\n perminhe?: Perminhe[]\n}\n\nexport interface Prinrole {\n principal: string\n role: string\n setting: Setting\n}\n\nexport interface Roleperm {\n permission: string\n role: string\n setting: Setting\n}\nexport interface PrimPerm {\n principal: string\n permission: string\n setting: Setting\n}\nexport interface Perminhe {\n permission: string\n setting: Setting\n}\n\nexport enum Setting {\n Allow = 'Allow',\n AllowSingle = 'AllowSingle',\n Deny = 'Deny',\n Unset = 'Unset',\n}\n\nexport interface Workflow {\n '@id': string\n history: WorkflowHistory[]\n transitions: Transition[]\n}\n\nexport interface WorkflowHistory {\n actor: string\n comments: string\n time: string\n title: string\n type: string\n data: WorkflowHistoryData\n}\n\nexport interface WorkflowHistoryData {\n action: null\n review_state: string\n}\n\nexport interface Transition {\n '@id': string\n title: string\n metadata: IndexSignature\n}\n\nexport interface Addons {\n available: AddonAvailable[]\n installed: string[]\n}\n\nexport interface AddonAvailable {\n id: string\n title: string\n dependencies: any[]\n}\n\nexport interface RegistrySchema {\n filters: RegistrySchemaFilter[]\n}\n\nexport interface RegistrySchemaFilter {\n attribute_key: string\n label: string\n type: string\n values?: { value: string; text: string }[]\n vocabulary?: string\n input_type?: string\n}\n\nexport type ReturnSearch<T> = {\n items: T[]\n items_total: number\n}\n\nexport type ReturnSearchCompatible<T> = {\n member: T[]\n items_count: number\n items: T[]\n items_total: number\n}\n\nexport type SearchOrCommonObject = SearchItem | GuillotinaCommonObject\n\nexport interface ItemColumn<\n T extends SearchOrCommonObject = SearchOrCommonObject,\n> {\n key: string\n label: string\n isSortable?: boolean\n child: ({ model, link, search }: ItemColumnChild<T>) => React.ReactNode\n}\nexport interface ItemColumnChild<\n T extends SearchOrCommonObject = SearchOrCommonObject,\n> {\n model: ItemModel<T>\n link?: () => void\n search?: string\n}\n\nexport type GuillotinaUser = {\n user_roles: string[]\n user_groups: string[]\n user_permissions: string[]\n fullname: string\n email: string\n username: string\n} & GuillotinaCommonObject\n\nexport type GuillotinaGroup = {\n user_roles: string[]\n users: string[]\n} & GuillotinaCommonObject\n\nexport type GuillotinaApplication = {\n databases: string[]\n} & GuillotinaCommonObject\n\nexport type GuillotinaDatabase = {\n containers: string[]\n} & GuillotinaCommonObject\n"],"names":["initialState","GuillotinaReducerActionTypes","createContext","permission","tabs","tabsPermissions","jsx","useContext","defineMessages","noop","prefix","loading","get","suffix","r","isActive","createPortal","Fragment","jsxs","useIntl","title","e","useState","useCallback","error","initial","patch","post","getForm","Form","isError","value","isPlainObject","ref","useRef","actions","placeholder","useEffect","forwardRef","required","property","Tag","Children","isValidElement","cloneElement","style","getOptions","clean","current","update","remove","name","start","smallcss","search","users","group","user","getClient","getSearchEngineQueryParamsFunction","sortParsed","tag","position","disabled","EditComponent","RenderFieldComponent","valuesToSearch","val","_sizesImages","req","createStore","reducer","bindActionCreators","React","require$$0","is","useMemo","isEqual","require$$1","warning","mapDispatchToProps","useIsomorphicLayoutEffect","isProduction","invariant","getRect","expand","shrink","shift","noSpacing","createBox","parse","getWindowScroll","offset","withScroll","scroll","calculateBox","getBox","rafSchd","wrapperFn","n","t","shared","combine","add","droppable","draggable","withDroppableDisplacement","process","isVisible","newIndex","closest","withDroppableScroll","distance","getDisplacedBy","subject","home","patched","dropPending","withMaxScroll","execute","flush","drop","registry","updateDroppableIsEnabled","updateDroppableIsCombineEnabled","updateDroppableScroll","scrollDroppable","dimension","scrollWindow","change","move","base","getSelector","useLayoutEffect","register","focus","tryGiveFocus","tryShiftRecord","tryRestoreFocusRecorded","tryRecordFocus","useRegistry","create","cancel","listenForCapture","bindCapturingEvents","startPendingDrag","getPhase","setPhase","startDragging","getAction","lift","finish","tryAbandonLock","tryReleaseLock","flushSync","dragHandleUsageInstructions","isDragging","Provider","ErrorBoundary","getDimension","id","connect","isMovementAllowed","updateViewportMaxScroll","snapshot","enabled","Droppable","messages","onDragEnd","uuidv4","Draggable","Ctx","o","role","del","searchParsed","page","getBehavior","behaviors","getProperties","Element","_a","roles","idx","available","items","tab","calculated","databases","withError","state","Component","Permissions","useReducer","permissions","NotAllowed","NotFound","Path","IntlProvider","username","password","jwt_decode","Setting"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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","x_google_ignoreList":[52,53,54,55,56,57,58,59,60,61,62,63,64,65,117]}
1
+ {"version":3,"file":"react-gmi.js","names":["isPlainObject","createStore","bindActionCreators","React","warning","React","useIsomorphicLayoutEffect","isProduction","prefix","invariant","noSpacing","invariant","getWindowScroll","ErrorBoundary","React","useMemo","add","style","useLayoutEffect","useEffect","useRegistry","create","bindActionCreators","Provider","connect","getClient","noop","ReactDOM"],"sources":["../src/guillo-gmi/reducers/guillotina.ts","../src/guillo-gmi/contexts/index.tsx","../src/guillo-gmi/locales/generic_messages.ts","../src/guillo-gmi/lib/helpers.ts","../src/guillo-gmi/components/input/button.tsx","../src/guillo-gmi/lib/utils.ts","../src/guillo-gmi/components/modal.tsx","../src/guillo-gmi/lib/processResponse.ts","../src/guillo-gmi/hooks/useSetState.tsx","../src/guillo-gmi/hooks/useCrudContext.tsx","../src/guillo-gmi/actions/add_item.tsx","../src/guillo-gmi/hooks/useConfig.tsx","../src/guillo-gmi/actions/remove_items.tsx","../src/guillo-gmi/components/input/checkbox.tsx","../src/guillo-gmi/components/error_zone.tsx","../src/guillo-gmi/hooks/useInput.tsx","../src/guillo-gmi/lib/validators.ts","../src/guillo-gmi/components/input/input.tsx","../src/guillo-gmi/components/ui/icon.tsx","../src/guillo-gmi/components/input/email.tsx","../src/guillo-gmi/components/input/form.tsx","../src/guillo-gmi/components/input/password.tsx","../src/guillo-gmi/components/input/form_builder.tsx","../src/guillo-gmi/components/input/select.tsx","../src/guillo-gmi/hooks/useVocabulary.tsx","../src/guillo-gmi/components/input/select_vocabulary.tsx","../src/guillo-gmi/hooks/useLocation.tsx","../src/guillo-gmi/components/Link.tsx","../src/guillo-gmi/components/TdLink.tsx","../src/guillo-gmi/components/ui/loading.tsx","../src/guillo-gmi/components/ui/tag.tsx","../src/guillo-gmi/components/ui/delete.tsx","../src/guillo-gmi/components/ui/table.tsx","../src/guillo-gmi/components/ui/notification.tsx","../src/guillo-gmi/lib/rest.ts","../src/guillo-gmi/lib/search.ts","../src/guillo-gmi/lib/client.tsx","../src/guillo-gmi/components/input/upload.tsx","../src/guillo-gmi/components/input/textarea.tsx","../src/guillo-gmi/hooks/useClickAway.tsx","../src/guillo-gmi/components/input/search_input.tsx","../src/guillo-gmi/components/input/search_input_list.tsx","../src/guillo-gmi/components/input/input_list.tsx","../src/guillo-gmi/components/input/dropdown.tsx","../src/guillo-gmi/components/fields/editableField.tsx","../src/guillo-gmi/components/fields/downloadField.tsx","../src/guillo-gmi/components/fields/renderField.tsx","../src/guillo-gmi/components/fields/editComponent.tsx","../src/guillo-gmi/components/behaviors/iattachment.tsx","../src/guillo-gmi/components/behaviors/imultiattachment.tsx","../src/guillo-gmi/components/behaviors/iimageattachment.tsx","../src/guillo-gmi/components/behaviors/imultiimageattachment.tsx","../node_modules/.pnpm/redux@5.0.1/node_modules/redux/dist/redux.mjs","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.6/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.6/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js","../node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.2.6/node_modules/use-sync-external-store/with-selector.js","../node_modules/.pnpm/react-redux@9.2.0_@types+react@19.2.14_react@19.2.6_redux@5.0.1/node_modules/react-redux/dist/react-redux.mjs","../node_modules/.pnpm/tiny-invariant@1.3.3/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../node_modules/.pnpm/css-box-model@1.2.1/node_modules/css-box-model/dist/css-box-model.esm.js","../node_modules/.pnpm/raf-schd@4.0.3/node_modules/raf-schd/dist/raf-schd.esm.js","../node_modules/.pnpm/@babel+runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/.pnpm/@hello-pangea+dnd@18.0.1_@types+react@19.2.14_react-dom@19.2.6_react@19.2.6__react@19.2.6/node_modules/@hello-pangea/dnd/dist/dnd.esm.js","../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/stringify.js","../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/rng.js","../node_modules/.pnpm/uuid@14.0.0/node_modules/uuid/dist/v4.js","../src/guillo-gmi/components/behaviors/imultiimageorderedattachment.tsx","../src/guillo-gmi/components/behaviors/iworkflow.tsx","../src/guillo-gmi/components/panel/actions.tsx","../src/guillo-gmi/components/panel/addons.tsx","../src/guillo-gmi/components/panel/behaviors.tsx","../src/guillo-gmi/components/selected_items_actions.tsx","../src/guillo-gmi/components/pagination.tsx","../src/guillo-gmi/models/sharing.ts","../src/guillo-gmi/models/index.ts","../src/guillo-gmi/components/item.tsx","../src/guillo-gmi/components/search_labels.tsx","../src/guillo-gmi/components/search_options_labels.tsx","../src/guillo-gmi/components/search_vocabulary_labels.tsx","../src/guillo-gmi/components/panel/items.tsx","../src/guillo-gmi/components/behavior_view.tsx","../src/guillo-gmi/components/properties_view.tsx","../src/guillo-gmi/components/panel/properties.tsx","../src/guillo-gmi/components/panel/permissions_prinperm.tsx","../src/guillo-gmi/components/panel/permissions_prinrole.tsx","../src/guillo-gmi/components/panel/permissions_roleperm.tsx","../src/guillo-gmi/components/panel/permissions.tsx","../src/guillo-gmi/components/widgets/tags.tsx","../src/guillo-gmi/types/global.ts","../src/guillo-gmi/components/context_toolbar.tsx","../src/guillo-gmi/components/flash.tsx","../src/guillo-gmi/components/tabs.tsx","../src/guillo-gmi/views/folder.tsx","../src/guillo-gmi/views/item.tsx","../src/guillo-gmi/views/application.tsx","../src/guillo-gmi/views/base.tsx","../src/guillo-gmi/views/container.tsx","../src/guillo-gmi/forms/users.tsx","../src/guillo-gmi/hooks/useRemoteField.tsx","../src/guillo-gmi/views/users.tsx","../src/guillo-gmi/actions/copy_items.tsx","../src/guillo-gmi/actions/copy_item.tsx","../src/guillo-gmi/actions/move_items.tsx","../src/guillo-gmi/actions/move_item.tsx","../src/guillo-gmi/actions/remove_item.tsx","../src/guillo-gmi/actions/change_pass.tsx","../src/guillo-gmi/forms/base.tsx","../src/guillo-gmi/components/behaviors/idublincore.tsx","../src/guillo-gmi/views/groups.tsx","../src/guillo-gmi/components/error_boundary.tsx","../src/guillo-gmi/components/notallowed.tsx","../src/guillo-gmi/components/notfound.tsx","../src/guillo-gmi/components/path.tsx","../src/guillo-gmi/hooks/useRegistry.tsx","../src/guillo-gmi/locales/compiled/ca.json","../src/guillo-gmi/locales/compiled/es.json","../src/guillo-gmi/locales/compiled/en.json","../src/guillo-gmi/components/guillotina.tsx","../src/guillo-gmi/components/layout.tsx","../src/guillo-gmi/components/login.tsx","../src/guillo-gmi/forms/required_fields.tsx","../node_modules/.pnpm/jwt-decode@4.0.0/node_modules/jwt-decode/build/esm/index.js","../src/guillo-gmi/lib/auth.ts","../src/guillo-gmi/types/guillotina.ts"],"sourcesContent":["import { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\nexport interface GuillotinaGlobalState {\n path: string\n loading: boolean\n context?: GuillotinaCommonObject\n flash: {\n message?: string\n type?: string\n }\n action: {\n action?: string\n params?: IndexSignature\n }\n permissions: IndexSignature\n errorStatus?: string\n registry: IndexSignature\n refresh?: number\n}\n\nexport const initialState: GuillotinaGlobalState = {\n path: '',\n loading: false,\n context: undefined,\n flash: {\n message: undefined,\n type: undefined,\n },\n action: {\n action: undefined,\n params: undefined,\n },\n permissions: [],\n errorStatus: undefined,\n registry: {},\n refresh: undefined,\n}\n\nexport enum GuillotinaReducerActionTypes {\n SET_PATH = 'SET_PATH',\n SET_CONTEXT = 'SET_CONTEXT',\n SET_ERROR = 'SET_ERROR',\n SET_FLASH = 'SET_FLASH',\n CLEAR_FLASH = 'CLEAR_FLASH',\n SET_ACTION = 'SET_ACTION',\n CLEAR_ACTION = 'CLEAR_ACTION',\n REFRESH = 'REFRESH',\n APPLY = 'APPLY',\n}\nexport function guillotinaReducer(\n state: GuillotinaGlobalState,\n action: { type: GuillotinaReducerActionTypes; payload: IndexSignature }\n): GuillotinaGlobalState {\n switch (action.type) {\n case GuillotinaReducerActionTypes.SET_PATH:\n return { ...state, path: action.payload.path, loading: true }\n\n case GuillotinaReducerActionTypes.SET_CONTEXT:\n return {\n ...state,\n ...action.payload,\n errorStatus: undefined,\n loading: false,\n }\n\n case GuillotinaReducerActionTypes.SET_ERROR:\n return {\n ...state,\n errorStatus: action.payload.errorStatus,\n loading: false,\n }\n\n case GuillotinaReducerActionTypes.SET_FLASH:\n return { ...state, ...action.payload }\n\n case GuillotinaReducerActionTypes.CLEAR_FLASH:\n return {\n ...state,\n flash: {\n message: undefined,\n type: undefined,\n },\n }\n case GuillotinaReducerActionTypes.SET_ACTION:\n return { ...state, action: action.payload }\n case GuillotinaReducerActionTypes.CLEAR_ACTION:\n return { ...state, action: { action: undefined, params: undefined } }\n\n case GuillotinaReducerActionTypes.REFRESH:\n return {\n ...state,\n refresh: Date.now(),\n loading: !action.payload.transparent,\n }\n\n case GuillotinaReducerActionTypes.APPLY:\n return {\n ...state,\n context: { ...state.context, ...action.payload.context },\n }\n\n default:\n return state\n }\n}\n","import { Dispatch, useContext, createContext } from 'react'\nimport { GuillotinaClient } from '../lib/client.js'\nimport { Auth } from '../lib/auth.js'\nimport { IndexSignature } from '../types/global'\nimport {\n GuillotinaGlobalState,\n GuillotinaReducerActionTypes,\n} from '../reducers/guillotina'\nimport { GuillotinaCommonObject } from '../types/guillotina.js'\nimport { IManageRegistry } from '../hooks/useRegistry.js'\n\nexport const AuthContext = createContext({})\n\nexport const ClientContext = createContext<GuillotinaClient | null>(null)\n\ninterface PropsTraversal {\n client: GuillotinaClient\n auth: Auth\n state: GuillotinaGlobalState\n dispatch: Dispatch<{\n type: GuillotinaReducerActionTypes\n payload: IndexSignature\n }>\n registry: IManageRegistry\n flash?: (action: string, result: string) => void\n url: string\n children?: React.ReactNode\n}\n\nexport class Traversal {\n private dispatch\n public state\n public client\n public registry\n public url\n public auth\n\n constructor({ flash, ...props }: PropsTraversal) {\n this.dispatch = props.dispatch\n this.state = props.state\n this.client = props.client\n this.registry = props.registry\n this.auth = props.auth\n this.url = props.url\n if (typeof flash === 'function') this.flash = flash\n }\n\n refresh({ transparent = false } = {}) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.REFRESH,\n payload: { transparent },\n })\n }\n\n get path() {\n return this.state.path\n }\n\n get pathPrefix() {\n return this.state.path.slice(1)\n }\n\n get context(): GuillotinaCommonObject {\n if (this.state.context === undefined) {\n throw new Error('Context is not loaded')\n }\n return this.state.context\n }\n\n get containerPath() {\n return this.client.getContainerFromPath(this.path)\n }\n\n apply(data: IndexSignature) {\n // apply a optimistic update to context\n this.dispatch({\n type: GuillotinaReducerActionTypes.APPLY,\n payload: { context: data },\n })\n }\n\n flash(message: string, type: string) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.SET_FLASH,\n payload: { flash: { message, type } },\n })\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })\n }\n\n clearFlash() {\n this.dispatch({\n type: GuillotinaReducerActionTypes.CLEAR_FLASH,\n payload: {},\n })\n }\n\n doAction(action: string, params = {}) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.SET_ACTION,\n payload: { action, params },\n })\n }\n\n cancelAction() {\n this.dispatch({\n type: GuillotinaReducerActionTypes.CLEAR_ACTION,\n payload: {},\n })\n }\n\n hasPerm(permission: string) {\n return this.state.permissions[permission] === true\n }\n\n filterTabs(tabs: IndexSignature, tabsPermissions: IndexSignature) {\n const result: IndexSignature = {}\n Object.keys(tabs).forEach((item) => {\n const perm = tabsPermissions[item]\n if (perm && this.hasPerm(perm)) {\n result[item] = tabs[item]\n } else if (!perm) {\n result[item] = tabs[item]\n }\n })\n return result\n }\n}\n\nexport const TraversalContext = createContext<Traversal | null>(null)\nexport function TraversalProvider({\n children,\n ...props\n}: PropsTraversal & { children: React.ReactNode }) {\n return (\n <TraversalContext.Provider value={new Traversal(props)}>\n {children}\n </TraversalContext.Provider>\n )\n}\n\nexport function useTraversal() {\n const traversal = useContext(TraversalContext)\n if (!traversal) {\n throw new Error('useTraversal must be used within a TraversalProvider')\n }\n return traversal\n}\n\ninterface PropsClient {\n children: React.ReactNode\n client: GuillotinaClient\n}\nexport function ClientProvider({ children, client }: PropsClient) {\n return (\n <ClientContext.Provider value={client}>{children}</ClientContext.Provider>\n )\n}\n\nexport function useGuillotinaClient() {\n const client = useContext(ClientContext)\n if (!client) {\n throw new Error('useGuillotinaClient must be used within a ClientProvider')\n }\n return client\n}\n","import { defineMessages } from 'react-intl'\n\nexport const genericMessages = defineMessages({\n loading: {\n id: 'loading',\n defaultMessage: 'Loading',\n },\n remove: {\n id: 'remove',\n defaultMessage: 'Remove',\n },\n install: {\n id: 'install',\n defaultMessage: 'Install',\n },\n delete: {\n id: 'delete',\n defaultMessage: 'Delete',\n },\n move_to: {\n id: 'move_to',\n defaultMessage: 'Move to...',\n },\n copy_to: {\n id: 'copy_to',\n defaultMessage: 'Copy to...',\n },\n behaviors: {\n id: 'behaviors',\n defaultMessage: 'Behaviors',\n },\n static: {\n id: 'static',\n defaultMessage: 'Static',\n },\n disable: {\n id: 'disable',\n defaultMessage: 'Disable',\n },\n enable: {\n id: 'enable',\n defaultMessage: 'Enable',\n },\n enabled: {\n id: 'enabled',\n defaultMessage: 'Enabled',\n },\n available: {\n id: 'available',\n defaultMessage: 'Available',\n },\n invalid_form_data: {\n id: 'invalid_form_data',\n defaultMessage: 'Invalid form data',\n },\n invalid_form: {\n id: 'invalid_form',\n defaultMessage: 'Invalid form',\n },\n select_principal: {\n id: 'select_principal',\n defaultMessage: 'Select a Principal',\n },\n select_role: {\n id: 'select_role',\n defaultMessage: 'Select a Role',\n },\n select_permissions: {\n id: 'select_permissions',\n defaultMessage: 'Select permissions',\n },\n operation: {\n id: 'operation',\n defaultMessage: 'Operation',\n },\n save: {\n id: 'save',\n defaultMessage: 'Save',\n },\n choose: {\n id: 'choose',\n defaultMessage: 'Choose...',\n },\n property: {\n id: 'property',\n defaultMessage: 'Property',\n },\n value: {\n id: 'value',\n defaultMessage: 'Value',\n },\n create: {\n id: 'create',\n defaultMessage: 'Create',\n },\n upload: {\n id: 'upload',\n defaultMessage: 'Upload',\n },\n image: {\n id: 'image',\n defaultMessage: 'Image',\n },\n error_provide_key_name: {\n id: 'error_provide_key_name',\n defaultMessage: 'Provide a key name',\n },\n mandatory_field: {\n id: 'mandatory_field',\n defaultMessage: '{field} is mandatory!',\n },\n error_in_field: {\n id: 'error_in_field',\n defaultMessage: 'Error in field {field}!',\n },\n field_updated: {\n id: 'field_updated',\n defaultMessage: 'Field {field}, updated!',\n },\n field_deleted: {\n id: 'field_deleted',\n defaultMessage: 'Field {field}, deleted!',\n },\n can_not_delete_field: {\n id: 'can_not_delete_field',\n defaultMessage: 'You can not delete {field}!',\n },\n cancel: {\n id: 'cancel',\n defaultMessage: 'Cancel',\n },\n open: {\n id: 'open',\n defaultMessage: 'Open',\n },\n download: {\n id: 'download',\n defaultMessage: 'Download',\n },\n search: {\n id: 'search',\n defaultMessage: 'Search',\n },\n no_results: {\n id: 'no_results',\n defaultMessage: 'No results',\n },\n load_more: {\n id: 'load_more',\n defaultMessage: 'Load more',\n },\n add_type: {\n id: 'add_type',\n defaultMessage: 'Add {type}',\n },\n confirm: {\n id: 'confirm',\n defaultMessage: 'Confirm',\n },\n field_is_required: {\n id: 'field_is_required',\n defaultMessage: 'This field is required',\n },\n title: {\n id: 'title',\n defaultMessage: 'Title',\n },\n add: {\n id: 'add',\n defaultMessage: 'Add',\n },\n not_implemented: {\n id: 'not_implemented',\n defaultMessage: 'Not implemented',\n },\n failed_to_update: {\n id: 'failed_to_update',\n defaultMessage: 'Failed to update: {error}',\n },\n add_user: {\n id: 'add_user',\n defaultMessage: 'Add a User',\n },\n role: {\n id: 'role',\n defaultMessage: 'Role',\n },\n setting: {\n id: 'setting',\n defaultMessage: 'Setting',\n },\n permission: {\n id: 'permission',\n defaultMessage: 'Permission',\n },\n})\n\nexport const genericFileMessages = defineMessages({\n error_file_key_name: {\n id: 'error_file_key_name',\n defaultMessage: 'Provide a file and a key name',\n },\n error_upload_file: {\n id: 'error_upload_file',\n defaultMessage: 'Failed to upload file',\n },\n error_upload_file_size: {\n id: 'error_upload_file_size',\n defaultMessage: 'Failed to upload file {size}',\n },\n image_uploaded: {\n id: 'image_uploaded',\n defaultMessage: 'Image uploaded!',\n },\n file_uploaded: {\n id: 'file_uploaded',\n defaultMessage: 'File uploaded!',\n },\n failed_delete_file: {\n id: 'failed_delete_file',\n defaultMessage: 'Failed to delete file',\n },\n image_deleted: {\n id: 'image_deleted',\n defaultMessage: 'Image deleted!',\n },\n confirm_message_delete_file: {\n id: 'confirm_message_delete_file',\n defaultMessage: 'Are you sure to remove: {fileKeyToDelete}?',\n },\n confirm_message_delete_image: {\n id: 'confirm_message_delete_image',\n defaultMessage: 'Are you sure to remove the image?',\n },\n no_images_uploaded: {\n id: 'no_images_uploaded',\n defaultMessage: 'No images uploaded',\n },\n no_files_uploaded: {\n id: 'no_files_uploaded',\n defaultMessage: 'No files uploaded',\n },\n upload_an_image: {\n id: 'upload_an_image',\n defaultMessage: 'Upload an image',\n },\n upload_a_file: {\n id: 'upload_a_file',\n defaultMessage: 'Upload a file',\n },\n})\n","import { MessageDescriptor } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nexport const classnames = (classNames: (string | boolean)[]) => {\n return classNames.filter(Boolean).join(' ').trim()\n}\n\nexport const noop = () => {}\n\nlet current = 0\n\nexport const generateUID = (prefix = '') => `${prefix || 'id'}-${current++}`\n\nexport const toQueryString = (params: IndexSignature<string>) => {\n return Object.keys(params)\n .map((key) => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\n })\n .join('&')\n}\n\nexport function base64ToArrayBuffer(base64: string) {\n const binaryString = window.atob(base64)\n const binaryLen = binaryString.length\n const bytes = new Uint8Array(binaryLen)\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i)\n bytes[i] = ascii\n }\n return bytes\n}\n\nexport function stringToSlug(str: string) {\n str = str.replace(/^\\s+|\\s+$/g, '') // trim\n str = str.toLowerCase()\n\n // remove accents, swap ñ for n, etc\n const from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;'\n const to = 'aaaaeeeeiiiioooouuuunc------'\n for (let i = 0, l = from.length; i < l; i++) {\n str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))\n }\n\n str = str\n .replace(/[^a-z0-9 -]/g, '') // remove invalid chars\n .replace(/\\s+/g, '-') // collapse whitespace and replace by -\n .replace(/-+/g, '-') // collapse dashes\n\n return str\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(function () {\n resolve()\n }, ms)\n })\n}\n\nexport const getActionsObject = (\n multiple: boolean\n): {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n} => ({\n DELETE: {\n text: genericMessages.delete,\n perms: ['guillotina.DeleteContent'],\n action: multiple ? 'removeItems' : 'removeItem',\n },\n MOVE: {\n text: genericMessages.move_to,\n perms: ['guillotina.MoveContent'],\n action: multiple ? 'moveItems' : 'moveItem',\n },\n COPY: {\n text: genericMessages.copy_to,\n perms: ['guillotina.DuplicateContent'],\n action: multiple ? 'copyItems' : 'copyItem',\n },\n})\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n type?: 'submit' | 'reset' | 'button'\n loading?: boolean\n disabled?: boolean\n dataTest?: string\n}\nexport const Button = ({\n children,\n className = 'is-primary',\n onClick,\n type = 'submit',\n loading = false,\n disabled = false,\n dataTest,\n}: Props) => {\n let css = [...className.split(' '), 'button']\n if (loading) css = css.concat('is-loading')\n\n return (\n <p className=\"control\">\n <button\n type={type}\n className={classnames(css)}\n onClick={onClick}\n disabled={disabled}\n data-test={dataTest}\n >\n {children}\n </button>\n </p>\n )\n}\n","import { IndexSignature } from '../types/global'\nimport { stringToSlug } from './helpers'\n\nexport const formatDate = (str: string): string => {\n const d = new Date(str)\n const minutes = d.getMinutes() < 10 ? `0${d.getMinutes()}` : d.getMinutes()\n return `${d.getDate()}/${\n d.getMonth() + 1\n }/${d.getFullYear()} ${d.getHours()}:${minutes}`\n}\n\nexport const get = <T>(\n obj: IndexSignature,\n path: string | string[],\n defValue: T\n): T => {\n // If path is not defined or it has false value\n if (!path) return defValue\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n // Regex explained: https://regexr.com/58j0k\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n // Find value if exist return otherwise return undefined value;\n if (pathArray === null) return defValue\n\n return (pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj) ??\n defValue) as T\n}\n\nexport function getNewId(id = '') {\n const suffix = '-copy-'\n const rgx = new RegExp(`($|${suffix}\\\\d*)`)\n\n return stringToSlug(id).replace(rgx, (r: string) => {\n const num = parseInt(r.replace(suffix, '') || '0')\n return `${suffix}${num + 1}`\n })\n}\n\nexport function debounce<T extends unknown[], U>(\n callback: (...args: T) => PromiseLike<U> | U,\n wait: number\n) {\n let timer: ReturnType<typeof setTimeout>\n\n return (...args: T): Promise<U> => {\n clearTimeout(timer)\n return new Promise((resolve) => {\n timer = setTimeout(() => resolve(callback(...args)), wait)\n })\n }\n}\n","import { createPortal } from 'react-dom'\nimport { Button } from './input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { get } from '../lib/utils'\n\ninterface ModalProps {\n isActive: boolean\n setActive: (value: boolean) => void\n children: React.ReactNode\n className?: string\n}\n\nexport function Modal(props: ModalProps) {\n const { isActive, setActive, children } = props\n\n const css = 'modal ' + (isActive ? 'is-active ' : '') + props.className\n return createPortal(\n <>\n <div className={css}>\n <div className=\"modal-background\" onClick={() => setActive(false)} />\n <div className=\"modal-content\">\n <div className=\"box\">{children}</div>\n </div>\n <button\n className=\"modal-close is-large\"\n aria-label=\"close\"\n onClick={() => setActive(false)}\n />\n </div>\n </>,\n document.body\n )\n}\n\ninterface ConfirmProps {\n message?: React.ReactNode\n onCancel: () => void\n onConfirm: () => void\n loading?: boolean\n}\nexport function Confirm({\n message,\n onCancel,\n onConfirm,\n loading,\n}: ConfirmProps) {\n const intl = useIntl()\n const setActive = () => onCancel()\n return (\n <Modal isActive setActive={setActive} className=\"confirm\">\n <h1 className=\"title is-size-5\">{message || 'Are you Sure?'}</h1>\n <div className=\"level\" style={{ marginTop: 50 }}>\n <div className=\"level-left\"></div>\n <div className=\"level-right\">\n <button\n className=\"button is-danger\"\n onClick={() => onCancel()}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <Button\n loading={loading}\n className=\"is-success\"\n onClick={() => onConfirm()}\n dataTest=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n\ninterface PathTreeProps {\n title: string\n defaultPath?: string\n children?: React.ReactNode\n onConfirm: (path: string, target: EventTarget) => void\n onCancel: () => void\n}\n// @todo Improve it... Replacing the inputText to a tree\nexport function PathTree({\n title,\n defaultPath,\n children,\n onConfirm,\n onCancel,\n}: PathTreeProps) {\n const intl = useIntl()\n return (\n <Modal isActive setActive={onCancel}>\n <h1>{title}</h1>\n <form\n onSubmit={(e) => {\n e.preventDefault()\n onConfirm(get(e, 'target.0.value', ''), e.target)\n }}\n >\n <small style={{ display: 'block', marginTop: 20 }}>\n {`Example: /folder (without /db/container on front)`}\n </small>\n <input\n className=\"input mb-3\"\n defaultValue={defaultPath}\n type=\"text\"\n data-test=\"inputPathTreeTest\"\n />\n {children}\n <div className=\"level-right mt-3\">\n <button\n type=\"button\"\n className=\"button is-danger\"\n onClick={onCancel}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <button\n type=\"submit\"\n className=\"button is-success\"\n data-test=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </button>\n </div>\n </form>\n </Modal>\n )\n}\n","interface DataError {\n details: string\n reason: string\n}\nconst getErrorMessage = (\n dataError: DataError,\n defaultValue: string | number\n) => {\n if (dataError && dataError.details) {\n return dataError.details\n } else if (dataError && dataError.reason) {\n return dataError.reason\n }\n return defaultValue\n}\n\ninterface IResponse<T = unknown> {\n loading?: boolean\n isError: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\n\nexport async function processResponse<T>(\n res: Response,\n ready_body = true\n): Promise<IResponse<T>> {\n if (res.status < 400)\n return {\n isError: false,\n loading: false,\n result: ready_body ? await res.json() : res.status,\n response: res,\n }\n else\n return {\n isError: true,\n loading: false,\n errorMessage: getErrorMessage(await res.json(), res.status).toString(),\n response: res,\n }\n}\n","import { useState, useCallback } from 'react'\n\n// **** Types **** //\n\nexport type TSetState<T> = (newPartialState: Partial<T>) => void\n\n// **** Functions **** //\n\n/**\n * Do setState like react class component.\n */\nfunction useSetState<T extends object>(initialState: T): [T, TSetState<T>] {\n const [state, setState] = useState<T>(initialState)\n // Function which accepts a partial state to merge\n const setCustomState = useCallback((newPartialState: Partial<T>) => {\n try {\n setState((prevState): T => {\n return { ...prevState, ...newPartialState }\n })\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n }, [])\n // Return\n return [state, setCustomState]\n}\n\n// **** Export Default **** //\n\nexport default useSetState\n","import { Traversal, useTraversal } from '../contexts'\nimport { processResponse } from '../lib/processResponse'\nimport useSetState from './useSetState'\n\ninterface State<T> {\n loading?: boolean\n isError?: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\nconst initial = {\n loading: undefined,\n isError: false,\n errorMessage: undefined,\n result: undefined,\n response: undefined,\n}\n\nfunction patch<T>(\n setState: (value: Partial<State<T>>) => void,\n Ctx: Traversal\n) {\n return async (\n data = {},\n endpoint?: string,\n body = false\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.patch(path, data)\n newState = await processResponse<T>(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction del<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (\n data = {},\n endpoint?: string,\n body = false\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.delete(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction post<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (\n data = {},\n endpoint?: string,\n body = true\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState: State<T> = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.post(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction get<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (endpoint?: string): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.get(path)\n newState = await processResponse(res, true)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n\n setState(newState)\n return newState\n }\n}\n// const get = (\n// setState: (value: Partial<State>) => void,\n// Ctx: Traversal\n// ) =>\n\nexport function useCrudContext<T>() {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State<T>>(initial)\n\n return {\n ...state,\n Ctx,\n patch: patch(setState, Ctx),\n del: del(setState, Ctx),\n post: post(setState, Ctx),\n get: get(setState, Ctx),\n }\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n type: string\n}\n\nexport function AddItem(props: Props) {\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const { type } = props\n const { getForm } = Ctx.registry\n\n const Form = getForm(type, undefined)\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit(data: IndexSignature) {\n const form = Object.assign(\n {},\n { '@type': type },\n data.formData ? data.formData : data\n )\n\n const { isError, errorMessage } = await post(form)\n if (!isError) {\n Ctx.flash('Content created!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form\n loading={loading}\n onSubmit={doSubmit}\n actionName={'Add ' + type}\n title={'Add ' + type}\n type={type}\n dataTest={`formAdd${type}Test`}\n />\n </Modal>\n )\n}\n","import { useRef } from 'react'\nimport { GuillotinaSchemaProperty } from '../types/guillotina'\n\nexport const Permissions: string[] = [\n 'guillotina.AddContent',\n 'guillotina.ModifyContent',\n 'guillotina.ViewContent',\n 'guillotina.DeleteContent',\n 'guillotina.AccessContent',\n 'guillotina.SeePermissions',\n 'guillotina.ChangePermissions',\n 'guillotina.MoveContent',\n 'guillotina.DuplicateContent',\n 'guillotina.ReadConfiguration',\n 'guillotina.RegisterConfigurations',\n 'guillotina.WriteConfiguration',\n 'guillotina.ManageAddons',\n 'guillotina.swagger.View',\n]\n\nexport interface IConfig {\n DisabledTypes: string[]\n PageSize: number\n DelayActions: number\n Permissions: string[]\n SearchEngine: string\n SizeImages?: string[]\n icons?: { [key: string]: string }\n properties_default?: string[]\n properties_ignore_fields?: string[]\n fieldHaveDeleteButton: (schema: GuillotinaSchemaProperty) => boolean\n flash?: (message: string, type: string) => void\n}\n\nexport const defaultConfig: IConfig = {\n DisabledTypes: ['UserManager', 'GroupManager'],\n PageSize: 10,\n DelayActions: 200,\n Permissions: Permissions,\n SearchEngine: 'PostreSQL', // Elasticsearch\n fieldHaveDeleteButton: (schema) => {\n return (\n schema?.widget === 'file' ||\n schema?.widget === 'select' ||\n schema?.type === 'array'\n )\n },\n}\n\nlet calculated = Object.assign({}, defaultConfig)\n\nfunction addConfig(updates: Partial<IConfig>, currentConfig: IConfig): IConfig {\n let updatedConfig: IConfig = { ...currentConfig }\n\n Object.entries(updates).forEach(([key, value]) => {\n const currentKey = key as keyof IConfig\n const currentValue = currentConfig[currentKey]\n\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n // Correctly type the array concatenation\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: [...currentValue, ...value],\n }\n } else if (isPlainObject(value) && isPlainObject(currentValue)) {\n // Correctly type the object merging\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: { ...currentValue, ...value },\n }\n } else {\n // Directly assign all other types\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: value,\n }\n }\n })\n\n return updatedConfig as IConfig\n}\n\n// Helper function to check if a value is a plain object (and not a React node, etc.)\nfunction isPlainObject(value: any): value is object {\n return Object.prototype.toString.call(value) === '[object Object]'\n}\n\nexport function useConfig(cfg = {}) {\n const ref = useRef<IConfig | undefined>(undefined)\n if (cfg && !ref.current) {\n calculated = addConfig(cfg, calculated)\n ref.current = calculated\n }\n return calculated\n}\n","import { Confirm } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { sleep } from '../lib/helpers'\nimport { useConfig } from '../hooks/useConfig'\nimport { ItemModel } from '../models'\nimport { useState } from 'react'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\ninterface Props {\n items: ItemModel<SearchItem | GuillotinaCommonObject>[]\n}\nexport function RemoveItems(props: Props) {\n const Ctx = useTraversal()\n const cfg = useConfig()\n const [loading, setLoading] = useState(false)\n const { items = [] } = props\n const last = items[items.length - 1].id\n const itemsNames = items\n .map((item) => item.id)\n .join(', ')\n .replace(`, ${last}`, ` and ${last}`)\n\n async function removeItems() {\n const errors: unknown[] = []\n setLoading(true)\n\n const actions = items.map(async (item) => {\n const res = await Ctx.client.delete(`${Ctx.path}${item.id}`, {})\n if (!res.ok) {\n const err = await res.json()\n errors.push(err)\n }\n })\n // this sleep is here, to let elasticsearch, wait for\n // index our operations... (will work 99% of use cases)\n actions.push(sleep(cfg.DelayActions))\n\n await Promise.all(actions)\n\n if (errors.length === 0) {\n Ctx.flash(`Items removed!`, 'success')\n Ctx.refresh()\n } else {\n const errorstr = errors.map((err) => JSON.stringify(err)).join('\\n')\n Ctx.flash(`Something went wrong!! ${errorstr}`, 'danger')\n }\n setLoading(false)\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItems}\n message={`Are you sure to remove: ${itemsNames}?`}\n />\n )\n}\n","import { ChangeEvent, useEffect, useRef, useState } from 'react'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n className?: string\n classNameInput?: string\n loading?: boolean\n indeterminate?: boolean\n backgroundColor?: string\n borderColor?: string\n dataTest?: string\n onChange: (value: boolean) => void\n id?: string\n disabled?: boolean\n checked?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\nexport const Checkbox = ({\n id,\n className,\n classNameInput,\n loading,\n disabled,\n indeterminate = false,\n checked,\n children,\n placeholder,\n onChange,\n dataTest,\n}: Props) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const [state, setState] = useState<boolean>(!!checked)\n\n useEffect(() => {\n if (state !== checked) {\n setState(!!checked)\n }\n }, [checked])\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate\n }\n }, [indeterminate])\n\n const updateState = (ev: ChangeEvent<HTMLInputElement>) => {\n setState(ev.target.checked)\n onChange(ev.target.checked)\n }\n\n return (\n <div className=\"field\">\n <label htmlFor={id} className={classnames(['checkbox', className ?? ''])}>\n <input\n ref={inputRef}\n disabled={disabled || loading}\n id={id}\n type=\"checkbox\"\n className={classnames(['checkbox', classNameInput ?? ''])}\n checked={state}\n onChange={updateState}\n data-test={dataTest}\n />\n {children || placeholder}\n </label>\n </div>\n )\n}\n","import { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n id?: string\n className?: string\n}\n\nexport default function ErrorZone({ children, id, className = '' }: Props) {\n return (\n <p className={classnames(['help is-danger', className])} id={id}>\n {children}\n </p>\n )\n}\n","import { ChangeEvent, useEffect, useState } from 'react'\n\nconst applyValidators = (\n value: string,\n validators: ((value: string) => boolean)[]\n) => {\n const validation = Array.isArray(validators) ? validators : [validators]\n let result = true\n validation.forEach((func) => {\n if (func && func(value) === false) {\n result = false\n }\n })\n return result\n}\n\nconst useInput = (\n onChange: (value: string) => void | undefined,\n value: string,\n validators: ((value: string) => boolean)[]\n) => {\n const [state, setState] = useState({ hasError: false, value: value })\n\n const onUpdate = (ev: ChangeEvent<HTMLInputElement>) => {\n const value: string = ev && ev.target ? ev.target.value : ''\n setState({ value, hasError: false })\n if (onChange) onChange(value)\n }\n\n const onBlur = () => {\n const hasError = applyValidators(state.value, validators) === false\n if (hasError) setState({ value: state.value, hasError })\n }\n\n const onFocus = () => {\n if (state.hasError) {\n setState({ value: state.value, hasError: false })\n }\n }\n\n useEffect(() => {\n setState({ value, hasError: false })\n }, [value])\n\n return {\n onChange: onUpdate,\n onFocus,\n onBlur,\n state,\n }\n}\n\nexport default useInput\n","// From github.com/protonmail/proton-shared\n\n/* eslint-disable no-useless-escape */\nexport const REGEX_EMAIL =\n /(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/i\nexport const REGEX_URL =\n /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)/\nexport const REGEX_HEX_COLOR =\n /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\\b$/i\nexport const REGEX_NUMBER = /^\\d+$/\n\nexport const isEmpty = (value = '') => !value.length\nexport const maxLength = (value = '', limit = 0) => value.length <= limit\nexport const minLength = (value = '', limit = 0) => value.length >= limit\nexport const isEmail = (value = '') => REGEX_EMAIL.test(value)\nexport const isURL = (value = '') => REGEX_URL.test(value)\nexport const isHexColor = (value = '') => REGEX_HEX_COLOR.test(value)\nexport const isNumber = (value = '') => REGEX_NUMBER.test(value)\nexport const notEmpty = (value: string) => !!value.length\n","import { forwardRef, useRef, useState, type ReactElement } from 'react'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport ErrorZone from '../error_zone'\nimport useInput from '../../hooks/useInput'\nimport { notEmpty } from '../../lib/validators'\nimport { useEffect } from 'react'\n\nconst noop = () => true\ninterface Props {\n name?: string\n icon?: ReactElement\n iconPosition?: 'has-icons-left' | 'has-icons-right'\n error?: string\n errorZoneClassName?: string\n autoComplete?: string\n className?: string\n widget?: string\n loading?: boolean\n validator?: ((value: string) => boolean) | ((value: string) => boolean)[]\n errorMessage?: string\n dataTest?: string\n autofocus?: boolean\n onChange: (value: string) => void | undefined\n type?: string\n value?: string\n required?: boolean\n id?: string\n placeholder?: string\n disabled?: boolean\n onKeyUp?: (event: React.KeyboardEvent<HTMLInputElement>) => void\n}\n\nexport const Input = forwardRef<HTMLInputElement, Props>(\n (\n {\n icon,\n iconPosition = 'has-icons-right',\n error,\n errorZoneClassName,\n autoComplete = 'off',\n className = '',\n widget = 'input',\n type = 'text',\n loading = false,\n required = false,\n id,\n placeholder,\n value,\n autofocus = false,\n onChange,\n validator = noop,\n errorMessage,\n dataTest = 'testInput',\n disabled,\n onKeyUp,\n },\n ref\n ) => {\n let validatorFn: ((value: string) => boolean)[] = []\n if (required) {\n validatorFn = Array.isArray(validator)\n ? [...validator, notEmpty]\n : [validator, notEmpty]\n }\n\n const { state, ...handlers } = useInput(onChange, value ?? '', validatorFn)\n const [uid] = useState(generateUID('input'))\n const [mounted, setMounted] = useState(false)\n // eslint-disable-next-line\n const newRef = ref || useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (\n autofocus &&\n !error &&\n newRef != null &&\n typeof newRef !== 'function' &&\n newRef.current\n ) {\n newRef.current.focus()\n }\n }, [mounted, autofocus, newRef, error])\n\n const theError = state.hasError ? errorMessage || 'invalid field' : ''\n const statusClasses = state.hasError ? 'is-danger' : ''\n\n const cssControl = () => (icon ? ['control', iconPosition] : ['control'])\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssControl())}>\n <input\n className={classnames([widget, className, statusClasses])}\n aria-describedby={uid}\n id={id}\n ref={ref}\n type={type}\n value={state.value}\n placeholder={placeholder}\n autoComplete={autoComplete}\n disabled={loading || disabled}\n required={required}\n data-test={dataTest}\n onKeyUp={onKeyUp}\n {...handlers}\n />\n {icon && icon}\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {state.hasError ? theError : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\nexport default Input\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n icon: string\n className?: string\n align?: string\n}\n\nexport const Icon = ({ icon, className = '', align }: Props) => {\n const addClass = className ? className.split(' ') : [className]\n\n align = align || 'is-right'\n\n return (\n <span className={classnames(['icon', align, ...addClass])}>\n <i className={icon}></i>\n </span>\n )\n}\n","import { Input } from './input'\nimport { isEmail } from '../../lib/validators'\nimport { Icon } from '../ui/icon'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value?: string\n dataTest?: string\n onChange: (value: string) => void\n placeholder?: string\n id?: string\n required?: boolean\n}\nexport const EmailInput = ({\n value = '',\n dataTest,\n placeholder,\n id,\n onChange,\n required,\n}: Props) => {\n const intl = useIntl()\n return (\n <Input\n type=\"email\"\n validator={isEmail}\n errorMessage={intl.formatMessage({\n id: 'invalid_email',\n defaultMessage: 'Invalid email',\n })}\n value={value}\n dataTest={dataTest}\n icon={<Icon icon=\"fas fa-envelope\" />}\n id={id}\n placeholder={placeholder}\n onChange={onChange}\n required={required}\n />\n )\n}\n","import { noop } from '../../lib/helpers'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void\n onReset?: (event: React.FormEvent<HTMLFormElement>) => void\n autoComplete?: string\n title?: string\n error?: string\n dataTest?: string\n}\nexport const Form = ({\n children,\n className = '',\n onSubmit = noop,\n onReset = noop,\n autoComplete = 'off',\n title,\n error,\n dataTest,\n}: Props) => {\n const handleSubmit = (event: React.SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault()\n onSubmit(event)\n }\n return (\n <div data-test={dataTest}>\n {title && (\n <div className=\"level\">\n <h1 className=\"title is-size-4\">{title}</h1>\n </div>\n )}\n {error && <div className=\"notification is-danger\">{error}</div>}\n <form\n onSubmit={handleSubmit}\n onReset={onReset}\n autoComplete={autoComplete}\n className={classnames(['form', className])}\n >\n {children}\n </form>\n </div>\n )\n}\n","import { InputHTMLAttributes } from 'react'\nimport { Input } from './input'\n\ninterface Props {\n value: string\n dataTest: string\n onChange: (value: string) => void\n placeholder?: string\n id?: string\n required?: boolean\n}\n\nexport const PasswordInput = ({\n value,\n dataTest,\n onChange,\n placeholder,\n id,\n required,\n}: Props & InputHTMLAttributes<HTMLInputElement>) => {\n return (\n <Input\n value={value}\n type=\"password\"\n dataTest={dataTest}\n onChange={onChange}\n placeholder={placeholder}\n id={id}\n required={required}\n />\n )\n}\n","import { Form } from './form'\nimport { Input } from './input'\nimport { EmailInput } from './email'\nimport { PasswordInput } from './password'\nimport { Button } from './button'\nimport { Checkbox } from './checkbox'\nimport { generateUID } from '../../lib/helpers'\nimport { Children, cloneElement, isValidElement, useRef } from 'react'\nimport { IndexSignature } from '../../types/global'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\nconst formComponents = {\n string: Input,\n password: PasswordInput,\n boolean: Checkbox,\n email: EmailInput,\n}\n\ninterface Props {\n schema: GuillotinaSchema\n formData?: IndexSignature\n onSubmit: (formData: IndexSignature, initialData: IndexSignature) => void\n actionName: string\n children?: React.ReactNode\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\n\nexport function FormBuilder({\n schema,\n formData,\n onSubmit,\n actionName,\n children,\n exclude = [],\n remotes = {},\n submitButton = true,\n}: Props) {\n const ref = useRef<IndexSignature | null>(null)\n const { properties, required } = schema\n const values = Object.assign({}, formData || {})\n\n // build initial state\n const initialState: IndexSignature = {}\n const fields = Object.keys(properties).filter((x) => !exclude.includes(x))\n\n fields.forEach((element) => {\n initialState[element] = values[element] || undefined\n })\n\n // Register remotes\n if (ref.current === null) {\n ref.current = {}\n Object.keys(remotes).forEach((item) => (ref.current![item] = remotes[item]))\n } else {\n // apply remote changes\n Object.keys(remotes).forEach((key) => {\n if (JSON.stringify(ref.current![key]) !== JSON.stringify(remotes[key])) {\n ref.current![key] = remotes[key]\n }\n })\n }\n\n ref.current = ref.current || {}\n const onUpdate = (field: string) => (value: boolean | string) => {\n ref.current![field] = value\n }\n\n const GetTag = ({ field }: { field: string }) => {\n const property = properties[field] as GuillotinaSchemaProperty\n const key = (property.widget ||\n property.type) as keyof typeof formComponents\n\n const Tag: React.ComponentType<any> = formComponents[key]\n\n const props = {\n value: initialState[field],\n onChange: onUpdate(field),\n placeholder: property.title || '',\n id: generateUID(),\n dataTest: `${field}TestInput`,\n required: false,\n }\n\n if (required.includes(field)) {\n props.required = true\n props.placeholder += ' *'\n }\n return <Tag {...props} />\n }\n\n const children_ = Children.map(children, (child) => {\n if (isValidElement(child)) {\n const props = { onChange: onUpdate }\n return cloneElement(child, props)\n }\n return child\n })\n\n const changes = () => {\n onSubmit(ref.current!, values)\n }\n\n return (\n <Form onSubmit={changes} dataTest={`formAddUserTest`}>\n {fields.map((field) => (\n <GetTag field={field} key={field} />\n ))}\n {children_}\n {submitButton && <Button>{actionName}</Button>}\n </Form>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { forwardRef, useState } from 'react'\nimport { IndexSignature } from '../../types/global'\n// @ TODO implement hasErrors\n\ninterface Props {\n error?: string\n errorZoneClassName?: string\n size?: number\n placeholder?: string\n id?: string\n className?: string\n classWrap?: string\n disabled?: boolean\n multiple?: boolean\n loading?: boolean\n onChange?: (value: string | string[]) => void\n options: { text: string; value: string }[]\n appendDefault?: boolean\n style?: IndexSignature\n dataTest?: string\n value?: string | string[]\n}\n\nexport const Select = forwardRef<HTMLSelectElement, Props>(\n (\n {\n options,\n error,\n errorZoneClassName,\n size = 1,\n placeholder,\n id,\n className = '',\n classWrap = '',\n multiple = false,\n loading = false,\n onChange,\n appendDefault = false,\n style = {},\n dataTest,\n value,\n disabled,\n },\n ref\n ) => {\n const intl = useIntl()\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev: React.ChangeEvent<HTMLSelectElement>) => {\n if (multiple) {\n let selectValue: string[] = []\n for (let i = 0; i < ev.target.selectedOptions.length; i++) {\n selectValue = selectValue.concat([ev.target.selectedOptions[i].value])\n }\n if (onChange) {\n onChange(selectValue)\n }\n } else {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n }\n\n if (appendDefault) {\n options = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n ].concat(options)\n }\n const statusClasses = error ? 'is-danger' : ''\n\n const cssWrap = [\n 'select',\n statusClasses,\n multiple ? 'is-multiple' : '',\n classWrap,\n ]\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssWrap)}>\n <select\n className={classnames(['', className])}\n size={multiple ? 5 : size}\n multiple={multiple}\n disabled={loading || disabled}\n onChange={onUpdate}\n ref={ref}\n style={style}\n data-test={dataTest}\n value={value}\n >\n {options.map(({ text, ...rest }, index) => (\n <option key={index.toString()} {...rest}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\nexport default Select\n","import { useTraversal } from '../contexts'\nimport { GuillotinaVocabulary } from '../types/guillotina'\nimport useSetState from './useSetState'\nimport { useEffect } from 'react'\n\ninterface State {\n data?: GuillotinaVocabulary\n loading: boolean\n error: any\n}\nexport function useVocabulary(vocabularyName: string, path?: string) {\n const traversal = useTraversal()\n\n const [vocabulary, setVocabulary] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const getPath = () => {\n if (path) return path\n return `${traversal.path}@vocabularies/${vocabularyName}`\n }\n\n useEffect(() => {\n const getVocabulary = async () => {\n if (\n vocabularyName &&\n vocabulary.data === undefined &&\n !vocabulary.loading\n ) {\n try {\n setVocabulary({ loading: true })\n const data = await traversal.client.get(getPath())\n const dataJson = await data.json()\n setVocabulary({ loading: false, data: dataJson })\n } catch (err) {\n setVocabulary({ loading: false, error: err, data: undefined })\n }\n }\n }\n getVocabulary()\n }, [vocabularyName, vocabulary, path])\n\n return vocabulary\n}\n","import { Select } from './select'\nimport { get } from '../../lib/utils'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { forwardRef } from 'react'\nimport { GuillotinaVocabularyItem } from '../../types/guillotina'\n\ninterface Props {\n vocabularyName: string\n className?: string\n classWrap?: string\n val?: string | string[]\n dataTest?: string\n multiple?: boolean\n onChange?: (value: string | string[]) => void\n appendDefault?: boolean\n id?: string\n placeholder?: string\n}\nexport const SelectVocabulary = forwardRef<HTMLSelectElement, Props>(\n (\n {\n vocabularyName,\n className,\n classWrap,\n val,\n dataTest,\n multiple,\n onChange,\n id,\n placeholder,\n },\n ref\n ) => {\n const vocabulary = useVocabulary(vocabularyName)\n\n const getOptions = () => {\n if (\n get<GuillotinaVocabularyItem | null>(vocabulary, 'data.items', null)\n ) {\n const vocData = (vocabulary?.data?.items ?? []).map((item) => {\n return {\n text: item.title,\n value: item.token,\n }\n })\n return vocData\n }\n\n return []\n }\n\n const getProps = () => {\n if (multiple) {\n const currentValue = val || []\n return {\n multiple: true,\n size: 5,\n value: currentValue,\n options: getOptions(),\n }\n }\n\n return {\n value: val ?? '',\n appendDefault: true,\n options: getOptions(),\n }\n }\n\n if (vocabulary.data === undefined || vocabulary.loading) {\n return <div />\n }\n\n return (\n <Select\n {...getProps()}\n className={className}\n classWrap={classWrap || 'is-fullwidth'}\n dataTest={dataTest}\n ref={ref}\n onChange={onChange}\n id={id}\n placeholder={placeholder}\n />\n )\n }\n)\n\nSelectVocabulary.displayName = 'SelectVocabulary'\n","import { useEffect, useRef, useState, useCallback } from 'react'\nimport { IndexSignature } from '../types/global'\n\n// Mostly inspired from\n// https://github.com/molefrog/wouter\n\nconst setURLParams = (p: URLSearchParams) => {\n return window.history.pushState(\n 0,\n '0',\n '' + '?' + p.toString().replace(/%2F/g, '/')\n )\n}\n\nconst clean = (to: IndexSignature) => {\n const current = new URLSearchParams()\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n}\n\nexport const useLocation = (): [\n URLSearchParams,\n (to: IndexSignature, replace?: boolean) => void,\n (param: string) => void,\n] => {\n const [path, update] = useState(currentSearchParams())\n const prevPath = useRef(path)\n\n useEffect(() => {\n patchHistoryEvents()\n\n // this function checks if the location has been changed since the\n // last render and updates the state only when needed.\n // unfortunately, we can't rely on `path` value here, since it can be stale,\n // that's why we store the last pathname in a ref.\n const checkForUpdates = () => {\n const pathname = currentSearchParams()\n if (prevPath.current !== pathname) {\n prevPath.current = pathname\n update(pathname)\n }\n }\n\n const events = ['popstate', 'pushState', 'replaceState']\n events.map((e) => window.addEventListener(e, checkForUpdates))\n\n // it's possible that an update has occurred between render and the effect handler,\n // so we run additional check on mount to catch these updates. Based on:\n // https://gist.github.com/bvaughn/e25397f70e8c65b0ae0d7c90b731b189\n checkForUpdates()\n\n return () => {\n events.map((e) => window.removeEventListener(e, checkForUpdates))\n }\n }, [])\n\n // the 2nd argument of the `useLocation` return value is a function\n // that allows to perform a navigation.\n //\n // the function reference should stay the same between re-renders, so that\n // it can be passed down as an element prop without any performance concerns.\n const navigate = useCallback(\n (to: IndexSignature, replace?: boolean) => {\n if (replace) {\n clean(to)\n return\n }\n const current = new URLSearchParams(path.toString())\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n },\n [path]\n )\n\n const remove = useCallback(\n (param: string) => {\n const current = new URLSearchParams(path.toString())\n current.delete(param)\n setURLParams(current)\n },\n [path]\n )\n\n return [path, navigate, remove]\n}\n\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\n\nlet patched = 0\n\nconst patchHistoryEvents = () => {\n if (patched) return\n\n const originalPushState = window.history.pushState\n window.history.pushState = function (...args) {\n const result = originalPushState.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event('pushState')\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n\n const originalReplaceState = window.history.replaceState\n window.history.replaceState = function (...args) {\n const result = originalReplaceState.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event('replaceState')\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n\n return (patched = 1)\n}\n\nconst currentSearchParams = (path = window.location.search) =>\n new URLSearchParams(path)\n","import { useLocation } from '../hooks/useLocation'\nimport { ItemModel } from '../models'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\ninterface Props {\n aRef?: React.Ref<HTMLAnchorElement>\n model: ItemModel<SearchItem | GuillotinaCommonObject>\n children: React.ReactNode\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void\n}\n\nexport function Link({ aRef, model, children, ...props }: Props) {\n const [path, navigate] = useLocation()\n const aStyle = { textDecoration: 'none', color: 'currentColor' }\n\n function onClick(e: React.MouseEvent<HTMLAnchorElement>) {\n e.stopPropagation()\n if (actAsLink(e)) return\n e.preventDefault()\n navigate({ path: model.path }, true)\n if (props.onClick) props.onClick(e)\n }\n\n return (\n <a\n ref={aRef}\n href={`?${path}${model.id}/`}\n style={aStyle}\n onClick={onClick}\n >\n {children}\n </a>\n )\n}\n\nfunction actAsLink(e: React.MouseEvent<HTMLAnchorElement>) {\n return e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button !== 0\n}\n","import { useRef } from 'react'\nimport { Link } from './Link'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\nimport { SearchOrCommonObject } from '../types/guillotina'\n\ninterface Props<T extends SearchOrCommonObject = SearchOrCommonObject> {\n model: ItemModel<T>\n children: React.ReactNode\n style?: IndexSignature\n}\nexport function TdLink({ model, children, style = {} }: Props) {\n const link = useRef<HTMLAnchorElement>(null)\n\n function onClick() {\n if (link && link.current) {\n link.current.click()\n }\n }\n\n return (\n <td onClick={onClick} style={style}>\n <Link model={model} aRef={link}>\n {children}\n </Link>\n </td>\n )\n}\n","import { IndexSignature } from '../../types/global'\n\ninterface Props {\n style?: IndexSignature\n}\nexport const Loading = ({ style = {} }: Props) => (\n <div className=\"progress-line\" style={style}></div>\n)\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n name: string\n id: string\n onRemove?: () => void\n size?: string\n color?: string\n}\nexport const Tag = ({\n name,\n id,\n onRemove,\n size = 'is-medium',\n color = 'is-warning',\n}: Props) => (\n <span className={classnames(['tag', color, size])} data-test={`tag-${id}`}>\n {name}\n {onRemove !== undefined && (\n <button className=\"delete is-small\" onClick={() => onRemove()}></button>\n )}\n </span>\n)\n","import { MouseEvent } from 'react'\n\ninterface Props {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void\n className?: string\n children?: React.ReactNode\n}\nexport function Delete({ onClick, className = '', children = null }: Props) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`delete ${className}`}\n data-test=\"btnDeleteTest\"\n >\n {children}\n </button>\n )\n}\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n headers?: string[]\n className?: string\n children: React.ReactNode\n}\nexport function Table({ headers, children, className }: Props) {\n const parsedClassName = className\n ? className.split(' ')\n : ' is-full is-fullwidth is-narrow'.split(' ')\n return (\n <table className={classnames(['table', ...parsedClassName])}>\n <thead>\n <tr>\n {headers &&\n headers.map((item, idx) => <th key={item + idx}>{item}</th>)}\n </tr>\n </thead>\n <tbody>{children}</tbody>\n </table>\n )\n}\n","interface Props {\n isColor?: string\n children: React.ReactNode\n}\nexport function Notification({ isColor = '', children }: Props) {\n return (\n <div className={'notification is-' + isColor} data-test=\"notificationTest\">\n {children}\n </div>\n )\n}\n","import { LightFile } from '../types/global'\nimport { Auth } from './auth'\n\nexport class RestClient {\n url: string\n container: string\n auth: Auth\n\n constructor(url: string, container: string, auth: Auth) {\n this.auth = auth\n this.url = url\n this.container = container\n }\n\n async request(\n path: string,\n data?: RequestInit,\n headers?: HeadersInit,\n signal?: AbortSignal\n ) {\n if (path.indexOf(this.url) !== -1) {\n path = path.replace(this.url, '')\n }\n\n if (this.container !== '/' && path.indexOf(this.container) === -1) {\n path = `${this.container}${path}`\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`\n }\n const dataRequest = data || {}\n dataRequest.headers = this.getHeaders()\n if (headers) {\n dataRequest.headers = { ...dataRequest.headers, ...headers }\n }\n if (signal) {\n dataRequest.signal = signal\n }\n return await fetch(`${this.url}${path}`, dataRequest)\n }\n\n getHeaders(): HeadersInit {\n const authToken = this.auth.getToken()\n const headersInit: HeadersInit = {}\n\n if (!authToken) return headersInit\n\n headersInit.Accept = 'application/json'\n headersInit['Content-Type'] = 'application/json'\n headersInit.Authorization = 'Bearer ' + authToken\n return headersInit\n }\n\n async post(path: string, data: unknown) {\n return await this.request(path, {\n method: 'post',\n body: JSON.stringify(data),\n })\n }\n\n async get(path: string, signal?: AbortSignal) {\n return await this.request(path, undefined, undefined, signal)\n }\n\n async put(path: string, data: unknown) {\n return await this.request(path, {\n method: 'put',\n body: JSON.stringify(data),\n })\n }\n\n async patch(path: string, data: unknown) {\n return await this.request(path, {\n method: 'PATCH',\n body: JSON.stringify(data),\n })\n }\n\n async upload(path: string, data: LightFile) {\n const headers = this.getHeaders()\n const newHeaders: HeadersInit = {}\n newHeaders['Content-Type'] = data['content-type']\n newHeaders['X-UPLOAD-FILENAME'] = data.filename\n newHeaders['Content-Encoding'] = 'base64'\n return await this.request(\n path,\n {\n method: 'PATCH',\n body: data.data,\n },\n {\n ...headers,\n ...newHeaders,\n }\n )\n }\n\n async delete(path: string, data: unknown) {\n return await this.request(path, {\n method: 'delete',\n body: JSON.stringify(data),\n })\n }\n}\n","const SEP = '='\nconst DEFAULT_FIELD = 'title__in'\nconst CLEANER = '||'\n\nexport function parser(\n qs: string,\n defaultField: string | string[] | undefined = DEFAULT_FIELD\n): string[][] {\n if (qs.includes(SEP) && Array.isArray(defaultField)) {\n throw new Error('This option is not supported')\n }\n\n if (Array.isArray(defaultField)) {\n const orParser: string[] = []\n defaultField.forEach((field) => {\n const parsed = parser(qs, field)\n orParser.push(buildQs(parsed))\n })\n const result = [['__or', orParser.join('&')]]\n return result\n }\n let lastKey: string | undefined = undefined\n qs.trim()\n\n if (qs.includes('\"')) {\n qs = qs.replace(/\"(\\w+) (\\w+)\"/, `$1${CLEANER}$2`)\n }\n\n const qsSplit = qs.split(' ')\n return qsSplit.map((part) => {\n if (part.includes(CLEANER)) {\n part = part.replace('||', ' ')\n }\n if (!part.includes(SEP)) {\n return !lastKey ? [defaultField, part] : [lastKey, part]\n }\n const [key, val] = part.split(SEP)\n lastKey = key\n return [key, val]\n })\n}\n\nexport function buildQs(parsedQuery: string[][]): string {\n return parsedQuery\n .map(\n ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`\n )\n .join('&')\n}\n","import React from 'react'\nimport { TdLink } from '../components/TdLink'\nimport { Icon } from '../components/ui'\nimport { toQueryString } from './helpers'\nimport { RestClient } from './rest'\nimport { parser } from './search'\nimport { IndexSignature, LightFile } from '../types/global'\n\nimport { Auth } from './auth'\nimport {\n GuillotinaCommonObject,\n GuillotinaGroup,\n GuillotinaUser,\n ItemColumn,\n ItemColumnChild,\n ReturnSearchCompatible,\n SearchItem,\n} from '../types/guillotina'\n\nconst cacheTypes: IndexSignature = {}\nconst cacheSchemas: IndexSignature = {}\n\nexport class GuillotinaClient {\n rest: RestClient\n pathContainsContainer: boolean\n constructor(rest: RestClient, pathContainsContainer: boolean) {\n this.rest = rest\n this.pathContainsContainer = pathContainsContainer\n }\n\n getContainerFromPath(path: string) {\n if (this.pathContainsContainer) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n const parts = path.split('/')\n return `${parts[0]}/${parts[1]}/`\n }\n return ''\n }\n\n clearContainerFromPath(path: string) {\n if (this.pathContainsContainer) {\n return `/${this.cleanPath(path)}`\n }\n return path\n }\n\n async getContext(path: string) {\n switch (path) {\n case '/':\n return await this.rest.get('')\n default:\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n }\n\n async get(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n return await this.rest.get(path)\n }\n\n getQueryParamsSearchFunction(name: string) {\n if (name === 'getQueryParamsElasticsearch') {\n return this.getQueryParamsElasticsearch\n }\n return this.getQueryParamsPostresql\n }\n getQueryParamsPostresql({\n start = 0,\n pageSize = 10,\n withDepth = true,\n }: {\n start?: number\n pageSize?: number\n path?: string\n withDepth?: boolean\n }) {\n let result = []\n\n result = [\n ...parser(start.toString(), 'b_start'),\n ...parser(pageSize.toString(), 'b_size'),\n ]\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n return result\n }\n\n getQueryParamsElasticsearch({\n start = 0,\n pageSize = 10,\n path,\n withDepth = true,\n }: {\n start?: number\n pageSize?: number\n path: string\n withDepth?: boolean\n }) {\n let result = []\n let containerPath = this.getContainerFromPath(path)\n\n if (containerPath.startsWith('/')) {\n containerPath = containerPath.slice(1)\n }\n let objectPath = path.replace(containerPath, '')\n if (objectPath.endsWith('/')) {\n objectPath = objectPath.slice(0, -1)\n }\n\n result = [\n ...parser(start.toString(), '_from'),\n ...parser(pageSize.toString(), '_size'),\n ...parser('*', '_metadata'),\n ]\n\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n if (objectPath !== '') {\n result = [...result, ...parser(objectPath, 'path__wildcard')]\n }\n return result\n }\n\n getItemsColumn<\n T extends SearchItem | GuillotinaCommonObject,\n >(): ItemColumn<T>[] {\n const smallcss = { width: 25 }\n const mediumcss = { width: 120 }\n\n return [\n {\n key: 'icon',\n label: '',\n isSortable: false,\n child: ({ model }: ItemColumnChild<T>) => (\n <td style={smallcss}>{<Icon icon={model.icon} />}</td>\n ),\n },\n {\n label: 'type',\n key: 'type_name',\n isSortable: false,\n child: ({ model }: ItemColumnChild<T>) => (\n <TdLink style={smallcss} model={model}>\n <span className=\"tag\">{model.type}</span>\n </TdLink>\n ),\n },\n {\n label: 'id/name',\n key: 'title',\n isSortable: true,\n child: ({ model, search }: ItemColumnChild<T>) => (\n <TdLink model={model}>\n {model.name}\n {search && (\n <React.Fragment>\n <br />\n <span className=\"is-size-7 tag is-light\">{model.path}</span>\n </React.Fragment>\n )}\n </TdLink>\n ),\n },\n {\n label: 'created',\n key: 'creation_date',\n isSortable: true,\n child: ({ model }: ItemColumnChild<T>) => {\n return (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {model.created}\n </td>\n )\n },\n },\n {\n label: 'modified',\n key: 'modification_date',\n isSortable: true,\n child: ({ model }: ItemColumnChild<T>) => (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {model.updated}\n </td>\n ),\n },\n ]\n }\n\n // BBB API changes. Compat G5 and G6\n applyCompat<T>(data: { items: T[]; items_total: number }) {\n const result: ReturnSearchCompatible<T> = {\n ...data,\n member: data.items,\n items_count: data.items_total,\n }\n return result\n }\n\n async search<T>(\n path: string,\n params: string | IndexSignature<string>,\n container = false,\n prepare = true,\n signal?: AbortSignal\n ) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n\n if (container) {\n path = this.getContainerFromPath(path)\n }\n\n const query = prepare\n ? toQueryString(params as IndexSignature<string>)\n : params\n const url = `${path}@search?${query}`\n const res = await this.rest.get(url, signal)\n const data = await res.json()\n return this.applyCompat<T>(data)\n }\n\n async canido(path: string, permissions: string | string[]) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (Array.isArray(permissions)) {\n permissions.join(',')\n }\n const url = `${path}@canido?permissions=${permissions}`\n return await this.rest.get(url)\n }\n\n async createObject(path: string, data: unknown) {\n return await this.rest.post(path, data)\n }\n\n cleanPath(path: string) {\n const url = path.split('/').slice(3)\n return `${url.join('/')}`\n }\n\n async delete(path: string, data: unknown) {\n return await this.rest.delete(path, data)\n }\n\n async create(path: string, data: unknown) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.post(path, data)\n }\n\n async post(path: string, data: unknown) {\n return await this.create(path, data)\n }\n\n async patch(path: string, data: unknown) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.patch(path, data)\n }\n\n async upload(path: string, file: LightFile) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.upload(path, file)\n }\n\n async download(path: string) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n\n async getTypeSchema(path: string, name: string) {\n if (!cacheSchemas[name]) {\n const url = this.getContainerFromPath(path)\n // todo: handle db case (only addable containers)\n const res = await this.rest.get(`${url}@types/${name}`)\n cacheSchemas[name] = await res.json()\n }\n return cacheSchemas[name]\n }\n\n async getAddons(path: string) {\n return await this.rest.get(`${path}@addons`)\n }\n\n async installAddon(path: string, key: string) {\n return await this.rest.post(`${path}@addons`, { id: key })\n }\n\n async removeAddon(path: string, key: string) {\n return await this.rest.delete(`${path}@addons`, { id: key })\n }\n\n async getGroups(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@groups`\n return await this.rest.get(endpoint)\n }\n\n async getUsers(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@users`\n return await this.rest.get(endpoint)\n }\n\n async getPrincipals(path: string): Promise<{\n groups: GuillotinaGroup[]\n users: GuillotinaUser[]\n }> {\n const groups = this.getGroups(path)\n const users = this.getUsers(path)\n const [responseGroups, responseUsers] = await Promise.all([groups, users])\n let groupsData: GuillotinaGroup[] = []\n let usersData: GuillotinaUser[] = []\n\n if (responseGroups.ok) {\n const groupsDataResponse = await responseGroups.json()\n groupsData = groupsDataResponse.map(\n (group: {\n '@name': string\n id: string\n title: string\n users: string[]\n roles: string[]\n }) => {\n return {\n '@name': group.id,\n user_roles: group.roles,\n users: group.users,\n }\n }\n )\n }\n if (responseUsers) {\n const usersDataResponse = await responseUsers.json()\n usersData = usersDataResponse.map(\n (user: {\n '@name': string\n id: string\n fullname: string\n email: string\n roles: string[]\n }) => {\n return {\n '@name': user.id,\n user_roles: user.roles,\n fullname: user.fullname,\n email: user.email,\n }\n }\n )\n }\n return {\n groups: groupsData,\n users: usersData,\n }\n }\n\n async getRoles(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@available-roles`\n return await this.rest.get(endpoint)\n }\n\n async getAllPermissions(path: string) {\n // paths used to query the API always has to start without a \"/\"\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n const req = await this.rest.get(path + '@all_permissions')\n const resp = await req.json()\n const permissions = Array.from(new Set(extractPermissions(resp)))\n return permissions\n }\n\n async getTypes(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (!cacheTypes[path]) {\n const types = await this.rest.get(path + '@addable-types')\n if (types.status === 401 || types.status === 404) {\n cacheTypes[path] = []\n } else {\n const res = await types.json()\n cacheTypes[path] = res\n }\n }\n return cacheTypes[path]\n }\n}\n\nexport function getClient(url: string, container: string, auth: Auth) {\n return new GuillotinaClient(\n new RestClient(url, container, auth),\n container === '/'\n )\n}\n\nexport const lightFileReader = (file: File) => {\n return new Promise<LightFile>((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsArrayBuffer(file)\n reader.onloadend = (e) => {\n const fileData = e?.target?.result\n if (fileData) {\n resolve({\n filename: file.name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''),\n data: fileData,\n 'content-type': file.type,\n })\n } else {\n reject('Error reading file')\n }\n }\n })\n}\n\nconst extractPermissions = (data: IndexSignature) => {\n let result: string[] = []\n if (typeof data !== 'object') {\n // do nothing\n } else if (!Array.isArray(data) && data.permission) {\n result = result.concat([data.permission])\n } else if (!Array.isArray(data)) {\n Object.keys(data).map(\n (key) => (result = result.concat(extractPermissions(data[key])))\n )\n } else if (Array.isArray(data)) {\n data.map((item) => (result = result.concat(extractPermissions(item))))\n }\n return result\n}\n","import { ChangeEvent } from 'react'\nimport { lightFileReader } from '../../lib/client.js'\nimport { useIntl } from 'react-intl'\nimport { LightFile } from '../../types/global'\n\ninterface Props {\n label?: string\n dataTest?: string\n onChange: (file: LightFile) => void\n}\nexport function FileUpload({ label, onChange, dataTest }: Props) {\n const intl = useIntl()\n const changed = async (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const fileToUpload = await lightFileReader(event.target.files[0])\n onChange(fileToUpload)\n }\n }\n\n return (\n <div className=\"file\">\n <label className=\"file-label\">\n <input\n className=\"file-input\"\n type=\"file\"\n name=\"file\"\n onChange={changed}\n data-test={dataTest}\n />\n <span className=\"file-cta\">\n <span className=\"file-icon\">\n <i className=\"fas fa-upload\"></i>\n </span>\n <span className=\"file-label\">\n {label ||\n intl.formatMessage({\n id: 'choose_file',\n defaultMessage: 'Choose a file',\n })}\n </span>\n </span>\n </label>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { ChangeEvent, forwardRef, useState } from 'react'\n\ninterface Props {\n value: string\n classWrap?: string\n rows?: number\n className?: string\n onChange?: (value: string) => void\n dataTest?: string\n error?: string\n errorZoneClassName?: string\n placeholder?: string\n id?: string\n}\nexport const Textarea = forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n value = '',\n classWrap = '',\n rows = 5,\n className = '',\n onChange,\n dataTest,\n error,\n errorZoneClassName,\n placeholder,\n id,\n },\n ref\n ) => {\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev: ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n const statusClasses = error ? 'is-danger' : ''\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classWrap}>\n <textarea\n className={classnames(['textarea', className, statusClasses])}\n rows={rows}\n onChange={onUpdate}\n value={value}\n data-test={dataTest}\n ref={ref}\n />\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\nexport default Textarea\n","import { useEffect, useRef } from 'react'\n\nconst defaultEvents = ['mousedown', 'touchstart']\nconst on = (\n obj: Document,\n type: keyof DocumentEventMap,\n handler: (ev: Event) => void\n) => obj.addEventListener(type, handler)\nconst off = (\n obj: Document,\n type: keyof DocumentEventMap,\n handler: (ev: Event) => void\n) => obj.removeEventListener(type, handler)\n\nexport default function useClickAway(\n ref: React.RefObject<HTMLElement>,\n onClickAway: (event: Event) => void,\n events = defaultEvents\n) {\n const savedCallback = useRef(onClickAway)\n\n useEffect(() => {\n savedCallback.current = onClickAway\n }, [onClickAway])\n\n useEffect(() => {\n const handler = (event: Event) => {\n const { current: el } = ref\n if (el && !el.contains(event.target as Node)) {\n savedCallback.current(event)\n }\n }\n\n for (const eventName of events) {\n on(document, eventName as keyof DocumentEventMap, handler)\n }\n\n return () => {\n for (const eventName of events) {\n off(document, eventName as keyof DocumentEventMap, handler)\n }\n }\n }, [events, ref])\n}\n","import { useState, useEffect, useCallback, useRef } from 'react'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { debounce, get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\nimport { IndexSignature } from '../../types/global'\n\ninterface State {\n page: number\n items?: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange?: (value: string) => void\n error?: string\n errorZoneClassName?: string\n traversal: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value?: string\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInput = ({\n onChange,\n error,\n errorZoneClassName,\n traversal,\n path = undefined,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = undefined,\n typeNameQuery = undefined,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef<HTMLInputElement>(null)\n const { PageSize, SearchEngine } = useConfig()\n const [valueLabel, setValueLabel] = useState<Partial<SearchItem> | undefined>(\n undefined\n )\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef as React.RefObject<HTMLElement>, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value) {\n let searchTermQs = ''\n const searchTermParsed = [`id`, value]\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: PageSize,\n withDepth: false,\n })\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce<IndexSignature<string>>(\n (result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n },\n {}\n )\n setValueLabel(newValuesLabel)\n }\n }\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n console.log('handle search input')\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed: string[][] = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0 ||\n sortParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const renderTextItemOptionFn = (item: SearchItem) => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (value) {\n inicializeLabels()\n } else {\n setValueLabel({})\n }\n }, [path, value])\n\n if (valueLabel === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n if (ev.target instanceof HTMLElement) {\n ev.target.blur()\n }\n\n setIsOpen(!isOpen)\n console.log('on clic btn', options)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>\n {value\n ? get(valueLabel, value, value)\n : intl.formatMessage(genericMessages.choose)}\n </span>\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value === item.id ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange) {\n onChange(item.id)\n }\n setIsOpen(false)\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { useState, useCallback, useRef, useEffect } from 'react'\n\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { debounce, get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\nimport { IndexSignature } from '../../types/global'\n\ninterface State {\n page: number\n items?: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange: (value: string[]) => void\n error?: string\n errorZoneClassName?: string\n traversal: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value: string[]\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInputList = ({\n onChange,\n error,\n errorZoneClassName,\n traversal,\n path = undefined,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = undefined,\n typeNameQuery = undefined,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [valuesLabels, setValuesLabels] = useState<IndexSignature | undefined>(\n undefined\n )\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef<HTMLInputElement>(null)\n const { PageSize, SearchEngine } = useConfig()\n const [isLoadingData, setIsLoadingData] = useState(false)\n\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef as React.RefObject<HTMLElement>, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed: string[][] = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems: SearchItem[] =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value.length > 0) {\n setIsLoadingData(true)\n let searchTermQs = ''\n const searchTermParsed = ['__or', `id=${value.join('%26id=')}`]\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce<IndexSignature<string>>(\n (result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n },\n {}\n )\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n }\n\n const renderTextItemOptionFn = (\n item: SearchItem\n ): string | React.ReactNode => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get<string>(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (!options.loading && !options.items && value.length > 0) {\n inicializeLabels()\n } else if (value.length === 0) {\n setValuesLabels({})\n }\n }, [path, options.loading, options.items])\n\n if (isLoadingData || valuesLabels === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div className=\"tags mb-2\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {get(valuesLabels, tag, tag)}\n <button\n className=\"delete is-small\"\n onClick={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }}\n ></button>\n </div>\n ))}\n </div>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n setIsOpen(!isOpen)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>{intl.formatMessage(genericMessages.choose)}</span>\n\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value.includes(item.id) ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange && !value.includes(item.id)) {\n setValuesLabels({\n ...valuesLabels,\n [item.id]: get(item, labelProperty, item.id),\n })\n onChange([...value, item.id])\n }\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { InputHTMLAttributes, forwardRef, useState } from 'react'\nimport { Input } from './input'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value: string[]\n onChange: (value: string[]) => void\n dataTest?: string\n id?: string\n}\nexport const InputList = forwardRef<\n HTMLInputElement,\n InputHTMLAttributes<HTMLInputElement> & Props\n>(({ value, onChange, dataTest, id }, ref) => {\n const intl = useIntl()\n const [inputValue, setInputValue] = useState('')\n const addTags = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Enter' &&\n (event.target as HTMLInputElement).value !== ''\n ) {\n onChange([...value, (event.target as HTMLInputElement).value])\n setInputValue('')\n }\n }\n\n return (\n <div className=\"control\">\n {(value ?? []).length > 0 && (\n <div className=\"tags\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {tag}\n <button\n className=\"delete is-small\"\n type=\"button\"\n onClick={() =>\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }\n />\n </div>\n ))}\n </div>\n )}\n\n <Input\n type=\"text\"\n id={id}\n placeholder={intl.formatMessage({\n id: 'press_enter_to_add_value',\n defaultMessage: 'Press enter to add value',\n })}\n onKeyUp={(event) => addTags(event)}\n value={inputValue}\n ref={ref}\n dataTest={dataTest}\n onChange={(value) => {\n setInputValue(value)\n }}\n />\n </div>\n )\n})\n\nInputList.displayName = 'InputList'\nexport default InputList\n","import { useState, useRef } from 'react'\nimport useClickAway from '../../hooks/useClickAway'\n\ninterface Props {\n children: React.ReactNode\n disabled?: boolean\n id?: string\n isRight?: boolean\n onChange: (value: string) => void\n optionDisabledWhen?: (option: any) => boolean\n options: { text: string; value: string }[]\n}\n\nexport default function Dropdown({\n children,\n disabled,\n id,\n isRight,\n onChange,\n optionDisabledWhen,\n options,\n}: Props) {\n const ref = useRef<HTMLDivElement>(null)\n const [isActive, setIsActive] = useState(false)\n const position = isRight ? 'is-right' : ''\n const status = isActive\n ? `dropdown ${position} is-active`\n : `dropdown ${position}`\n\n useClickAway(ref as React.RefObject<HTMLElement>, () => {\n setIsActive(false)\n })\n\n return (\n <div ref={ref} className={status}>\n <div className=\"dropdown-trigger\">\n <button\n className=\"button is-size-7\"\n onClick={() => setIsActive(!isActive)}\n aria-haspopup=\"true\"\n disabled={disabled}\n aria-controls={id}\n >\n {children}\n </button>\n </div>\n <div className=\"dropdown-menu\" id={id} role=\"menu\">\n <div className=\"dropdown-content\">\n {options.map((option) => {\n const disabled =\n typeof optionDisabledWhen === 'function'\n ? optionDisabledWhen(option)\n : false\n\n return (\n <a\n className={\n disabled ? 'dropdown-item is-active' : 'dropdown-item'\n }\n data-test={`dropdownItemTest-${option.value.toLowerCase()}`}\n key={option.text}\n onClick={disabled ? undefined : () => onChange(option.value)}\n style={\n disabled\n ? {\n cursor: 'not-allowed',\n color: 'black',\n opacity: 0.5,\n backgroundColor: '#eeeeee',\n }\n : {}\n }\n >\n {option.text}\n </a>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import { Button } from '../input/button'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useState } from 'react'\nimport { useRef } from 'react'\nimport { useEffect } from 'react'\nimport { Icon } from '../ui'\nimport { get } from '../../lib/utils'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { EditableFieldValue, LightFile } from '../../types/global'\nimport { GuillotinaSchemaProperty } from '../../types/guillotina'\n\ninterface Props {\n field: string\n value: EditableFieldValue\n ns?: string\n schema?: GuillotinaSchemaProperty\n modifyContent?: boolean\n required?: boolean\n}\n\nexport function EditableField({\n field,\n value,\n ns,\n schema = undefined,\n modifyContent,\n required,\n}: Props) {\n const intl = useIntl()\n const ref = useRef<HTMLElement>(null)\n const [isEdit, setEdit] = useState(false)\n const [val, setValue] = useState(value)\n const { patch, loading, Ctx } = useCrudContext()\n const { fieldHaveDeleteButton } = useConfig()\n\n const EditComponent = Ctx.registry.getComponent('EditComponent')\n const RenderFieldComponent = Ctx.registry.getComponent('RenderFieldComponent')\n\n useEffect(() => {\n if (isEdit && ref.current) {\n ref.current.focus()\n }\n })\n\n const canModified =\n schema !== undefined && modifyContent && !get(schema, 'readonly', false)\n\n const saveField = async (\n ev: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (ev) ev.preventDefault()\n\n if (!field) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_provide_key_name),\n 'danger'\n )\n return\n }\n\n if (!val && required) {\n Ctx.flash(\n intl.formatMessage(genericMessages.mandatory_field, { field }),\n 'danger'\n )\n return\n }\n\n if (schema?.widget === 'file') {\n const value = val as LightFile\n\n if (value) {\n value['filename'] = unescape(encodeURIComponent(value['filename']))\n }\n const endpoint = `${Ctx.path}@upload/${field}`\n const req = await Ctx.client.upload(endpoint, value)\n if (req.status !== 200) {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.error_upload_file),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.file_uploaded),\n 'success'\n )\n }\n } else {\n const data = ns ? { [ns]: { [field]: val } } : { [field]: val }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_updated, { field }),\n 'success'\n )\n }\n }\n\n setEdit(false)\n Ctx.refresh()\n }\n\n const deleteField = async (\n ev: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (ev) ev.preventDefault()\n if (schema?.widget === 'file') {\n if (!field || (!val && required)) {\n Ctx.flash(\n intl.formatMessage(genericMessages.can_not_delete_field, { field }),\n 'danger'\n )\n return\n }\n\n const data = ns ? { [ns]: { [field]: null } } : { [field]: null }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_deleted, { field }),\n 'success'\n )\n }\n\n setEdit(false)\n Ctx.refresh()\n } else if (schema?.type === 'string' && schema?.enum) {\n setValue(null)\n } else if (schema?.type === 'array' && schema?.items?.type === 'string') {\n setValue([])\n }\n }\n\n return (\n <>\n {!isEdit && (\n <div\n className={canModified ? 'editable' : ''}\n onClick={() => {\n setEdit(!!canModified)\n }}\n data-test={`editableFieldTest-${field}`}\n >\n <RenderFieldComponent\n schema={schema}\n field={field}\n val={val}\n modifyContent={modifyContent}\n />\n {canModified && <Icon icon=\"fas fa-edit\" />}\n </div>\n )}\n\n {isEdit && (\n <div className=\"field\" data-test={`editableFieldTest-${field}`}>\n <div className=\"control\">\n <EditComponent\n ref={ref}\n schema={schema}\n val={val}\n setValue={setValue}\n dataTest={`editableFieldEditTest`}\n />\n </div>\n <div className=\"field is-grouped\">\n <div className=\"control\">\n <Button\n className=\"is-small is-primary\"\n loading={loading}\n onClick={saveField}\n dataTest=\"editableFieldBtnSaveTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n <div className=\"control\">\n <Button\n className=\"is-small\"\n onClick={() => setEdit(false)}\n dataTest=\"editableFieldBtnCancelTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </Button>\n </div>\n {!required && schema && fieldHaveDeleteButton(schema) && (\n <div className=\"control\">\n <Button\n className=\"is-small is-danger\"\n onClick={deleteField}\n dataTest=\"editableFieldBtnDeleteTest\"\n >\n {intl.formatMessage(genericMessages.delete)}\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface DownloadFieldProps {\n value: {\n data: {\n filename: string\n content_type: string\n }\n field: string\n }\n}\nexport const DownloadField = ({ value }: DownloadFieldProps) => {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { data, field } = value\n\n const getField = async (downloadFile: boolean) => {\n const endpoint = `${Ctx.path}@download/${field}`\n const res = await Ctx.client.download(endpoint)\n const text = await res.blob()\n const blob = new Blob([text], {\n type: data.content_type,\n })\n const url = window.URL.createObjectURL(blob)\n\n // Create blob link to download\n const link = document.createElement('a')\n link.href = url\n if (downloadFile) {\n link.setAttribute('download', `${data.filename}`)\n } else {\n link.setAttribute('target', `_blank`)\n }\n\n document.body.appendChild(link)\n link.click()\n setTimeout(function () {\n // For Firefox it is necessary to delay revoking the ObjectURL\n window.URL.revokeObjectURL(url)\n link.parentNode?.removeChild(link)\n }, 100)\n }\n\n return (\n <div className=\"field\">\n <div className=\"label\">{data.filename}</div>\n <div className=\"columns\">\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-left\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(false)\n }}\n >\n {intl.formatMessage(genericMessages.open)}\n </button>\n </div>\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-right\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(true)\n }}\n >\n {intl.formatMessage(genericMessages.download)}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { DownloadField } from './downloadField'\nimport { IntlShape, useIntl } from 'react-intl'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { buildQs } from '../../lib/search'\nimport { useTraversal } from '../../contexts'\nimport { useConfig } from '../../hooks/useConfig'\nimport {\n GuillotinaSchemaProperty,\n GuillotinaVocabularyItem,\n SearchItem,\n} from '../../types/guillotina'\nimport { EditableFieldValue, IndexSignature } from '../../types/global'\n\nconst plain = ['string', 'number', 'boolean']\ntype PlainType = string | boolean | number\n\ninterface RenderFieldProps {\n value: EditableFieldValue\n Widget?: React.ComponentType<{\n value: EditableFieldValue\n schema?: GuillotinaSchemaProperty\n modifyContent?: boolean\n }>\n schema?: GuillotinaSchemaProperty\n}\n\nexport function RenderField({ value, Widget, schema }: RenderFieldProps) {\n if (value === null || value === undefined) return ''\n\n if (Widget) {\n return <Widget value={value} schema={schema} />\n }\n\n const type = typeof value\n if (plain.includes(type)) {\n return value as PlainType\n }\n if (type === 'object') {\n if (Array.isArray(value)) {\n return value.map((item: EditableFieldValue, index) => (\n <div key={`renderField_${index}_${schema?.title}`}>\n <RenderField value={item} />\n </div>\n ))\n }\n if (schema?.properties?.key !== undefined) {\n return Object.keys(value).map((key) => (\n <FieldValue\n field={get(schema, `properties.${key}.title`, key)}\n schema={schema.properties!.key as GuillotinaSchemaProperty}\n value={get(value as IndexSignature, key, {})}\n key={key}\n />\n ))\n }\n }\n return <p>No render for {JSON.stringify(value)}</p>\n}\n\ninterface FieldValueProps {\n field: string\n value: EditableFieldValue\n schema: GuillotinaSchemaProperty\n}\nconst FieldValue = ({ field, value, schema }: FieldValueProps) => (\n <div className=\"field\">\n <div className=\"label\">{field}</div>\n <div className=\"value\">\n <RenderFieldComponent val={value} schema={schema} field={field} />\n </div>\n </div>\n)\n\nconst DEFAULT_VALUE_NO_EDITABLE_FIELD = ' -- '\nconst getDefaultValueEditableField = (intl: IntlShape) => {\n return intl.formatMessage({\n id: 'default_value_editable_field',\n defaultMessage: 'Click to edit',\n })\n}\n\ninterface SearchRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const SearchRenderField = ({\n schema,\n value,\n modifyContent,\n}: SearchRenderFieldProps) => {\n const intl = useIntl()\n const [valuesLabels, setValuesLabels] = useState<string[]>([])\n const [isLoadingData, setIsLoadingData] = useState(false)\n const traversal = useTraversal()\n const { SearchEngine } = useConfig()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n useEffect(() => {\n const fetchData = async (valuesToSearch: string[]) => {\n setIsLoadingData(true)\n let searchTermQs = ''\n\n const searchTermParsed = ['__or', `id=${valuesToSearch.join('%26id=')}`]\n const { getSearchEngineQueryParamsFunction } = traversal.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n\n if (searchTermParsed.length > 0 || qsParsed.length > 0) {\n searchTermQs = buildQs([searchTermParsed, ...qsParsed])\n }\n const data = await traversal.client.search<SearchItem>(\n traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n\n const newValuesLabel = data.items.map((item) => {\n return get(item, schema?.labelProperty ?? 'title', item.id)\n })\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n\n let valuesToSearch: string[] = []\n if (typeof value === 'string' && value) {\n valuesToSearch = [value]\n } else if (Array.isArray(value)) {\n valuesToSearch = value\n }\n if (valuesToSearch.length > 0) {\n fetchData(valuesToSearch)\n } else {\n setValuesLabels([])\n }\n }, [value])\n\n const getRenderValue = () => {\n if (value === undefined) {\n if (modifyContent) {\n return DEFAULT_VALUE_EDITABLE_FIELD\n }\n return DEFAULT_VALUE_NO_EDITABLE_FIELD\n }\n if (isLoadingData) {\n return 'Loading...'\n }\n\n return valuesLabels\n }\n\n return <RenderField value={getRenderValue()} />\n}\n\ninterface VocabularyRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const VocabularyRenderField = ({\n schema,\n value,\n modifyContent,\n}: VocabularyRenderFieldProps) => {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const vocabularyName =\n schema?.items?.vocabularyName || schema?.vocabularyName || ''\n const vocabulary = useVocabulary(vocabularyName)\n\n const getRenderProps = () => {\n const renderProps = {\n value:\n value ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n }\n\n if (schema?.vocabularyName) {\n const vocabularyValue = get<GuillotinaVocabularyItem[]>(\n vocabulary,\n 'data.items',\n []\n ).find((item) => item.token === value)\n renderProps['value'] = vocabularyValue?.title ?? ''\n } else {\n renderProps['value'] = ((renderProps['value'] as string[]) ?? []).map(\n (value: string) => {\n return (\n get<GuillotinaVocabularyItem[]>(vocabulary, 'data.items', []).find(\n (item) => item.token === value\n )?.title ?? ''\n )\n }\n )\n }\n\n return renderProps\n }\n return <RenderField {...getRenderProps()} />\n}\n\ninterface RenderFieldComponentProps {\n schema: GuillotinaSchemaProperty\n field: string\n val: EditableFieldValue\n modifyContent?: boolean\n}\nexport function RenderFieldComponent({\n schema,\n field,\n val,\n modifyContent,\n}: RenderFieldComponentProps) {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const getRenderProps = () => {\n const renderProps: {\n value: EditableFieldValue\n schema: GuillotinaSchemaProperty\n Widget?: React.ComponentType<any>\n } = {\n value:\n val ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n schema: schema,\n }\n if (val && schema?.widget === 'file') {\n renderProps['value'] = {\n data: val,\n field: field,\n }\n renderProps['Widget'] = DownloadField\n } else if (schema?.type === 'boolean') {\n renderProps['value'] = val?.toString() ?? renderProps['value']\n } else if (val && schema?.type === 'datetime') {\n renderProps['value'] = new Date(val as string).toLocaleString()\n } else if (schema?.items?.vocabularyName || schema?.vocabularyName) {\n renderProps['Widget'] = VocabularyRenderField\n } else if (\n schema?.widget === 'search' ||\n schema?.widget === 'search_list'\n ) {\n renderProps['Widget'] = SearchRenderField\n renderProps['value'] = val as string | string[]\n }\n return renderProps\n }\n\n return <RenderField {...getRenderProps()} />\n}\n","import { Textarea } from '../input/textarea'\nimport { Checkbox } from '../input/checkbox'\nimport { FileUpload } from '../input/upload'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { InputList } from '../input/input_list'\nimport { get } from '../../lib/utils'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { SearchInputList } from '../input/search_input_list'\nimport { SearchInput } from '../input/search_input'\nimport { useTraversal } from '../../contexts'\nimport { Ref, forwardRef } from 'react'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport {\n EditableFieldValue,\n IndexSignature,\n LightFile,\n} from '../../types/global'\n\ninterface Props {\n schema: GuillotinaSchemaProperty\n val: EditableFieldValue\n setValue: (value: EditableFieldValue) => void\n dataTest?: string\n className?: string\n placeholder?: string\n id?: string\n required?: boolean\n}\n\nexport const EditComponent = forwardRef(\n (\n {\n schema,\n val,\n setValue,\n dataTest,\n className,\n placeholder,\n id,\n required,\n }: Props,\n ref\n ) => {\n const traversal = useTraversal()\n\n if (schema?.widget === 'search_list') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInputList\n value={(val || []) as string[]}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery}\n />\n </>\n )\n } else if (schema?.widget === 'search') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInput\n value={val as string}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery}\n />\n </>\n )\n } else if (schema?.widget === 'textarea' || schema?.widget === 'richtext') {\n return (\n <Textarea\n value={(val || '') as string}\n className={className}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLTextAreaElement>}\n dataTest={dataTest}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'boolean') {\n return (\n <Checkbox\n checked={Boolean(val)}\n className={className}\n onChange={(ev) => setValue(ev)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.type === 'array') {\n if (schema.items && schema.items.type === 'string') {\n if (schema.items.vocabularyName) {\n return (\n <SelectVocabulary\n vocabularyName={get(schema, 'items.vocabularyName', '')}\n val={(val || []) as string[]}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n multiple\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.items?.vocabulary) {\n return (\n <Select\n value={(val || []) as string[]}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={schema?.items.vocabulary.map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n multiple\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n }\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <InputList\n value={(val || []) as string[]}\n className={className}\n onChange={(val) => setValue(val as string[])}\n ref={ref as Ref<HTMLInputElement>}\n dataTest={dataTest}\n />\n </>\n )\n } else if (schema?.widget === 'file') {\n const value = val as GuillotinaFile\n return (\n <FileUpload\n onChange={(ev) => setValue(ev as LightFile)}\n label={get(value, 'filename', undefined)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.widget === 'select' && schema.type === 'string') {\n if (schema?.vocabularyName) {\n return (\n <SelectVocabulary\n val={(val || '') as string}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n vocabularyName={get(schema, 'vocabularyName', '')}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n\n return (\n <Select\n value={(val || '') as string}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={(schema?.vocabulary ?? []).map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'object' && schema.widget !== 'file') {\n const value = val as IndexSignature\n return (\n <>\n {schema.title && <h4 className=\"subtitle mt-2\">{schema.title}</h4>}\n {Object.keys(get(schema, 'properties', {})).map((key) => {\n const subSchema = get<GuillotinaSchemaProperty | null>(\n schema,\n `properties.${key}`,\n null\n )\n const requiredFields: string[] = get(schema, 'required', [])\n if (!subSchema) return null\n return (\n <EditComponent\n key={`${id}[${key}]`}\n id={`${id}[${key}]`}\n schema={subSchema}\n val={value && key in value ? value[key] : ''}\n placeholder={subSchema?.title ?? ''}\n required={requiredFields.includes(key)}\n setValue={(ev) => {\n setValue({ ...value, [key]: ev } as IndexSignature)\n }}\n dataTest={`${key}TestInput`}\n />\n )\n })}\n </>\n )\n }\n const getInputType = () => {\n switch (schema?.type) {\n case 'integer':\n return 'number'\n case 'date':\n return 'date'\n case 'datetime':\n return 'datetime-local'\n case 'time':\n return 'time'\n default:\n return 'text'\n }\n }\n return (\n <Input\n value={(val || '') as string}\n className={className}\n dataTest={dataTest}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLInputElement>}\n type={getInputType()}\n required={required}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n)\n\nEditComponent.displayName = 'EditComponent'\nexport default EditComponent\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\ninterface Props {\n properties: {\n file: GuillotinaSchemaProperty\n }\n values: {\n file: GuillotinaFile\n }\n}\n\nexport function IAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'attachment_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values.file}\n ns=\"guillotina.behaviors.attachment.IAttachment\"\n schema={properties.file}\n modifyContent={modifyContent && ['file'].includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { Input } from '../input/input'\nimport { FileUpload } from '../input/upload'\nimport { Button } from '../input/button'\nimport { useState } from 'react'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport ErrorZone from '../error_zone'\nimport { EditableField } from '../fields/editableField'\nimport { Delete } from '../ui'\nimport { Confirm } from '../modal'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { LightFile } from '../../types/global'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/files/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.file_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/files/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['files']).map((key) => (\n <tr key={'multiattachment_' + key}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`files/${key}`}\n value={values['files'][key]}\n ns=\"guillotina.behaviors.attachment.IMultiAttachment.files\"\n schema={\n get(\n properties,\n 'files.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['files']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_files_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_a_file)}\n </label>\n <form className=\"columns\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <ErrorZone>{error}</ErrorZone>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Delete } from '../ui'\nimport { Button } from '../input/button'\nimport { FileUpload } from '../input/upload'\nimport { Confirm } from '../modal'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { LightFile } from '../../types/global'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n image: GuillotinaFile\n }\n}\nexport function IImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n const [file, setFile] = useState<LightFile | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const [showConfirmToDelete, setShowConfirmToDelete] = useState(false)\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/image`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/image/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (_err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(null)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/image`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {showConfirmToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setShowConfirmToDelete(false)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_image\n )}\n />\n )}\n {values['image'] && (\n <tr>\n <td key={1} style={{ width: '150px' }}>\n {intl.formatMessage(genericMessages.image)}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={'image'}\n value={values['image']}\n ns=\"guillotina.behaviors.behaviors.IImageAttachment\"\n schema={properties['image'] as GuillotinaSchemaProperty}\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setShowConfirmToDelete(true)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formImageAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\n\nimport { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Table } from '../ui'\nimport { Input } from '../input/input'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { LightFile } from '../../types/global'\nimport { get } from '../../lib/utils'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (_err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['images']).map((key) => (\n <tr key={`multiimageattachment_${key}`}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={\n get(\n properties,\n 'images.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['images']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {' '}\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form className=\"columns\" data-test=\"formMultiimageAttachmentTest\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <p className=\"help is-danger\">{error}</p>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","// src/utils/formatProdErrorMessage.ts\nfunction formatProdErrorMessage(code) {\n return `Minified Redux error #${code}; visit https://redux.js.org/Errors?code=${code} for the full message or use the non-minified dev environment for full errors. `;\n}\n\n// src/utils/symbol-observable.ts\nvar $$observable = /* @__PURE__ */ (() => typeof Symbol === \"function\" && Symbol.observable || \"@@observable\")();\nvar symbol_observable_default = $$observable;\n\n// src/utils/actionTypes.ts\nvar randomString = () => Math.random().toString(36).substring(7).split(\"\").join(\".\");\nvar ActionTypes = {\n INIT: `@@redux/INIT${/* @__PURE__ */ randomString()}`,\n REPLACE: `@@redux/REPLACE${/* @__PURE__ */ randomString()}`,\n PROBE_UNKNOWN_ACTION: () => `@@redux/PROBE_UNKNOWN_ACTION${randomString()}`\n};\nvar actionTypes_default = ActionTypes;\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null)\n return false;\n let proto = obj;\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto || Object.getPrototypeOf(obj) === null;\n}\n\n// src/utils/kindOf.ts\nfunction miniKindOf(val) {\n if (val === void 0)\n return \"undefined\";\n if (val === null)\n return \"null\";\n const type = typeof val;\n switch (type) {\n case \"boolean\":\n case \"string\":\n case \"number\":\n case \"symbol\":\n case \"function\": {\n return type;\n }\n }\n if (Array.isArray(val))\n return \"array\";\n if (isDate(val))\n return \"date\";\n if (isError(val))\n return \"error\";\n const constructorName = ctorName(val);\n switch (constructorName) {\n case \"Symbol\":\n case \"Promise\":\n case \"WeakMap\":\n case \"WeakSet\":\n case \"Map\":\n case \"Set\":\n return constructorName;\n }\n return Object.prototype.toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, \"\");\n}\nfunction ctorName(val) {\n return typeof val.constructor === \"function\" ? val.constructor.name : null;\n}\nfunction isError(val) {\n return val instanceof Error || typeof val.message === \"string\" && val.constructor && typeof val.constructor.stackTraceLimit === \"number\";\n}\nfunction isDate(val) {\n if (val instanceof Date)\n return true;\n return typeof val.toDateString === \"function\" && typeof val.getDate === \"function\" && typeof val.setDate === \"function\";\n}\nfunction kindOf(val) {\n let typeOfVal = typeof val;\n if (process.env.NODE_ENV !== \"production\") {\n typeOfVal = miniKindOf(val);\n }\n return typeOfVal;\n}\n\n// src/createStore.ts\nfunction createStore(reducer, preloadedState, enhancer) {\n if (typeof reducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : `Expected the root reducer to be a function. Instead, received: '${kindOf(reducer)}'`);\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"function\" || typeof enhancer === \"function\" && typeof arguments[3] === \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : \"It looks like you are passing several store enhancers to createStore(). This is not supported. Instead, compose them together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.\");\n }\n if (typeof preloadedState === \"function\" && typeof enhancer === \"undefined\") {\n enhancer = preloadedState;\n preloadedState = void 0;\n }\n if (typeof enhancer !== \"undefined\") {\n if (typeof enhancer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : `Expected the enhancer to be a function. Instead, received: '${kindOf(enhancer)}'`);\n }\n return enhancer(createStore)(reducer, preloadedState);\n }\n let currentReducer = reducer;\n let currentState = preloadedState;\n let currentListeners = /* @__PURE__ */ new Map();\n let nextListeners = currentListeners;\n let listenerIdCounter = 0;\n let isDispatching = false;\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = /* @__PURE__ */ new Map();\n currentListeners.forEach((listener, key) => {\n nextListeners.set(key, listener);\n });\n }\n }\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : \"You may not call store.getState() while the reducer is executing. The reducer has already received the state as an argument. Pass it down from the top reducer instead of reading it from the store.\");\n }\n return currentState;\n }\n function subscribe(listener) {\n if (typeof listener !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : `Expected the listener to be a function. Instead, received: '${kindOf(listener)}'`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : \"You may not call store.subscribe() while the reducer is executing. If you would like to be notified after the store has been updated, subscribe from a component and invoke store.getState() in the callback to access the latest state. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n let isSubscribed = true;\n ensureCanMutateNextListeners();\n const listenerId = listenerIdCounter++;\n nextListeners.set(listenerId, listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : \"You may not unsubscribe from a store listener while the reducer is executing. See https://redux.js.org/api/store#subscribelistener for more details.\");\n }\n isSubscribed = false;\n ensureCanMutateNextListeners();\n nextListeners.delete(listenerId);\n currentListeners = null;\n };\n }\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : `Actions must be plain objects. Instead, the actual type was: '${kindOf(action)}'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.`);\n }\n if (typeof action.type === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n if (typeof action.type !== \"string\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(17) : `Action \"type\" property must be a string. Instead, the actual type was: '${kindOf(action.type)}'. Value was: '${action.type}' (stringified)`);\n }\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : \"Reducers may not dispatch actions.\");\n }\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n const listeners = currentListeners = nextListeners;\n listeners.forEach((listener) => {\n listener();\n });\n return action;\n }\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== \"function\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : `Expected the nextReducer to be a function. Instead, received: '${kindOf(nextReducer)}`);\n }\n currentReducer = nextReducer;\n dispatch({\n type: actionTypes_default.REPLACE\n });\n }\n function observable() {\n const outerSubscribe = subscribe;\n return {\n /**\n * The minimal observable subscription method.\n * @param observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe(observer) {\n if (typeof observer !== \"object\" || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : `Expected the observer to be an object. Instead, received: '${kindOf(observer)}'`);\n }\n function observeState() {\n const observerAsObserver = observer;\n if (observerAsObserver.next) {\n observerAsObserver.next(getState());\n }\n }\n observeState();\n const unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe\n };\n },\n [symbol_observable_default]() {\n return this;\n }\n };\n }\n dispatch({\n type: actionTypes_default.INIT\n });\n const store = {\n dispatch,\n subscribe,\n getState,\n replaceReducer,\n [symbol_observable_default]: observable\n };\n return store;\n}\nfunction legacy_createStore(reducer, preloadedState, enhancer) {\n return createStore(reducer, preloadedState, enhancer);\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/combineReducers.ts\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n const reducerKeys = Object.keys(reducers);\n const argumentName = action && action.type === actionTypes_default.INIT ? \"preloadedState argument passed to createStore\" : \"previous state received by the reducer\";\n if (reducerKeys.length === 0) {\n return \"Store does not have a valid reducer. Make sure the argument passed to combineReducers is an object whose values are reducers.\";\n }\n if (!isPlainObject(inputState)) {\n return `The ${argumentName} has unexpected type of \"${kindOf(inputState)}\". Expected argument to be an object with the following keys: \"${reducerKeys.join('\", \"')}\"`;\n }\n const unexpectedKeys = Object.keys(inputState).filter((key) => !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]);\n unexpectedKeys.forEach((key) => {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === actionTypes_default.REPLACE)\n return;\n if (unexpectedKeys.length > 0) {\n return `Unexpected ${unexpectedKeys.length > 1 ? \"keys\" : \"key\"} \"${unexpectedKeys.join('\", \"')}\" found in ${argumentName}. Expected to find one of the known reducer keys instead: \"${reducerKeys.join('\", \"')}\". Unexpected keys will be ignored.`;\n }\n}\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach((key) => {\n const reducer = reducers[key];\n const initialState = reducer(void 0, {\n type: actionTypes_default.INIT\n });\n if (typeof initialState === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : `The slice reducer for key \"${key}\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);\n }\n if (typeof reducer(void 0, {\n type: actionTypes_default.PROBE_UNKNOWN_ACTION()\n }) === \"undefined\") {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : `The slice reducer for key \"${key}\" returned undefined when probed with a random type. Don't try to handle '${actionTypes_default.INIT}' or other actions in \"redux/*\" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.`);\n }\n });\n}\nfunction combineReducers(reducers) {\n const reducerKeys = Object.keys(reducers);\n const finalReducers = {};\n for (let i = 0; i < reducerKeys.length; i++) {\n const key = reducerKeys[i];\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof reducers[key] === \"undefined\") {\n warning(`No reducer provided for key \"${key}\"`);\n }\n }\n if (typeof reducers[key] === \"function\") {\n finalReducers[key] = reducers[key];\n }\n }\n const finalReducerKeys = Object.keys(finalReducers);\n let unexpectedKeyCache;\n if (process.env.NODE_ENV !== \"production\") {\n unexpectedKeyCache = {};\n }\n let shapeAssertionError;\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n return function combination(state = {}, action) {\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n if (process.env.NODE_ENV !== \"production\") {\n const warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n let hasChanged = false;\n const nextState = {};\n for (let i = 0; i < finalReducerKeys.length; i++) {\n const key = finalReducerKeys[i];\n const reducer = finalReducers[key];\n const previousStateForKey = state[key];\n const nextStateForKey = reducer(previousStateForKey, action);\n if (typeof nextStateForKey === \"undefined\") {\n const actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : `When called with an action of type ${actionType ? `\"${String(actionType)}\"` : \"(unknown type)\"}, the slice reducer for key \"${key}\" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.`);\n }\n nextState[key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\n// src/bindActionCreators.ts\nfunction bindActionCreator(actionCreator, dispatch) {\n return function(...args) {\n return dispatch(actionCreator.apply(this, args));\n };\n}\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === \"function\") {\n return bindActionCreator(actionCreators, dispatch);\n }\n if (typeof actionCreators !== \"object\" || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : `bindActionCreators expected an object or a function, but instead received: '${kindOf(actionCreators)}'. Did you write \"import ActionCreators from\" instead of \"import * as ActionCreators from\"?`);\n }\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n return boundActionCreators;\n}\n\n// src/compose.ts\nfunction compose(...funcs) {\n if (funcs.length === 0) {\n return (arg) => arg;\n }\n if (funcs.length === 1) {\n return funcs[0];\n }\n return funcs.reduce((a, b) => (...args) => a(b(...args)));\n}\n\n// src/applyMiddleware.ts\nfunction applyMiddleware(...middlewares) {\n return (createStore2) => (reducer, preloadedState) => {\n const store = createStore2(reducer, preloadedState);\n let dispatch = () => {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : \"Dispatching while constructing your middleware is not allowed. Other middleware would not be applied to this dispatch.\");\n };\n const middlewareAPI = {\n getState: store.getState,\n dispatch: (action, ...args) => dispatch(action, ...args)\n };\n const chain = middlewares.map((middleware) => middleware(middlewareAPI));\n dispatch = compose(...chain)(store.dispatch);\n return {\n ...store,\n dispatch\n };\n };\n}\n\n// src/utils/isAction.ts\nfunction isAction(action) {\n return isPlainObject(action) && \"type\" in action && typeof action.type === \"string\";\n}\nexport {\n actionTypes_default as __DO_NOT_USE__ActionTypes,\n applyMiddleware,\n bindActionCreators,\n combineReducers,\n compose,\n createStore,\n isAction,\n isPlainObject,\n legacy_createStore\n};\n//# sourceMappingURL=redux.mjs.map","/**\n * @license React\n * use-sync-external-store-with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = React.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/use-sync-external-store-with-selector.production.js');\n} else {\n module.exports = require('./cjs/use-sync-external-store-with-selector.development.js');\n}\n","// src/utils/react.ts\nimport * as React from \"react\";\n\n// src/utils/react-is.ts\nvar IS_REACT_19 = /* @__PURE__ */ React.version.startsWith(\"19\");\nvar REACT_ELEMENT_TYPE = /* @__PURE__ */ Symbol.for(\n IS_REACT_19 ? \"react.transitional.element\" : \"react.element\"\n);\nvar REACT_PORTAL_TYPE = /* @__PURE__ */ Symbol.for(\"react.portal\");\nvar REACT_FRAGMENT_TYPE = /* @__PURE__ */ Symbol.for(\"react.fragment\");\nvar REACT_STRICT_MODE_TYPE = /* @__PURE__ */ Symbol.for(\"react.strict_mode\");\nvar REACT_PROFILER_TYPE = /* @__PURE__ */ Symbol.for(\"react.profiler\");\nvar REACT_CONSUMER_TYPE = /* @__PURE__ */ Symbol.for(\"react.consumer\");\nvar REACT_CONTEXT_TYPE = /* @__PURE__ */ Symbol.for(\"react.context\");\nvar REACT_FORWARD_REF_TYPE = /* @__PURE__ */ Symbol.for(\"react.forward_ref\");\nvar REACT_SUSPENSE_TYPE = /* @__PURE__ */ Symbol.for(\"react.suspense\");\nvar REACT_SUSPENSE_LIST_TYPE = /* @__PURE__ */ Symbol.for(\n \"react.suspense_list\"\n);\nvar REACT_MEMO_TYPE = /* @__PURE__ */ Symbol.for(\"react.memo\");\nvar REACT_LAZY_TYPE = /* @__PURE__ */ Symbol.for(\"react.lazy\");\nvar REACT_OFFSCREEN_TYPE = /* @__PURE__ */ Symbol.for(\"react.offscreen\");\nvar REACT_CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for(\n \"react.client.reference\"\n);\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nfunction isValidElementType(type) {\n return typeof type === \"string\" || typeof type === \"function\" || type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_OFFSCREEN_TYPE || typeof type === \"object\" && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_CONSUMER_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_CLIENT_REFERENCE || type.getModuleId !== void 0) ? true : false;\n}\nfunction typeOf(object) {\n if (typeof object === \"object\" && object !== null) {\n const { $$typeof } = object;\n switch ($$typeof) {\n case REACT_ELEMENT_TYPE:\n switch (object = object.type, object) {\n case REACT_FRAGMENT_TYPE:\n case REACT_PROFILER_TYPE:\n case REACT_STRICT_MODE_TYPE:\n case REACT_SUSPENSE_TYPE:\n case REACT_SUSPENSE_LIST_TYPE:\n return object;\n default:\n switch (object = object && object.$$typeof, object) {\n case REACT_CONTEXT_TYPE:\n case REACT_FORWARD_REF_TYPE:\n case REACT_LAZY_TYPE:\n case REACT_MEMO_TYPE:\n return object;\n case REACT_CONSUMER_TYPE:\n return object;\n default:\n return $$typeof;\n }\n }\n case REACT_PORTAL_TYPE:\n return $$typeof;\n }\n }\n}\nfunction isContextConsumer(object) {\n return IS_REACT_19 ? typeOf(object) === REACT_CONSUMER_TYPE : typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isMemo(object) {\n return typeOf(object) === REACT_MEMO_TYPE;\n}\n\n// src/utils/warning.ts\nfunction warning(message) {\n if (typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(message);\n }\n try {\n throw new Error(message);\n } catch (e) {\n }\n}\n\n// src/connect/verifySubselectors.ts\nfunction verify(selector, methodName) {\n if (!selector) {\n throw new Error(`Unexpected value for ${methodName} in connect.`);\n } else if (methodName === \"mapStateToProps\" || methodName === \"mapDispatchToProps\") {\n if (!Object.prototype.hasOwnProperty.call(selector, \"dependsOnOwnProps\")) {\n warning(\n `The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`\n );\n }\n }\n}\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {\n verify(mapStateToProps, \"mapStateToProps\");\n verify(mapDispatchToProps, \"mapDispatchToProps\");\n verify(mergeProps, \"mergeProps\");\n}\n\n// src/connect/selectorFactory.ts\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n areStatesEqual,\n areOwnPropsEqual,\n areStatePropsEqual\n}) {\n let hasRunAtLeastOnce = false;\n let state;\n let ownProps;\n let stateProps;\n let dispatchProps;\n let mergedProps;\n function handleFirstCall(firstState, firstOwnProps) {\n state = firstState;\n ownProps = firstOwnProps;\n stateProps = mapStateToProps(state, ownProps);\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n hasRunAtLeastOnce = true;\n return mergedProps;\n }\n function handleNewPropsAndNewState() {\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps)\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewProps() {\n if (mapStateToProps.dependsOnOwnProps)\n stateProps = mapStateToProps(state, ownProps);\n if (mapDispatchToProps.dependsOnOwnProps)\n dispatchProps = mapDispatchToProps(dispatch, ownProps);\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleNewState() {\n const nextStateProps = mapStateToProps(state, ownProps);\n const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n stateProps = nextStateProps;\n if (statePropsChanged)\n mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n return mergedProps;\n }\n function handleSubsequentCalls(nextState, nextOwnProps) {\n const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n const stateChanged = !areStatesEqual(\n nextState,\n state,\n nextOwnProps,\n ownProps\n );\n state = nextState;\n ownProps = nextOwnProps;\n if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n if (propsChanged) return handleNewProps();\n if (stateChanged) return handleNewState();\n return mergedProps;\n }\n return function pureFinalPropsSelector(nextState, nextOwnProps) {\n return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n };\n}\nfunction finalPropsSelectorFactory(dispatch, {\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps,\n ...options\n}) {\n const mapStateToProps = initMapStateToProps(dispatch, options);\n const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n const mergeProps = initMergeProps(dispatch, options);\n if (process.env.NODE_ENV !== \"production\") {\n verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps);\n }\n return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}\n\n// src/utils/bindActionCreators.ts\nfunction bindActionCreators(actionCreators, dispatch) {\n const boundActionCreators = {};\n for (const key in actionCreators) {\n const actionCreator = actionCreators[key];\n if (typeof actionCreator === \"function\") {\n boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n }\n }\n return boundActionCreators;\n}\n\n// src/utils/isPlainObject.ts\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" || obj === null) return false;\n const proto = Object.getPrototypeOf(obj);\n if (proto === null) return true;\n let baseProto = proto;\n while (Object.getPrototypeOf(baseProto) !== null) {\n baseProto = Object.getPrototypeOf(baseProto);\n }\n return proto === baseProto;\n}\n\n// src/utils/verifyPlainObject.ts\nfunction verifyPlainObject(value, displayName, methodName) {\n if (!isPlainObject(value)) {\n warning(\n `${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`\n );\n }\n}\n\n// src/connect/wrapMapToProps.ts\nfunction wrapMapToPropsConstant(getConstant) {\n return function initConstantSelector(dispatch) {\n const constant = getConstant(dispatch);\n function constantSelector() {\n return constant;\n }\n constantSelector.dependsOnOwnProps = false;\n return constantSelector;\n };\n}\nfunction getDependsOnOwnProps(mapToProps) {\n return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n}\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n return function initProxySelector(dispatch, { displayName }) {\n const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, void 0);\n };\n proxy.dependsOnOwnProps = true;\n proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n proxy.mapToProps = mapToProps;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n let props = proxy(stateOrDispatch, ownProps);\n if (typeof props === \"function\") {\n proxy.mapToProps = props;\n proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n props = proxy(stateOrDispatch, ownProps);\n }\n if (process.env.NODE_ENV !== \"production\")\n verifyPlainObject(props, displayName, methodName);\n return props;\n };\n return proxy;\n };\n}\n\n// src/connect/invalidArgFactory.ts\nfunction createInvalidArgFactory(arg, name) {\n return (dispatch, options) => {\n throw new Error(\n `Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`\n );\n };\n}\n\n// src/connect/mapDispatchToProps.ts\nfunction mapDispatchToPropsFactory(mapDispatchToProps) {\n return mapDispatchToProps && typeof mapDispatchToProps === \"object\" ? wrapMapToPropsConstant(\n (dispatch) => (\n // @ts-ignore\n bindActionCreators(mapDispatchToProps, dispatch)\n )\n ) : !mapDispatchToProps ? wrapMapToPropsConstant((dispatch) => ({\n dispatch\n })) : typeof mapDispatchToProps === \"function\" ? (\n // @ts-ignore\n wrapMapToPropsFunc(mapDispatchToProps, \"mapDispatchToProps\")\n ) : createInvalidArgFactory(mapDispatchToProps, \"mapDispatchToProps\");\n}\n\n// src/connect/mapStateToProps.ts\nfunction mapStateToPropsFactory(mapStateToProps) {\n return !mapStateToProps ? wrapMapToPropsConstant(() => ({})) : typeof mapStateToProps === \"function\" ? (\n // @ts-ignore\n wrapMapToPropsFunc(mapStateToProps, \"mapStateToProps\")\n ) : createInvalidArgFactory(mapStateToProps, \"mapStateToProps\");\n}\n\n// src/connect/mergeProps.ts\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n return { ...ownProps, ...stateProps, ...dispatchProps };\n}\nfunction wrapMergePropsFunc(mergeProps) {\n return function initMergePropsProxy(dispatch, { displayName, areMergedPropsEqual }) {\n let hasRunOnce = false;\n let mergedProps;\n return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n if (hasRunOnce) {\n if (!areMergedPropsEqual(nextMergedProps, mergedProps))\n mergedProps = nextMergedProps;\n } else {\n hasRunOnce = true;\n mergedProps = nextMergedProps;\n if (process.env.NODE_ENV !== \"production\")\n verifyPlainObject(mergedProps, displayName, \"mergeProps\");\n }\n return mergedProps;\n };\n };\n}\nfunction mergePropsFactory(mergeProps) {\n return !mergeProps ? () => defaultMergeProps : typeof mergeProps === \"function\" ? wrapMergePropsFunc(mergeProps) : createInvalidArgFactory(mergeProps, \"mergeProps\");\n}\n\n// src/utils/batch.ts\nfunction defaultNoopBatch(callback) {\n callback();\n}\n\n// src/utils/Subscription.ts\nfunction createListenerCollection() {\n let first = null;\n let last = null;\n return {\n clear() {\n first = null;\n last = null;\n },\n notify() {\n defaultNoopBatch(() => {\n let listener = first;\n while (listener) {\n listener.callback();\n listener = listener.next;\n }\n });\n },\n get() {\n const listeners = [];\n let listener = first;\n while (listener) {\n listeners.push(listener);\n listener = listener.next;\n }\n return listeners;\n },\n subscribe(callback) {\n let isSubscribed = true;\n const listener = last = {\n callback,\n next: null,\n prev: last\n };\n if (listener.prev) {\n listener.prev.next = listener;\n } else {\n first = listener;\n }\n return function unsubscribe() {\n if (!isSubscribed || first === null) return;\n isSubscribed = false;\n if (listener.next) {\n listener.next.prev = listener.prev;\n } else {\n last = listener.prev;\n }\n if (listener.prev) {\n listener.prev.next = listener.next;\n } else {\n first = listener.next;\n }\n };\n }\n };\n}\nvar nullListeners = {\n notify() {\n },\n get: () => []\n};\nfunction createSubscription(store, parentSub) {\n let unsubscribe;\n let listeners = nullListeners;\n let subscriptionsAmount = 0;\n let selfSubscribed = false;\n function addNestedSub(listener) {\n trySubscribe();\n const cleanupListener = listeners.subscribe(listener);\n let removed = false;\n return () => {\n if (!removed) {\n removed = true;\n cleanupListener();\n tryUnsubscribe();\n }\n };\n }\n function notifyNestedSubs() {\n listeners.notify();\n }\n function handleChangeWrapper() {\n if (subscription.onStateChange) {\n subscription.onStateChange();\n }\n }\n function isSubscribed() {\n return selfSubscribed;\n }\n function trySubscribe() {\n subscriptionsAmount++;\n if (!unsubscribe) {\n unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n listeners = createListenerCollection();\n }\n }\n function tryUnsubscribe() {\n subscriptionsAmount--;\n if (unsubscribe && subscriptionsAmount === 0) {\n unsubscribe();\n unsubscribe = void 0;\n listeners.clear();\n listeners = nullListeners;\n }\n }\n function trySubscribeSelf() {\n if (!selfSubscribed) {\n selfSubscribed = true;\n trySubscribe();\n }\n }\n function tryUnsubscribeSelf() {\n if (selfSubscribed) {\n selfSubscribed = false;\n tryUnsubscribe();\n }\n }\n const subscription = {\n addNestedSub,\n notifyNestedSubs,\n handleChangeWrapper,\n isSubscribed,\n trySubscribe: trySubscribeSelf,\n tryUnsubscribe: tryUnsubscribeSelf,\n getListeners: () => listeners\n };\n return subscription;\n}\n\n// src/utils/useIsomorphicLayoutEffect.ts\nvar canUseDOM = () => !!(typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\");\nvar isDOM = /* @__PURE__ */ canUseDOM();\nvar isRunningInReactNative = () => typeof navigator !== \"undefined\" && navigator.product === \"ReactNative\";\nvar isReactNative = /* @__PURE__ */ isRunningInReactNative();\nvar getUseIsomorphicLayoutEffect = () => isDOM || isReactNative ? React.useLayoutEffect : React.useEffect;\nvar useIsomorphicLayoutEffect = /* @__PURE__ */ getUseIsomorphicLayoutEffect();\n\n// src/utils/shallowEqual.ts\nfunction is(x, y) {\n if (x === y) {\n return x !== 0 || y !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) return true;\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false;\n }\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n if (keysA.length !== keysB.length) return false;\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n return true;\n}\n\n// src/utils/hoistStatics.ts\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n $$typeof: true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n $$typeof: true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {\n [ForwardRef]: FORWARD_REF_STATICS,\n [Memo]: MEMO_STATICS\n};\nfunction getStatics(component) {\n if (isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n}\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent) {\n if (typeof sourceComponent !== \"string\") {\n if (objectPrototype) {\n const inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent);\n }\n }\n let keys = getOwnPropertyNames(sourceComponent);\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n const targetStatics = getStatics(targetComponent);\n const sourceStatics = getStatics(sourceComponent);\n for (let i = 0; i < keys.length; ++i) {\n const key = keys[i];\n if (!KNOWN_STATICS[key] && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n const descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {\n }\n }\n }\n }\n return targetComponent;\n}\n\n// src/components/Context.ts\nvar ContextKey = /* @__PURE__ */ Symbol.for(`react-redux-context`);\nvar gT = typeof globalThis !== \"undefined\" ? globalThis : (\n /* fall back to a per-module scope (pre-8.1 behaviour) if `globalThis` is not available */\n {}\n);\nfunction getContext() {\n if (!React.createContext) return {};\n const contextMap = gT[ContextKey] ??= /* @__PURE__ */ new Map();\n let realContext = contextMap.get(React.createContext);\n if (!realContext) {\n realContext = React.createContext(\n null\n );\n if (process.env.NODE_ENV !== \"production\") {\n realContext.displayName = \"ReactRedux\";\n }\n contextMap.set(React.createContext, realContext);\n }\n return realContext;\n}\nvar ReactReduxContext = /* @__PURE__ */ getContext();\n\n// src/components/connect.tsx\nvar NO_SUBSCRIPTION_ARRAY = [null, null];\nvar stringifyComponent = (Comp) => {\n try {\n return JSON.stringify(Comp);\n } catch (err) {\n return String(Comp);\n }\n};\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n useIsomorphicLayoutEffect(() => effectFunc(...effectArgs), dependencies);\n}\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs) {\n lastWrapperProps.current = wrapperProps;\n renderIsScheduled.current = false;\n if (childPropsFromStoreUpdate.current) {\n childPropsFromStoreUpdate.current = null;\n notifyNestedSubs();\n }\n}\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, additionalSubscribeListener) {\n if (!shouldHandleStateChanges) return () => {\n };\n let didUnsubscribe = false;\n let lastThrownError = null;\n const checkForUpdates = () => {\n if (didUnsubscribe || !isMounted.current) {\n return;\n }\n const latestStoreState = store.getState();\n let newChildProps, error;\n try {\n newChildProps = childPropsSelector(\n latestStoreState,\n lastWrapperProps.current\n );\n } catch (e) {\n error = e;\n lastThrownError = e;\n }\n if (!error) {\n lastThrownError = null;\n }\n if (newChildProps === lastChildProps.current) {\n if (!renderIsScheduled.current) {\n notifyNestedSubs();\n }\n } else {\n lastChildProps.current = newChildProps;\n childPropsFromStoreUpdate.current = newChildProps;\n renderIsScheduled.current = true;\n additionalSubscribeListener();\n }\n };\n subscription.onStateChange = checkForUpdates;\n subscription.trySubscribe();\n checkForUpdates();\n const unsubscribeWrapper = () => {\n didUnsubscribe = true;\n subscription.tryUnsubscribe();\n subscription.onStateChange = null;\n if (lastThrownError) {\n throw lastThrownError;\n }\n };\n return unsubscribeWrapper;\n}\nfunction strictEqual(a, b) {\n return a === b;\n}\nvar hasWarnedAboutDeprecatedPureOption = false;\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n // @ts-ignore\n pure,\n areStatesEqual = strictEqual,\n areOwnPropsEqual = shallowEqual,\n areStatePropsEqual = shallowEqual,\n areMergedPropsEqual = shallowEqual,\n // use React's forwardRef to expose a ref of the wrapped component\n forwardRef = false,\n // the context consumer to use\n context = ReactReduxContext\n} = {}) {\n if (process.env.NODE_ENV !== \"production\") {\n if (pure !== void 0 && !hasWarnedAboutDeprecatedPureOption) {\n hasWarnedAboutDeprecatedPureOption = true;\n warning(\n 'The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component'\n );\n }\n }\n const Context = context;\n const initMapStateToProps = mapStateToPropsFactory(mapStateToProps);\n const initMapDispatchToProps = mapDispatchToPropsFactory(mapDispatchToProps);\n const initMergeProps = mergePropsFactory(mergeProps);\n const shouldHandleStateChanges = Boolean(mapStateToProps);\n const wrapWithConnect = (WrappedComponent) => {\n if (process.env.NODE_ENV !== \"production\") {\n const isValid = /* @__PURE__ */ isValidElementType(WrappedComponent);\n if (!isValid)\n throw new Error(\n `You must pass a component to the function returned by connect. Instead received ${stringifyComponent(\n WrappedComponent\n )}`\n );\n }\n const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || \"Component\";\n const displayName = `Connect(${wrappedComponentName})`;\n const selectorFactoryOptions = {\n shouldHandleStateChanges,\n displayName,\n wrappedComponentName,\n WrappedComponent,\n // @ts-ignore\n initMapStateToProps,\n initMapDispatchToProps,\n initMergeProps,\n areStatesEqual,\n areStatePropsEqual,\n areOwnPropsEqual,\n areMergedPropsEqual\n };\n function ConnectFunction(props) {\n const [propsContext, reactReduxForwardedRef, wrapperProps] = React.useMemo(() => {\n const { reactReduxForwardedRef: reactReduxForwardedRef2, ...wrapperProps2 } = props;\n return [props.context, reactReduxForwardedRef2, wrapperProps2];\n }, [props]);\n const ContextToUse = React.useMemo(() => {\n let ResultContext = Context;\n if (propsContext?.Consumer) {\n if (process.env.NODE_ENV !== \"production\") {\n const isValid = /* @__PURE__ */ isContextConsumer(\n // @ts-ignore\n /* @__PURE__ */ React.createElement(propsContext.Consumer, null)\n );\n if (!isValid) {\n throw new Error(\n \"You must pass a valid React context consumer as `props.context`\"\n );\n }\n ResultContext = propsContext;\n }\n }\n return ResultContext;\n }, [propsContext, Context]);\n const contextValue = React.useContext(ContextToUse);\n const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n if (process.env.NODE_ENV !== \"production\" && !didStoreComeFromProps && !didStoreComeFromContext) {\n throw new Error(\n `Could not find \"store\" in the context of \"${displayName}\". Either wrap the root component in a <Provider>, or pass a custom React context provider to <Provider> and the corresponding React context consumer to ${displayName} in connect options.`\n );\n }\n const store = didStoreComeFromProps ? props.store : contextValue.store;\n const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n const childPropsSelector = React.useMemo(() => {\n return finalPropsSelectorFactory(store.dispatch, selectorFactoryOptions);\n }, [store]);\n const [subscription, notifyNestedSubs] = React.useMemo(() => {\n if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY;\n const subscription2 = createSubscription(\n store,\n didStoreComeFromProps ? void 0 : contextValue.subscription\n );\n const notifyNestedSubs2 = subscription2.notifyNestedSubs.bind(subscription2);\n return [subscription2, notifyNestedSubs2];\n }, [store, didStoreComeFromProps, contextValue]);\n const overriddenContextValue = React.useMemo(() => {\n if (didStoreComeFromProps) {\n return contextValue;\n }\n return {\n ...contextValue,\n subscription\n };\n }, [didStoreComeFromProps, contextValue, subscription]);\n const lastChildProps = React.useRef(void 0);\n const lastWrapperProps = React.useRef(wrapperProps);\n const childPropsFromStoreUpdate = React.useRef(void 0);\n const renderIsScheduled = React.useRef(false);\n const isMounted = React.useRef(false);\n const latestSubscriptionCallbackError = React.useRef(\n void 0\n );\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const actualChildPropsSelector = React.useMemo(() => {\n const selector = () => {\n if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n return childPropsFromStoreUpdate.current;\n }\n return childPropsSelector(store.getState(), wrapperProps);\n };\n return selector;\n }, [store, wrapperProps]);\n const subscribeForReact = React.useMemo(() => {\n const subscribe = (reactListener) => {\n if (!subscription) {\n return () => {\n };\n }\n return subscribeUpdates(\n shouldHandleStateChanges,\n store,\n subscription,\n // @ts-ignore\n childPropsSelector,\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n isMounted,\n childPropsFromStoreUpdate,\n notifyNestedSubs,\n reactListener\n );\n };\n return subscribe;\n }, [subscription]);\n useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [\n lastWrapperProps,\n lastChildProps,\n renderIsScheduled,\n wrapperProps,\n childPropsFromStoreUpdate,\n notifyNestedSubs\n ]);\n let actualChildProps;\n try {\n actualChildProps = React.useSyncExternalStore(\n // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n subscribeForReact,\n // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n actualChildPropsSelector,\n getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector\n );\n } catch (err) {\n if (latestSubscriptionCallbackError.current) {\n ;\n err.message += `\nThe error may be correlated with this previous error:\n${latestSubscriptionCallbackError.current.stack}\n\n`;\n }\n throw err;\n }\n useIsomorphicLayoutEffect(() => {\n latestSubscriptionCallbackError.current = void 0;\n childPropsFromStoreUpdate.current = void 0;\n lastChildProps.current = actualChildProps;\n });\n const renderedWrappedComponent = React.useMemo(() => {\n return (\n // @ts-ignore\n /* @__PURE__ */ React.createElement(\n WrappedComponent,\n {\n ...actualChildProps,\n ref: reactReduxForwardedRef\n }\n )\n );\n }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]);\n const renderedChild = React.useMemo(() => {\n if (shouldHandleStateChanges) {\n return /* @__PURE__ */ React.createElement(ContextToUse.Provider, { value: overriddenContextValue }, renderedWrappedComponent);\n }\n return renderedWrappedComponent;\n }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n return renderedChild;\n }\n const _Connect = React.memo(ConnectFunction);\n const Connect = _Connect;\n Connect.WrappedComponent = WrappedComponent;\n Connect.displayName = ConnectFunction.displayName = displayName;\n if (forwardRef) {\n const _forwarded = React.forwardRef(\n function forwardConnectRef(props, ref) {\n return /* @__PURE__ */ React.createElement(Connect, { ...props, reactReduxForwardedRef: ref });\n }\n );\n const forwarded = _forwarded;\n forwarded.displayName = displayName;\n forwarded.WrappedComponent = WrappedComponent;\n return /* @__PURE__ */ hoistNonReactStatics(forwarded, WrappedComponent);\n }\n return /* @__PURE__ */ hoistNonReactStatics(Connect, WrappedComponent);\n };\n return wrapWithConnect;\n}\nvar connect_default = connect;\n\n// src/components/Provider.tsx\nfunction Provider(providerProps) {\n const { children, context, serverState, store } = providerProps;\n const contextValue = React.useMemo(() => {\n const subscription = createSubscription(store);\n const baseContextValue = {\n store,\n subscription,\n getServerState: serverState ? () => serverState : void 0\n };\n if (process.env.NODE_ENV === \"production\") {\n return baseContextValue;\n } else {\n const { identityFunctionCheck = \"once\", stabilityCheck = \"once\" } = providerProps;\n return /* @__PURE__ */ Object.assign(baseContextValue, {\n stabilityCheck,\n identityFunctionCheck\n });\n }\n }, [store, serverState]);\n const previousState = React.useMemo(() => store.getState(), [store]);\n useIsomorphicLayoutEffect(() => {\n const { subscription } = contextValue;\n subscription.onStateChange = subscription.notifyNestedSubs;\n subscription.trySubscribe();\n if (previousState !== store.getState()) {\n subscription.notifyNestedSubs();\n }\n return () => {\n subscription.tryUnsubscribe();\n subscription.onStateChange = void 0;\n };\n }, [contextValue, previousState]);\n const Context = context || ReactReduxContext;\n return /* @__PURE__ */ React.createElement(Context.Provider, { value: contextValue }, children);\n}\nvar Provider_default = Provider;\n\n// src/hooks/useReduxContext.ts\nfunction createReduxContextHook(context = ReactReduxContext) {\n return function useReduxContext2() {\n const contextValue = React.useContext(context);\n if (process.env.NODE_ENV !== \"production\" && !contextValue) {\n throw new Error(\n \"could not find react-redux context value; please ensure the component is wrapped in a <Provider>\"\n );\n }\n return contextValue;\n };\n}\nvar useReduxContext = /* @__PURE__ */ createReduxContextHook();\n\n// src/hooks/useStore.ts\nfunction createStoreHook(context = ReactReduxContext) {\n const useReduxContext2 = context === ReactReduxContext ? useReduxContext : (\n // @ts-ignore\n createReduxContextHook(context)\n );\n const useStore2 = () => {\n const { store } = useReduxContext2();\n return store;\n };\n Object.assign(useStore2, {\n withTypes: () => useStore2\n });\n return useStore2;\n}\nvar useStore = /* @__PURE__ */ createStoreHook();\n\n// src/hooks/useDispatch.ts\nfunction createDispatchHook(context = ReactReduxContext) {\n const useStore2 = context === ReactReduxContext ? useStore : createStoreHook(context);\n const useDispatch2 = () => {\n const store = useStore2();\n return store.dispatch;\n };\n Object.assign(useDispatch2, {\n withTypes: () => useDispatch2\n });\n return useDispatch2;\n}\nvar useDispatch = /* @__PURE__ */ createDispatchHook();\n\n// src/hooks/useSelector.ts\nimport { useSyncExternalStoreWithSelector } from \"use-sync-external-store/with-selector.js\";\nvar refEquality = (a, b) => a === b;\nfunction createSelectorHook(context = ReactReduxContext) {\n const useReduxContext2 = context === ReactReduxContext ? useReduxContext : createReduxContextHook(context);\n const useSelector2 = (selector, equalityFnOrOptions = {}) => {\n const { equalityFn = refEquality } = typeof equalityFnOrOptions === \"function\" ? { equalityFn: equalityFnOrOptions } : equalityFnOrOptions;\n if (process.env.NODE_ENV !== \"production\") {\n if (!selector) {\n throw new Error(`You must pass a selector to useSelector`);\n }\n if (typeof selector !== \"function\") {\n throw new Error(`You must pass a function as a selector to useSelector`);\n }\n if (typeof equalityFn !== \"function\") {\n throw new Error(\n `You must pass a function as an equality function to useSelector`\n );\n }\n }\n const reduxContext = useReduxContext2();\n const { store, subscription, getServerState } = reduxContext;\n const firstRun = React.useRef(true);\n const wrappedSelector = React.useCallback(\n {\n [selector.name](state) {\n const selected = selector(state);\n if (process.env.NODE_ENV !== \"production\") {\n const { devModeChecks = {} } = typeof equalityFnOrOptions === \"function\" ? {} : equalityFnOrOptions;\n const { identityFunctionCheck, stabilityCheck } = reduxContext;\n const {\n identityFunctionCheck: finalIdentityFunctionCheck,\n stabilityCheck: finalStabilityCheck\n } = {\n stabilityCheck,\n identityFunctionCheck,\n ...devModeChecks\n };\n if (finalStabilityCheck === \"always\" || finalStabilityCheck === \"once\" && firstRun.current) {\n const toCompare = selector(state);\n if (!equalityFn(selected, toCompare)) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"Selector \" + (selector.name || \"unknown\") + \" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization\",\n {\n state,\n selected,\n selected2: toCompare,\n stack\n }\n );\n }\n }\n if (finalIdentityFunctionCheck === \"always\" || finalIdentityFunctionCheck === \"once\" && firstRun.current) {\n if (selected === state) {\n let stack = void 0;\n try {\n throw new Error();\n } catch (e) {\n ;\n ({ stack } = e);\n }\n console.warn(\n \"Selector \" + (selector.name || \"unknown\") + \" returned the root state when called. This can lead to unnecessary rerenders.\\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.\",\n { stack }\n );\n }\n }\n if (firstRun.current) firstRun.current = false;\n }\n return selected;\n }\n }[selector.name],\n [selector]\n );\n const selectedState = useSyncExternalStoreWithSelector(\n subscription.addNestedSub,\n store.getState,\n getServerState || store.getState,\n wrappedSelector,\n equalityFn\n );\n React.useDebugValue(selectedState);\n return selectedState;\n };\n Object.assign(useSelector2, {\n withTypes: () => useSelector2\n });\n return useSelector2;\n}\nvar useSelector = /* @__PURE__ */ createSelectorHook();\n\n// src/exports.ts\nvar batch = defaultNoopBatch;\nexport {\n Provider_default as Provider,\n ReactReduxContext,\n batch,\n connect_default as connect,\n createDispatchHook,\n createSelectorHook,\n createStoreHook,\n shallowEqual,\n useDispatch,\n useSelector,\n useStore\n};\n//# sourceMappingURL=react-redux.mjs.map","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import invariant from 'tiny-invariant';\n\nvar getRect = function getRect(_ref) {\n var top = _ref.top,\n right = _ref.right,\n bottom = _ref.bottom,\n left = _ref.left;\n var width = right - left;\n var height = bottom - top;\n var rect = {\n top: top,\n right: right,\n bottom: bottom,\n left: left,\n width: width,\n height: height,\n x: left,\n y: top,\n center: {\n x: (right + left) / 2,\n y: (bottom + top) / 2\n }\n };\n return rect;\n};\nvar expand = function expand(target, expandBy) {\n return {\n top: target.top - expandBy.top,\n left: target.left - expandBy.left,\n bottom: target.bottom + expandBy.bottom,\n right: target.right + expandBy.right\n };\n};\nvar shrink = function shrink(target, shrinkBy) {\n return {\n top: target.top + shrinkBy.top,\n left: target.left + shrinkBy.left,\n bottom: target.bottom - shrinkBy.bottom,\n right: target.right - shrinkBy.right\n };\n};\n\nvar shift = function shift(target, shiftBy) {\n return {\n top: target.top + shiftBy.y,\n left: target.left + shiftBy.x,\n bottom: target.bottom + shiftBy.y,\n right: target.right + shiftBy.x\n };\n};\n\nvar noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\nvar createBox = function createBox(_ref2) {\n var borderBox = _ref2.borderBox,\n _ref2$margin = _ref2.margin,\n margin = _ref2$margin === void 0 ? noSpacing : _ref2$margin,\n _ref2$border = _ref2.border,\n border = _ref2$border === void 0 ? noSpacing : _ref2$border,\n _ref2$padding = _ref2.padding,\n padding = _ref2$padding === void 0 ? noSpacing : _ref2$padding;\n var marginBox = getRect(expand(borderBox, margin));\n var paddingBox = getRect(shrink(borderBox, border));\n var contentBox = getRect(shrink(paddingBox, padding));\n return {\n marginBox: marginBox,\n borderBox: getRect(borderBox),\n paddingBox: paddingBox,\n contentBox: contentBox,\n margin: margin,\n border: border,\n padding: padding\n };\n};\n\nvar parse = function parse(raw) {\n var value = raw.slice(0, -2);\n var suffix = raw.slice(-2);\n\n if (suffix !== 'px') {\n return 0;\n }\n\n var result = Number(value);\n !!isNaN(result) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"Could not parse value [raw: \" + raw + \", without suffix: \" + value + \"]\") : invariant(false) : void 0;\n return result;\n};\n\nvar getWindowScroll = function getWindowScroll() {\n return {\n x: window.pageXOffset,\n y: window.pageYOffset\n };\n};\n\nvar offset = function offset(original, change) {\n var borderBox = original.borderBox,\n border = original.border,\n margin = original.margin,\n padding = original.padding;\n var shifted = shift(borderBox, change);\n return createBox({\n borderBox: shifted,\n border: border,\n margin: margin,\n padding: padding\n });\n};\nvar withScroll = function withScroll(original, scroll) {\n if (scroll === void 0) {\n scroll = getWindowScroll();\n }\n\n return offset(original, scroll);\n};\nvar calculateBox = function calculateBox(borderBox, styles) {\n var margin = {\n top: parse(styles.marginTop),\n right: parse(styles.marginRight),\n bottom: parse(styles.marginBottom),\n left: parse(styles.marginLeft)\n };\n var padding = {\n top: parse(styles.paddingTop),\n right: parse(styles.paddingRight),\n bottom: parse(styles.paddingBottom),\n left: parse(styles.paddingLeft)\n };\n var border = {\n top: parse(styles.borderTopWidth),\n right: parse(styles.borderRightWidth),\n bottom: parse(styles.borderBottomWidth),\n left: parse(styles.borderLeftWidth)\n };\n return createBox({\n borderBox: borderBox,\n margin: margin,\n padding: padding,\n border: border\n });\n};\nvar getBox = function getBox(el) {\n var borderBox = el.getBoundingClientRect();\n var styles = window.getComputedStyle(el);\n return calculateBox(borderBox, styles);\n};\n\nexport { calculateBox, createBox, expand, getBox, getRect, offset, shrink, withScroll };\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","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","import React, { useState, useRef, useEffect, useLayoutEffect, useContext } from 'react';\nimport ReactDOM, { flushSync } from 'react-dom';\nimport { createStore as createStore$1, compose, applyMiddleware, bindActionCreators } from 'redux';\nimport { Provider, connect } from 'react-redux';\nimport { getRect, expand, offset, withScroll, calculateBox, getBox, createBox } from 'css-box-model';\nimport rafSchd from 'raf-schd';\nimport _extends from '@babel/runtime/helpers/esm/extends';\n\nconst isProduction$1 = process.env.NODE_ENV === 'production';\nconst spacesAndTabs = /[ \\t]{2,}/g;\nconst lineStartWithSpaces = /^[ \\t]*/gm;\nconst clean$2 = value => value.replace(spacesAndTabs, ' ').replace(lineStartWithSpaces, '').trim();\nconst getDevMessage = message => clean$2(`\n %c@hello-pangea/dnd\n\n %c${clean$2(message)}\n\n %c👷‍ This is a development only message. It will be removed in production builds.\n`);\nconst getFormattedMessage = message => [getDevMessage(message), 'color: #00C584; font-size: 1.2em; font-weight: bold;', 'line-height: 1.5', 'color: #723874;'];\nconst isDisabledFlag = '__@hello-pangea/dnd-disable-dev-warnings';\nfunction log(type, message) {\n if (isProduction$1) {\n return;\n }\n if (typeof window !== 'undefined' && window[isDisabledFlag]) {\n return;\n }\n console[type](...getFormattedMessage(message));\n}\nconst warning = log.bind(null, 'warn');\nconst error = log.bind(null, 'error');\n\nfunction noop$2() {}\n\nfunction getOptions(shared, fromBinding) {\n return {\n ...shared,\n ...fromBinding\n };\n}\nfunction bindEvents(el, bindings, sharedOptions) {\n const unbindings = bindings.map(binding => {\n const options = getOptions(sharedOptions, binding.options);\n el.addEventListener(binding.eventName, binding.fn, options);\n return function unbind() {\n el.removeEventListener(binding.eventName, binding.fn, options);\n };\n });\n return function unbindAll() {\n unbindings.forEach(unbind => {\n unbind();\n });\n };\n}\n\nconst isProduction = process.env.NODE_ENV === 'production';\nconst prefix$1 = 'Invariant failed';\nclass RbdInvariant extends Error {}\nRbdInvariant.prototype.toString = function toString() {\n return this.message;\n};\nfunction invariant(condition, message) {\n if (isProduction) {\n throw new RbdInvariant(prefix$1);\n } else {\n throw new RbdInvariant(`${prefix$1}: ${message || ''}`);\n }\n}\n\nclass ErrorBoundary extends React.Component {\n constructor(...args) {\n super(...args);\n this.callbacks = null;\n this.unbind = noop$2;\n this.onWindowError = event => {\n const callbacks = this.getCallbacks();\n if (callbacks.isDragging()) {\n callbacks.tryAbort();\n process.env.NODE_ENV !== \"production\" ? warning(`\n An error was caught by our window 'error' event listener while a drag was occurring.\n The active drag has been aborted.\n `) : void 0;\n }\n const err = event.error;\n if (err instanceof RbdInvariant) {\n event.preventDefault();\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n }\n };\n this.getCallbacks = () => {\n if (!this.callbacks) {\n throw new Error('Unable to find AppCallbacks in <ErrorBoundary/>');\n }\n return this.callbacks;\n };\n this.setCallbacks = callbacks => {\n this.callbacks = callbacks;\n };\n }\n componentDidMount() {\n this.unbind = bindEvents(window, [{\n eventName: 'error',\n fn: this.onWindowError\n }]);\n }\n componentDidCatch(err) {\n if (err instanceof RbdInvariant) {\n if (process.env.NODE_ENV !== 'production') {\n error(err.message);\n }\n this.setState({});\n return;\n }\n throw err;\n }\n componentWillUnmount() {\n this.unbind();\n }\n render() {\n return this.props.children(this.setCallbacks);\n }\n}\n\nconst dragHandleUsageInstructions = `\n Press space bar to start a drag.\n When dragging you can use the arrow keys to move the item around and escape to cancel.\n Some screen readers may require you to be in focus mode or to use your pass through key\n`;\nconst position = index => index + 1;\nconst onDragStart = start => `\n You have lifted an item in position ${position(start.source.index)}\n`;\nconst withLocation = (source, destination) => {\n const isInHomeList = source.droppableId === destination.droppableId;\n const startPosition = position(source.index);\n const endPosition = position(destination.index);\n if (isInHomeList) {\n return `\n You have moved the item from position ${startPosition}\n to position ${endPosition}\n `;\n }\n return `\n You have moved the item from position ${startPosition}\n in list ${source.droppableId}\n to list ${destination.droppableId}\n in position ${endPosition}\n `;\n};\nconst withCombine = (id, source, combine) => {\n const inHomeList = source.droppableId === combine.droppableId;\n if (inHomeList) {\n return `\n The item ${id}\n has been combined with ${combine.draggableId}`;\n }\n return `\n The item ${id}\n in list ${source.droppableId}\n has been combined with ${combine.draggableId}\n in list ${combine.droppableId}\n `;\n};\nconst onDragUpdate = update => {\n const location = update.destination;\n if (location) {\n return withLocation(update.source, location);\n }\n const combine = update.combine;\n if (combine) {\n return withCombine(update.draggableId, update.source, combine);\n }\n return 'You are over an area that cannot be dropped on';\n};\nconst returnedToStart = source => `\n The item has returned to its starting position\n of ${position(source.index)}\n`;\nconst onDragEnd = result => {\n if (result.reason === 'CANCEL') {\n return `\n Movement cancelled.\n ${returnedToStart(result.source)}\n `;\n }\n const location = result.destination;\n const combine = result.combine;\n if (location) {\n return `\n You have dropped the item.\n ${withLocation(result.source, location)}\n `;\n }\n if (combine) {\n return `\n You have dropped the item.\n ${withCombine(result.draggableId, result.source, combine)}\n `;\n }\n return `\n The item has been dropped while not over a drop area.\n ${returnedToStart(result.source)}\n `;\n};\nconst preset = {\n dragHandleUsageInstructions,\n onDragStart,\n onDragUpdate,\n onDragEnd\n};\n\nfunction isEqual$2(first, second) {\n if (first === second) {\n return true;\n }\n if (Number.isNaN(first) && Number.isNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (let i = 0; i < newInputs.length; i++) {\n if (!isEqual$2(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction useMemo(getResult, inputs) {\n const initial = useState(() => ({\n inputs,\n result: getResult()\n }))[0];\n const isFirstRun = useRef(true);\n const committed = useRef(initial);\n const useCache = isFirstRun.current || Boolean(inputs && committed.current.inputs && areInputsEqual(inputs, committed.current.inputs));\n const cache = useCache ? committed.current : {\n inputs,\n result: getResult()\n };\n useEffect(() => {\n isFirstRun.current = false;\n committed.current = cache;\n }, [cache]);\n return cache.result;\n}\nfunction useCallback(callback, inputs) {\n return useMemo(() => callback, inputs);\n}\n\nconst origin = {\n x: 0,\n y: 0\n};\nconst add = (point1, point2) => ({\n x: point1.x + point2.x,\n y: point1.y + point2.y\n});\nconst subtract = (point1, point2) => ({\n x: point1.x - point2.x,\n y: point1.y - point2.y\n});\nconst isEqual$1 = (point1, point2) => point1.x === point2.x && point1.y === point2.y;\nconst negate = point => ({\n x: point.x !== 0 ? -point.x : 0,\n y: point.y !== 0 ? -point.y : 0\n});\nconst patch = (line, value, otherValue = 0) => {\n if (line === 'x') {\n return {\n x: value,\n y: otherValue\n };\n }\n return {\n x: otherValue,\n y: value\n };\n};\nconst distance = (point1, point2) => Math.sqrt((point2.x - point1.x) ** 2 + (point2.y - point1.y) ** 2);\nconst closest$1 = (target, points) => Math.min(...points.map(point => distance(target, point)));\nconst apply = fn => point => ({\n x: fn(point.x),\n y: fn(point.y)\n});\n\nvar executeClip = (frame, subject) => {\n const result = getRect({\n top: Math.max(subject.top, frame.top),\n right: Math.min(subject.right, frame.right),\n bottom: Math.min(subject.bottom, frame.bottom),\n left: Math.max(subject.left, frame.left)\n });\n if (result.width <= 0 || result.height <= 0) {\n return null;\n }\n return result;\n};\n\nconst offsetByPosition = (spacing, point) => ({\n top: spacing.top + point.y,\n left: spacing.left + point.x,\n bottom: spacing.bottom + point.y,\n right: spacing.right + point.x\n});\nconst getCorners = spacing => [{\n x: spacing.left,\n y: spacing.top\n}, {\n x: spacing.right,\n y: spacing.top\n}, {\n x: spacing.left,\n y: spacing.bottom\n}, {\n x: spacing.right,\n y: spacing.bottom\n}];\nconst noSpacing = {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n};\n\nconst scroll$1 = (target, frame) => {\n if (!frame) {\n return target;\n }\n return offsetByPosition(target, frame.scroll.diff.displacement);\n};\nconst increase = (target, axis, withPlaceholder) => {\n if (withPlaceholder && withPlaceholder.increasedBy) {\n return {\n ...target,\n [axis.end]: target[axis.end] + withPlaceholder.increasedBy[axis.line]\n };\n }\n return target;\n};\nconst clip = (target, frame) => {\n if (frame && frame.shouldClipSubject) {\n return executeClip(frame.pageMarginBox, target);\n }\n return getRect(target);\n};\nvar getSubject = ({\n page,\n withPlaceholder,\n axis,\n frame\n}) => {\n const scrolled = scroll$1(page.marginBox, frame);\n const increased = increase(scrolled, axis, withPlaceholder);\n const clipped = clip(increased, frame);\n return {\n page,\n withPlaceholder,\n active: clipped\n };\n};\n\nvar scrollDroppable = (droppable, newScroll) => {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const scrollable = droppable.frame;\n const scrollDiff = subtract(newScroll, scrollable.scroll.initial);\n const scrollDisplacement = negate(scrollDiff);\n const frame = {\n ...scrollable,\n scroll: {\n initial: scrollable.scroll.initial,\n current: newScroll,\n diff: {\n value: scrollDiff,\n displacement: scrollDisplacement\n },\n max: scrollable.scroll.max\n }\n };\n const subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: droppable.subject.withPlaceholder,\n axis: droppable.axis,\n frame\n });\n const result = {\n ...droppable,\n frame,\n subject\n };\n return result;\n};\n\nfunction memoizeOne(resultFn, isEqual = areInputsEqual) {\n let cache = null;\n function memoized(...newArgs) {\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n const lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult,\n lastArgs: newArgs,\n lastThis: this\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nconst toDroppableMap = memoizeOne(droppables => droppables.reduce((previous, current) => {\n previous[current.descriptor.id] = current;\n return previous;\n}, {}));\nconst toDraggableMap = memoizeOne(draggables => draggables.reduce((previous, current) => {\n previous[current.descriptor.id] = current;\n return previous;\n}, {}));\nconst toDroppableList = memoizeOne(droppables => Object.values(droppables));\nconst toDraggableList = memoizeOne(draggables => Object.values(draggables));\n\nvar getDraggablesInsideDroppable = memoizeOne((droppableId, draggables) => {\n const result = toDraggableList(draggables).filter(draggable => droppableId === draggable.descriptor.droppableId).sort((a, b) => a.descriptor.index - b.descriptor.index);\n return result;\n});\n\nfunction tryGetDestination(impact) {\n if (impact.at && impact.at.type === 'REORDER') {\n return impact.at.destination;\n }\n return null;\n}\nfunction tryGetCombine(impact) {\n if (impact.at && impact.at.type === 'COMBINE') {\n return impact.at.combine;\n }\n return null;\n}\n\nvar removeDraggableFromList = memoizeOne((remove, list) => list.filter(item => item.descriptor.id !== remove.descriptor.id));\n\nvar moveToNextCombine = ({\n isMovingForward,\n draggable,\n destination,\n insideDestination,\n previousImpact\n}) => {\n if (!destination.isCombineEnabled) {\n return null;\n }\n const location = tryGetDestination(previousImpact);\n if (!location) {\n return null;\n }\n function getImpact(target) {\n const at = {\n type: 'COMBINE',\n combine: {\n draggableId: target,\n droppableId: destination.descriptor.id\n }\n };\n return {\n ...previousImpact,\n at\n };\n }\n const all = previousImpact.displaced.all;\n const closestId = all.length ? all[0] : null;\n if (isMovingForward) {\n return closestId ? getImpact(closestId) : null;\n }\n const withoutDraggable = removeDraggableFromList(draggable, insideDestination);\n if (!closestId) {\n if (!withoutDraggable.length) {\n return null;\n }\n const last = withoutDraggable[withoutDraggable.length - 1];\n return getImpact(last.descriptor.id);\n }\n const indexOfClosest = withoutDraggable.findIndex(d => d.descriptor.id === closestId);\n !(indexOfClosest !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find displaced item in set') : invariant() : void 0;\n const proposedIndex = indexOfClosest - 1;\n if (proposedIndex < 0) {\n return null;\n }\n const before = withoutDraggable[proposedIndex];\n return getImpact(before.descriptor.id);\n};\n\nvar isHomeOf = (draggable, destination) => draggable.descriptor.droppableId === destination.descriptor.id;\n\nconst noDisplacedBy = {\n point: origin,\n value: 0\n};\nconst emptyGroups = {\n invisible: {},\n visible: {},\n all: []\n};\nconst noImpact = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: null\n};\n\nvar isWithin = (lowerBound, upperBound) => value => lowerBound <= value && value <= upperBound;\n\nvar isPartiallyVisibleThroughFrame = frame => {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return subject => {\n const isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n if (isContained) {\n return true;\n }\n const isPartiallyVisibleVertically = isWithinVertical(subject.top) || isWithinVertical(subject.bottom);\n const isPartiallyVisibleHorizontally = isWithinHorizontal(subject.left) || isWithinHorizontal(subject.right);\n const isPartiallyContained = isPartiallyVisibleVertically && isPartiallyVisibleHorizontally;\n if (isPartiallyContained) {\n return true;\n }\n const isBiggerVertically = subject.top < frame.top && subject.bottom > frame.bottom;\n const isBiggerHorizontally = subject.left < frame.left && subject.right > frame.right;\n const isTargetBiggerThanFrame = isBiggerVertically && isBiggerHorizontally;\n if (isTargetBiggerThanFrame) {\n return true;\n }\n const isTargetBiggerOnOneAxis = isBiggerVertically && isPartiallyVisibleHorizontally || isBiggerHorizontally && isPartiallyVisibleVertically;\n return isTargetBiggerOnOneAxis;\n };\n};\n\nvar isTotallyVisibleThroughFrame = frame => {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return subject => {\n const isContained = isWithinVertical(subject.top) && isWithinVertical(subject.bottom) && isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n return isContained;\n };\n};\n\nconst vertical = {\n direction: 'vertical',\n line: 'y',\n crossAxisLine: 'x',\n start: 'top',\n end: 'bottom',\n size: 'height',\n crossAxisStart: 'left',\n crossAxisEnd: 'right',\n crossAxisSize: 'width'\n};\nconst horizontal = {\n direction: 'horizontal',\n line: 'x',\n crossAxisLine: 'y',\n start: 'left',\n end: 'right',\n size: 'width',\n crossAxisStart: 'top',\n crossAxisEnd: 'bottom',\n crossAxisSize: 'height'\n};\n\nvar isTotallyVisibleThroughFrameOnAxis = axis => frame => {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return subject => {\n if (axis === vertical) {\n return isWithinVertical(subject.top) && isWithinVertical(subject.bottom);\n }\n return isWithinHorizontal(subject.left) && isWithinHorizontal(subject.right);\n };\n};\n\nconst getDroppableDisplaced = (target, destination) => {\n const displacement = destination.frame ? destination.frame.scroll.diff.displacement : origin;\n return offsetByPosition(target, displacement);\n};\nconst isVisibleInDroppable = (target, destination, isVisibleThroughFrameFn) => {\n if (!destination.subject.active) {\n return false;\n }\n return isVisibleThroughFrameFn(destination.subject.active)(target);\n};\nconst isVisibleInViewport = (target, viewport, isVisibleThroughFrameFn) => isVisibleThroughFrameFn(viewport)(target);\nconst isVisible$1 = ({\n target: toBeDisplaced,\n destination,\n viewport,\n withDroppableDisplacement,\n isVisibleThroughFrameFn\n}) => {\n const displacedTarget = withDroppableDisplacement ? getDroppableDisplaced(toBeDisplaced, destination) : toBeDisplaced;\n return isVisibleInDroppable(displacedTarget, destination, isVisibleThroughFrameFn) && isVisibleInViewport(displacedTarget, viewport, isVisibleThroughFrameFn);\n};\nconst isPartiallyVisible = args => isVisible$1({\n ...args,\n isVisibleThroughFrameFn: isPartiallyVisibleThroughFrame\n});\nconst isTotallyVisible = args => isVisible$1({\n ...args,\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrame\n});\nconst isTotallyVisibleOnAxis = args => isVisible$1({\n ...args,\n isVisibleThroughFrameFn: isTotallyVisibleThroughFrameOnAxis(args.destination.axis)\n});\n\nconst getShouldAnimate = (id, last, forceShouldAnimate) => {\n if (typeof forceShouldAnimate === 'boolean') {\n return forceShouldAnimate;\n }\n if (!last) {\n return true;\n }\n const {\n invisible,\n visible\n } = last;\n if (invisible[id]) {\n return false;\n }\n const previous = visible[id];\n return previous ? previous.shouldAnimate : true;\n};\nfunction getTarget(draggable, displacedBy) {\n const marginBox = draggable.page.marginBox;\n const expandBy = {\n top: displacedBy.point.y,\n right: 0,\n bottom: 0,\n left: displacedBy.point.x\n };\n return getRect(expand(marginBox, expandBy));\n}\nfunction getDisplacementGroups({\n afterDragging,\n destination,\n displacedBy,\n viewport,\n forceShouldAnimate,\n last\n}) {\n return afterDragging.reduce(function process(groups, draggable) {\n const target = getTarget(draggable, displacedBy);\n const id = draggable.descriptor.id;\n groups.all.push(id);\n const isVisible = isPartiallyVisible({\n target,\n destination,\n viewport,\n withDroppableDisplacement: true\n });\n if (!isVisible) {\n groups.invisible[draggable.descriptor.id] = true;\n return groups;\n }\n const shouldAnimate = getShouldAnimate(id, last, forceShouldAnimate);\n const displacement = {\n draggableId: id,\n shouldAnimate\n };\n groups.visible[id] = displacement;\n return groups;\n }, {\n all: [],\n visible: {},\n invisible: {}\n });\n}\n\nfunction getIndexOfLastItem(draggables, options) {\n if (!draggables.length) {\n return 0;\n }\n const indexOfLastItem = draggables[draggables.length - 1].descriptor.index;\n return options.inHomeList ? indexOfLastItem : indexOfLastItem + 1;\n}\nfunction goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n}) {\n const newIndex = getIndexOfLastItem(insideDestination, {\n inHomeList\n });\n return {\n displaced: emptyGroups,\n displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: newIndex\n }\n }\n };\n}\nfunction calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n displacedBy,\n last,\n index,\n forceShouldAnimate\n}) {\n const inHomeList = isHomeOf(draggable, destination);\n if (index == null) {\n return goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n });\n }\n const match = insideDestination.find(item => item.descriptor.index === index);\n if (!match) {\n return goAtEnd({\n insideDestination,\n inHomeList,\n displacedBy,\n destination\n });\n }\n const withoutDragging = removeDraggableFromList(draggable, insideDestination);\n const sliceFrom = insideDestination.indexOf(match);\n const impacted = withoutDragging.slice(sliceFrom);\n const displaced = getDisplacementGroups({\n afterDragging: impacted,\n destination,\n displacedBy,\n last,\n viewport: viewport.frame,\n forceShouldAnimate\n });\n return {\n displaced,\n displacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index\n }\n }\n };\n}\n\nfunction didStartAfterCritical(draggableId, afterCritical) {\n return Boolean(afterCritical.effected[draggableId]);\n}\n\nvar fromCombine = ({\n isMovingForward,\n destination,\n draggables,\n combine,\n afterCritical\n}) => {\n if (!destination.isCombineEnabled) {\n return null;\n }\n const combineId = combine.draggableId;\n const combineWith = draggables[combineId];\n const combineWithIndex = combineWith.descriptor.index;\n const didCombineWithStartAfterCritical = didStartAfterCritical(combineId, afterCritical);\n if (didCombineWithStartAfterCritical) {\n if (isMovingForward) {\n return combineWithIndex;\n }\n return combineWithIndex - 1;\n }\n if (isMovingForward) {\n return combineWithIndex + 1;\n }\n return combineWithIndex;\n};\n\nvar fromReorder = ({\n isMovingForward,\n isInHomeList,\n insideDestination,\n location\n}) => {\n if (!insideDestination.length) {\n return null;\n }\n const currentIndex = location.index;\n const proposedIndex = isMovingForward ? currentIndex + 1 : currentIndex - 1;\n const firstIndex = insideDestination[0].descriptor.index;\n const lastIndex = insideDestination[insideDestination.length - 1].descriptor.index;\n const upperBound = isInHomeList ? lastIndex : lastIndex + 1;\n if (proposedIndex < firstIndex) {\n return null;\n }\n if (proposedIndex > upperBound) {\n return null;\n }\n return proposedIndex;\n};\n\nvar moveToNextIndex = ({\n isMovingForward,\n isInHomeList,\n draggable,\n draggables,\n destination,\n insideDestination,\n previousImpact,\n viewport,\n afterCritical\n}) => {\n const wasAt = previousImpact.at;\n !wasAt ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot move in direction without previous impact location') : invariant() : void 0;\n if (wasAt.type === 'REORDER') {\n const newIndex = fromReorder({\n isMovingForward,\n isInHomeList,\n location: wasAt.destination,\n insideDestination\n });\n if (newIndex == null) {\n return null;\n }\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n }\n const newIndex = fromCombine({\n isMovingForward,\n destination,\n displaced: previousImpact.displaced,\n draggables,\n combine: wasAt.combine,\n afterCritical\n });\n if (newIndex == null) {\n return null;\n }\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n last: previousImpact.displaced,\n displacedBy: previousImpact.displacedBy,\n index: newIndex\n });\n};\n\nvar getCombinedItemDisplacement = ({\n displaced,\n afterCritical,\n combineWith,\n displacedBy\n}) => {\n const isDisplaced = Boolean(displaced.visible[combineWith] || displaced.invisible[combineWith]);\n if (didStartAfterCritical(combineWith, afterCritical)) {\n return isDisplaced ? origin : negate(displacedBy.point);\n }\n return isDisplaced ? displacedBy.point : origin;\n};\n\nvar whenCombining = ({\n afterCritical,\n impact,\n draggables\n}) => {\n const combine = tryGetCombine(impact);\n !combine ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const combineWith = combine.draggableId;\n const center = draggables[combineWith].page.borderBox.center;\n const displaceBy = getCombinedItemDisplacement({\n displaced: impact.displaced,\n afterCritical,\n combineWith,\n displacedBy: impact.displacedBy\n });\n return add(center, displaceBy);\n};\n\nconst distanceFromStartToBorderBoxCenter = (axis, box) => box.margin[axis.start] + box.borderBox[axis.size] / 2;\nconst distanceFromEndToBorderBoxCenter = (axis, box) => box.margin[axis.end] + box.borderBox[axis.size] / 2;\nconst getCrossAxisBorderBoxCenter = (axis, target, isMoving) => target[axis.crossAxisStart] + isMoving.margin[axis.crossAxisStart] + isMoving.borderBox[axis.crossAxisSize] / 2;\nconst goAfter = ({\n axis,\n moveRelativeTo,\n isMoving\n}) => patch(axis.line, moveRelativeTo.marginBox[axis.end] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\nconst goBefore = ({\n axis,\n moveRelativeTo,\n isMoving\n}) => patch(axis.line, moveRelativeTo.marginBox[axis.start] - distanceFromEndToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveRelativeTo.marginBox, isMoving));\nconst goIntoStart = ({\n axis,\n moveInto,\n isMoving\n}) => patch(axis.line, moveInto.contentBox[axis.start] + distanceFromStartToBorderBoxCenter(axis, isMoving), getCrossAxisBorderBoxCenter(axis, moveInto.contentBox, isMoving));\n\nvar whenReordering = ({\n impact,\n draggable,\n draggables,\n droppable,\n afterCritical\n}) => {\n const insideDestination = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n const draggablePage = draggable.page;\n const axis = droppable.axis;\n if (!insideDestination.length) {\n return goIntoStart({\n axis,\n moveInto: droppable.page,\n isMoving: draggablePage\n });\n }\n const {\n displaced,\n displacedBy\n } = impact;\n const closestAfter = displaced.all[0];\n if (closestAfter) {\n const closest = draggables[closestAfter];\n if (didStartAfterCritical(closestAfter, afterCritical)) {\n return goBefore({\n axis,\n moveRelativeTo: closest.page,\n isMoving: draggablePage\n });\n }\n const withDisplacement = offset(closest.page, displacedBy.point);\n return goBefore({\n axis,\n moveRelativeTo: withDisplacement,\n isMoving: draggablePage\n });\n }\n const last = insideDestination[insideDestination.length - 1];\n if (last.descriptor.id === draggable.descriptor.id) {\n return draggablePage.borderBox.center;\n }\n if (didStartAfterCritical(last.descriptor.id, afterCritical)) {\n const page = offset(last.page, negate(afterCritical.displacedBy.point));\n return goAfter({\n axis,\n moveRelativeTo: page,\n isMoving: draggablePage\n });\n }\n return goAfter({\n axis,\n moveRelativeTo: last.page,\n isMoving: draggablePage\n });\n};\n\nvar withDroppableDisplacement = (droppable, point) => {\n const frame = droppable.frame;\n if (!frame) {\n return point;\n }\n return add(point, frame.scroll.diff.displacement);\n};\n\nconst getResultWithoutDroppableDisplacement = ({\n impact,\n draggable,\n droppable,\n draggables,\n afterCritical\n}) => {\n const original = draggable.page.borderBox.center;\n const at = impact.at;\n if (!droppable) {\n return original;\n }\n if (!at) {\n return original;\n }\n if (at.type === 'REORDER') {\n return whenReordering({\n impact,\n draggable,\n draggables,\n droppable,\n afterCritical\n });\n }\n return whenCombining({\n impact,\n draggables,\n afterCritical\n });\n};\nvar getPageBorderBoxCenterFromImpact = args => {\n const withoutDisplacement = getResultWithoutDroppableDisplacement(args);\n const droppable = args.droppable;\n const withDisplacement = droppable ? withDroppableDisplacement(droppable, withoutDisplacement) : withoutDisplacement;\n return withDisplacement;\n};\n\nvar scrollViewport = (viewport, newScroll) => {\n const diff = subtract(newScroll, viewport.scroll.initial);\n const displacement = negate(diff);\n const frame = getRect({\n top: newScroll.y,\n bottom: newScroll.y + viewport.frame.height,\n left: newScroll.x,\n right: newScroll.x + viewport.frame.width\n });\n const updated = {\n frame,\n scroll: {\n initial: viewport.scroll.initial,\n max: viewport.scroll.max,\n current: newScroll,\n diff: {\n value: diff,\n displacement\n }\n }\n };\n return updated;\n};\n\nfunction getDraggables$1(ids, draggables) {\n return ids.map(id => draggables[id]);\n}\nfunction tryGetVisible(id, groups) {\n for (let i = 0; i < groups.length; i++) {\n const displacement = groups[i].visible[id];\n if (displacement) {\n return displacement;\n }\n }\n return null;\n}\nvar speculativelyIncrease = ({\n impact,\n viewport,\n destination,\n draggables,\n maxScrollChange\n}) => {\n const scrolledViewport = scrollViewport(viewport, add(viewport.scroll.current, maxScrollChange));\n const scrolledDroppable = destination.frame ? scrollDroppable(destination, add(destination.frame.scroll.current, maxScrollChange)) : destination;\n const last = impact.displaced;\n const withViewportScroll = getDisplacementGroups({\n afterDragging: getDraggables$1(last.all, draggables),\n destination,\n displacedBy: impact.displacedBy,\n viewport: scrolledViewport.frame,\n last,\n forceShouldAnimate: false\n });\n const withDroppableScroll = getDisplacementGroups({\n afterDragging: getDraggables$1(last.all, draggables),\n destination: scrolledDroppable,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n last,\n forceShouldAnimate: false\n });\n const invisible = {};\n const visible = {};\n const groups = [last, withViewportScroll, withDroppableScroll];\n last.all.forEach(id => {\n const displacement = tryGetVisible(id, groups);\n if (displacement) {\n visible[id] = displacement;\n return;\n }\n invisible[id] = true;\n });\n const newImpact = {\n ...impact,\n displaced: {\n all: last.all,\n invisible,\n visible\n }\n };\n return newImpact;\n};\n\nvar withViewportDisplacement = (viewport, point) => add(viewport.scroll.diff.displacement, point);\n\nvar getClientFromPageBorderBoxCenter = ({\n pageBorderBoxCenter,\n draggable,\n viewport\n}) => {\n const withoutPageScrollChange = withViewportDisplacement(viewport, pageBorderBoxCenter);\n const offset = subtract(withoutPageScrollChange, draggable.page.borderBox.center);\n return add(draggable.client.borderBox.center, offset);\n};\n\nvar isTotallyVisibleInNewLocation = ({\n draggable,\n destination,\n newPageBorderBoxCenter,\n viewport,\n withDroppableDisplacement,\n onlyOnMainAxis = false\n}) => {\n const changeNeeded = subtract(newPageBorderBoxCenter, draggable.page.borderBox.center);\n const shifted = offsetByPosition(draggable.page.borderBox, changeNeeded);\n const args = {\n target: shifted,\n destination,\n withDroppableDisplacement,\n viewport\n };\n return onlyOnMainAxis ? isTotallyVisibleOnAxis(args) : isTotallyVisible(args);\n};\n\nvar moveToNextPlace = ({\n isMovingForward,\n draggable,\n destination,\n draggables,\n previousImpact,\n viewport,\n previousPageBorderBoxCenter,\n previousClientSelection,\n afterCritical\n}) => {\n if (!destination.isEnabled) {\n return null;\n }\n const insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n const isInHomeList = isHomeOf(draggable, destination);\n const impact = moveToNextCombine({\n isMovingForward,\n draggable,\n destination,\n insideDestination,\n previousImpact\n }) || moveToNextIndex({\n isMovingForward,\n isInHomeList,\n draggable,\n draggables,\n destination,\n insideDestination,\n previousImpact,\n viewport,\n afterCritical\n });\n if (!impact) {\n return null;\n }\n const pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact,\n draggable,\n droppable: destination,\n draggables,\n afterCritical\n });\n const isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable,\n destination,\n newPageBorderBoxCenter: pageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n if (isVisibleInNewLocation) {\n const clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter,\n draggable,\n viewport\n });\n return {\n clientSelection,\n impact,\n scrollJumpRequest: null\n };\n }\n const distance = subtract(pageBorderBoxCenter, previousPageBorderBoxCenter);\n const cautious = speculativelyIncrease({\n impact,\n viewport,\n destination,\n draggables,\n maxScrollChange: distance\n });\n return {\n clientSelection: previousClientSelection,\n impact: cautious,\n scrollJumpRequest: distance\n };\n};\n\nconst getKnownActive = droppable => {\n const rect = droppable.subject.active;\n !rect ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get clipped area from droppable') : invariant() : void 0;\n return rect;\n};\nvar getBestCrossAxisDroppable = ({\n isMovingForward,\n pageBorderBoxCenter,\n source,\n droppables,\n viewport\n}) => {\n const active = source.subject.active;\n if (!active) {\n return null;\n }\n const axis = source.axis;\n const isBetweenSourceClipped = isWithin(active[axis.start], active[axis.end]);\n const candidates = toDroppableList(droppables).filter(droppable => droppable !== source).filter(droppable => droppable.isEnabled).filter(droppable => Boolean(droppable.subject.active)).filter(droppable => isPartiallyVisibleThroughFrame(viewport.frame)(getKnownActive(droppable))).filter(droppable => {\n const activeOfTarget = getKnownActive(droppable);\n if (isMovingForward) {\n return active[axis.crossAxisEnd] < activeOfTarget[axis.crossAxisEnd];\n }\n return activeOfTarget[axis.crossAxisStart] < active[axis.crossAxisStart];\n }).filter(droppable => {\n const activeOfTarget = getKnownActive(droppable);\n const isBetweenDestinationClipped = isWithin(activeOfTarget[axis.start], activeOfTarget[axis.end]);\n return isBetweenSourceClipped(activeOfTarget[axis.start]) || isBetweenSourceClipped(activeOfTarget[axis.end]) || isBetweenDestinationClipped(active[axis.start]) || isBetweenDestinationClipped(active[axis.end]);\n }).sort((a, b) => {\n const first = getKnownActive(a)[axis.crossAxisStart];\n const second = getKnownActive(b)[axis.crossAxisStart];\n if (isMovingForward) {\n return first - second;\n }\n return second - first;\n }).filter((droppable, index, array) => getKnownActive(droppable)[axis.crossAxisStart] === getKnownActive(array[0])[axis.crossAxisStart]);\n if (!candidates.length) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0];\n }\n const contains = candidates.filter(droppable => {\n const isWithinDroppable = isWithin(getKnownActive(droppable)[axis.start], getKnownActive(droppable)[axis.end]);\n return isWithinDroppable(pageBorderBoxCenter[axis.line]);\n });\n if (contains.length === 1) {\n return contains[0];\n }\n if (contains.length > 1) {\n return contains.sort((a, b) => getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start])[0];\n }\n return candidates.sort((a, b) => {\n const first = closest$1(pageBorderBoxCenter, getCorners(getKnownActive(a)));\n const second = closest$1(pageBorderBoxCenter, getCorners(getKnownActive(b)));\n if (first !== second) {\n return first - second;\n }\n return getKnownActive(a)[axis.start] - getKnownActive(b)[axis.start];\n })[0];\n};\n\nconst getCurrentPageBorderBoxCenter = (draggable, afterCritical) => {\n const original = draggable.page.borderBox.center;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? subtract(original, afterCritical.displacedBy.point) : original;\n};\nconst getCurrentPageBorderBox = (draggable, afterCritical) => {\n const original = draggable.page.borderBox;\n return didStartAfterCritical(draggable.descriptor.id, afterCritical) ? offsetByPosition(original, negate(afterCritical.displacedBy.point)) : original;\n};\n\nvar getClosestDraggable = ({\n pageBorderBoxCenter,\n viewport,\n destination,\n insideDestination,\n afterCritical\n}) => {\n const sorted = insideDestination.filter(draggable => isTotallyVisible({\n target: getCurrentPageBorderBox(draggable, afterCritical),\n destination,\n viewport: viewport.frame,\n withDroppableDisplacement: true\n })).sort((a, b) => {\n const distanceToA = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(a, afterCritical)));\n const distanceToB = distance(pageBorderBoxCenter, withDroppableDisplacement(destination, getCurrentPageBorderBoxCenter(b, afterCritical)));\n if (distanceToA < distanceToB) {\n return -1;\n }\n if (distanceToB < distanceToA) {\n return 1;\n }\n return a.descriptor.index - b.descriptor.index;\n });\n return sorted[0] || null;\n};\n\nvar getDisplacedBy = memoizeOne(function getDisplacedBy(axis, displaceBy) {\n const displacement = displaceBy[axis.line];\n return {\n value: displacement,\n point: patch(axis.line, displacement)\n };\n});\n\nconst getRequiredGrowthForPlaceholder = (droppable, placeholderSize, draggables) => {\n const axis = droppable.axis;\n if (droppable.descriptor.mode === 'virtual') {\n return patch(axis.line, placeholderSize[axis.line]);\n }\n const availableSpace = droppable.subject.page.contentBox[axis.size];\n const insideDroppable = getDraggablesInsideDroppable(droppable.descriptor.id, draggables);\n const spaceUsed = insideDroppable.reduce((sum, dimension) => sum + dimension.client.marginBox[axis.size], 0);\n const requiredSpace = spaceUsed + placeholderSize[axis.line];\n const needsToGrowBy = requiredSpace - availableSpace;\n if (needsToGrowBy <= 0) {\n return null;\n }\n return patch(axis.line, needsToGrowBy);\n};\nconst withMaxScroll = (frame, max) => ({\n ...frame,\n scroll: {\n ...frame.scroll,\n max\n }\n});\nconst addPlaceholder = (droppable, draggable, draggables) => {\n const frame = droppable.frame;\n !!isHomeOf(draggable, droppable) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should not add placeholder space to home list') : invariant() : void 0;\n !!droppable.subject.withPlaceholder ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot add placeholder size to a subject when it already has one') : invariant() : void 0;\n const placeholderSize = getDisplacedBy(droppable.axis, draggable.displaceBy).point;\n const requiredGrowth = getRequiredGrowthForPlaceholder(droppable, placeholderSize, draggables);\n const added = {\n placeholderSize,\n increasedBy: requiredGrowth,\n oldFrameMaxScroll: droppable.frame ? droppable.frame.scroll.max : null\n };\n if (!frame) {\n const subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: droppable.frame\n });\n return {\n ...droppable,\n subject\n };\n }\n const maxScroll = requiredGrowth ? add(frame.scroll.max, requiredGrowth) : frame.scroll.max;\n const newFrame = withMaxScroll(frame, maxScroll);\n const subject = getSubject({\n page: droppable.subject.page,\n withPlaceholder: added,\n axis: droppable.axis,\n frame: newFrame\n });\n return {\n ...droppable,\n subject,\n frame: newFrame\n };\n};\nconst removePlaceholder = droppable => {\n const added = droppable.subject.withPlaceholder;\n !added ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot remove placeholder form subject when there was none') : invariant() : void 0;\n const frame = droppable.frame;\n if (!frame) {\n const subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: null,\n withPlaceholder: null\n });\n return {\n ...droppable,\n subject\n };\n }\n const oldMaxScroll = added.oldFrameMaxScroll;\n !oldMaxScroll ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected droppable with frame to have old max frame scroll when removing placeholder') : invariant() : void 0;\n const newFrame = withMaxScroll(frame, oldMaxScroll);\n const subject = getSubject({\n page: droppable.subject.page,\n axis: droppable.axis,\n frame: newFrame,\n withPlaceholder: null\n });\n return {\n ...droppable,\n subject,\n frame: newFrame\n };\n};\n\nvar moveToNewDroppable = ({\n previousPageBorderBoxCenter,\n moveRelativeTo,\n insideDestination,\n draggable,\n draggables,\n destination,\n viewport,\n afterCritical\n}) => {\n if (!moveRelativeTo) {\n if (insideDestination.length) {\n return null;\n }\n const proposed = {\n displaced: emptyGroups,\n displacedBy: noDisplacedBy,\n at: {\n type: 'REORDER',\n destination: {\n droppableId: destination.descriptor.id,\n index: 0\n }\n }\n };\n const proposedPageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact: proposed,\n draggable,\n droppable: destination,\n draggables,\n afterCritical\n });\n const withPlaceholder = isHomeOf(draggable, destination) ? destination : addPlaceholder(destination, draggable, draggables);\n const isVisibleInNewLocation = isTotallyVisibleInNewLocation({\n draggable,\n destination: withPlaceholder,\n newPageBorderBoxCenter: proposedPageBorderBoxCenter,\n viewport: viewport.frame,\n withDroppableDisplacement: false,\n onlyOnMainAxis: true\n });\n return isVisibleInNewLocation ? proposed : null;\n }\n const isGoingBeforeTarget = Boolean(previousPageBorderBoxCenter[destination.axis.line] <= moveRelativeTo.page.borderBox.center[destination.axis.line]);\n const proposedIndex = (() => {\n const relativeTo = moveRelativeTo.descriptor.index;\n if (moveRelativeTo.descriptor.id === draggable.descriptor.id) {\n return relativeTo;\n }\n if (isGoingBeforeTarget) {\n return relativeTo;\n }\n return relativeTo + 1;\n })();\n const displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n displacedBy,\n last: emptyGroups,\n index: proposedIndex\n });\n};\n\nvar moveCrossAxis = ({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable,\n isOver,\n draggables,\n droppables,\n viewport,\n afterCritical\n}) => {\n const destination = getBestCrossAxisDroppable({\n isMovingForward,\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n source: isOver,\n droppables,\n viewport\n });\n if (!destination) {\n return null;\n }\n const insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n const moveRelativeTo = getClosestDraggable({\n pageBorderBoxCenter: previousPageBorderBoxCenter,\n viewport,\n destination,\n insideDestination,\n afterCritical\n });\n const impact = moveToNewDroppable({\n previousPageBorderBoxCenter,\n destination,\n draggable,\n draggables,\n moveRelativeTo,\n insideDestination,\n viewport,\n afterCritical\n });\n if (!impact) {\n return null;\n }\n const pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact,\n draggable,\n droppable: destination,\n draggables,\n afterCritical\n });\n const clientSelection = getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter,\n draggable,\n viewport\n });\n return {\n clientSelection,\n impact,\n scrollJumpRequest: null\n };\n};\n\nvar whatIsDraggedOver = impact => {\n const at = impact.at;\n if (!at) {\n return null;\n }\n if (at.type === 'REORDER') {\n return at.destination.droppableId;\n }\n return at.combine.droppableId;\n};\n\nconst getDroppableOver$1 = (impact, droppables) => {\n const id = whatIsDraggedOver(impact);\n return id ? droppables[id] : null;\n};\nvar moveInDirection = ({\n state,\n type\n}) => {\n const isActuallyOver = getDroppableOver$1(state.impact, state.dimensions.droppables);\n const isMainAxisMovementAllowed = Boolean(isActuallyOver);\n const home = state.dimensions.droppables[state.critical.droppable.id];\n const isOver = isActuallyOver || home;\n const direction = isOver.axis.direction;\n const isMovingOnMainAxis = direction === 'vertical' && (type === 'MOVE_UP' || type === 'MOVE_DOWN') || direction === 'horizontal' && (type === 'MOVE_LEFT' || type === 'MOVE_RIGHT');\n if (isMovingOnMainAxis && !isMainAxisMovementAllowed) {\n return null;\n }\n const isMovingForward = type === 'MOVE_DOWN' || type === 'MOVE_RIGHT';\n const draggable = state.dimensions.draggables[state.critical.draggable.id];\n const previousPageBorderBoxCenter = state.current.page.borderBoxCenter;\n const {\n draggables,\n droppables\n } = state.dimensions;\n return isMovingOnMainAxis ? moveToNextPlace({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable,\n destination: isOver,\n draggables,\n viewport: state.viewport,\n previousClientSelection: state.current.client.selection,\n previousImpact: state.impact,\n afterCritical: state.afterCritical\n }) : moveCrossAxis({\n isMovingForward,\n previousPageBorderBoxCenter,\n draggable,\n isOver,\n draggables,\n droppables,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n};\n\nfunction isMovementAllowed(state) {\n return state.phase === 'DRAGGING' || state.phase === 'COLLECTING';\n}\n\nfunction isPositionInFrame(frame) {\n const isWithinVertical = isWithin(frame.top, frame.bottom);\n const isWithinHorizontal = isWithin(frame.left, frame.right);\n return function run(point) {\n return isWithinVertical(point.y) && isWithinHorizontal(point.x);\n };\n}\n\nfunction getHasOverlap(first, second) {\n return first.left < second.right && first.right > second.left && first.top < second.bottom && first.bottom > second.top;\n}\nfunction getFurthestAway({\n pageBorderBox,\n draggable,\n candidates\n}) {\n const startCenter = draggable.page.borderBox.center;\n const sorted = candidates.map(candidate => {\n const axis = candidate.axis;\n const target = patch(candidate.axis.line, pageBorderBox.center[axis.line], candidate.page.borderBox.center[axis.crossAxisLine]);\n return {\n id: candidate.descriptor.id,\n distance: distance(startCenter, target)\n };\n }).sort((a, b) => b.distance - a.distance);\n return sorted[0] ? sorted[0].id : null;\n}\nfunction getDroppableOver({\n pageBorderBox,\n draggable,\n droppables\n}) {\n const candidates = toDroppableList(droppables).filter(item => {\n if (!item.isEnabled) {\n return false;\n }\n const active = item.subject.active;\n if (!active) {\n return false;\n }\n if (!getHasOverlap(pageBorderBox, active)) {\n return false;\n }\n if (isPositionInFrame(active)(pageBorderBox.center)) {\n return true;\n }\n const axis = item.axis;\n const childCenter = active.center[axis.crossAxisLine];\n const crossAxisStart = pageBorderBox[axis.crossAxisStart];\n const crossAxisEnd = pageBorderBox[axis.crossAxisEnd];\n const isContained = isWithin(active[axis.crossAxisStart], active[axis.crossAxisEnd]);\n const isStartContained = isContained(crossAxisStart);\n const isEndContained = isContained(crossAxisEnd);\n if (!isStartContained && !isEndContained) {\n return true;\n }\n if (isStartContained) {\n return crossAxisStart < childCenter;\n }\n return crossAxisEnd > childCenter;\n });\n if (!candidates.length) {\n return null;\n }\n if (candidates.length === 1) {\n return candidates[0].descriptor.id;\n }\n return getFurthestAway({\n pageBorderBox,\n draggable,\n candidates\n });\n}\n\nconst offsetRectByPosition = (rect, point) => getRect(offsetByPosition(rect, point));\n\nvar withDroppableScroll = (droppable, area) => {\n const frame = droppable.frame;\n if (!frame) {\n return area;\n }\n return offsetRectByPosition(area, frame.scroll.diff.value);\n};\n\nfunction getIsDisplaced({\n displaced,\n id\n}) {\n return Boolean(displaced.visible[id] || displaced.invisible[id]);\n}\n\nfunction atIndex({\n draggable,\n closest,\n inHomeList\n}) {\n if (!closest) {\n return null;\n }\n if (!inHomeList) {\n return closest.descriptor.index;\n }\n if (closest.descriptor.index > draggable.descriptor.index) {\n return closest.descriptor.index - 1;\n }\n return closest.descriptor.index;\n}\nvar getReorderImpact = ({\n pageBorderBoxWithDroppableScroll: targetRect,\n draggable,\n destination,\n insideDestination,\n last,\n viewport,\n afterCritical\n}) => {\n const axis = destination.axis;\n const displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n const displacement = displacedBy.value;\n const targetStart = targetRect[axis.start];\n const targetEnd = targetRect[axis.end];\n const withoutDragging = removeDraggableFromList(draggable, insideDestination);\n const closest = withoutDragging.find(child => {\n const id = child.descriptor.id;\n const childCenter = child.page.borderBox.center[axis.line];\n const didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n const isDisplaced = getIsDisplaced({\n displaced: last,\n id\n });\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd <= childCenter;\n }\n return targetStart < childCenter - displacement;\n }\n if (isDisplaced) {\n return targetEnd <= childCenter + displacement;\n }\n return targetStart < childCenter;\n }) || null;\n const newIndex = atIndex({\n draggable,\n closest,\n inHomeList: isHomeOf(draggable, destination)\n });\n return calculateReorderImpact({\n draggable,\n insideDestination,\n destination,\n viewport,\n last,\n displacedBy,\n index: newIndex\n });\n};\n\nconst combineThresholdDivisor = 4;\nvar getCombineImpact = ({\n draggable,\n pageBorderBoxWithDroppableScroll: targetRect,\n previousImpact,\n destination,\n insideDestination,\n afterCritical\n}) => {\n if (!destination.isCombineEnabled) {\n return null;\n }\n const axis = destination.axis;\n const displacedBy = getDisplacedBy(destination.axis, draggable.displaceBy);\n const displacement = displacedBy.value;\n const targetStart = targetRect[axis.start];\n const targetEnd = targetRect[axis.end];\n const withoutDragging = removeDraggableFromList(draggable, insideDestination);\n const combineWith = withoutDragging.find(child => {\n const id = child.descriptor.id;\n const childRect = child.page.borderBox;\n const childSize = childRect[axis.size];\n const threshold = childSize / combineThresholdDivisor;\n const didStartAfterCritical$1 = didStartAfterCritical(id, afterCritical);\n const isDisplaced = getIsDisplaced({\n displaced: previousImpact.displaced,\n id\n });\n if (didStartAfterCritical$1) {\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + threshold && targetEnd < childRect[axis.end] - threshold;\n }\n return targetStart > childRect[axis.start] - displacement + threshold && targetStart < childRect[axis.end] - displacement - threshold;\n }\n if (isDisplaced) {\n return targetEnd > childRect[axis.start] + displacement + threshold && targetEnd < childRect[axis.end] + displacement - threshold;\n }\n return targetStart > childRect[axis.start] + threshold && targetStart < childRect[axis.end] - threshold;\n });\n if (!combineWith) {\n return null;\n }\n const impact = {\n displacedBy,\n displaced: previousImpact.displaced,\n at: {\n type: 'COMBINE',\n combine: {\n draggableId: combineWith.descriptor.id,\n droppableId: destination.descriptor.id\n }\n }\n };\n return impact;\n};\n\nvar getDragImpact = ({\n pageOffset,\n draggable,\n draggables,\n droppables,\n previousImpact,\n viewport,\n afterCritical\n}) => {\n const pageBorderBox = offsetRectByPosition(draggable.page.borderBox, pageOffset);\n const destinationId = getDroppableOver({\n pageBorderBox,\n draggable,\n droppables\n });\n if (!destinationId) {\n return noImpact;\n }\n const destination = droppables[destinationId];\n const insideDestination = getDraggablesInsideDroppable(destination.descriptor.id, draggables);\n const pageBorderBoxWithDroppableScroll = withDroppableScroll(destination, pageBorderBox);\n return getCombineImpact({\n pageBorderBoxWithDroppableScroll,\n draggable,\n previousImpact,\n destination,\n insideDestination,\n afterCritical\n }) || getReorderImpact({\n pageBorderBoxWithDroppableScroll,\n draggable,\n destination,\n insideDestination,\n last: previousImpact.displaced,\n viewport,\n afterCritical\n });\n};\n\nvar patchDroppableMap = (droppables, updated) => ({\n ...droppables,\n [updated.descriptor.id]: updated\n});\n\nconst clearUnusedPlaceholder = ({\n previousImpact,\n impact,\n droppables\n}) => {\n const last = whatIsDraggedOver(previousImpact);\n const now = whatIsDraggedOver(impact);\n if (!last) {\n return droppables;\n }\n if (last === now) {\n return droppables;\n }\n const lastDroppable = droppables[last];\n if (!lastDroppable.subject.withPlaceholder) {\n return droppables;\n }\n const updated = removePlaceholder(lastDroppable);\n return patchDroppableMap(droppables, updated);\n};\nvar recomputePlaceholders = ({\n draggable,\n draggables,\n droppables,\n previousImpact,\n impact\n}) => {\n const cleaned = clearUnusedPlaceholder({\n previousImpact,\n impact,\n droppables\n });\n const isOver = whatIsDraggedOver(impact);\n if (!isOver) {\n return cleaned;\n }\n const droppable = droppables[isOver];\n if (isHomeOf(draggable, droppable)) {\n return cleaned;\n }\n if (droppable.subject.withPlaceholder) {\n return cleaned;\n }\n const patched = addPlaceholder(droppable, draggable, draggables);\n return patchDroppableMap(cleaned, patched);\n};\n\nvar update = ({\n state,\n clientSelection: forcedClientSelection,\n dimensions: forcedDimensions,\n viewport: forcedViewport,\n impact: forcedImpact,\n scrollJumpRequest\n}) => {\n const viewport = forcedViewport || state.viewport;\n const dimensions = forcedDimensions || state.dimensions;\n const clientSelection = forcedClientSelection || state.current.client.selection;\n const offset = subtract(clientSelection, state.initial.client.selection);\n const client = {\n offset,\n selection: clientSelection,\n borderBoxCenter: add(state.initial.client.borderBoxCenter, offset)\n };\n const page = {\n selection: add(client.selection, viewport.scroll.current),\n borderBoxCenter: add(client.borderBoxCenter, viewport.scroll.current),\n offset: add(client.offset, viewport.scroll.diff.value)\n };\n const current = {\n client,\n page\n };\n if (state.phase === 'COLLECTING') {\n return {\n ...state,\n dimensions,\n viewport,\n current\n };\n }\n const draggable = dimensions.draggables[state.critical.draggable.id];\n const newImpact = forcedImpact || getDragImpact({\n pageOffset: page.offset,\n draggable,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact: state.impact,\n viewport,\n afterCritical: state.afterCritical\n });\n const withUpdatedPlaceholders = recomputePlaceholders({\n draggable,\n impact: newImpact,\n previousImpact: state.impact,\n draggables: dimensions.draggables,\n droppables: dimensions.droppables\n });\n const result = {\n ...state,\n current,\n dimensions: {\n draggables: dimensions.draggables,\n droppables: withUpdatedPlaceholders\n },\n impact: newImpact,\n viewport,\n scrollJumpRequest: scrollJumpRequest || null,\n forceShouldAnimate: scrollJumpRequest ? false : null\n };\n return result;\n};\n\nfunction getDraggables(ids, draggables) {\n return ids.map(id => draggables[id]);\n}\nvar recompute = ({\n impact,\n viewport,\n draggables,\n destination,\n forceShouldAnimate\n}) => {\n const last = impact.displaced;\n const afterDragging = getDraggables(last.all, draggables);\n const displaced = getDisplacementGroups({\n afterDragging,\n destination,\n displacedBy: impact.displacedBy,\n viewport: viewport.frame,\n forceShouldAnimate,\n last\n });\n return {\n ...impact,\n displaced\n };\n};\n\nvar getClientBorderBoxCenter = ({\n impact,\n draggable,\n droppable,\n draggables,\n viewport,\n afterCritical\n}) => {\n const pageBorderBoxCenter = getPageBorderBoxCenterFromImpact({\n impact,\n draggable,\n draggables,\n droppable,\n afterCritical\n });\n return getClientFromPageBorderBoxCenter({\n pageBorderBoxCenter,\n draggable,\n viewport\n });\n};\n\nvar refreshSnap = ({\n state,\n dimensions: forcedDimensions,\n viewport: forcedViewport\n}) => {\n !(state.movementMode === 'SNAP') ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const needsVisibilityCheck = state.impact;\n const viewport = forcedViewport || state.viewport;\n const dimensions = forcedDimensions || state.dimensions;\n const {\n draggables,\n droppables\n } = dimensions;\n const draggable = draggables[state.critical.draggable.id];\n const isOver = whatIsDraggedOver(needsVisibilityCheck);\n !isOver ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must be over a destination in SNAP movement mode') : invariant() : void 0;\n const destination = droppables[isOver];\n const impact = recompute({\n impact: needsVisibilityCheck,\n viewport,\n destination,\n draggables\n });\n const clientSelection = getClientBorderBoxCenter({\n impact,\n draggable,\n droppable: destination,\n draggables,\n viewport,\n afterCritical: state.afterCritical\n });\n return update({\n impact,\n clientSelection,\n state,\n dimensions,\n viewport\n });\n};\n\nvar getHomeLocation = descriptor => ({\n index: descriptor.index,\n droppableId: descriptor.droppableId\n});\n\nvar getLiftEffect = ({\n draggable,\n home,\n draggables,\n viewport\n}) => {\n const displacedBy = getDisplacedBy(home.axis, draggable.displaceBy);\n const insideHome = getDraggablesInsideDroppable(home.descriptor.id, draggables);\n const rawIndex = insideHome.indexOf(draggable);\n !(rawIndex !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected draggable to be inside home list') : invariant() : void 0;\n const afterDragging = insideHome.slice(rawIndex + 1);\n const effected = afterDragging.reduce((previous, item) => {\n previous[item.descriptor.id] = true;\n return previous;\n }, {});\n const afterCritical = {\n inVirtualList: home.descriptor.mode === 'virtual',\n displacedBy,\n effected\n };\n const displaced = getDisplacementGroups({\n afterDragging,\n destination: home,\n displacedBy,\n last: null,\n viewport: viewport.frame,\n forceShouldAnimate: false\n });\n const impact = {\n displaced,\n displacedBy,\n at: {\n type: 'REORDER',\n destination: getHomeLocation(draggable.descriptor)\n }\n };\n return {\n impact,\n afterCritical\n };\n};\n\nvar patchDimensionMap = (dimensions, updated) => ({\n draggables: dimensions.draggables,\n droppables: patchDroppableMap(dimensions.droppables, updated)\n});\n\nconst start = key => {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\nconst finish = key => {\n if (process.env.NODE_ENV !== 'production') {\n {\n return;\n }\n }\n};\n\nvar offsetDraggable = ({\n draggable,\n offset: offset$1,\n initialWindowScroll\n}) => {\n const client = offset(draggable.client, offset$1);\n const page = withScroll(client, initialWindowScroll);\n const moved = {\n ...draggable,\n placeholder: {\n ...draggable.placeholder,\n client\n },\n client,\n page\n };\n return moved;\n};\n\nvar getFrame = droppable => {\n const frame = droppable.frame;\n !frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected Droppable to have a frame') : invariant() : void 0;\n return frame;\n};\n\nvar adjustAdditionsForScrollChanges = ({\n additions,\n updatedDroppables,\n viewport\n}) => {\n const windowScrollChange = viewport.scroll.diff.value;\n return additions.map(draggable => {\n const droppableId = draggable.descriptor.droppableId;\n const modified = updatedDroppables[droppableId];\n const frame = getFrame(modified);\n const droppableScrollChange = frame.scroll.diff.value;\n const totalChange = add(windowScrollChange, droppableScrollChange);\n const moved = offsetDraggable({\n draggable,\n offset: totalChange,\n initialWindowScroll: viewport.scroll.initial\n });\n return moved;\n });\n};\n\nvar publishWhileDraggingInVirtual = ({\n state,\n published\n}) => {\n start();\n const withScrollChange = published.modified.map(update => {\n const existing = state.dimensions.droppables[update.droppableId];\n const scrolled = scrollDroppable(existing, update.scroll);\n return scrolled;\n });\n const droppables = {\n ...state.dimensions.droppables,\n ...toDroppableMap(withScrollChange)\n };\n const updatedAdditions = toDraggableMap(adjustAdditionsForScrollChanges({\n additions: published.additions,\n updatedDroppables: droppables,\n viewport: state.viewport\n }));\n const draggables = {\n ...state.dimensions.draggables,\n ...updatedAdditions\n };\n published.removals.forEach(id => {\n delete draggables[id];\n });\n const dimensions = {\n droppables,\n draggables\n };\n const wasOverId = whatIsDraggedOver(state.impact);\n const wasOver = wasOverId ? dimensions.droppables[wasOverId] : null;\n const draggable = dimensions.draggables[state.critical.draggable.id];\n const home = dimensions.droppables[state.critical.droppable.id];\n const {\n impact: onLiftImpact,\n afterCritical\n } = getLiftEffect({\n draggable,\n home,\n draggables,\n viewport: state.viewport\n });\n const previousImpact = wasOver && wasOver.isCombineEnabled ? state.impact : onLiftImpact;\n const impact = getDragImpact({\n pageOffset: state.current.page.offset,\n draggable: dimensions.draggables[state.critical.draggable.id],\n draggables: dimensions.draggables,\n droppables: dimensions.droppables,\n previousImpact,\n viewport: state.viewport,\n afterCritical\n });\n finish();\n const draggingState = {\n ...state,\n phase: 'DRAGGING',\n impact,\n onLiftImpact,\n dimensions,\n afterCritical,\n forceShouldAnimate: false\n };\n if (state.phase === 'COLLECTING') {\n return draggingState;\n }\n const dropPending = {\n ...draggingState,\n phase: 'DROP_PENDING',\n reason: state.reason,\n isWaiting: false\n };\n return dropPending;\n};\n\nconst isSnapping = state => state.movementMode === 'SNAP';\nconst postDroppableChange = (state, updated, isEnabledChanging) => {\n const dimensions = patchDimensionMap(state.dimensions, updated);\n if (!isSnapping(state) || isEnabledChanging) {\n return update({\n state,\n dimensions\n });\n }\n return refreshSnap({\n state,\n dimensions\n });\n};\nfunction removeScrollJumpRequest(state) {\n if (state.isDragging && state.movementMode === 'SNAP') {\n return {\n ...state,\n scrollJumpRequest: null\n };\n }\n return state;\n}\nconst idle$2 = {\n phase: 'IDLE',\n completed: null,\n shouldFlush: false\n};\nvar reducer = (state = idle$2, action) => {\n if (action.type === 'FLUSH') {\n return {\n ...idle$2,\n shouldFlush: true\n };\n }\n if (action.type === 'INITIAL_PUBLISH') {\n !(state.phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INITIAL_PUBLISH must come after a IDLE phase') : invariant() : void 0;\n const {\n critical,\n clientSelection,\n viewport,\n dimensions,\n movementMode\n } = action.payload;\n const draggable = dimensions.draggables[critical.draggable.id];\n const home = dimensions.droppables[critical.droppable.id];\n const client = {\n selection: clientSelection,\n borderBoxCenter: draggable.client.borderBox.center,\n offset: origin\n };\n const initial = {\n client,\n page: {\n selection: add(client.selection, viewport.scroll.initial),\n borderBoxCenter: add(client.selection, viewport.scroll.initial),\n offset: add(client.selection, viewport.scroll.diff.value)\n }\n };\n const isWindowScrollAllowed = toDroppableList(dimensions.droppables).every(item => !item.isFixedOnPage);\n const {\n impact,\n afterCritical\n } = getLiftEffect({\n draggable,\n home,\n draggables: dimensions.draggables,\n viewport\n });\n const result = {\n phase: 'DRAGGING',\n isDragging: true,\n critical,\n movementMode,\n dimensions,\n initial,\n current: initial,\n isWindowScrollAllowed,\n impact,\n afterCritical,\n onLiftImpact: impact,\n viewport,\n scrollJumpRequest: null,\n forceShouldAnimate: null\n };\n return result;\n }\n if (action.type === 'COLLECTION_STARTING') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Collection cannot start from phase ${state.phase}`) : invariant() : void 0;\n const result = {\n ...state,\n phase: 'COLLECTING'\n };\n return result;\n }\n if (action.type === 'PUBLISH_WHILE_DRAGGING') {\n !(state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Unexpected ${action.type} received in phase ${state.phase}`) : invariant() : void 0;\n return publishWhileDraggingInVirtual({\n state,\n published: action.payload\n });\n }\n if (action.type === 'MOVE') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${action.type} not permitted in phase ${state.phase}`) : invariant() : void 0;\n const {\n client: clientSelection\n } = action.payload;\n if (isEqual$1(clientSelection, state.current.client.selection)) {\n return state;\n }\n return update({\n state,\n clientSelection,\n impact: isSnapping(state) ? state.impact : null\n });\n }\n if (action.type === 'UPDATE_DROPPABLE_SCROLL') {\n if (state.phase === 'DROP_PENDING') {\n return removeScrollJumpRequest(state);\n }\n if (state.phase === 'COLLECTING') {\n return removeScrollJumpRequest(state);\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${action.type} not permitted in phase ${state.phase}`) : invariant() : void 0;\n const {\n id,\n newScroll\n } = action.payload;\n const target = state.dimensions.droppables[id];\n if (!target) {\n return state;\n }\n const scrolled = scrollDroppable(target, newScroll);\n return postDroppableChange(state, scrolled, false);\n }\n if (action.type === 'UPDATE_DROPPABLE_IS_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Attempting to move in an unsupported phase ${state.phase}`) : invariant() : void 0;\n const {\n id,\n isEnabled\n } = action.payload;\n const target = state.dimensions.droppables[id];\n !target ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find Droppable[id: ${id}] to toggle its enabled state`) : invariant() : void 0;\n !(target.isEnabled !== isEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Trying to set droppable isEnabled to ${String(isEnabled)}\n but it is already ${String(target.isEnabled)}`) : invariant() : void 0;\n const updated = {\n ...target,\n isEnabled\n };\n return postDroppableChange(state, updated, true);\n }\n if (action.type === 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED') {\n if (state.phase === 'DROP_PENDING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Attempting to move in an unsupported phase ${state.phase}`) : invariant() : void 0;\n const {\n id,\n isCombineEnabled\n } = action.payload;\n const target = state.dimensions.droppables[id];\n !target ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find Droppable[id: ${id}] to toggle its isCombineEnabled state`) : invariant() : void 0;\n !(target.isCombineEnabled !== isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Trying to set droppable isCombineEnabled to ${String(isCombineEnabled)}\n but it is already ${String(target.isCombineEnabled)}`) : invariant() : void 0;\n const updated = {\n ...target,\n isCombineEnabled\n };\n return postDroppableChange(state, updated, true);\n }\n if (action.type === 'MOVE_BY_WINDOW_SCROLL') {\n if (state.phase === 'DROP_PENDING' || state.phase === 'DROP_ANIMATING') {\n return state;\n }\n !isMovementAllowed(state) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot move by window in phase ${state.phase}`) : invariant() : void 0;\n !state.isWindowScrollAllowed ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Window scrolling is currently not supported for fixed lists') : invariant() : void 0;\n const newScroll = action.payload.newScroll;\n if (isEqual$1(state.viewport.scroll.current, newScroll)) {\n return removeScrollJumpRequest(state);\n }\n const viewport = scrollViewport(state.viewport, newScroll);\n if (isSnapping(state)) {\n return refreshSnap({\n state,\n viewport\n });\n }\n return update({\n state,\n viewport\n });\n }\n if (action.type === 'UPDATE_VIEWPORT_MAX_SCROLL') {\n if (!isMovementAllowed(state)) {\n return state;\n }\n const maxScroll = action.payload.maxScroll;\n if (isEqual$1(maxScroll, state.viewport.scroll.max)) {\n return state;\n }\n const withMaxScroll = {\n ...state.viewport,\n scroll: {\n ...state.viewport.scroll,\n max: maxScroll\n }\n };\n return {\n ...state,\n viewport: withMaxScroll\n };\n }\n if (action.type === 'MOVE_UP' || action.type === 'MOVE_DOWN' || action.type === 'MOVE_LEFT' || action.type === 'MOVE_RIGHT') {\n if (state.phase === 'COLLECTING' || state.phase === 'DROP_PENDING') {\n return state;\n }\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${action.type} received while not in DRAGGING phase`) : invariant() : void 0;\n const result = moveInDirection({\n state,\n type: action.type\n });\n if (!result) {\n return state;\n }\n return update({\n state,\n impact: result.impact,\n clientSelection: result.clientSelection,\n scrollJumpRequest: result.scrollJumpRequest\n });\n }\n if (action.type === 'DROP_PENDING') {\n const reason = action.payload.reason;\n !(state.phase === 'COLLECTING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only move into the DROP_PENDING phase from the COLLECTING phase') : invariant() : void 0;\n const newState = {\n ...state,\n phase: 'DROP_PENDING',\n isWaiting: true,\n reason\n };\n return newState;\n }\n if (action.type === 'DROP_ANIMATE') {\n const {\n completed,\n dropDuration,\n newHomeClientOffset\n } = action.payload;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot animate drop from phase ${state.phase}`) : invariant() : void 0;\n const result = {\n phase: 'DROP_ANIMATING',\n completed,\n dropDuration,\n newHomeClientOffset,\n dimensions: state.dimensions\n };\n return result;\n }\n if (action.type === 'DROP_COMPLETE') {\n const {\n completed\n } = action.payload;\n return {\n phase: 'IDLE',\n completed,\n shouldFlush: false\n };\n }\n return state;\n};\n\nfunction guard(action, predicate) {\n return action instanceof Object && 'type' in action && action.type === predicate;\n}\nconst beforeInitialCapture = args => ({\n type: 'BEFORE_INITIAL_CAPTURE',\n payload: args\n});\nconst lift$1 = args => ({\n type: 'LIFT',\n payload: args\n});\nconst initialPublish = args => ({\n type: 'INITIAL_PUBLISH',\n payload: args\n});\nconst publishWhileDragging = args => ({\n type: 'PUBLISH_WHILE_DRAGGING',\n payload: args\n});\nconst collectionStarting = () => ({\n type: 'COLLECTION_STARTING',\n payload: null\n});\nconst updateDroppableScroll = args => ({\n type: 'UPDATE_DROPPABLE_SCROLL',\n payload: args\n});\nconst updateDroppableIsEnabled = args => ({\n type: 'UPDATE_DROPPABLE_IS_ENABLED',\n payload: args\n});\nconst updateDroppableIsCombineEnabled = args => ({\n type: 'UPDATE_DROPPABLE_IS_COMBINE_ENABLED',\n payload: args\n});\nconst move = args => ({\n type: 'MOVE',\n payload: args\n});\nconst moveByWindowScroll = args => ({\n type: 'MOVE_BY_WINDOW_SCROLL',\n payload: args\n});\nconst updateViewportMaxScroll = args => ({\n type: 'UPDATE_VIEWPORT_MAX_SCROLL',\n payload: args\n});\nconst moveUp = () => ({\n type: 'MOVE_UP',\n payload: null\n});\nconst moveDown = () => ({\n type: 'MOVE_DOWN',\n payload: null\n});\nconst moveRight = () => ({\n type: 'MOVE_RIGHT',\n payload: null\n});\nconst moveLeft = () => ({\n type: 'MOVE_LEFT',\n payload: null\n});\nconst flush = () => ({\n type: 'FLUSH',\n payload: null\n});\nconst animateDrop = args => ({\n type: 'DROP_ANIMATE',\n payload: args\n});\nconst completeDrop = args => ({\n type: 'DROP_COMPLETE',\n payload: args\n});\nconst drop = args => ({\n type: 'DROP',\n payload: args\n});\nconst dropPending = args => ({\n type: 'DROP_PENDING',\n payload: args\n});\nconst dropAnimationFinished = () => ({\n type: 'DROP_ANIMATION_FINISHED',\n payload: null\n});\n\nfunction checkIndexes(insideDestination) {\n if (insideDestination.length <= 1) {\n return;\n }\n const indexes = insideDestination.map(d => d.descriptor.index);\n const errors = {};\n for (let i = 1; i < indexes.length; i++) {\n const current = indexes[i];\n const previous = indexes[i - 1];\n if (current !== previous + 1) {\n errors[current] = true;\n }\n }\n if (!Object.keys(errors).length) {\n return;\n }\n const formatted = indexes.map(index => {\n const hasError = Boolean(errors[index]);\n return hasError ? `[🔥${index}]` : `${index}`;\n }).join(', ');\n process.env.NODE_ENV !== \"production\" ? warning(`\n Detected non-consecutive <Draggable /> indexes.\n\n (This can cause unexpected bugs)\n\n ${formatted}\n `) : void 0;\n}\nfunction validateDimensions(critical, dimensions) {\n if (process.env.NODE_ENV !== 'production') {\n const insideDestination = getDraggablesInsideDroppable(critical.droppable.id, dimensions.draggables);\n checkIndexes(insideDestination);\n }\n}\n\nvar lift = marshal => ({\n getState,\n dispatch\n}) => next => action => {\n if (!guard(action, 'LIFT')) {\n next(action);\n return;\n }\n const {\n id,\n clientSelection,\n movementMode\n } = action.payload;\n const initial = getState();\n if (initial.phase === 'DROP_ANIMATING') {\n dispatch(completeDrop({\n completed: initial.completed\n }));\n }\n !(getState().phase === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase to start a drag') : invariant() : void 0;\n dispatch(flush());\n dispatch(beforeInitialCapture({\n draggableId: id,\n movementMode\n }));\n const scrollOptions = {\n shouldPublishImmediately: movementMode === 'SNAP'\n };\n const request = {\n draggableId: id,\n scrollOptions\n };\n const {\n critical,\n dimensions,\n viewport\n } = marshal.startPublishing(request);\n validateDimensions(critical, dimensions);\n dispatch(initialPublish({\n critical,\n dimensions,\n clientSelection,\n movementMode,\n viewport\n }));\n};\n\nvar style = marshal => () => next => action => {\n if (guard(action, 'INITIAL_PUBLISH')) {\n marshal.dragging();\n }\n if (guard(action, 'DROP_ANIMATE')) {\n marshal.dropping(action.payload.completed.result.reason);\n }\n if (guard(action, 'FLUSH') || guard(action, 'DROP_COMPLETE')) {\n marshal.resting();\n }\n next(action);\n};\n\nconst curves = {\n outOfTheWay: 'cubic-bezier(0.2, 0, 0, 1)',\n drop: 'cubic-bezier(.2,1,.1,1)'\n};\nconst combine = {\n opacity: {\n drop: 0,\n combining: 0.7\n },\n scale: {\n drop: 0.75\n }\n};\nconst timings = {\n outOfTheWay: 0.2,\n minDropTime: 0.33,\n maxDropTime: 0.55\n};\nconst outOfTheWayTiming = `${timings.outOfTheWay}s ${curves.outOfTheWay}`;\nconst transitions = {\n fluid: `opacity ${outOfTheWayTiming}`,\n snap: `transform ${outOfTheWayTiming}, opacity ${outOfTheWayTiming}`,\n drop: duration => {\n const timing = `${duration}s ${curves.drop}`;\n return `transform ${timing}, opacity ${timing}`;\n },\n outOfTheWay: `transform ${outOfTheWayTiming}`,\n placeholder: `height ${outOfTheWayTiming}, width ${outOfTheWayTiming}, margin ${outOfTheWayTiming}`\n};\nconst moveTo = offset => isEqual$1(offset, origin) ? undefined : `translate(${offset.x}px, ${offset.y}px)`;\nconst transforms = {\n moveTo,\n drop: (offset, isCombining) => {\n const translate = moveTo(offset);\n if (!translate) {\n return undefined;\n }\n if (!isCombining) {\n return translate;\n }\n return `${translate} scale(${combine.scale.drop})`;\n }\n};\n\nconst {\n minDropTime,\n maxDropTime\n} = timings;\nconst dropTimeRange = maxDropTime - minDropTime;\nconst maxDropTimeAtDistance = 1500;\nconst cancelDropModifier = 0.6;\nvar getDropDuration = ({\n current,\n destination,\n reason\n}) => {\n const distance$1 = distance(current, destination);\n if (distance$1 <= 0) {\n return minDropTime;\n }\n if (distance$1 >= maxDropTimeAtDistance) {\n return maxDropTime;\n }\n const percentage = distance$1 / maxDropTimeAtDistance;\n const duration = minDropTime + dropTimeRange * percentage;\n const withDuration = reason === 'CANCEL' ? duration * cancelDropModifier : duration;\n return Number(withDuration.toFixed(2));\n};\n\nvar getNewHomeClientOffset = ({\n impact,\n draggable,\n dimensions,\n viewport,\n afterCritical\n}) => {\n const {\n draggables,\n droppables\n } = dimensions;\n const droppableId = whatIsDraggedOver(impact);\n const destination = droppableId ? droppables[droppableId] : null;\n const home = droppables[draggable.descriptor.droppableId];\n const newClientCenter = getClientBorderBoxCenter({\n impact,\n draggable,\n draggables,\n afterCritical,\n droppable: destination || home,\n viewport\n });\n const offset = subtract(newClientCenter, draggable.client.borderBox.center);\n return offset;\n};\n\nvar getDropImpact = ({\n draggables,\n reason,\n lastImpact,\n home,\n viewport,\n onLiftImpact\n}) => {\n if (!lastImpact.at || reason !== 'DROP') {\n const recomputedHomeImpact = recompute({\n draggables,\n impact: onLiftImpact,\n destination: home,\n viewport,\n forceShouldAnimate: true\n });\n return {\n impact: recomputedHomeImpact,\n didDropInsideDroppable: false\n };\n }\n if (lastImpact.at.type === 'REORDER') {\n return {\n impact: lastImpact,\n didDropInsideDroppable: true\n };\n }\n const withoutMovement = {\n ...lastImpact,\n displaced: emptyGroups\n };\n return {\n impact: withoutMovement,\n didDropInsideDroppable: true\n };\n};\n\nconst dropMiddleware = ({\n getState,\n dispatch\n}) => next => action => {\n if (!guard(action, 'DROP')) {\n next(action);\n return;\n }\n const state = getState();\n const reason = action.payload.reason;\n if (state.phase === 'COLLECTING') {\n dispatch(dropPending({\n reason\n }));\n return;\n }\n if (state.phase === 'IDLE') {\n return;\n }\n const isWaitingForDrop = state.phase === 'DROP_PENDING' && state.isWaiting;\n !!isWaitingForDrop ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A DROP action occurred while DROP_PENDING and still waiting') : invariant() : void 0;\n !(state.phase === 'DRAGGING' || state.phase === 'DROP_PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot drop in phase: ${state.phase}`) : invariant() : void 0;\n const critical = state.critical;\n const dimensions = state.dimensions;\n const draggable = dimensions.draggables[state.critical.draggable.id];\n const {\n impact,\n didDropInsideDroppable\n } = getDropImpact({\n reason,\n lastImpact: state.impact,\n afterCritical: state.afterCritical,\n onLiftImpact: state.onLiftImpact,\n home: state.dimensions.droppables[state.critical.droppable.id],\n viewport: state.viewport,\n draggables: state.dimensions.draggables\n });\n const destination = didDropInsideDroppable ? tryGetDestination(impact) : null;\n const combine = didDropInsideDroppable ? tryGetCombine(impact) : null;\n const source = {\n index: critical.draggable.index,\n droppableId: critical.droppable.id\n };\n const result = {\n draggableId: draggable.descriptor.id,\n type: draggable.descriptor.type,\n source,\n reason,\n mode: state.movementMode,\n destination,\n combine\n };\n const newHomeClientOffset = getNewHomeClientOffset({\n impact,\n draggable,\n dimensions,\n viewport: state.viewport,\n afterCritical: state.afterCritical\n });\n const completed = {\n critical: state.critical,\n afterCritical: state.afterCritical,\n result,\n impact\n };\n const isAnimationRequired = !isEqual$1(state.current.client.offset, newHomeClientOffset) || Boolean(result.combine);\n if (!isAnimationRequired) {\n dispatch(completeDrop({\n completed\n }));\n return;\n }\n const dropDuration = getDropDuration({\n current: state.current.client.offset,\n destination: newHomeClientOffset,\n reason\n });\n const args = {\n newHomeClientOffset,\n dropDuration,\n completed\n };\n dispatch(animateDrop(args));\n};\n\nvar getWindowScroll = () => ({\n x: window.pageXOffset,\n y: window.pageYOffset\n});\n\nfunction getWindowScrollBinding(update) {\n return {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: event => {\n if (event.target !== window && event.target !== window.document) {\n return;\n }\n update();\n }\n };\n}\nfunction getScrollListener({\n onWindowScroll\n}) {\n function updateScroll() {\n onWindowScroll(getWindowScroll());\n }\n const scheduled = rafSchd(updateScroll);\n const binding = getWindowScrollBinding(scheduled);\n let unbind = noop$2;\n function isActive() {\n return unbind !== noop$2;\n }\n function start() {\n !!isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start scroll listener when already active') : invariant() : void 0;\n unbind = bindEvents(window, [binding]);\n }\n function stop() {\n !isActive() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop scroll listener when not active') : invariant() : void 0;\n scheduled.cancel();\n unbind();\n unbind = noop$2;\n }\n return {\n start,\n stop,\n isActive\n };\n}\n\nconst shouldStop$1 = action => guard(action, 'DROP_COMPLETE') || guard(action, 'DROP_ANIMATE') || guard(action, 'FLUSH');\nconst scrollListener = store => {\n const listener = getScrollListener({\n onWindowScroll: newScroll => {\n store.dispatch(moveByWindowScroll({\n newScroll\n }));\n }\n });\n return next => action => {\n if (!listener.isActive() && guard(action, 'INITIAL_PUBLISH')) {\n listener.start();\n }\n if (listener.isActive() && shouldStop$1(action)) {\n listener.stop();\n }\n next(action);\n };\n};\n\nvar getExpiringAnnounce = announce => {\n let wasCalled = false;\n let isExpired = false;\n const timeoutId = setTimeout(() => {\n isExpired = true;\n });\n const result = message => {\n if (wasCalled) {\n process.env.NODE_ENV !== \"production\" ? warning('Announcement already made. Not making a second announcement') : void 0;\n return;\n }\n if (isExpired) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Announcements cannot be made asynchronously.\n Default message has already been announced.\n `) : void 0;\n return;\n }\n wasCalled = true;\n announce(message);\n clearTimeout(timeoutId);\n };\n result.wasCalled = () => wasCalled;\n return result;\n};\n\nvar getAsyncMarshal = () => {\n const entries = [];\n const execute = timerId => {\n const index = entries.findIndex(item => item.timerId === timerId);\n !(index !== -1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find timer') : invariant() : void 0;\n const [entry] = entries.splice(index, 1);\n entry.callback();\n };\n const add = fn => {\n const timerId = setTimeout(() => execute(timerId));\n const entry = {\n timerId,\n callback: fn\n };\n entries.push(entry);\n };\n const flush = () => {\n if (!entries.length) {\n return;\n }\n const shallow = [...entries];\n entries.length = 0;\n shallow.forEach(entry => {\n clearTimeout(entry.timerId);\n entry.callback();\n });\n };\n return {\n add,\n flush\n };\n};\n\nconst areLocationsEqual = (first, second) => {\n if (first == null && second == null) {\n return true;\n }\n if (first == null || second == null) {\n return false;\n }\n return first.droppableId === second.droppableId && first.index === second.index;\n};\nconst isCombineEqual = (first, second) => {\n if (first == null && second == null) {\n return true;\n }\n if (first == null || second == null) {\n return false;\n }\n return first.draggableId === second.draggableId && first.droppableId === second.droppableId;\n};\nconst isCriticalEqual = (first, second) => {\n if (first === second) {\n return true;\n }\n const isDraggableEqual = first.draggable.id === second.draggable.id && first.draggable.droppableId === second.draggable.droppableId && first.draggable.type === second.draggable.type && first.draggable.index === second.draggable.index;\n const isDroppableEqual = first.droppable.id === second.droppable.id && first.droppable.type === second.droppable.type;\n return isDraggableEqual && isDroppableEqual;\n};\n\nconst withTimings = (key, fn) => {\n start();\n fn();\n finish();\n};\nconst getDragStart = (critical, mode) => ({\n draggableId: critical.draggable.id,\n type: critical.droppable.type,\n source: {\n droppableId: critical.droppable.id,\n index: critical.draggable.index\n },\n mode\n});\nfunction execute(responder, data, announce, getDefaultMessage) {\n if (!responder) {\n announce(getDefaultMessage(data));\n return;\n }\n const willExpire = getExpiringAnnounce(announce);\n const provided = {\n announce: willExpire\n };\n responder(data, provided);\n if (!willExpire.wasCalled()) {\n announce(getDefaultMessage(data));\n }\n}\nvar getPublisher = (getResponders, announce) => {\n const asyncMarshal = getAsyncMarshal();\n let dragging = null;\n const beforeCapture = (draggableId, mode) => {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeCapture as a drag start has already been published') : invariant() : void 0;\n withTimings('onBeforeCapture', () => {\n const fn = getResponders().onBeforeCapture;\n if (fn) {\n const before = {\n draggableId,\n mode\n };\n fn(before);\n }\n });\n };\n const beforeStart = (critical, mode) => {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant() : void 0;\n withTimings('onBeforeDragStart', () => {\n const fn = getResponders().onBeforeDragStart;\n if (fn) {\n fn(getDragStart(critical, mode));\n }\n });\n };\n const start = (critical, mode) => {\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onBeforeDragStart as a drag start has already been published') : invariant() : void 0;\n const data = getDragStart(critical, mode);\n dragging = {\n mode,\n lastCritical: critical,\n lastLocation: data.source,\n lastCombine: null\n };\n asyncMarshal.add(() => {\n withTimings('onDragStart', () => execute(getResponders().onDragStart, data, announce, preset.onDragStart));\n });\n };\n const update = (critical, impact) => {\n const location = tryGetDestination(impact);\n const combine = tryGetCombine(impact);\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragMove when onDragStart has not been called') : invariant() : void 0;\n const hasCriticalChanged = !isCriticalEqual(critical, dragging.lastCritical);\n if (hasCriticalChanged) {\n dragging.lastCritical = critical;\n }\n const hasLocationChanged = !areLocationsEqual(dragging.lastLocation, location);\n if (hasLocationChanged) {\n dragging.lastLocation = location;\n }\n const hasGroupingChanged = !isCombineEqual(dragging.lastCombine, combine);\n if (hasGroupingChanged) {\n dragging.lastCombine = combine;\n }\n if (!hasCriticalChanged && !hasLocationChanged && !hasGroupingChanged) {\n return;\n }\n const data = {\n ...getDragStart(critical, dragging.mode),\n combine,\n destination: location\n };\n asyncMarshal.add(() => {\n withTimings('onDragUpdate', () => execute(getResponders().onDragUpdate, data, announce, preset.onDragUpdate));\n });\n };\n const flush = () => {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only flush responders while dragging') : invariant() : void 0;\n asyncMarshal.flush();\n };\n const drop = result => {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fire onDragEnd when there is no matching onDragStart') : invariant() : void 0;\n dragging = null;\n withTimings('onDragEnd', () => execute(getResponders().onDragEnd, result, announce, preset.onDragEnd));\n };\n const abort = () => {\n if (!dragging) {\n return;\n }\n const result = {\n ...getDragStart(dragging.lastCritical, dragging.mode),\n combine: null,\n destination: null,\n reason: 'CANCEL'\n };\n drop(result);\n };\n return {\n beforeCapture,\n beforeStart,\n start,\n update,\n flush,\n drop,\n abort\n };\n};\n\nvar responders = (getResponders, announce) => {\n const publisher = getPublisher(getResponders, announce);\n return store => next => action => {\n if (guard(action, 'BEFORE_INITIAL_CAPTURE')) {\n publisher.beforeCapture(action.payload.draggableId, action.payload.movementMode);\n return;\n }\n if (guard(action, 'INITIAL_PUBLISH')) {\n const critical = action.payload.critical;\n publisher.beforeStart(critical, action.payload.movementMode);\n next(action);\n publisher.start(critical, action.payload.movementMode);\n return;\n }\n if (guard(action, 'DROP_COMPLETE')) {\n const result = action.payload.completed.result;\n publisher.flush();\n next(action);\n publisher.drop(result);\n return;\n }\n next(action);\n if (guard(action, 'FLUSH')) {\n publisher.abort();\n return;\n }\n const state = store.getState();\n if (state.phase === 'DRAGGING') {\n publisher.update(state.critical, state.impact);\n }\n };\n};\n\nconst dropAnimationFinishMiddleware = store => next => action => {\n if (!guard(action, 'DROP_ANIMATION_FINISHED')) {\n next(action);\n return;\n }\n const state = store.getState();\n !(state.phase === 'DROP_ANIMATING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot finish a drop animating when no drop is occurring') : invariant() : void 0;\n store.dispatch(completeDrop({\n completed: state.completed\n }));\n};\n\nconst dropAnimationFlushOnScrollMiddleware = store => {\n let unbind = null;\n let frameId = null;\n function clear() {\n if (frameId) {\n cancelAnimationFrame(frameId);\n frameId = null;\n }\n if (unbind) {\n unbind();\n unbind = null;\n }\n }\n return next => action => {\n if (guard(action, 'FLUSH') || guard(action, 'DROP_COMPLETE') || guard(action, 'DROP_ANIMATION_FINISHED')) {\n clear();\n }\n next(action);\n if (!guard(action, 'DROP_ANIMATE')) {\n return;\n }\n const binding = {\n eventName: 'scroll',\n options: {\n capture: true,\n passive: false,\n once: true\n },\n fn: function flushDropAnimation() {\n const state = store.getState();\n if (state.phase === 'DROP_ANIMATING') {\n store.dispatch(dropAnimationFinished());\n }\n }\n };\n frameId = requestAnimationFrame(() => {\n frameId = null;\n unbind = bindEvents(window, [binding]);\n });\n };\n};\n\nvar dimensionMarshalStopper = marshal => () => next => action => {\n if (guard(action, 'DROP_COMPLETE') || guard(action, 'FLUSH') || guard(action, 'DROP_ANIMATE')) {\n marshal.stopPublishing();\n }\n next(action);\n};\n\nvar focus = marshal => {\n let isWatching = false;\n return () => next => action => {\n if (guard(action, 'INITIAL_PUBLISH')) {\n isWatching = true;\n marshal.tryRecordFocus(action.payload.critical.draggable.id);\n next(action);\n marshal.tryRestoreFocusRecorded();\n return;\n }\n next(action);\n if (!isWatching) {\n return;\n }\n if (guard(action, 'FLUSH')) {\n isWatching = false;\n marshal.tryRestoreFocusRecorded();\n return;\n }\n if (guard(action, 'DROP_COMPLETE')) {\n isWatching = false;\n const result = action.payload.completed.result;\n if (result.combine) {\n marshal.tryShiftRecord(result.draggableId, result.combine.draggableId);\n }\n marshal.tryRestoreFocusRecorded();\n }\n };\n};\n\nconst shouldStop = action => guard(action, 'DROP_COMPLETE') || guard(action, 'DROP_ANIMATE') || guard(action, 'FLUSH');\nvar autoScroll = autoScroller => store => next => action => {\n if (shouldStop(action)) {\n autoScroller.stop();\n next(action);\n return;\n }\n if (guard(action, 'INITIAL_PUBLISH')) {\n next(action);\n const state = store.getState();\n !(state.phase === 'DRAGGING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected phase to be DRAGGING after INITIAL_PUBLISH') : invariant() : void 0;\n autoScroller.start(state);\n return;\n }\n next(action);\n autoScroller.scroll(store.getState());\n};\n\nconst pendingDrop = store => next => action => {\n next(action);\n if (!guard(action, 'PUBLISH_WHILE_DRAGGING')) {\n return;\n }\n const postActionState = store.getState();\n if (postActionState.phase !== 'DROP_PENDING') {\n return;\n }\n if (postActionState.isWaiting) {\n return;\n }\n store.dispatch(drop({\n reason: postActionState.reason\n }));\n};\n\nconst composeEnhancers = process.env.NODE_ENV !== 'production' && typeof window !== 'undefined' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n name: '@hello-pangea/dnd'\n}) : compose;\nvar createStore = ({\n dimensionMarshal,\n focusMarshal,\n styleMarshal,\n getResponders,\n announce,\n autoScroller\n}) => createStore$1(reducer, composeEnhancers(applyMiddleware(style(styleMarshal), dimensionMarshalStopper(dimensionMarshal), lift(dimensionMarshal), dropMiddleware, dropAnimationFinishMiddleware, dropAnimationFlushOnScrollMiddleware, pendingDrop, autoScroll(autoScroller), scrollListener, focus(focusMarshal), responders(getResponders, announce))));\n\nconst clean$1 = () => ({\n additions: {},\n removals: {},\n modified: {}\n});\nfunction createPublisher({\n registry,\n callbacks\n}) {\n let staging = clean$1();\n let frameId = null;\n const collect = () => {\n if (frameId) {\n return;\n }\n callbacks.collectionStarting();\n frameId = requestAnimationFrame(() => {\n frameId = null;\n start();\n const {\n additions,\n removals,\n modified\n } = staging;\n const added = Object.keys(additions).map(id => registry.draggable.getById(id).getDimension(origin)).sort((a, b) => a.descriptor.index - b.descriptor.index);\n const updated = Object.keys(modified).map(id => {\n const entry = registry.droppable.getById(id);\n const scroll = entry.callbacks.getScrollWhileDragging();\n return {\n droppableId: id,\n scroll\n };\n });\n const result = {\n additions: added,\n removals: Object.keys(removals),\n modified: updated\n };\n staging = clean$1();\n finish();\n callbacks.publish(result);\n });\n };\n const add = entry => {\n const id = entry.descriptor.id;\n staging.additions[id] = entry;\n staging.modified[entry.descriptor.droppableId] = true;\n if (staging.removals[id]) {\n delete staging.removals[id];\n }\n collect();\n };\n const remove = entry => {\n const descriptor = entry.descriptor;\n staging.removals[descriptor.id] = true;\n staging.modified[descriptor.droppableId] = true;\n if (staging.additions[descriptor.id]) {\n delete staging.additions[descriptor.id];\n }\n collect();\n };\n const stop = () => {\n if (!frameId) {\n return;\n }\n cancelAnimationFrame(frameId);\n frameId = null;\n staging = clean$1();\n };\n return {\n add,\n remove,\n stop\n };\n}\n\nvar getMaxScroll = ({\n scrollHeight,\n scrollWidth,\n height,\n width\n}) => {\n const maxScroll = subtract({\n x: scrollWidth,\n y: scrollHeight\n }, {\n x: width,\n y: height\n });\n const adjustedMaxScroll = {\n x: Math.max(0, maxScroll.x),\n y: Math.max(0, maxScroll.y)\n };\n return adjustedMaxScroll;\n};\n\nvar getDocumentElement = () => {\n const doc = document.documentElement;\n !doc ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.documentElement') : invariant() : void 0;\n return doc;\n};\n\nvar getMaxWindowScroll = () => {\n const doc = getDocumentElement();\n const maxScroll = getMaxScroll({\n scrollHeight: doc.scrollHeight,\n scrollWidth: doc.scrollWidth,\n width: doc.clientWidth,\n height: doc.clientHeight\n });\n return maxScroll;\n};\n\nvar getViewport = () => {\n const scroll = getWindowScroll();\n const maxScroll = getMaxWindowScroll();\n const top = scroll.y;\n const left = scroll.x;\n const doc = getDocumentElement();\n const width = doc.clientWidth;\n const height = doc.clientHeight;\n const right = left + width;\n const bottom = top + height;\n const frame = getRect({\n top,\n left,\n right,\n bottom\n });\n const viewport = {\n frame,\n scroll: {\n initial: scroll,\n current: scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n return viewport;\n};\n\nvar getInitialPublish = ({\n critical,\n scrollOptions,\n registry\n}) => {\n start();\n const viewport = getViewport();\n const windowScroll = viewport.scroll.current;\n const home = critical.droppable;\n const droppables = registry.droppable.getAllByType(home.type).map(entry => entry.callbacks.getDimensionAndWatchScroll(windowScroll, scrollOptions));\n const draggables = registry.draggable.getAllByType(critical.draggable.type).map(entry => entry.getDimension(windowScroll));\n const dimensions = {\n draggables: toDraggableMap(draggables),\n droppables: toDroppableMap(droppables)\n };\n finish();\n const result = {\n dimensions,\n critical,\n viewport\n };\n return result;\n};\n\nfunction shouldPublishUpdate(registry, dragging, entry) {\n if (entry.descriptor.id === dragging.id) {\n return false;\n }\n if (entry.descriptor.type !== dragging.type) {\n return false;\n }\n const home = registry.droppable.getById(entry.descriptor.droppableId);\n if (home.descriptor.mode !== 'virtual') {\n process.env.NODE_ENV !== \"production\" ? warning(`\n You are attempting to add or remove a Draggable [id: ${entry.descriptor.id}]\n while a drag is occurring. This is only supported for virtual lists.\n\n See https://github.com/hello-pangea/dnd/blob/main/docs/patterns/virtual-lists.md\n `) : void 0;\n return false;\n }\n return true;\n}\nvar createDimensionMarshal = (registry, callbacks) => {\n let collection = null;\n const publisher = createPublisher({\n callbacks: {\n publish: callbacks.publishWhileDragging,\n collectionStarting: callbacks.collectionStarting\n },\n registry\n });\n const updateDroppableIsEnabled = (id, isEnabled) => {\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update is enabled flag of Droppable ${id} as it is not registered`) : invariant() : void 0;\n if (!collection) {\n return;\n }\n callbacks.updateDroppableIsEnabled({\n id,\n isEnabled\n });\n };\n const updateDroppableIsCombineEnabled = (id, isCombineEnabled) => {\n if (!collection) {\n return;\n }\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update isCombineEnabled flag of Droppable ${id} as it is not registered`) : invariant() : void 0;\n callbacks.updateDroppableIsCombineEnabled({\n id,\n isCombineEnabled\n });\n };\n const updateDroppableScroll = (id, newScroll) => {\n if (!collection) {\n return;\n }\n !registry.droppable.exists(id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot update the scroll on Droppable ${id} as it is not registered`) : invariant() : void 0;\n callbacks.updateDroppableScroll({\n id,\n newScroll\n });\n };\n const scrollDroppable = (id, change) => {\n if (!collection) {\n return;\n }\n registry.droppable.getById(id).callbacks.scroll(change);\n };\n const stopPublishing = () => {\n if (!collection) {\n return;\n }\n publisher.stop();\n const home = collection.critical.droppable;\n registry.droppable.getAllByType(home.type).forEach(entry => entry.callbacks.dragStopped());\n collection.unsubscribe();\n collection = null;\n };\n const subscriber = event => {\n !collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Should only be subscribed when a collection is occurring') : invariant() : void 0;\n const dragging = collection.critical.draggable;\n if (event.type === 'ADDITION') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.add(event.value);\n }\n }\n if (event.type === 'REMOVAL') {\n if (shouldPublishUpdate(registry, dragging, event.value)) {\n publisher.remove(event.value);\n }\n }\n };\n const startPublishing = request => {\n !!collection ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start capturing critical dimensions as there is already a collection') : invariant() : void 0;\n const entry = registry.draggable.getById(request.draggableId);\n const home = registry.droppable.getById(entry.descriptor.droppableId);\n const critical = {\n draggable: entry.descriptor,\n droppable: home.descriptor\n };\n const unsubscribe = registry.subscribe(subscriber);\n collection = {\n critical,\n unsubscribe\n };\n return getInitialPublish({\n critical,\n registry,\n scrollOptions: request.scrollOptions\n });\n };\n const marshal = {\n updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled,\n scrollDroppable,\n updateDroppableScroll,\n startPublishing,\n stopPublishing\n };\n return marshal;\n};\n\nvar canStartDrag = (state, id) => {\n if (state.phase === 'IDLE') {\n return true;\n }\n if (state.phase !== 'DROP_ANIMATING') {\n return false;\n }\n if (state.completed.result.draggableId === id) {\n return false;\n }\n return state.completed.result.reason === 'DROP';\n};\n\nvar scrollWindow = change => {\n window.scrollBy(change.x, change.y);\n};\n\nconst getScrollableDroppables = memoizeOne(droppables => toDroppableList(droppables).filter(droppable => {\n if (!droppable.isEnabled) {\n return false;\n }\n if (!droppable.frame) {\n return false;\n }\n return true;\n}));\nconst getScrollableDroppableOver = (target, droppables) => {\n const maybe = getScrollableDroppables(droppables).find(droppable => {\n !droppable.frame ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Invalid result') : invariant() : void 0;\n return isPositionInFrame(droppable.frame.pageMarginBox)(target);\n }) || null;\n return maybe;\n};\nvar getBestScrollableDroppable = ({\n center,\n destination,\n droppables\n}) => {\n if (destination) {\n const dimension = droppables[destination];\n if (!dimension.frame) {\n return null;\n }\n return dimension;\n }\n const dimension = getScrollableDroppableOver(center, droppables);\n return dimension;\n};\n\nconst defaultAutoScrollerOptions = {\n startFromPercentage: 0.25,\n maxScrollAtPercentage: 0.05,\n maxPixelScroll: 28,\n ease: percentage => percentage ** 2,\n durationDampening: {\n stopDampeningAt: 1200,\n accelerateAt: 360\n },\n disabled: false\n};\n\nvar getDistanceThresholds = (container, axis, getAutoScrollerOptions = () => defaultAutoScrollerOptions) => {\n const autoScrollerOptions = getAutoScrollerOptions();\n const startScrollingFrom = container[axis.size] * autoScrollerOptions.startFromPercentage;\n const maxScrollValueAt = container[axis.size] * autoScrollerOptions.maxScrollAtPercentage;\n const thresholds = {\n startScrollingFrom,\n maxScrollValueAt\n };\n return thresholds;\n};\n\nvar getPercentage = ({\n startOfRange,\n endOfRange,\n current\n}) => {\n const range = endOfRange - startOfRange;\n if (range === 0) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Detected distance range of 0 in the fluid auto scroller\n This is unexpected and would cause a divide by 0 issue.\n Not allowing an auto scroll\n `) : void 0;\n return 0;\n }\n const currentInRange = current - startOfRange;\n const percentage = currentInRange / range;\n return percentage;\n};\n\nvar minScroll = 1;\n\nvar getValueFromDistance = (distanceToEdge, thresholds, getAutoScrollerOptions = () => defaultAutoScrollerOptions) => {\n const autoScrollerOptions = getAutoScrollerOptions();\n if (distanceToEdge > thresholds.startScrollingFrom) {\n return 0;\n }\n if (distanceToEdge <= thresholds.maxScrollValueAt) {\n return autoScrollerOptions.maxPixelScroll;\n }\n if (distanceToEdge === thresholds.startScrollingFrom) {\n return minScroll;\n }\n const percentageFromMaxScrollValueAt = getPercentage({\n startOfRange: thresholds.maxScrollValueAt,\n endOfRange: thresholds.startScrollingFrom,\n current: distanceToEdge\n });\n const percentageFromStartScrollingFrom = 1 - percentageFromMaxScrollValueAt;\n const scroll = autoScrollerOptions.maxPixelScroll * autoScrollerOptions.ease(percentageFromStartScrollingFrom);\n return Math.ceil(scroll);\n};\n\nvar dampenValueByTime = (proposedScroll, dragStartTime, getAutoScrollerOptions) => {\n const autoScrollerOptions = getAutoScrollerOptions();\n const accelerateAt = autoScrollerOptions.durationDampening.accelerateAt;\n const stopAt = autoScrollerOptions.durationDampening.stopDampeningAt;\n const startOfRange = dragStartTime;\n const endOfRange = stopAt;\n const now = Date.now();\n const runTime = now - startOfRange;\n if (runTime >= stopAt) {\n return proposedScroll;\n }\n if (runTime < accelerateAt) {\n return minScroll;\n }\n const betweenAccelerateAtAndStopAtPercentage = getPercentage({\n startOfRange: accelerateAt,\n endOfRange,\n current: runTime\n });\n const scroll = proposedScroll * autoScrollerOptions.ease(betweenAccelerateAtAndStopAtPercentage);\n return Math.ceil(scroll);\n};\n\nvar getValue = ({\n distanceToEdge,\n thresholds,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const scroll = getValueFromDistance(distanceToEdge, thresholds, getAutoScrollerOptions);\n if (scroll === 0) {\n return 0;\n }\n if (!shouldUseTimeDampening) {\n return scroll;\n }\n return Math.max(dampenValueByTime(scroll, dragStartTime, getAutoScrollerOptions), minScroll);\n};\n\nvar getScrollOnAxis = ({\n container,\n distanceToEdges,\n dragStartTime,\n axis,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const thresholds = getDistanceThresholds(container, axis, getAutoScrollerOptions);\n const isCloserToEnd = distanceToEdges[axis.end] < distanceToEdges[axis.start];\n if (isCloserToEnd) {\n return getValue({\n distanceToEdge: distanceToEdges[axis.end],\n thresholds,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n }\n return -1 * getValue({\n distanceToEdge: distanceToEdges[axis.start],\n thresholds,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n};\n\nvar adjustForSizeLimits = ({\n container,\n subject,\n proposedScroll\n}) => {\n const isTooBigVertically = subject.height > container.height;\n const isTooBigHorizontally = subject.width > container.width;\n if (!isTooBigHorizontally && !isTooBigVertically) {\n return proposedScroll;\n }\n if (isTooBigHorizontally && isTooBigVertically) {\n return null;\n }\n return {\n x: isTooBigHorizontally ? 0 : proposedScroll.x,\n y: isTooBigVertically ? 0 : proposedScroll.y\n };\n};\n\nconst clean = apply(value => value === 0 ? 0 : value);\nvar getScroll$1 = ({\n dragStartTime,\n container,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const distanceToEdges = {\n top: center.y - container.top,\n right: container.right - center.x,\n bottom: container.bottom - center.y,\n left: center.x - container.left\n };\n const y = getScrollOnAxis({\n container,\n distanceToEdges,\n dragStartTime,\n axis: vertical,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n const x = getScrollOnAxis({\n container,\n distanceToEdges,\n dragStartTime,\n axis: horizontal,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n const required = clean({\n x,\n y\n });\n if (isEqual$1(required, origin)) {\n return null;\n }\n const limited = adjustForSizeLimits({\n container,\n subject,\n proposedScroll: required\n });\n if (!limited) {\n return null;\n }\n return isEqual$1(limited, origin) ? null : limited;\n};\n\nconst smallestSigned = apply(value => {\n if (value === 0) {\n return 0;\n }\n return value > 0 ? 1 : -1;\n});\nconst getOverlap = (() => {\n const getRemainder = (target, max) => {\n if (target < 0) {\n return target;\n }\n if (target > max) {\n return target - max;\n }\n return 0;\n };\n return ({\n current,\n max,\n change\n }) => {\n const targetScroll = add(current, change);\n const overlap = {\n x: getRemainder(targetScroll.x, max.x),\n y: getRemainder(targetScroll.y, max.y)\n };\n if (isEqual$1(overlap, origin)) {\n return null;\n }\n return overlap;\n };\n})();\nconst canPartiallyScroll = ({\n max: rawMax,\n current,\n change\n}) => {\n const max = {\n x: Math.max(current.x, rawMax.x),\n y: Math.max(current.y, rawMax.y)\n };\n const smallestChange = smallestSigned(change);\n const overlap = getOverlap({\n max,\n current,\n change: smallestChange\n });\n if (!overlap) {\n return true;\n }\n if (smallestChange.x !== 0 && overlap.x === 0) {\n return true;\n }\n if (smallestChange.y !== 0 && overlap.y === 0) {\n return true;\n }\n return false;\n};\nconst canScrollWindow = (viewport, change) => canPartiallyScroll({\n current: viewport.scroll.current,\n max: viewport.scroll.max,\n change\n});\nconst getWindowOverlap = (viewport, change) => {\n if (!canScrollWindow(viewport, change)) {\n return null;\n }\n const max = viewport.scroll.max;\n const current = viewport.scroll.current;\n return getOverlap({\n current,\n max,\n change\n });\n};\nconst canScrollDroppable = (droppable, change) => {\n const frame = droppable.frame;\n if (!frame) {\n return false;\n }\n return canPartiallyScroll({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change\n });\n};\nconst getDroppableOverlap = (droppable, change) => {\n const frame = droppable.frame;\n if (!frame) {\n return null;\n }\n if (!canScrollDroppable(droppable, change)) {\n return null;\n }\n return getOverlap({\n current: frame.scroll.current,\n max: frame.scroll.max,\n change\n });\n};\n\nvar getWindowScrollChange = ({\n viewport,\n subject,\n center,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const scroll = getScroll$1({\n dragStartTime,\n container: viewport.frame,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n return scroll && canScrollWindow(viewport, scroll) ? scroll : null;\n};\n\nvar getDroppableScrollChange = ({\n droppable,\n subject,\n center,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n}) => {\n const frame = droppable.frame;\n if (!frame) {\n return null;\n }\n const scroll = getScroll$1({\n dragStartTime,\n container: frame.pageMarginBox,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n return scroll && canScrollDroppable(droppable, scroll) ? scroll : null;\n};\n\nvar scroll = ({\n state,\n dragStartTime,\n shouldUseTimeDampening,\n scrollWindow,\n scrollDroppable,\n getAutoScrollerOptions\n}) => {\n const center = state.current.page.borderBoxCenter;\n const draggable = state.dimensions.draggables[state.critical.draggable.id];\n const subject = draggable.page.marginBox;\n if (state.isWindowScrollAllowed) {\n const viewport = state.viewport;\n const change = getWindowScrollChange({\n dragStartTime,\n viewport,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n if (change) {\n scrollWindow(change);\n return;\n }\n }\n const droppable = getBestScrollableDroppable({\n center,\n destination: whatIsDraggedOver(state.impact),\n droppables: state.dimensions.droppables\n });\n if (!droppable) {\n return;\n }\n const change = getDroppableScrollChange({\n dragStartTime,\n droppable,\n subject,\n center,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n if (change) {\n scrollDroppable(droppable.descriptor.id, change);\n }\n};\n\nvar createFluidScroller = ({\n scrollWindow,\n scrollDroppable,\n getAutoScrollerOptions = () => defaultAutoScrollerOptions\n}) => {\n const scheduleWindowScroll = rafSchd(scrollWindow);\n const scheduleDroppableScroll = rafSchd(scrollDroppable);\n let dragging = null;\n const tryScroll = state => {\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot fluid scroll if not dragging') : invariant() : void 0;\n const {\n shouldUseTimeDampening,\n dragStartTime\n } = dragging;\n scroll({\n state,\n scrollWindow: scheduleWindowScroll,\n scrollDroppable: scheduleDroppableScroll,\n dragStartTime,\n shouldUseTimeDampening,\n getAutoScrollerOptions\n });\n };\n const start$1 = state => {\n start();\n !!dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot start auto scrolling when already started') : invariant() : void 0;\n const dragStartTime = Date.now();\n let wasScrollNeeded = false;\n const fakeScrollCallback = () => {\n wasScrollNeeded = true;\n };\n scroll({\n state,\n dragStartTime: 0,\n shouldUseTimeDampening: false,\n scrollWindow: fakeScrollCallback,\n scrollDroppable: fakeScrollCallback,\n getAutoScrollerOptions\n });\n dragging = {\n dragStartTime,\n shouldUseTimeDampening: wasScrollNeeded\n };\n finish();\n if (wasScrollNeeded) {\n tryScroll(state);\n }\n };\n const stop = () => {\n if (!dragging) {\n return;\n }\n scheduleWindowScroll.cancel();\n scheduleDroppableScroll.cancel();\n dragging = null;\n };\n return {\n start: start$1,\n stop,\n scroll: tryScroll\n };\n};\n\nvar createJumpScroller = ({\n move,\n scrollDroppable,\n scrollWindow\n}) => {\n const moveByOffset = (state, offset) => {\n const client = add(state.current.client.selection, offset);\n move({\n client\n });\n };\n const scrollDroppableAsMuchAsItCan = (droppable, change) => {\n if (!canScrollDroppable(droppable, change)) {\n return change;\n }\n const overlap = getDroppableOverlap(droppable, change);\n if (!overlap) {\n scrollDroppable(droppable.descriptor.id, change);\n return null;\n }\n const whatTheDroppableCanScroll = subtract(change, overlap);\n scrollDroppable(droppable.descriptor.id, whatTheDroppableCanScroll);\n const remainder = subtract(change, whatTheDroppableCanScroll);\n return remainder;\n };\n const scrollWindowAsMuchAsItCan = (isWindowScrollAllowed, viewport, change) => {\n if (!isWindowScrollAllowed) {\n return change;\n }\n if (!canScrollWindow(viewport, change)) {\n return change;\n }\n const overlap = getWindowOverlap(viewport, change);\n if (!overlap) {\n scrollWindow(change);\n return null;\n }\n const whatTheWindowCanScroll = subtract(change, overlap);\n scrollWindow(whatTheWindowCanScroll);\n const remainder = subtract(change, whatTheWindowCanScroll);\n return remainder;\n };\n const jumpScroller = state => {\n const request = state.scrollJumpRequest;\n if (!request) {\n return;\n }\n const destination = whatIsDraggedOver(state.impact);\n !destination ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot perform a jump scroll when there is no destination') : invariant() : void 0;\n const droppableRemainder = scrollDroppableAsMuchAsItCan(state.dimensions.droppables[destination], request);\n if (!droppableRemainder) {\n return;\n }\n const viewport = state.viewport;\n const windowRemainder = scrollWindowAsMuchAsItCan(state.isWindowScrollAllowed, viewport, droppableRemainder);\n if (!windowRemainder) {\n return;\n }\n moveByOffset(state, windowRemainder);\n };\n return jumpScroller;\n};\n\nvar createAutoScroller = ({\n scrollDroppable,\n scrollWindow,\n move,\n getAutoScrollerOptions\n}) => {\n const fluidScroller = createFluidScroller({\n scrollWindow,\n scrollDroppable,\n getAutoScrollerOptions\n });\n const jumpScroll = createJumpScroller({\n move,\n scrollWindow,\n scrollDroppable\n });\n const scroll = state => {\n const autoScrollerOptions = getAutoScrollerOptions();\n if (autoScrollerOptions.disabled || state.phase !== 'DRAGGING') {\n return;\n }\n if (state.movementMode === 'FLUID') {\n fluidScroller.scroll(state);\n return;\n }\n if (!state.scrollJumpRequest) {\n return;\n }\n jumpScroll(state);\n };\n const scroller = {\n scroll,\n start: fluidScroller.start,\n stop: fluidScroller.stop\n };\n return scroller;\n};\n\nconst prefix = 'data-rfd';\nconst dragHandle = (() => {\n const base = `${prefix}-drag-handle`;\n return {\n base,\n draggableId: `${base}-draggable-id`,\n contextId: `${base}-context-id`\n };\n})();\nconst draggable = (() => {\n const base = `${prefix}-draggable`;\n return {\n base,\n contextId: `${base}-context-id`,\n id: `${base}-id`\n };\n})();\nconst droppable = (() => {\n const base = `${prefix}-droppable`;\n return {\n base,\n contextId: `${base}-context-id`,\n id: `${base}-id`\n };\n})();\nconst scrollContainer = {\n contextId: `${prefix}-scroll-container-context-id`\n};\n\nconst makeGetSelector = context => attribute => `[${attribute}=\"${context}\"]`;\nconst getStyles = (rules, property) => rules.map(rule => {\n const value = rule.styles[property];\n if (!value) {\n return '';\n }\n return `${rule.selector} { ${value} }`;\n}).join(' ');\nconst noPointerEvents = 'pointer-events: none;';\nvar getStyles$1 = contextId => {\n const getSelector = makeGetSelector(contextId);\n const dragHandle$1 = (() => {\n const grabCursor = `\n cursor: -webkit-grab;\n cursor: grab;\n `;\n return {\n selector: getSelector(dragHandle.contextId),\n styles: {\n always: `\n -webkit-touch-callout: none;\n -webkit-tap-highlight-color: rgba(0,0,0,0);\n touch-action: manipulation;\n `,\n resting: grabCursor,\n dragging: noPointerEvents,\n dropAnimating: grabCursor\n }\n };\n })();\n const draggable$1 = (() => {\n const transition = `\n transition: ${transitions.outOfTheWay};\n `;\n return {\n selector: getSelector(draggable.contextId),\n styles: {\n dragging: transition,\n dropAnimating: transition,\n userCancel: transition\n }\n };\n })();\n const droppable$1 = {\n selector: getSelector(droppable.contextId),\n styles: {\n always: `overflow-anchor: none;`\n }\n };\n const body = {\n selector: 'body',\n styles: {\n dragging: `\n cursor: grabbing;\n cursor: -webkit-grabbing;\n user-select: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n overflow-anchor: none;\n `\n }\n };\n const rules = [draggable$1, dragHandle$1, droppable$1, body];\n return {\n always: getStyles(rules, 'always'),\n resting: getStyles(rules, 'resting'),\n dragging: getStyles(rules, 'dragging'),\n dropAnimating: getStyles(rules, 'dropAnimating'),\n userCancel: getStyles(rules, 'userCancel')\n };\n};\n\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined' ? useLayoutEffect : useEffect;\n\nconst getHead = () => {\n const head = document.querySelector('head');\n !head ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find the head to append a style to') : invariant() : void 0;\n return head;\n};\nconst createStyleEl = nonce => {\n const el = document.createElement('style');\n if (nonce) {\n el.setAttribute('nonce', nonce);\n }\n el.type = 'text/css';\n return el;\n};\nfunction useStyleMarshal(contextId, nonce) {\n const styles = useMemo(() => getStyles$1(contextId), [contextId]);\n const alwaysRef = useRef(null);\n const dynamicRef = useRef(null);\n const setDynamicStyle = useCallback(memoizeOne(proposed => {\n const el = dynamicRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant() : void 0;\n el.textContent = proposed;\n }), []);\n const setAlwaysStyle = useCallback(proposed => {\n const el = alwaysRef.current;\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot set dynamic style element if it is not set') : invariant() : void 0;\n el.textContent = proposed;\n }, []);\n useIsomorphicLayoutEffect(() => {\n !(!alwaysRef.current && !dynamicRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'style elements already mounted') : invariant() : void 0;\n const always = createStyleEl(nonce);\n const dynamic = createStyleEl(nonce);\n alwaysRef.current = always;\n dynamicRef.current = dynamic;\n always.setAttribute(`${prefix}-always`, contextId);\n dynamic.setAttribute(`${prefix}-dynamic`, contextId);\n getHead().appendChild(always);\n getHead().appendChild(dynamic);\n setAlwaysStyle(styles.always);\n setDynamicStyle(styles.resting);\n return () => {\n const remove = ref => {\n const current = ref.current;\n !current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot unmount ref as it is not set') : invariant() : void 0;\n getHead().removeChild(current);\n ref.current = null;\n };\n remove(alwaysRef);\n remove(dynamicRef);\n };\n }, [nonce, setAlwaysStyle, setDynamicStyle, styles.always, styles.resting, contextId]);\n const dragging = useCallback(() => setDynamicStyle(styles.dragging), [setDynamicStyle, styles.dragging]);\n const dropping = useCallback(reason => {\n if (reason === 'DROP') {\n setDynamicStyle(styles.dropAnimating);\n return;\n }\n setDynamicStyle(styles.userCancel);\n }, [setDynamicStyle, styles.dropAnimating, styles.userCancel]);\n const resting = useCallback(() => {\n if (!dynamicRef.current) {\n return;\n }\n setDynamicStyle(styles.resting);\n }, [setDynamicStyle, styles.resting]);\n const marshal = useMemo(() => ({\n dragging,\n dropping,\n resting\n }), [dragging, dropping, resting]);\n return marshal;\n}\n\nfunction querySelectorAll(parentNode, selector) {\n return Array.from(parentNode.querySelectorAll(selector));\n}\n\nvar getWindowFromEl = el => {\n if (el && el.ownerDocument && el.ownerDocument.defaultView) {\n return el.ownerDocument.defaultView;\n }\n return window;\n};\n\nfunction isHtmlElement(el) {\n return el instanceof getWindowFromEl(el).HTMLElement;\n}\n\nfunction findDragHandle(contextId, draggableId) {\n const selector = `[${dragHandle.contextId}=\"${contextId}\"]`;\n const possible = querySelectorAll(document, selector);\n if (!possible.length) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find any drag handles in the context \"${contextId}\"`) : void 0;\n return null;\n }\n const handle = possible.find(el => {\n return el.getAttribute(dragHandle.draggableId) === draggableId;\n });\n if (!handle) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find drag handle with id \"${draggableId}\" as no handle with a matching id was found`) : void 0;\n return null;\n }\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle needs to be a HTMLElement') : void 0;\n return null;\n }\n return handle;\n}\n\nfunction useFocusMarshal(contextId) {\n const entriesRef = useRef({});\n const recordRef = useRef(null);\n const restoreFocusFrameRef = useRef(null);\n const isMountedRef = useRef(false);\n const register = useCallback(function register(id, focus) {\n const entry = {\n id,\n focus\n };\n entriesRef.current[id] = entry;\n return function unregister() {\n const entries = entriesRef.current;\n const current = entries[id];\n if (current !== entry) {\n delete entries[id];\n }\n };\n }, []);\n const tryGiveFocus = useCallback(function tryGiveFocus(tryGiveFocusTo) {\n const handle = findDragHandle(contextId, tryGiveFocusTo);\n if (handle && handle !== document.activeElement) {\n handle.focus();\n }\n }, [contextId]);\n const tryShiftRecord = useCallback(function tryShiftRecord(previous, redirectTo) {\n if (recordRef.current === previous) {\n recordRef.current = redirectTo;\n }\n }, []);\n const tryRestoreFocusRecorded = useCallback(function tryRestoreFocusRecorded() {\n if (restoreFocusFrameRef.current) {\n return;\n }\n if (!isMountedRef.current) {\n return;\n }\n restoreFocusFrameRef.current = requestAnimationFrame(() => {\n restoreFocusFrameRef.current = null;\n const record = recordRef.current;\n if (record) {\n tryGiveFocus(record);\n }\n });\n }, [tryGiveFocus]);\n const tryRecordFocus = useCallback(function tryRecordFocus(id) {\n recordRef.current = null;\n const focused = document.activeElement;\n if (!focused) {\n return;\n }\n if (focused.getAttribute(dragHandle.draggableId) !== id) {\n return;\n }\n recordRef.current = id;\n }, []);\n useIsomorphicLayoutEffect(() => {\n isMountedRef.current = true;\n return function clearFrameOnUnmount() {\n isMountedRef.current = false;\n const frameId = restoreFocusFrameRef.current;\n if (frameId) {\n cancelAnimationFrame(frameId);\n }\n };\n }, []);\n const marshal = useMemo(() => ({\n register,\n tryRecordFocus,\n tryRestoreFocusRecorded,\n tryShiftRecord\n }), [register, tryRecordFocus, tryRestoreFocusRecorded, tryShiftRecord]);\n return marshal;\n}\n\nfunction createRegistry() {\n const entries = {\n draggables: {},\n droppables: {}\n };\n const subscribers = [];\n function subscribe(cb) {\n subscribers.push(cb);\n return function unsubscribe() {\n const index = subscribers.indexOf(cb);\n if (index === -1) {\n return;\n }\n subscribers.splice(index, 1);\n };\n }\n function notify(event) {\n if (subscribers.length) {\n subscribers.forEach(cb => cb(event));\n }\n }\n function findDraggableById(id) {\n return entries.draggables[id] || null;\n }\n function getDraggableById(id) {\n const entry = findDraggableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find draggable entry with id [${id}]`) : invariant() : void 0;\n return entry;\n }\n const draggableAPI = {\n register: entry => {\n entries.draggables[entry.descriptor.id] = entry;\n notify({\n type: 'ADDITION',\n value: entry\n });\n },\n update: (entry, last) => {\n const current = entries.draggables[last.descriptor.id];\n if (!current) {\n return;\n }\n if (current.uniqueId !== entry.uniqueId) {\n return;\n }\n delete entries.draggables[last.descriptor.id];\n entries.draggables[entry.descriptor.id] = entry;\n },\n unregister: entry => {\n const draggableId = entry.descriptor.id;\n const current = findDraggableById(draggableId);\n if (!current) {\n return;\n }\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n delete entries.draggables[draggableId];\n if (entries.droppables[entry.descriptor.droppableId]) {\n notify({\n type: 'REMOVAL',\n value: entry\n });\n }\n },\n getById: getDraggableById,\n findById: findDraggableById,\n exists: id => Boolean(findDraggableById(id)),\n getAllByType: type => Object.values(entries.draggables).filter(entry => entry.descriptor.type === type)\n };\n function findDroppableById(id) {\n return entries.droppables[id] || null;\n }\n function getDroppableById(id) {\n const entry = findDroppableById(id);\n !entry ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot find droppable entry with id [${id}]`) : invariant() : void 0;\n return entry;\n }\n const droppableAPI = {\n register: entry => {\n entries.droppables[entry.descriptor.id] = entry;\n },\n unregister: entry => {\n const current = findDroppableById(entry.descriptor.id);\n if (!current) {\n return;\n }\n if (entry.uniqueId !== current.uniqueId) {\n return;\n }\n delete entries.droppables[entry.descriptor.id];\n },\n getById: getDroppableById,\n findById: findDroppableById,\n exists: id => Boolean(findDroppableById(id)),\n getAllByType: type => Object.values(entries.droppables).filter(entry => entry.descriptor.type === type)\n };\n function clean() {\n entries.draggables = {};\n entries.droppables = {};\n subscribers.length = 0;\n }\n return {\n draggable: draggableAPI,\n droppable: droppableAPI,\n subscribe,\n clean\n };\n}\n\nfunction useRegistry() {\n const registry = useMemo(createRegistry, []);\n useEffect(() => {\n return function unmount() {\n registry.clean();\n };\n }, [registry]);\n return registry;\n}\n\nvar StoreContext = React.createContext(null);\n\nvar getBodyElement = () => {\n const body = document.body;\n !body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot find document.body') : invariant() : void 0;\n return body;\n};\n\nconst visuallyHidden = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n margin: '-1px',\n border: '0',\n padding: '0',\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n 'clip-path': 'inset(100%)'\n};\n\nconst getId = contextId => `rfd-announcement-${contextId}`;\nfunction useAnnouncer(contextId) {\n const id = useMemo(() => getId(contextId), [contextId]);\n const ref = useRef(null);\n useEffect(function setup() {\n const el = document.createElement('div');\n ref.current = el;\n el.id = id;\n el.setAttribute('aria-live', 'assertive');\n el.setAttribute('aria-atomic', 'true');\n _extends(el.style, visuallyHidden);\n getBodyElement().appendChild(el);\n return function cleanup() {\n setTimeout(function remove() {\n const body = getBodyElement();\n if (body.contains(el)) {\n body.removeChild(el);\n }\n if (el === ref.current) {\n ref.current = null;\n }\n });\n };\n }, [id]);\n const announce = useCallback(message => {\n const el = ref.current;\n if (el) {\n el.textContent = message;\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n A screen reader message was trying to be announced but it was unable to do so.\n This can occur if you unmount your <DragDropContext /> in your onDragEnd.\n Consider calling provided.announce() before the unmount so that the instruction will\n not be lost for users relying on a screen reader.\n\n Message not passed to screen reader:\n\n \"${message}\"\n `) : void 0;\n }, []);\n return announce;\n}\n\nconst defaults = {\n separator: '::'\n};\nfunction useUniqueId(prefix, options = defaults) {\n const id = React.useId();\n return useMemo(() => `${prefix}${options.separator}${id}`, [options.separator, prefix, id]);\n}\n\nfunction getElementId({\n contextId,\n uniqueId\n}) {\n return `rfd-hidden-text-${contextId}-${uniqueId}`;\n}\nfunction useHiddenTextElement({\n contextId,\n text\n}) {\n const uniqueId = useUniqueId('hidden-text', {\n separator: '-'\n });\n const id = useMemo(() => getElementId({\n contextId,\n uniqueId\n }), [uniqueId, contextId]);\n useEffect(function mount() {\n const el = document.createElement('div');\n el.id = id;\n el.textContent = text;\n el.style.display = 'none';\n getBodyElement().appendChild(el);\n return function unmount() {\n const body = getBodyElement();\n if (body.contains(el)) {\n body.removeChild(el);\n }\n };\n }, [id, text]);\n return id;\n}\n\nvar AppContext = React.createContext(null);\n\nvar peerDependencies = {\n\treact: \"^18.0.0 || ^19.0.0\"};\n\nconst semver = /(\\d+)\\.(\\d+)\\.(\\d+)/;\nconst getVersion = value => {\n const result = semver.exec(value);\n !(result != null) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Unable to parse React version ${value}`) : invariant() : void 0;\n const major = Number(result[1]);\n const minor = Number(result[2]);\n const patch = Number(result[3]);\n return {\n major,\n minor,\n patch,\n raw: value\n };\n};\nconst isSatisfied = (expected, actual) => {\n if (actual.major > expected.major) {\n return true;\n }\n if (actual.major < expected.major) {\n return false;\n }\n if (actual.minor > expected.minor) {\n return true;\n }\n if (actual.minor < expected.minor) {\n return false;\n }\n return actual.patch >= expected.patch;\n};\nvar checkReactVersion = (peerDepValue, actualValue) => {\n const peerDep = getVersion(peerDepValue);\n const actual = getVersion(actualValue);\n if (isSatisfied(peerDep, actual)) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n React version: [${actual.raw}]\n does not satisfy expected peer dependency version: [${peerDep.raw}]\n\n This can result in run time bugs, and even fatal crashes\n `) : void 0;\n};\n\nconst suffix = `\n We expect a html5 doctype: <!doctype html>\n This is to ensure consistent browser layout and measurement\n\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/guides/doctype.md\n`;\nvar checkDoctype = doc => {\n const doctype = doc.doctype;\n if (!doctype) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n No <!doctype html> found.\n\n ${suffix}\n `) : void 0;\n return;\n }\n if (doctype.name.toLowerCase() !== 'html') {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Unexpected <!doctype> found: (${doctype.name})\n\n ${suffix}\n `) : void 0;\n }\n if (doctype.publicId !== '') {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Unexpected <!doctype> publicId found: (${doctype.publicId})\n A html5 doctype does not have a publicId\n\n ${suffix}\n `) : void 0;\n }\n};\n\nfunction useDev(useHook) {\n if (process.env.NODE_ENV !== 'production') {\n useHook();\n }\n}\n\nfunction useDevSetupWarning(fn, inputs) {\n useDev(() => {\n useEffect(() => {\n try {\n fn();\n } catch (e) {\n error(`\n A setup problem was encountered.\n\n > ${e.message}\n `);\n }\n }, inputs);\n });\n}\n\nfunction useStartupValidation() {\n useDevSetupWarning(() => {\n checkReactVersion(peerDependencies.react, React.version);\n checkDoctype(document);\n }, []);\n}\n\nfunction usePrevious(current) {\n const ref = useRef(current);\n useEffect(() => {\n ref.current = current;\n });\n return ref;\n}\n\nfunction create() {\n let lock = null;\n function isClaimed() {\n return Boolean(lock);\n }\n function isActive(value) {\n return value === lock;\n }\n function claim(abandon) {\n !!lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot claim lock as it is already claimed') : invariant() : void 0;\n const newLock = {\n abandon\n };\n lock = newLock;\n return newLock;\n }\n function release() {\n !lock ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot release lock when there is no lock') : invariant() : void 0;\n lock = null;\n }\n function tryAbandon() {\n if (lock) {\n lock.abandon();\n release();\n }\n }\n return {\n isClaimed,\n isActive,\n claim,\n release,\n tryAbandon\n };\n}\n\nfunction isDragging(state) {\n if (state.phase === 'IDLE' || state.phase === 'DROP_ANIMATING') {\n return false;\n }\n return state.isDragging;\n}\n\nconst tab = 9;\nconst enter = 13;\nconst escape = 27;\nconst space = 32;\nconst pageUp = 33;\nconst pageDown = 34;\nconst end = 35;\nconst home = 36;\nconst arrowLeft = 37;\nconst arrowUp = 38;\nconst arrowRight = 39;\nconst arrowDown = 40;\n\nconst preventedKeys = {\n [enter]: true,\n [tab]: true\n};\nvar preventStandardKeyEvents = event => {\n if (preventedKeys[event.keyCode]) {\n event.preventDefault();\n }\n};\n\nconst supportedEventName = (() => {\n const base = 'visibilitychange';\n if (typeof document === 'undefined') {\n return base;\n }\n const candidates = [base, `ms${base}`, `webkit${base}`, `moz${base}`, `o${base}`];\n const supported = candidates.find(eventName => `on${eventName}` in document);\n return supported || base;\n})();\n\nconst primaryButton = 0;\nconst sloppyClickThreshold = 5;\nfunction isSloppyClickThresholdExceeded(original, current) {\n return Math.abs(current.x - original.x) >= sloppyClickThreshold || Math.abs(current.y - original.y) >= sloppyClickThreshold;\n}\nconst idle$1 = {\n type: 'IDLE'\n};\nfunction getCaptureBindings({\n cancel,\n completed,\n getPhase,\n setPhase\n}) {\n return [{\n eventName: 'mousemove',\n fn: event => {\n const {\n button,\n clientX,\n clientY\n } = event;\n if (button !== primaryButton) {\n return;\n }\n const point = {\n x: clientX,\n y: clientY\n };\n const phase = getPhase();\n if (phase.type === 'DRAGGING') {\n event.preventDefault();\n phase.actions.move(point);\n return;\n }\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot be IDLE') : invariant() : void 0;\n const pending = phase.point;\n if (!isSloppyClickThresholdExceeded(pending, point)) {\n return;\n }\n event.preventDefault();\n const actions = phase.actions.fluidLift(point);\n setPhase({\n type: 'DRAGGING',\n actions\n });\n }\n }, {\n eventName: 'mouseup',\n fn: event => {\n const phase = getPhase();\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'mousedown',\n fn: event => {\n if (getPhase().type === 'DRAGGING') {\n event.preventDefault();\n }\n cancel();\n }\n }, {\n eventName: 'keydown',\n fn: event => {\n const phase = getPhase();\n if (phase.type === 'PENDING') {\n cancel();\n return;\n }\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'scroll',\n options: {\n passive: true,\n capture: false\n },\n fn: () => {\n if (getPhase().type === 'PENDING') {\n cancel();\n }\n }\n }, {\n eventName: 'webkitmouseforcedown',\n fn: event => {\n const phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Unexpected phase') : invariant() : void 0;\n if (phase.actions.shouldRespectForcePress()) {\n cancel();\n return;\n }\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction useMouseSensor(api) {\n const phaseRef = useRef(idle$1);\n const unbindEventsRef = useRef(noop$2);\n const startCaptureBinding = useMemo(() => ({\n eventName: 'mousedown',\n fn: function onMouseDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n if (event.button !== primaryButton) {\n return;\n }\n if (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey) {\n return;\n }\n const draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n const actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!actions) {\n return;\n }\n event.preventDefault();\n const point = {\n x: event.clientX,\n y: event.clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n }), [api]);\n const preventForcePressBinding = useMemo(() => ({\n eventName: 'webkitmouseforcewillbegin',\n fn: event => {\n if (event.defaultPrevented) {\n return;\n }\n const id = api.findClosestDraggableId(event);\n if (!id) {\n return;\n }\n const options = api.findOptionsForDraggable(id);\n if (!options) {\n return;\n }\n if (options.shouldRespectForcePress) {\n return;\n }\n if (!api.canGetLock(id)) {\n return;\n }\n event.preventDefault();\n }\n }), [api]);\n const listenForCapture = useCallback(function listenForCapture() {\n const options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [preventForcePressBinding, startCaptureBinding], options);\n }, [preventForcePressBinding, startCaptureBinding]);\n const stop = useCallback(() => {\n const current = phaseRef.current;\n if (current.type === 'IDLE') {\n return;\n }\n phaseRef.current = idle$1;\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture]);\n const cancel = useCallback(() => {\n const phase = phaseRef.current;\n stop();\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n const bindCapturingEvents = useCallback(function bindCapturingEvents() {\n const options = {\n capture: true,\n passive: false\n };\n const bindings = getCaptureBindings({\n cancel,\n completed: stop,\n getPhase: () => phaseRef.current,\n setPhase: phase => {\n phaseRef.current = phase;\n }\n });\n unbindEventsRef.current = bindEvents(window, bindings, options);\n }, [cancel, stop]);\n const startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(phaseRef.current.type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant() : void 0;\n phaseRef.current = {\n type: 'PENDING',\n point,\n actions\n };\n bindCapturingEvents();\n }, [bindCapturingEvents]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nfunction noop$1() {}\nconst scrollJumpKeys = {\n [pageDown]: true,\n [pageUp]: true,\n [home]: true,\n [end]: true\n};\nfunction getDraggingBindings(actions, stop) {\n function cancel() {\n stop();\n actions.cancel();\n }\n function drop() {\n stop();\n actions.drop();\n }\n return [{\n eventName: 'keydown',\n fn: event => {\n if (event.keyCode === escape) {\n event.preventDefault();\n cancel();\n return;\n }\n if (event.keyCode === space) {\n event.preventDefault();\n drop();\n return;\n }\n if (event.keyCode === arrowDown) {\n event.preventDefault();\n actions.moveDown();\n return;\n }\n if (event.keyCode === arrowUp) {\n event.preventDefault();\n actions.moveUp();\n return;\n }\n if (event.keyCode === arrowRight) {\n event.preventDefault();\n actions.moveRight();\n return;\n }\n if (event.keyCode === arrowLeft) {\n event.preventDefault();\n actions.moveLeft();\n return;\n }\n if (scrollJumpKeys[event.keyCode]) {\n event.preventDefault();\n return;\n }\n preventStandardKeyEvents(event);\n }\n }, {\n eventName: 'mousedown',\n fn: cancel\n }, {\n eventName: 'mouseup',\n fn: cancel\n }, {\n eventName: 'click',\n fn: cancel\n }, {\n eventName: 'touchstart',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'wheel',\n fn: cancel,\n options: {\n passive: true\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction useKeyboardSensor(api) {\n const unbindEventsRef = useRef(noop$1);\n const startCaptureBinding = useMemo(() => ({\n eventName: 'keydown',\n fn: function onKeyDown(event) {\n if (event.defaultPrevented) {\n return;\n }\n if (event.keyCode !== space) {\n return;\n }\n const draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n const preDrag = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!preDrag) {\n return;\n }\n event.preventDefault();\n let isCapturing = true;\n const actions = preDrag.snapLift();\n unbindEventsRef.current();\n function stop() {\n !isCapturing ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop capturing a keyboard drag when not capturing') : invariant() : void 0;\n isCapturing = false;\n unbindEventsRef.current();\n listenForCapture();\n }\n unbindEventsRef.current = bindEvents(window, getDraggingBindings(actions, stop), {\n capture: true,\n passive: false\n });\n }\n }), [api]);\n const listenForCapture = useCallback(function tryStartCapture() {\n const options = {\n passive: false,\n capture: true\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n };\n }, [listenForCapture]);\n}\n\nconst idle = {\n type: 'IDLE'\n};\nconst timeForLongPress = 120;\nconst forcePressThreshold = 0.15;\nfunction getWindowBindings({\n cancel,\n getPhase\n}) {\n return [{\n eventName: 'orientationchange',\n fn: cancel\n }, {\n eventName: 'resize',\n fn: cancel\n }, {\n eventName: 'contextmenu',\n fn: event => {\n event.preventDefault();\n }\n }, {\n eventName: 'keydown',\n fn: event => {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n if (event.keyCode === escape) {\n event.preventDefault();\n }\n cancel();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction getHandleBindings({\n cancel,\n completed,\n getPhase\n}) {\n return [{\n eventName: 'touchmove',\n options: {\n capture: false\n },\n fn: event => {\n const phase = getPhase();\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n phase.hasMoved = true;\n const {\n clientX,\n clientY\n } = event.touches[0];\n const point = {\n x: clientX,\n y: clientY\n };\n event.preventDefault();\n phase.actions.move(point);\n }\n }, {\n eventName: 'touchend',\n fn: event => {\n const phase = getPhase();\n if (phase.type !== 'DRAGGING') {\n cancel();\n return;\n }\n event.preventDefault();\n phase.actions.drop({\n shouldBlockNextClick: true\n });\n completed();\n }\n }, {\n eventName: 'touchcancel',\n fn: event => {\n if (getPhase().type !== 'DRAGGING') {\n cancel();\n return;\n }\n event.preventDefault();\n cancel();\n }\n }, {\n eventName: 'touchforcechange',\n fn: event => {\n const phase = getPhase();\n !(phase.type !== 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n const isForcePress = touch.force >= forcePressThreshold;\n if (!isForcePress) {\n return;\n }\n const shouldRespect = phase.actions.shouldRespectForcePress();\n if (phase.type === 'PENDING') {\n if (shouldRespect) {\n cancel();\n }\n return;\n }\n if (shouldRespect) {\n if (phase.hasMoved) {\n event.preventDefault();\n return;\n }\n cancel();\n return;\n }\n event.preventDefault();\n }\n }, {\n eventName: supportedEventName,\n fn: cancel\n }];\n}\nfunction useTouchSensor(api) {\n const phaseRef = useRef(idle);\n const unbindEventsRef = useRef(noop$2);\n const getPhase = useCallback(function getPhase() {\n return phaseRef.current;\n }, []);\n const setPhase = useCallback(function setPhase(phase) {\n phaseRef.current = phase;\n }, []);\n const startCaptureBinding = useMemo(() => ({\n eventName: 'touchstart',\n fn: function onTouchStart(event) {\n if (event.defaultPrevented) {\n return;\n }\n const draggableId = api.findClosestDraggableId(event);\n if (!draggableId) {\n return;\n }\n const actions = api.tryGetLock(draggableId, stop, {\n sourceEvent: event\n });\n if (!actions) {\n return;\n }\n const touch = event.touches[0];\n const {\n clientX,\n clientY\n } = touch;\n const point = {\n x: clientX,\n y: clientY\n };\n unbindEventsRef.current();\n startPendingDrag(actions, point);\n }\n }), [api]);\n const listenForCapture = useCallback(function listenForCapture() {\n const options = {\n capture: true,\n passive: false\n };\n unbindEventsRef.current = bindEvents(window, [startCaptureBinding], options);\n }, [startCaptureBinding]);\n const stop = useCallback(() => {\n const current = phaseRef.current;\n if (current.type === 'IDLE') {\n return;\n }\n if (current.type === 'PENDING') {\n clearTimeout(current.longPressTimerId);\n }\n setPhase(idle);\n unbindEventsRef.current();\n listenForCapture();\n }, [listenForCapture, setPhase]);\n const cancel = useCallback(() => {\n const phase = phaseRef.current;\n stop();\n if (phase.type === 'DRAGGING') {\n phase.actions.cancel({\n shouldBlockNextClick: true\n });\n }\n if (phase.type === 'PENDING') {\n phase.actions.abort();\n }\n }, [stop]);\n const bindCapturingEvents = useCallback(function bindCapturingEvents() {\n const options = {\n capture: true,\n passive: false\n };\n const args = {\n cancel,\n completed: stop,\n getPhase\n };\n const unbindTarget = bindEvents(window, getHandleBindings(args), options);\n const unbindWindow = bindEvents(window, getWindowBindings(args), options);\n unbindEventsRef.current = function unbindAll() {\n unbindTarget();\n unbindWindow();\n };\n }, [cancel, getPhase, stop]);\n const startDragging = useCallback(function startDragging() {\n const phase = getPhase();\n !(phase.type === 'PENDING') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot start dragging from phase ${phase.type}`) : invariant() : void 0;\n const actions = phase.actions.fluidLift(phase.point);\n setPhase({\n type: 'DRAGGING',\n actions,\n hasMoved: false\n });\n }, [getPhase, setPhase]);\n const startPendingDrag = useCallback(function startPendingDrag(actions, point) {\n !(getPhase().type === 'IDLE') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected to move from IDLE to PENDING drag') : invariant() : void 0;\n const longPressTimerId = setTimeout(startDragging, timeForLongPress);\n setPhase({\n type: 'PENDING',\n point,\n actions,\n longPressTimerId\n });\n bindCapturingEvents();\n }, [bindCapturingEvents, getPhase, setPhase, startDragging]);\n useIsomorphicLayoutEffect(function mount() {\n listenForCapture();\n return function unmount() {\n unbindEventsRef.current();\n const phase = getPhase();\n if (phase.type === 'PENDING') {\n clearTimeout(phase.longPressTimerId);\n setPhase(idle);\n }\n };\n }, [getPhase, listenForCapture, setPhase]);\n useIsomorphicLayoutEffect(function webkitHack() {\n const unbind = bindEvents(window, [{\n eventName: 'touchmove',\n fn: () => {},\n options: {\n capture: false,\n passive: false\n }\n }]);\n return unbind;\n }, []);\n}\n\nfunction useValidateSensorHooks(sensorHooks) {\n useDev(() => {\n const previousRef = usePrevious(sensorHooks);\n useDevSetupWarning(() => {\n !(previousRef.current.length === sensorHooks.length) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot change the amount of sensor hooks after mounting') : invariant(false) : void 0;\n });\n });\n}\n\nconst interactiveTagNames = ['input', 'button', 'textarea', 'select', 'option', 'optgroup', 'video', 'audio'];\nfunction isAnInteractiveElement(parent, current) {\n if (current == null) {\n return false;\n }\n const hasAnInteractiveTag = interactiveTagNames.includes(current.tagName.toLowerCase());\n if (hasAnInteractiveTag) {\n return true;\n }\n const attribute = current.getAttribute('contenteditable');\n if (attribute === 'true' || attribute === '') {\n return true;\n }\n if (current === parent) {\n return false;\n }\n return isAnInteractiveElement(parent, current.parentElement);\n}\nfunction isEventInInteractiveElement(draggable, event) {\n const target = event.target;\n if (!isHtmlElement(target)) {\n return false;\n }\n return isAnInteractiveElement(draggable, target);\n}\n\nvar getBorderBoxCenterPosition = el => getRect(el.getBoundingClientRect()).center;\n\nfunction isElement(el) {\n return el instanceof getWindowFromEl(el).Element;\n}\n\nconst supportedMatchesName = (() => {\n const base = 'matches';\n if (typeof document === 'undefined') {\n return base;\n }\n const candidates = [base, 'msMatchesSelector', 'webkitMatchesSelector'];\n const value = candidates.find(name => name in Element.prototype);\n return value || base;\n})();\nfunction closestPonyfill(el, selector) {\n if (el == null) {\n return null;\n }\n if (el[supportedMatchesName](selector)) {\n return el;\n }\n return closestPonyfill(el.parentElement, selector);\n}\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n return closestPonyfill(el, selector);\n}\n\nfunction getSelector(contextId) {\n return `[${dragHandle.contextId}=\"${contextId}\"]`;\n}\nfunction findClosestDragHandleFromEvent(contextId, event) {\n const target = event.target;\n if (!isElement(target)) {\n process.env.NODE_ENV !== \"production\" ? warning('event.target must be a Element') : void 0;\n return null;\n }\n const selector = getSelector(contextId);\n const handle = closest(target, selector);\n if (!handle) {\n return null;\n }\n if (!isHtmlElement(handle)) {\n process.env.NODE_ENV !== \"production\" ? warning('drag handle must be a HTMLElement') : void 0;\n return null;\n }\n return handle;\n}\nfunction tryGetClosestDraggableIdFromEvent(contextId, event) {\n const handle = findClosestDragHandleFromEvent(contextId, event);\n if (!handle) {\n return null;\n }\n return handle.getAttribute(dragHandle.draggableId);\n}\n\nfunction findDraggable(contextId, draggableId) {\n const selector = `[${draggable.contextId}=\"${contextId}\"]`;\n const possible = querySelectorAll(document, selector);\n const draggable$1 = possible.find(el => {\n return el.getAttribute(draggable.id) === draggableId;\n });\n if (!draggable$1) {\n return null;\n }\n if (!isHtmlElement(draggable$1)) {\n process.env.NODE_ENV !== \"production\" ? warning('Draggable element is not a HTMLElement') : void 0;\n return null;\n }\n return draggable$1;\n}\n\nfunction preventDefault(event) {\n event.preventDefault();\n}\nfunction isActive({\n expected,\n phase,\n isLockActive,\n shouldWarn\n}) {\n if (!isLockActive()) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Cannot perform action.\n The sensor no longer has an action lock.\n\n Tips:\n\n - Throw away your action handlers when forceStop() is called\n - Check actions.isActive() if you really need to\n `) : void 0;\n }\n return false;\n }\n if (expected !== phase) {\n if (shouldWarn) {\n process.env.NODE_ENV !== \"production\" ? warning(`\n Cannot perform action.\n The actions you used belong to an outdated phase\n\n Current phase: ${expected}\n You called an action from outdated phase: ${phase}\n\n Tips:\n\n - Do not use preDragActions actions after calling preDragActions.lift()\n `) : void 0;\n }\n return false;\n }\n return true;\n}\nfunction canStart({\n lockAPI,\n store,\n registry,\n draggableId\n}) {\n if (lockAPI.isClaimed()) {\n return false;\n }\n const entry = registry.draggable.findById(draggableId);\n if (!entry) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find draggable with id: ${draggableId}`) : void 0;\n return false;\n }\n if (!entry.options.isEnabled) {\n return false;\n }\n if (!canStartDrag(store.getState(), draggableId)) {\n return false;\n }\n return true;\n}\nfunction tryStart({\n lockAPI,\n contextId,\n store,\n registry,\n draggableId,\n forceSensorStop,\n sourceEvent\n}) {\n const shouldStart = canStart({\n lockAPI,\n store,\n registry,\n draggableId\n });\n if (!shouldStart) {\n return null;\n }\n const entry = registry.draggable.getById(draggableId);\n const el = findDraggable(contextId, entry.descriptor.id);\n if (!el) {\n process.env.NODE_ENV !== \"production\" ? warning(`Unable to find draggable element with id: ${draggableId}`) : void 0;\n return null;\n }\n if (sourceEvent && !entry.options.canDragInteractiveElements && isEventInInteractiveElement(el, sourceEvent)) {\n return null;\n }\n const lock = lockAPI.claim(forceSensorStop || noop$2);\n let phase = 'PRE_DRAG';\n function getShouldRespectForcePress() {\n return entry.options.shouldRespectForcePress;\n }\n function isLockActive() {\n return lockAPI.isActive(lock);\n }\n function tryDispatch(expected, getAction) {\n if (isActive({\n expected,\n phase,\n isLockActive,\n shouldWarn: true\n })) {\n store.dispatch(getAction());\n }\n }\n const tryDispatchWhenDragging = tryDispatch.bind(null, 'DRAGGING');\n function lift(args) {\n function completed() {\n lockAPI.release();\n phase = 'COMPLETED';\n }\n if (phase !== 'PRE_DRAG') {\n completed();\n process.env.NODE_ENV !== \"production\" ? invariant(false, `Cannot lift in phase ${phase}`) : invariant() ;\n }\n store.dispatch(lift$1(args.liftActionArgs));\n phase = 'DRAGGING';\n function finish(reason, options = {\n shouldBlockNextClick: false\n }) {\n args.cleanup();\n if (options.shouldBlockNextClick) {\n const unbind = bindEvents(window, [{\n eventName: 'click',\n fn: preventDefault,\n options: {\n once: true,\n passive: false,\n capture: true\n }\n }]);\n setTimeout(unbind);\n }\n completed();\n store.dispatch(drop({\n reason\n }));\n }\n return {\n isActive: () => isActive({\n expected: 'DRAGGING',\n phase,\n isLockActive,\n shouldWarn: false\n }),\n shouldRespectForcePress: getShouldRespectForcePress,\n drop: options => finish('DROP', options),\n cancel: options => finish('CANCEL', options),\n ...args.actions\n };\n }\n function fluidLift(clientSelection) {\n const move$1 = rafSchd(client => {\n tryDispatchWhenDragging(() => move({\n client\n }));\n });\n const api = lift({\n liftActionArgs: {\n id: draggableId,\n clientSelection,\n movementMode: 'FLUID'\n },\n cleanup: () => move$1.cancel(),\n actions: {\n move: move$1\n }\n });\n return {\n ...api,\n move: move$1\n };\n }\n function snapLift() {\n const actions = {\n moveUp: () => tryDispatchWhenDragging(moveUp),\n moveRight: () => tryDispatchWhenDragging(moveRight),\n moveDown: () => tryDispatchWhenDragging(moveDown),\n moveLeft: () => tryDispatchWhenDragging(moveLeft)\n };\n return lift({\n liftActionArgs: {\n id: draggableId,\n clientSelection: getBorderBoxCenterPosition(el),\n movementMode: 'SNAP'\n },\n cleanup: noop$2,\n actions\n });\n }\n function abortPreDrag() {\n const shouldRelease = isActive({\n expected: 'PRE_DRAG',\n phase,\n isLockActive,\n shouldWarn: true\n });\n if (shouldRelease) {\n lockAPI.release();\n }\n }\n const preDrag = {\n isActive: () => isActive({\n expected: 'PRE_DRAG',\n phase,\n isLockActive,\n shouldWarn: false\n }),\n shouldRespectForcePress: getShouldRespectForcePress,\n fluidLift,\n snapLift,\n abort: abortPreDrag\n };\n return preDrag;\n}\nconst defaultSensors = [useMouseSensor, useKeyboardSensor, useTouchSensor];\nfunction useSensorMarshal({\n contextId,\n store,\n registry,\n customSensors,\n enableDefaultSensors\n}) {\n const useSensors = [...(enableDefaultSensors ? defaultSensors : []), ...(customSensors || [])];\n const lockAPI = useState(() => create())[0];\n const tryAbandonLock = useCallback(function tryAbandonLock(previous, current) {\n if (isDragging(previous) && !isDragging(current)) {\n lockAPI.tryAbandon();\n }\n }, [lockAPI]);\n useIsomorphicLayoutEffect(function listenToStore() {\n let previous = store.getState();\n const unsubscribe = store.subscribe(() => {\n const current = store.getState();\n tryAbandonLock(previous, current);\n previous = current;\n });\n return unsubscribe;\n }, [lockAPI, store, tryAbandonLock]);\n useIsomorphicLayoutEffect(() => {\n return lockAPI.tryAbandon;\n }, [lockAPI.tryAbandon]);\n const canGetLock = useCallback(draggableId => {\n return canStart({\n lockAPI,\n registry,\n store,\n draggableId\n });\n }, [lockAPI, registry, store]);\n const tryGetLock = useCallback((draggableId, forceStop, options) => tryStart({\n lockAPI,\n registry,\n contextId,\n store,\n draggableId,\n forceSensorStop: forceStop || null,\n sourceEvent: options && options.sourceEvent ? options.sourceEvent : null\n }), [contextId, lockAPI, registry, store]);\n const findClosestDraggableId = useCallback(event => tryGetClosestDraggableIdFromEvent(contextId, event), [contextId]);\n const findOptionsForDraggable = useCallback(id => {\n const entry = registry.draggable.findById(id);\n return entry ? entry.options : null;\n }, [registry.draggable]);\n const tryReleaseLock = useCallback(function tryReleaseLock() {\n if (!lockAPI.isClaimed()) {\n return;\n }\n lockAPI.tryAbandon();\n if (store.getState().phase !== 'IDLE') {\n store.dispatch(flush());\n }\n }, [lockAPI, store]);\n const isLockClaimed = useCallback(() => lockAPI.isClaimed(), [lockAPI]);\n const api = useMemo(() => ({\n canGetLock,\n tryGetLock,\n findClosestDraggableId,\n findOptionsForDraggable,\n tryReleaseLock,\n isLockClaimed\n }), [canGetLock, tryGetLock, findClosestDraggableId, findOptionsForDraggable, tryReleaseLock, isLockClaimed]);\n useValidateSensorHooks(useSensors);\n for (let i = 0; i < useSensors.length; i++) {\n useSensors[i](api);\n }\n}\n\nconst createResponders = props => ({\n onBeforeCapture: t => {\n const onBeforeCapureCallback = () => {\n if (props.onBeforeCapture) {\n props.onBeforeCapture(t);\n }\n };\n flushSync(onBeforeCapureCallback);\n },\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragEnd: props.onDragEnd,\n onDragUpdate: props.onDragUpdate\n});\nconst createAutoScrollerOptions = props => ({\n ...defaultAutoScrollerOptions,\n ...props.autoScrollerOptions,\n durationDampening: {\n ...defaultAutoScrollerOptions.durationDampening,\n ...props.autoScrollerOptions\n }\n});\nfunction getStore(lazyRef) {\n !lazyRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find store from lazy ref') : invariant() : void 0;\n return lazyRef.current;\n}\nfunction App(props) {\n const {\n contextId,\n setCallbacks,\n sensors,\n nonce,\n dragHandleUsageInstructions\n } = props;\n const lazyStoreRef = useRef(null);\n useStartupValidation();\n const lastPropsRef = usePrevious(props);\n const getResponders = useCallback(() => {\n return createResponders(lastPropsRef.current);\n }, [lastPropsRef]);\n const getAutoScrollerOptions = useCallback(() => {\n return createAutoScrollerOptions(lastPropsRef.current);\n }, [lastPropsRef]);\n const announce = useAnnouncer(contextId);\n const dragHandleUsageInstructionsId = useHiddenTextElement({\n contextId,\n text: dragHandleUsageInstructions\n });\n const styleMarshal = useStyleMarshal(contextId, nonce);\n const lazyDispatch = useCallback(action => {\n getStore(lazyStoreRef).dispatch(action);\n }, []);\n const marshalCallbacks = useMemo(() => bindActionCreators({\n publishWhileDragging,\n updateDroppableScroll,\n updateDroppableIsEnabled,\n updateDroppableIsCombineEnabled,\n collectionStarting\n }, lazyDispatch), [lazyDispatch]);\n const registry = useRegistry();\n const dimensionMarshal = useMemo(() => {\n return createDimensionMarshal(registry, marshalCallbacks);\n }, [registry, marshalCallbacks]);\n const autoScroller = useMemo(() => createAutoScroller({\n scrollWindow,\n scrollDroppable: dimensionMarshal.scrollDroppable,\n getAutoScrollerOptions,\n ...bindActionCreators({\n move\n }, lazyDispatch)\n }), [dimensionMarshal.scrollDroppable, lazyDispatch, getAutoScrollerOptions]);\n const focusMarshal = useFocusMarshal(contextId);\n const store = useMemo(() => createStore({\n announce,\n autoScroller,\n dimensionMarshal,\n focusMarshal,\n getResponders,\n styleMarshal\n }), [announce, autoScroller, dimensionMarshal, focusMarshal, getResponders, styleMarshal]);\n if (process.env.NODE_ENV !== 'production') {\n if (lazyStoreRef.current && lazyStoreRef.current !== store) {\n process.env.NODE_ENV !== \"production\" ? warning('unexpected store change') : void 0;\n }\n }\n lazyStoreRef.current = store;\n const tryResetStore = useCallback(() => {\n const current = getStore(lazyStoreRef);\n const state = current.getState();\n if (state.phase !== 'IDLE') {\n current.dispatch(flush());\n }\n }, []);\n const isDragging = useCallback(() => {\n const state = getStore(lazyStoreRef).getState();\n if (state.phase === 'DROP_ANIMATING') {\n return true;\n }\n if (state.phase === 'IDLE') {\n return false;\n }\n return state.isDragging;\n }, []);\n const appCallbacks = useMemo(() => ({\n isDragging,\n tryAbort: tryResetStore\n }), [isDragging, tryResetStore]);\n setCallbacks(appCallbacks);\n const getCanLift = useCallback(id => canStartDrag(getStore(lazyStoreRef).getState(), id), []);\n const getIsMovementAllowed = useCallback(() => isMovementAllowed(getStore(lazyStoreRef).getState()), []);\n const appContext = useMemo(() => ({\n marshal: dimensionMarshal,\n focus: focusMarshal,\n contextId,\n canLift: getCanLift,\n isMovementAllowed: getIsMovementAllowed,\n dragHandleUsageInstructionsId,\n registry\n }), [contextId, dimensionMarshal, dragHandleUsageInstructionsId, focusMarshal, getCanLift, getIsMovementAllowed, registry]);\n useSensorMarshal({\n contextId,\n store,\n registry,\n customSensors: sensors || null,\n enableDefaultSensors: props.enableDefaultSensors !== false\n });\n useEffect(() => {\n return tryResetStore;\n }, [tryResetStore]);\n return React.createElement(AppContext.Provider, {\n value: appContext\n }, React.createElement(Provider, {\n context: StoreContext,\n store: store\n }, props.children));\n}\n\nfunction useUniqueContextId() {\n return React.useId();\n}\n\nfunction DragDropContext(props) {\n const contextId = useUniqueContextId();\n const dragHandleUsageInstructions = props.dragHandleUsageInstructions || preset.dragHandleUsageInstructions;\n return React.createElement(ErrorBoundary, null, setCallbacks => React.createElement(App, {\n nonce: props.nonce,\n contextId: contextId,\n setCallbacks: setCallbacks,\n dragHandleUsageInstructions: dragHandleUsageInstructions,\n enableDefaultSensors: props.enableDefaultSensors,\n sensors: props.sensors,\n onBeforeCapture: props.onBeforeCapture,\n onBeforeDragStart: props.onBeforeDragStart,\n onDragStart: props.onDragStart,\n onDragUpdate: props.onDragUpdate,\n onDragEnd: props.onDragEnd,\n autoScrollerOptions: props.autoScrollerOptions\n }, props.children));\n}\n\nconst zIndexOptions = {\n dragging: 5000,\n dropAnimating: 4500\n};\nconst getDraggingTransition = (shouldAnimateDragMovement, dropping) => {\n if (dropping) {\n return transitions.drop(dropping.duration);\n }\n if (shouldAnimateDragMovement) {\n return transitions.snap;\n }\n return transitions.fluid;\n};\nconst getDraggingOpacity = (isCombining, isDropAnimating) => {\n if (!isCombining) {\n return undefined;\n }\n return isDropAnimating ? combine.opacity.drop : combine.opacity.combining;\n};\nconst getShouldDraggingAnimate = dragging => {\n if (dragging.forceShouldAnimate != null) {\n return dragging.forceShouldAnimate;\n }\n return dragging.mode === 'SNAP';\n};\nfunction getDraggingStyle(dragging) {\n const dimension = dragging.dimension;\n const box = dimension.client;\n const {\n offset,\n combineWith,\n dropping\n } = dragging;\n const isCombining = Boolean(combineWith);\n const shouldAnimate = getShouldDraggingAnimate(dragging);\n const isDropAnimating = Boolean(dropping);\n const transform = isDropAnimating ? transforms.drop(offset, isCombining) : transforms.moveTo(offset);\n const style = {\n position: 'fixed',\n top: box.marginBox.top,\n left: box.marginBox.left,\n boxSizing: 'border-box',\n width: box.borderBox.width,\n height: box.borderBox.height,\n transition: getDraggingTransition(shouldAnimate, dropping),\n transform,\n opacity: getDraggingOpacity(isCombining, isDropAnimating),\n zIndex: isDropAnimating ? zIndexOptions.dropAnimating : zIndexOptions.dragging,\n pointerEvents: 'none'\n };\n return style;\n}\nfunction getSecondaryStyle(secondary) {\n return {\n transform: transforms.moveTo(secondary.offset),\n transition: secondary.shouldAnimateDisplacement ? undefined : 'none'\n };\n}\nfunction getStyle$1(mapped) {\n return mapped.type === 'DRAGGING' ? getDraggingStyle(mapped) : getSecondaryStyle(mapped);\n}\n\nfunction getDimension$1(descriptor, el, windowScroll = origin) {\n const computedStyles = window.getComputedStyle(el);\n const borderBox = el.getBoundingClientRect();\n const client = calculateBox(borderBox, computedStyles);\n const page = withScroll(client, windowScroll);\n const placeholder = {\n client,\n tagName: el.tagName.toLowerCase(),\n display: computedStyles.display\n };\n const displaceBy = {\n x: client.marginBox.width,\n y: client.marginBox.height\n };\n const dimension = {\n descriptor,\n placeholder,\n displaceBy,\n client,\n page\n };\n return dimension;\n}\n\nfunction useDraggablePublisher(args) {\n const uniqueId = useUniqueId('draggable');\n const {\n descriptor,\n registry,\n getDraggableRef,\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n } = args;\n const options = useMemo(() => ({\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n }), [canDragInteractiveElements, isEnabled, shouldRespectForcePress]);\n const getDimension = useCallback(windowScroll => {\n const el = getDraggableRef();\n !el ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot get dimension when no ref is set') : invariant() : void 0;\n return getDimension$1(descriptor, el, windowScroll);\n }, [descriptor, getDraggableRef]);\n const entry = useMemo(() => ({\n uniqueId,\n descriptor,\n options,\n getDimension\n }), [descriptor, getDimension, options, uniqueId]);\n const publishedRef = useRef(entry);\n const isFirstPublishRef = useRef(true);\n useIsomorphicLayoutEffect(() => {\n registry.draggable.register(publishedRef.current);\n return () => registry.draggable.unregister(publishedRef.current);\n }, [registry.draggable]);\n useIsomorphicLayoutEffect(() => {\n if (isFirstPublishRef.current) {\n isFirstPublishRef.current = false;\n return;\n }\n const last = publishedRef.current;\n publishedRef.current = entry;\n registry.draggable.update(entry, last);\n }, [entry, registry.draggable]);\n}\n\nvar DroppableContext = React.createContext(null);\n\nfunction checkIsValidInnerRef(el) {\n !(el && isHtmlElement(el)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `\n provided.innerRef has not been provided with a HTMLElement.\n\n You can find a guide on using the innerRef callback functions at:\n https://github.com/hello-pangea/dnd/blob/main/docs/guides/using-inner-ref.md\n `) : invariant() : void 0;\n}\n\nfunction useValidation$1(props, contextId, getRef) {\n useDevSetupWarning(() => {\n function prefix(id) {\n return `Draggable[id: ${id}]: `;\n }\n const id = props.draggableId;\n !id ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable requires a draggableId') : invariant(false) : void 0;\n !(typeof id === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `Draggable requires a [string] draggableId.\n Provided: [type: ${typeof id}] (value: ${id})`) : invariant(false) : void 0;\n !Number.isInteger(props.index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${prefix(id)} requires an integer index prop`) : invariant(false) : void 0;\n if (props.mapped.type === 'DRAGGING') {\n return;\n }\n checkIsValidInnerRef(getRef());\n if (props.isEnabled) {\n !findDragHandle(contextId, id) ? process.env.NODE_ENV !== \"production\" ? invariant(false, `${prefix(id)} Unable to find drag handle`) : invariant(false) : void 0;\n }\n });\n}\nfunction useClonePropValidation(isClone) {\n useDev(() => {\n const initialRef = useRef(isClone);\n useDevSetupWarning(() => {\n !(isClone === initialRef.current) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Draggable isClone prop value changed during component life') : invariant(false) : void 0;\n }, [isClone]);\n });\n}\n\nfunction useRequiredContext(Context) {\n const result = useContext(Context);\n !result ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find required context') : invariant() : void 0;\n return result;\n}\n\nfunction preventHtml5Dnd(event) {\n event.preventDefault();\n}\nconst Draggable = props => {\n const ref = useRef(null);\n const setRef = useCallback((el = null) => {\n ref.current = el;\n }, []);\n const getRef = useCallback(() => ref.current, []);\n const {\n contextId,\n dragHandleUsageInstructionsId,\n registry\n } = useRequiredContext(AppContext);\n const {\n type,\n droppableId\n } = useRequiredContext(DroppableContext);\n const descriptor = useMemo(() => ({\n id: props.draggableId,\n index: props.index,\n type,\n droppableId\n }), [props.draggableId, props.index, type, droppableId]);\n const {\n children,\n draggableId,\n isEnabled,\n shouldRespectForcePress,\n canDragInteractiveElements,\n isClone,\n mapped,\n dropAnimationFinished: dropAnimationFinishedAction\n } = props;\n useValidation$1(props, contextId, getRef);\n useClonePropValidation(isClone);\n if (!isClone) {\n const forPublisher = useMemo(() => ({\n descriptor,\n registry,\n getDraggableRef: getRef,\n canDragInteractiveElements,\n shouldRespectForcePress,\n isEnabled\n }), [descriptor, registry, getRef, canDragInteractiveElements, shouldRespectForcePress, isEnabled]);\n useDraggablePublisher(forPublisher);\n }\n const dragHandleProps = useMemo(() => isEnabled ? {\n tabIndex: 0,\n role: 'button',\n 'aria-describedby': dragHandleUsageInstructionsId,\n 'data-rfd-drag-handle-draggable-id': draggableId,\n 'data-rfd-drag-handle-context-id': contextId,\n draggable: false,\n onDragStart: preventHtml5Dnd\n } : null, [contextId, dragHandleUsageInstructionsId, draggableId, isEnabled]);\n const onMoveEnd = useCallback(event => {\n if (mapped.type !== 'DRAGGING') {\n return;\n }\n if (!mapped.dropping) {\n return;\n }\n if (event.propertyName !== 'transform') {\n return;\n }\n flushSync(dropAnimationFinishedAction);\n }, [dropAnimationFinishedAction, mapped]);\n const provided = useMemo(() => {\n const style = getStyle$1(mapped);\n const onTransitionEnd = mapped.type === 'DRAGGING' && mapped.dropping ? onMoveEnd : undefined;\n const result = {\n innerRef: setRef,\n draggableProps: {\n 'data-rfd-draggable-context-id': contextId,\n 'data-rfd-draggable-id': draggableId,\n style,\n onTransitionEnd\n },\n dragHandleProps\n };\n return result;\n }, [contextId, dragHandleProps, draggableId, mapped, onMoveEnd, setRef]);\n const rubric = useMemo(() => ({\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n }), [descriptor.droppableId, descriptor.id, descriptor.index, descriptor.type]);\n return React.createElement(React.Fragment, null, children(provided, mapped.snapshot, rubric));\n};\n\nvar isStrictEqual = (a, b) => a === b;\n\nvar whatIsDraggedOverFromResult = result => {\n const {\n combine,\n destination\n } = result;\n if (destination) {\n return destination.droppableId;\n }\n if (combine) {\n return combine.droppableId;\n }\n return null;\n};\n\nconst getCombineWithFromResult = result => {\n return result.combine ? result.combine.draggableId : null;\n};\nconst getCombineWithFromImpact = impact => {\n return impact.at && impact.at.type === 'COMBINE' ? impact.at.combine.draggableId : null;\n};\nfunction getDraggableSelector() {\n const memoizedOffset = memoizeOne((x, y) => ({\n x,\n y\n }));\n const getMemoizedSnapshot = memoizeOne((mode, isClone, draggingOver = null, combineWith = null, dropping = null) => ({\n isDragging: true,\n isClone,\n isDropAnimating: Boolean(dropping),\n dropAnimation: dropping,\n mode,\n draggingOver,\n combineWith,\n combineTargetFor: null\n }));\n const getMemoizedProps = memoizeOne((offset, mode, dimension, isClone, draggingOver = null, combineWith = null, forceShouldAnimate = null) => ({\n mapped: {\n type: 'DRAGGING',\n dropping: null,\n draggingOver,\n combineWith,\n mode,\n offset,\n dimension,\n forceShouldAnimate,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, null)\n }\n }));\n const selector = (state, ownProps) => {\n if (isDragging(state)) {\n if (state.critical.draggable.id !== ownProps.draggableId) {\n return null;\n }\n const offset = state.current.client.offset;\n const dimension = state.dimensions.draggables[ownProps.draggableId];\n const draggingOver = whatIsDraggedOver(state.impact);\n const combineWith = getCombineWithFromImpact(state.impact);\n const forceShouldAnimate = state.forceShouldAnimate;\n return getMemoizedProps(memoizedOffset(offset.x, offset.y), state.movementMode, dimension, ownProps.isClone, draggingOver, combineWith, forceShouldAnimate);\n }\n if (state.phase === 'DROP_ANIMATING') {\n const completed = state.completed;\n if (completed.result.draggableId !== ownProps.draggableId) {\n return null;\n }\n const isClone = ownProps.isClone;\n const dimension = state.dimensions.draggables[ownProps.draggableId];\n const result = completed.result;\n const mode = result.mode;\n const draggingOver = whatIsDraggedOverFromResult(result);\n const combineWith = getCombineWithFromResult(result);\n const duration = state.dropDuration;\n const dropping = {\n duration,\n curve: curves.drop,\n moveTo: state.newHomeClientOffset,\n opacity: combineWith ? combine.opacity.drop : null,\n scale: combineWith ? combine.scale.drop : null\n };\n return {\n mapped: {\n type: 'DRAGGING',\n offset: state.newHomeClientOffset,\n dimension,\n dropping,\n draggingOver,\n combineWith,\n mode,\n forceShouldAnimate: null,\n snapshot: getMemoizedSnapshot(mode, isClone, draggingOver, combineWith, dropping)\n }\n };\n }\n return null;\n };\n return selector;\n}\nfunction getSecondarySnapshot(combineTargetFor = null) {\n return {\n isDragging: false,\n isDropAnimating: false,\n isClone: false,\n dropAnimation: null,\n mode: null,\n draggingOver: null,\n combineTargetFor,\n combineWith: null\n };\n}\nconst atRest = {\n mapped: {\n type: 'SECONDARY',\n offset: origin,\n combineTargetFor: null,\n shouldAnimateDisplacement: true,\n snapshot: getSecondarySnapshot(null)\n }\n};\nfunction getSecondarySelector() {\n const memoizedOffset = memoizeOne((x, y) => ({\n x,\n y\n }));\n const getMemoizedSnapshot = memoizeOne(getSecondarySnapshot);\n const getMemoizedProps = memoizeOne((offset, combineTargetFor = null, shouldAnimateDisplacement) => ({\n mapped: {\n type: 'SECONDARY',\n offset,\n combineTargetFor,\n shouldAnimateDisplacement,\n snapshot: getMemoizedSnapshot(combineTargetFor)\n }\n }));\n const getFallback = combineTargetFor => {\n return combineTargetFor ? getMemoizedProps(origin, combineTargetFor, true) : null;\n };\n const getProps = (ownId, draggingId, impact, afterCritical) => {\n const visualDisplacement = impact.displaced.visible[ownId];\n const isAfterCriticalInVirtualList = Boolean(afterCritical.inVirtualList && afterCritical.effected[ownId]);\n const combine = tryGetCombine(impact);\n const combineTargetFor = combine && combine.draggableId === ownId ? draggingId : null;\n if (!visualDisplacement) {\n if (!isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n if (impact.displaced.invisible[ownId]) {\n return null;\n }\n const change = negate(afterCritical.displacedBy.point);\n const offset = memoizedOffset(change.x, change.y);\n return getMemoizedProps(offset, combineTargetFor, true);\n }\n if (isAfterCriticalInVirtualList) {\n return getFallback(combineTargetFor);\n }\n const displaceBy = impact.displacedBy.point;\n const offset = memoizedOffset(displaceBy.x, displaceBy.y);\n return getMemoizedProps(offset, combineTargetFor, visualDisplacement.shouldAnimate);\n };\n const selector = (state, ownProps) => {\n if (isDragging(state)) {\n if (state.critical.draggable.id === ownProps.draggableId) {\n return null;\n }\n return getProps(ownProps.draggableId, state.critical.draggable.id, state.impact, state.afterCritical);\n }\n if (state.phase === 'DROP_ANIMATING') {\n const completed = state.completed;\n if (completed.result.draggableId === ownProps.draggableId) {\n return null;\n }\n return getProps(ownProps.draggableId, completed.result.draggableId, completed.impact, completed.afterCritical);\n }\n return null;\n };\n return selector;\n}\nconst makeMapStateToProps$1 = () => {\n const draggingSelector = getDraggableSelector();\n const secondarySelector = getSecondarySelector();\n const selector = (state, ownProps) => draggingSelector(state, ownProps) || secondarySelector(state, ownProps) || atRest;\n return selector;\n};\nconst mapDispatchToProps$1 = {\n dropAnimationFinished: dropAnimationFinished\n};\nconst ConnectedDraggable = connect(makeMapStateToProps$1, mapDispatchToProps$1, null, {\n context: StoreContext,\n areStatePropsEqual: isStrictEqual\n})(Draggable);\n\nfunction PrivateDraggable(props) {\n const droppableContext = useRequiredContext(DroppableContext);\n const isUsingCloneFor = droppableContext.isUsingCloneFor;\n if (isUsingCloneFor === props.draggableId && !props.isClone) {\n return null;\n }\n return React.createElement(ConnectedDraggable, props);\n}\nfunction PublicDraggable(props) {\n const isEnabled = typeof props.isDragDisabled === 'boolean' ? !props.isDragDisabled : true;\n const canDragInteractiveElements = Boolean(props.disableInteractiveElementBlocking);\n const shouldRespectForcePress = Boolean(props.shouldRespectForcePress);\n return React.createElement(PrivateDraggable, _extends({}, props, {\n isClone: false,\n isEnabled: isEnabled,\n canDragInteractiveElements: canDragInteractiveElements,\n shouldRespectForcePress: shouldRespectForcePress\n }));\n}\n\nconst isEqual = base => value => base === value;\nconst isScroll = isEqual('scroll');\nconst isAuto = isEqual('auto');\nconst isVisible = isEqual('visible');\nconst isEither = (overflow, fn) => fn(overflow.overflowX) || fn(overflow.overflowY);\nconst isBoth = (overflow, fn) => fn(overflow.overflowX) && fn(overflow.overflowY);\nconst isElementScrollable = el => {\n const style = window.getComputedStyle(el);\n const overflow = {\n overflowX: style.overflowX,\n overflowY: style.overflowY\n };\n return isEither(overflow, isScroll) || isEither(overflow, isAuto);\n};\nconst isBodyScrollable = () => {\n if (process.env.NODE_ENV === 'production') {\n return false;\n }\n const body = getBodyElement();\n const html = document.documentElement;\n !html ? process.env.NODE_ENV !== \"production\" ? invariant() : invariant() : void 0;\n if (!isElementScrollable(body)) {\n return false;\n }\n const htmlStyle = window.getComputedStyle(html);\n const htmlOverflow = {\n overflowX: htmlStyle.overflowX,\n overflowY: htmlStyle.overflowY\n };\n if (isBoth(htmlOverflow, isVisible)) {\n return false;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n We have detected that your <body> element might be a scroll container.\n We have found no reliable way of detecting whether the <body> element is a scroll container.\n Under most circumstances a <body> scroll bar will be on the <html> element (document.documentElement)\n\n Because we cannot determine if the <body> is a scroll container, and generally it is not one,\n we will be treating the <body> as *not* a scroll container\n\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/guides/how-we-detect-scroll-containers.md\n `) : void 0;\n return false;\n};\nconst getClosestScrollable = el => {\n if (el == null) {\n return null;\n }\n if (el === document.body) {\n return isBodyScrollable() ? el : null;\n }\n if (el === document.documentElement) {\n return null;\n }\n if (!isElementScrollable(el)) {\n return getClosestScrollable(el.parentElement);\n }\n return el;\n};\n\nvar checkForNestedScrollContainers = scrollable => {\n if (!scrollable) {\n return;\n }\n const anotherScrollParent = getClosestScrollable(scrollable.parentElement);\n if (!anotherScrollParent) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n Droppable: unsupported nested scroll container detected.\n A Droppable can only have one scroll parent (which can be itself)\n Nested scroll containers are currently not supported.\n\n We hope to support nested scroll containers soon: https://github.com/atlassian/react-beautiful-dnd/issues/131\n `) : void 0;\n};\n\nvar getScroll = el => ({\n x: el.scrollLeft,\n y: el.scrollTop\n});\n\nconst getIsFixed = el => {\n if (!el) {\n return false;\n }\n const style = window.getComputedStyle(el);\n if (style.position === 'fixed') {\n return true;\n }\n return getIsFixed(el.parentElement);\n};\nvar getEnv = start => {\n const closestScrollable = getClosestScrollable(start);\n const isFixedOnPage = getIsFixed(start);\n return {\n closestScrollable,\n isFixedOnPage\n };\n};\n\nvar getDroppableDimension = ({\n descriptor,\n isEnabled,\n isCombineEnabled,\n isFixedOnPage,\n direction,\n client,\n page,\n closest\n}) => {\n const frame = (() => {\n if (!closest) {\n return null;\n }\n const {\n scrollSize,\n client: frameClient\n } = closest;\n const maxScroll = getMaxScroll({\n scrollHeight: scrollSize.scrollHeight,\n scrollWidth: scrollSize.scrollWidth,\n height: frameClient.paddingBox.height,\n width: frameClient.paddingBox.width\n });\n return {\n pageMarginBox: closest.page.marginBox,\n frameClient,\n scrollSize,\n shouldClipSubject: closest.shouldClipSubject,\n scroll: {\n initial: closest.scroll,\n current: closest.scroll,\n max: maxScroll,\n diff: {\n value: origin,\n displacement: origin\n }\n }\n };\n })();\n const axis = direction === 'vertical' ? vertical : horizontal;\n const subject = getSubject({\n page,\n withPlaceholder: null,\n axis,\n frame\n });\n const dimension = {\n descriptor,\n isCombineEnabled,\n isFixedOnPage,\n axis,\n isEnabled,\n client,\n page,\n frame,\n subject\n };\n return dimension;\n};\n\nconst getClient = (targetRef, closestScrollable) => {\n const base = getBox(targetRef);\n if (!closestScrollable) {\n return base;\n }\n if (targetRef !== closestScrollable) {\n return base;\n }\n const top = base.paddingBox.top - closestScrollable.scrollTop;\n const left = base.paddingBox.left - closestScrollable.scrollLeft;\n const bottom = top + closestScrollable.scrollHeight;\n const right = left + closestScrollable.scrollWidth;\n const paddingBox = {\n top,\n right,\n bottom,\n left\n };\n const borderBox = expand(paddingBox, base.border);\n const client = createBox({\n borderBox,\n margin: base.margin,\n border: base.border,\n padding: base.padding\n });\n return client;\n};\nvar getDimension = ({\n ref,\n descriptor,\n env,\n windowScroll,\n direction,\n isDropDisabled,\n isCombineEnabled,\n shouldClipSubject\n}) => {\n const closestScrollable = env.closestScrollable;\n const client = getClient(ref, closestScrollable);\n const page = withScroll(client, windowScroll);\n const closest = (() => {\n if (!closestScrollable) {\n return null;\n }\n const frameClient = getBox(closestScrollable);\n const scrollSize = {\n scrollHeight: closestScrollable.scrollHeight,\n scrollWidth: closestScrollable.scrollWidth\n };\n return {\n client: frameClient,\n page: withScroll(frameClient, windowScroll),\n scroll: getScroll(closestScrollable),\n scrollSize,\n shouldClipSubject\n };\n })();\n const dimension = getDroppableDimension({\n descriptor,\n isEnabled: !isDropDisabled,\n isCombineEnabled,\n isFixedOnPage: env.isFixedOnPage,\n direction,\n client,\n page,\n closest\n });\n return dimension;\n};\n\nconst immediate = {\n passive: false\n};\nconst delayed = {\n passive: true\n};\nvar getListenerOptions = options => options.shouldPublishImmediately ? immediate : delayed;\n\nconst getClosestScrollableFromDrag = dragging => dragging && dragging.env.closestScrollable || null;\nfunction useDroppablePublisher(args) {\n const whileDraggingRef = useRef(null);\n const appContext = useRequiredContext(AppContext);\n const uniqueId = useUniqueId('droppable');\n const {\n registry,\n marshal\n } = appContext;\n const previousRef = usePrevious(args);\n const descriptor = useMemo(() => ({\n id: args.droppableId,\n type: args.type,\n mode: args.mode\n }), [args.droppableId, args.mode, args.type]);\n const publishedDescriptorRef = useRef(descriptor);\n const memoizedUpdateScroll = useMemo(() => memoizeOne((x, y) => {\n !whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only update scroll when dragging') : invariant() : void 0;\n const scroll = {\n x,\n y\n };\n marshal.updateDroppableScroll(descriptor.id, scroll);\n }), [descriptor.id, marshal]);\n const getClosestScroll = useCallback(() => {\n const dragging = whileDraggingRef.current;\n if (!dragging || !dragging.env.closestScrollable) {\n return origin;\n }\n return getScroll(dragging.env.closestScrollable);\n }, []);\n const updateScroll = useCallback(() => {\n const scroll = getClosestScroll();\n memoizedUpdateScroll(scroll.x, scroll.y);\n }, [getClosestScroll, memoizedUpdateScroll]);\n const scheduleScrollUpdate = useMemo(() => rafSchd(updateScroll), [updateScroll]);\n const onClosestScroll = useCallback(() => {\n const dragging = whileDraggingRef.current;\n const closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find scroll options while scrolling') : invariant() : void 0;\n const options = dragging.scrollOptions;\n if (options.shouldPublishImmediately) {\n updateScroll();\n return;\n }\n scheduleScrollUpdate();\n }, [scheduleScrollUpdate, updateScroll]);\n const getDimensionAndWatchScroll = useCallback((windowScroll, options) => {\n !!whileDraggingRef.current ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect a droppable while a drag is occurring') : invariant() : void 0;\n const previous = previousRef.current;\n const ref = previous.getDroppableRef();\n !ref ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot collect without a droppable ref') : invariant() : void 0;\n const env = getEnv(ref);\n const dragging = {\n ref,\n descriptor,\n env,\n scrollOptions: options\n };\n whileDraggingRef.current = dragging;\n const dimension = getDimension({\n ref,\n descriptor,\n env,\n windowScroll,\n direction: previous.direction,\n isDropDisabled: previous.isDropDisabled,\n isCombineEnabled: previous.isCombineEnabled,\n shouldClipSubject: !previous.ignoreContainerClipping\n });\n const scrollable = env.closestScrollable;\n if (scrollable) {\n scrollable.setAttribute(scrollContainer.contextId, appContext.contextId);\n scrollable.addEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n if (process.env.NODE_ENV !== 'production') {\n checkForNestedScrollContainers(scrollable);\n }\n }\n return dimension;\n }, [appContext.contextId, descriptor, onClosestScroll, previousRef]);\n const getScrollWhileDragging = useCallback(() => {\n const dragging = whileDraggingRef.current;\n const closest = getClosestScrollableFromDrag(dragging);\n !(dragging && closest) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Can only recollect Droppable client for Droppables that have a scroll container') : invariant() : void 0;\n return getScroll(closest);\n }, []);\n const dragStopped = useCallback(() => {\n const dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot stop drag when no active drag') : invariant() : void 0;\n const closest = getClosestScrollableFromDrag(dragging);\n whileDraggingRef.current = null;\n if (!closest) {\n return;\n }\n scheduleScrollUpdate.cancel();\n closest.removeAttribute(scrollContainer.contextId);\n closest.removeEventListener('scroll', onClosestScroll, getListenerOptions(dragging.scrollOptions));\n }, [onClosestScroll, scheduleScrollUpdate]);\n const scroll = useCallback(change => {\n const dragging = whileDraggingRef.current;\n !dragging ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll when there is no drag') : invariant() : void 0;\n const closest = getClosestScrollableFromDrag(dragging);\n !closest ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Cannot scroll a droppable with no closest scrollable') : invariant() : void 0;\n closest.scrollTop += change.y;\n closest.scrollLeft += change.x;\n }, []);\n const callbacks = useMemo(() => {\n return {\n getDimensionAndWatchScroll,\n getScrollWhileDragging,\n dragStopped,\n scroll\n };\n }, [dragStopped, getDimensionAndWatchScroll, getScrollWhileDragging, scroll]);\n const entry = useMemo(() => ({\n uniqueId,\n descriptor,\n callbacks\n }), [callbacks, descriptor, uniqueId]);\n useIsomorphicLayoutEffect(() => {\n publishedDescriptorRef.current = entry.descriptor;\n registry.droppable.register(entry);\n return () => {\n if (whileDraggingRef.current) {\n process.env.NODE_ENV !== \"production\" ? warning('Unsupported: changing the droppableId or type of a Droppable during a drag') : void 0;\n dragStopped();\n }\n registry.droppable.unregister(entry);\n };\n }, [callbacks, descriptor, dragStopped, entry, marshal, registry.droppable]);\n useIsomorphicLayoutEffect(() => {\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsEnabled(publishedDescriptorRef.current.id, !args.isDropDisabled);\n }, [args.isDropDisabled, marshal]);\n useIsomorphicLayoutEffect(() => {\n if (!whileDraggingRef.current) {\n return;\n }\n marshal.updateDroppableIsCombineEnabled(publishedDescriptorRef.current.id, args.isCombineEnabled);\n }, [args.isCombineEnabled, marshal]);\n}\n\nfunction noop() {}\nconst empty = {\n width: 0,\n height: 0,\n margin: noSpacing\n};\nconst getSize = ({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n}) => {\n if (isAnimatingOpenOnMount) {\n return empty;\n }\n if (animate === 'close') {\n return empty;\n }\n return {\n height: placeholder.client.borderBox.height,\n width: placeholder.client.borderBox.width,\n margin: placeholder.client.margin\n };\n};\nconst getStyle = ({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n}) => {\n const size = getSize({\n isAnimatingOpenOnMount,\n placeholder,\n animate\n });\n return {\n display: placeholder.display,\n boxSizing: 'border-box',\n width: size.width,\n height: size.height,\n marginTop: size.margin.top,\n marginRight: size.margin.right,\n marginBottom: size.margin.bottom,\n marginLeft: size.margin.left,\n flexShrink: '0',\n flexGrow: '0',\n pointerEvents: 'none',\n transition: animate !== 'none' ? transitions.placeholder : null\n };\n};\nconst Placeholder = props => {\n const animateOpenTimerRef = useRef(null);\n const tryClearAnimateOpenTimer = useCallback(() => {\n if (!animateOpenTimerRef.current) {\n return;\n }\n clearTimeout(animateOpenTimerRef.current);\n animateOpenTimerRef.current = null;\n }, []);\n const {\n animate,\n onTransitionEnd,\n onClose,\n contextId\n } = props;\n const [isAnimatingOpenOnMount, setIsAnimatingOpenOnMount] = useState(props.animate === 'open');\n useEffect(() => {\n if (!isAnimatingOpenOnMount) {\n return noop;\n }\n if (animate !== 'open') {\n tryClearAnimateOpenTimer();\n setIsAnimatingOpenOnMount(false);\n return noop;\n }\n if (animateOpenTimerRef.current) {\n return noop;\n }\n animateOpenTimerRef.current = setTimeout(() => {\n animateOpenTimerRef.current = null;\n setIsAnimatingOpenOnMount(false);\n });\n return tryClearAnimateOpenTimer;\n }, [animate, isAnimatingOpenOnMount, tryClearAnimateOpenTimer]);\n const onSizeChangeEnd = useCallback(event => {\n if (event.propertyName !== 'height') {\n return;\n }\n onTransitionEnd();\n if (animate === 'close') {\n onClose();\n }\n }, [animate, onClose, onTransitionEnd]);\n const style = getStyle({\n isAnimatingOpenOnMount,\n animate: props.animate,\n placeholder: props.placeholder\n });\n return React.createElement(props.placeholder.tagName, {\n style,\n 'data-rfd-placeholder-context-id': contextId,\n onTransitionEnd: onSizeChangeEnd,\n ref: props.innerRef\n });\n};\nvar Placeholder$1 = React.memo(Placeholder);\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\nfunction runChecks(args, checks) {\n checks.forEach(check => check(args));\n}\nconst shared = [function required({\n props\n}) {\n !props.droppableId ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'A Droppable requires a droppableId prop') : invariant() : void 0;\n !(typeof props.droppableId === 'string') ? process.env.NODE_ENV !== \"production\" ? invariant(false, `A Droppable requires a [string] droppableId. Provided: [${typeof props.droppableId}]`) : invariant() : void 0;\n}, function boolean({\n props\n}) {\n !isBoolean(props.isDropDisabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isDropDisabled must be a boolean') : invariant() : void 0;\n !isBoolean(props.isCombineEnabled) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'isCombineEnabled must be a boolean') : invariant() : void 0;\n !isBoolean(props.ignoreContainerClipping) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ignoreContainerClipping must be a boolean') : invariant() : void 0;\n}, function ref({\n getDroppableRef\n}) {\n checkIsValidInnerRef(getDroppableRef());\n}];\nconst standard = [function placeholder({\n props,\n getPlaceholderRef\n}) {\n if (!props.placeholder) {\n return;\n }\n const ref = getPlaceholderRef();\n if (ref) {\n return;\n }\n process.env.NODE_ENV !== \"production\" ? warning(`\n Droppable setup issue [droppableId: \"${props.droppableId}\"]:\n DroppableProvided > placeholder could not be found.\n\n Please be sure to add the {provided.placeholder} React Node as a child of your Droppable.\n More information: https://github.com/hello-pangea/dnd/blob/main/docs/api/droppable.md\n `) : void 0;\n}];\nconst virtual = [function hasClone({\n props\n}) {\n !props.renderClone ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Must provide a clone render function (renderClone) for virtual lists') : invariant() : void 0;\n}, function hasNoPlaceholder({\n getPlaceholderRef\n}) {\n !!getPlaceholderRef() ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Expected virtual list to not have a placeholder') : invariant() : void 0;\n}];\nfunction useValidation(args) {\n useDevSetupWarning(() => {\n runChecks(args, shared);\n if (args.props.mode === 'standard') {\n runChecks(args, standard);\n }\n if (args.props.mode === 'virtual') {\n runChecks(args, virtual);\n }\n });\n}\n\nclass AnimateInOut extends React.PureComponent {\n constructor(...args) {\n super(...args);\n this.state = {\n isVisible: Boolean(this.props.on),\n data: this.props.on,\n animate: this.props.shouldAnimate && this.props.on ? 'open' : 'none'\n };\n this.onClose = () => {\n if (this.state.animate !== 'close') {\n return;\n }\n this.setState({\n isVisible: false\n });\n };\n }\n static getDerivedStateFromProps(props, state) {\n if (!props.shouldAnimate) {\n return {\n isVisible: Boolean(props.on),\n data: props.on,\n animate: 'none'\n };\n }\n if (props.on) {\n return {\n isVisible: true,\n data: props.on,\n animate: 'open'\n };\n }\n if (state.isVisible) {\n return {\n isVisible: true,\n data: state.data,\n animate: 'close'\n };\n }\n return {\n isVisible: false,\n animate: 'close',\n data: null\n };\n }\n render() {\n if (!this.state.isVisible) {\n return null;\n }\n const provided = {\n onClose: this.onClose,\n data: this.state.data,\n animate: this.state.animate\n };\n return this.props.children(provided);\n }\n}\n\nconst Droppable = props => {\n const appContext = useContext(AppContext);\n !appContext ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Could not find app context') : invariant() : void 0;\n const {\n contextId,\n isMovementAllowed\n } = appContext;\n const droppableRef = useRef(null);\n const placeholderRef = useRef(null);\n const {\n children,\n droppableId,\n type,\n mode,\n direction,\n ignoreContainerClipping,\n isDropDisabled,\n isCombineEnabled,\n snapshot,\n useClone,\n updateViewportMaxScroll,\n getContainerForClone\n } = props;\n const getDroppableRef = useCallback(() => droppableRef.current, []);\n const setDroppableRef = useCallback((value = null) => {\n droppableRef.current = value;\n }, []);\n const getPlaceholderRef = useCallback(() => placeholderRef.current, []);\n const setPlaceholderRef = useCallback((value = null) => {\n placeholderRef.current = value;\n }, []);\n useValidation({\n props,\n getDroppableRef,\n getPlaceholderRef\n });\n const onPlaceholderTransitionEnd = useCallback(() => {\n if (isMovementAllowed()) {\n updateViewportMaxScroll({\n maxScroll: getMaxWindowScroll()\n });\n }\n }, [isMovementAllowed, updateViewportMaxScroll]);\n useDroppablePublisher({\n droppableId,\n type,\n mode,\n direction,\n isDropDisabled,\n isCombineEnabled,\n ignoreContainerClipping,\n getDroppableRef\n });\n const placeholder = useMemo(() => React.createElement(AnimateInOut, {\n on: props.placeholder,\n shouldAnimate: props.shouldAnimatePlaceholder\n }, ({\n onClose,\n data,\n animate\n }) => React.createElement(Placeholder$1, {\n placeholder: data,\n onClose: onClose,\n innerRef: setPlaceholderRef,\n animate: animate,\n contextId: contextId,\n onTransitionEnd: onPlaceholderTransitionEnd\n })), [contextId, onPlaceholderTransitionEnd, props.placeholder, props.shouldAnimatePlaceholder, setPlaceholderRef]);\n const provided = useMemo(() => ({\n innerRef: setDroppableRef,\n placeholder,\n droppableProps: {\n 'data-rfd-droppable-id': droppableId,\n 'data-rfd-droppable-context-id': contextId\n }\n }), [contextId, droppableId, placeholder, setDroppableRef]);\n const isUsingCloneFor = useClone ? useClone.dragging.draggableId : null;\n const droppableContext = useMemo(() => ({\n droppableId,\n type,\n isUsingCloneFor\n }), [droppableId, isUsingCloneFor, type]);\n function getClone() {\n if (!useClone) {\n return null;\n }\n const {\n dragging,\n render\n } = useClone;\n const node = React.createElement(PrivateDraggable, {\n draggableId: dragging.draggableId,\n index: dragging.source.index,\n isClone: true,\n isEnabled: true,\n shouldRespectForcePress: false,\n canDragInteractiveElements: true\n }, (draggableProvided, draggableSnapshot) => render(draggableProvided, draggableSnapshot, dragging));\n return ReactDOM.createPortal(node, getContainerForClone());\n }\n return React.createElement(DroppableContext.Provider, {\n value: droppableContext\n }, children(provided, snapshot), getClone());\n};\n\nfunction getBody() {\n !document.body ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'document.body is not ready') : invariant() : void 0;\n return document.body;\n}\nconst defaultProps = {\n mode: 'standard',\n type: 'DEFAULT',\n direction: 'vertical',\n isDropDisabled: false,\n isCombineEnabled: false,\n ignoreContainerClipping: false,\n renderClone: null,\n getContainerForClone: getBody\n};\nconst attachDefaultPropsToOwnProps = ownProps => {\n let mergedProps = {\n ...ownProps\n };\n let defaultPropKey;\n for (defaultPropKey in defaultProps) {\n if (ownProps[defaultPropKey] === undefined) {\n mergedProps = {\n ...mergedProps,\n [defaultPropKey]: defaultProps[defaultPropKey]\n };\n }\n }\n return mergedProps;\n};\nconst isMatchingType = (type, critical) => type === critical.droppable.type;\nconst getDraggable = (critical, dimensions) => dimensions.draggables[critical.draggable.id];\nconst makeMapStateToProps = () => {\n const idleWithAnimation = {\n placeholder: null,\n shouldAnimatePlaceholder: true,\n snapshot: {\n isDraggingOver: false,\n draggingOverWith: null,\n draggingFromThisWith: null,\n isUsingPlaceholder: false\n },\n useClone: null\n };\n const idleWithoutAnimation = {\n ...idleWithAnimation,\n shouldAnimatePlaceholder: false\n };\n const getDraggableRubric = memoizeOne(descriptor => ({\n draggableId: descriptor.id,\n type: descriptor.type,\n source: {\n index: descriptor.index,\n droppableId: descriptor.droppableId\n }\n }));\n const getMapProps = memoizeOne((id, isEnabled, isDraggingOverForConsumer, isDraggingOverForImpact, dragging, renderClone) => {\n const draggableId = dragging.descriptor.id;\n const isHome = dragging.descriptor.droppableId === id;\n if (isHome) {\n const useClone = renderClone ? {\n render: renderClone,\n dragging: getDraggableRubric(dragging.descriptor)\n } : null;\n const snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: isDraggingOverForConsumer ? draggableId : null,\n draggingFromThisWith: draggableId,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: false,\n snapshot,\n useClone\n };\n }\n if (!isEnabled) {\n return idleWithoutAnimation;\n }\n if (!isDraggingOverForImpact) {\n return idleWithAnimation;\n }\n const snapshot = {\n isDraggingOver: isDraggingOverForConsumer,\n draggingOverWith: draggableId,\n draggingFromThisWith: null,\n isUsingPlaceholder: true\n };\n return {\n placeholder: dragging.placeholder,\n shouldAnimatePlaceholder: true,\n snapshot,\n useClone: null\n };\n });\n const selector = (state, ownProps) => {\n const ownPropsWithDefaultProps = attachDefaultPropsToOwnProps(ownProps);\n const id = ownPropsWithDefaultProps.droppableId;\n const type = ownPropsWithDefaultProps.type;\n const isEnabled = !ownPropsWithDefaultProps.isDropDisabled;\n const renderClone = ownPropsWithDefaultProps.renderClone;\n if (isDragging(state)) {\n const critical = state.critical;\n if (!isMatchingType(type, critical)) {\n return idleWithoutAnimation;\n }\n const dragging = getDraggable(critical, state.dimensions);\n const isDraggingOver = whatIsDraggedOver(state.impact) === id;\n return getMapProps(id, isEnabled, isDraggingOver, isDraggingOver, dragging, renderClone);\n }\n if (state.phase === 'DROP_ANIMATING') {\n const completed = state.completed;\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n const dragging = getDraggable(completed.critical, state.dimensions);\n return getMapProps(id, isEnabled, whatIsDraggedOverFromResult(completed.result) === id, whatIsDraggedOver(completed.impact) === id, dragging, renderClone);\n }\n if (state.phase === 'IDLE' && state.completed && !state.shouldFlush) {\n const completed = state.completed;\n if (!isMatchingType(type, completed.critical)) {\n return idleWithoutAnimation;\n }\n const wasOver = whatIsDraggedOver(completed.impact) === id;\n const wasCombining = Boolean(completed.impact.at && completed.impact.at.type === 'COMBINE');\n const isHome = completed.critical.droppable.id === id;\n if (wasOver) {\n return wasCombining ? idleWithAnimation : idleWithoutAnimation;\n }\n if (isHome) {\n return idleWithAnimation;\n }\n return idleWithoutAnimation;\n }\n return idleWithoutAnimation;\n };\n return selector;\n};\nconst mapDispatchToProps = {\n updateViewportMaxScroll: updateViewportMaxScroll\n};\nconst ConnectedDroppable = connect(makeMapStateToProps, mapDispatchToProps, (stateProps, dispatchProps, ownProps) => {\n return {\n ...attachDefaultPropsToOwnProps(ownProps),\n ...stateProps,\n ...dispatchProps\n };\n}, {\n context: StoreContext,\n areStatePropsEqual: isStrictEqual\n})(Droppable);\n\nexport { DragDropContext, PublicDraggable as Draggable, ConnectedDroppable as Droppable, useKeyboardSensor, useMouseSensor, useTouchSensor };\n","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n","const rnds8 = new Uint8Array(16);\nexport default function rng() {\n return crypto.getRandomValues(rnds8);\n}\n","import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n if (!buf && !options && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nexport default v4;\n","import { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect, useState } from 'react'\nimport {\n DragDropContext,\n Draggable,\n DropResult,\n Droppable,\n DroppableProvided,\n DroppableStateSnapshot,\n} from '@hello-pangea/dnd'\nimport { v4 as uuidv4 } from 'uuid'\nimport { defineMessages, useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\nimport { LightFile } from '../../types/global'\n\ninterface StrictModeDroppableProps {\n children(\n provided: DroppableProvided,\n snapshot: DroppableStateSnapshot\n ): React.ReactElement<HTMLElement>\n droppableId: string\n}\nconst StrictModeDroppable = ({\n children,\n droppableId,\n}: StrictModeDroppableProps) => {\n const [enabled, setEnabled] = useState(false)\n useEffect(() => {\n const animation = requestAnimationFrame(() => setEnabled(true))\n return () => {\n cancelAnimationFrame(animation)\n setEnabled(false)\n }\n }, [])\n if (!enabled) {\n return null\n }\n return <Droppable droppableId={droppableId}>{children}</Droppable>\n}\n\nconst reorder = (list: string[], startIndex: number, endIndex: number) => {\n const result: string[] = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\nconst messages = defineMessages({\n failed_to_sort_images: {\n id: 'failed_to_sort_images',\n defaultMessage: 'Failed to sort images',\n },\n images_sorted: {\n id: 'images_sorted',\n defaultMessage: 'Images sorted',\n },\n})\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageOrderedAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [sortedList, setSortedList] = useState<string[]>(\n Object.keys(values['images'])\n )\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const sizesImages = cfg.SizeImages || _sizesImages\n\n async function onDragEnd(result: DropResult) {\n if (!result.destination) {\n return\n }\n\n if (result.destination.index === result.source.index) {\n return\n }\n\n const resultSorted = reorder(\n sortedList,\n result.source.index,\n result.destination.index\n )\n\n setSortedList(resultSorted)\n setLoading(true)\n const endpoint = `${Ctx.path}@sort/images/`\n const req = await Ctx.client.patch(endpoint, resultSorted)\n if (req.status !== 200) {\n setError(intl.formatMessage(messages.failed_to_sort_images))\n setLoading(false)\n return\n }\n\n setLoading(false)\n Ctx.flash(intl.formatMessage(messages.images_sorted), 'success')\n Ctx.refresh()\n }\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n const fileKey = uuidv4()\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (_err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <>\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n <section>\n <DragDropContext onDragEnd={onDragEnd}>\n <StrictModeDroppable droppableId=\"list\">\n {(provided) => (\n <div ref={provided.innerRef} {...provided.droppableProps}>\n {sortedList.map((key, index) => (\n <Draggable\n key={`multiimageattachment_${key}`}\n draggableId={`multiimageattachment_${key}`}\n index={index}\n >\n {(providedChild) => (\n <div\n className=\"is-flex is-align-items-center pt-2 pb-2\"\n style={{ borderTop: '1px solid #dbdbdb' }}\n ref={providedChild.innerRef}\n {...providedChild.draggableProps}\n {...providedChild.dragHandleProps}\n >\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={\n get(\n properties,\n 'images.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </StrictModeDroppable>\n </DragDropContext>\n </section>\n\n {Object.keys(values['images']).length === 0 && (\n <section>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </section>\n )}\n {modifyContent && (\n <section>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formMultiimageOrderedAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </section>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { Confirm } from '../modal'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { useEffect, useState } from 'react'\n\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { Workflow } from '../../types/guillotina'\nconst messages = defineMessages({\n status_changed_ok: {\n id: 'status_changed_ok',\n defaultMessage: 'Great status changed!',\n },\n status_changed_error: {\n id: 'status_changed_error',\n defaultMessage: 'Failed to status changed!: {error}',\n },\n confirm_message: {\n id: 'confirm_message',\n defaultMessage: 'Are you sure to change state: {title}?',\n },\n current_state: {\n id: 'current_state',\n defaultMessage: 'Current state: {state}',\n },\n actions: {\n id: 'actions',\n defaultMessage: 'Actions:',\n },\n})\n\nexport function IWorkflow() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext<Workflow>()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const [definition, setDefinition] = useState<Workflow | undefined>(undefined)\n const [workflowAction, setWorkflowAction] = useState<string | undefined>(\n undefined\n )\n const vocabulary = useVocabulary('workflow_states')\n const currentState =\n Ctx.context['guillotina.contrib.workflows.interfaces.IWorkflowBehavior']![\n 'review_state'\n ]\n\n async function loadDefinition() {\n const response = await Ctx.client.get(`${Ctx.path}/@workflow`)\n const workflow = await response.json()\n setDefinition(workflow)\n }\n\n useEffect(() => {\n loadDefinition()\n }, [Ctx.path])\n\n const doWorkflowAction = async () => {\n const { isError, errorMessage } = await post(\n {},\n `@workflow/${workflowAction}`,\n false\n )\n await loadDefinition()\n if (!isError) {\n Ctx.flash(intl.formatMessage(messages.status_changed_ok), 'success')\n } else {\n Ctx.flash(\n intl.formatMessage(messages.status_changed_error, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n\n Ctx.refresh()\n setWorkflowAction(undefined)\n }\n\n const getStateTitle = () => {\n if ((vocabulary.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary?.data?.items.find(\n (item) => item.token === currentState\n )\n if (vocabularyValue) {\n const translatedValue = get(\n vocabularyValue,\n `title.translated_title.${intl.locale}`,\n null\n )\n if (translatedValue !== null) {\n return translatedValue\n }\n const titleValue = get(\n vocabularyValue,\n `title.title.${intl.locale}`,\n null\n )\n if (titleValue !== null) {\n return titleValue\n }\n }\n }\n return currentState\n }\n\n if (definition === undefined) return null\n\n return (\n <>\n {workflowAction && (\n <Confirm\n loading={loading}\n onCancel={() => setWorkflowAction(undefined)}\n onConfirm={doWorkflowAction}\n message={intl.formatMessage(messages.confirm_message, {\n title: Ctx.context.title || Ctx.context['@name'],\n })}\n />\n )}\n\n <div className=\"is-flex is-align-items-center mb-3\">\n <div\n className=\"has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n {intl.formatMessage(messages.current_state, {\n state: getStateTitle(),\n })}\n </div>\n </div>\n {modifyContent && definition.transitions.length > 0 && (\n <div\n className=\" is-flex is-align-items-center has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n <label>{intl.formatMessage(messages.actions)}</label>&nbsp;&nbsp;\n {definition.transitions.map((transition) => {\n return (\n <button\n key={transition['@id']}\n className=\"button mr-4\"\n onClick={() =>\n setWorkflowAction(\n transition['@id'].split('@workflow')[1].slice(1)\n )\n }\n >\n {get(\n transition,\n `metadata.translated_title.${intl.locale}`,\n transition.title\n )}\n </button>\n )\n })}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { Fragment } from 'react'\n\nexport function PanelActions() {\n const traversal = useTraversal()\n const intl = useIntl()\n const ACTIONS_OBJECT = traversal.registry.getActionsList(\n traversal.context['@type'],\n false\n )\n\n const hasPerm = (perms: string[]) => {\n return perms.some((perm) => traversal.hasPerm(perm))\n }\n\n const onAction = (actionKey: keyof typeof ACTIONS_OBJECT) => {\n traversal.doAction(ACTIONS_OBJECT[actionKey].action, {\n item: traversal.context,\n })\n }\n\n return (\n <Fragment>\n {Object.keys(ACTIONS_OBJECT).map((actionKey) => {\n const actionKeyTyped = actionKey as keyof typeof ACTIONS_OBJECT\n const actionObject = ACTIONS_OBJECT[actionKeyTyped]\n if (hasPerm(actionObject.perms)) {\n return (\n <button\n key={`panel_action_${actionObject.text}`}\n className=\"button mr-4\"\n onClick={() => {\n onAction(actionKeyTyped)\n }}\n >\n {intl.formatMessage(actionObject.text)}\n </button>\n )\n }\n })}\n </Fragment>\n )\n}\n","import { Traversal, useTraversal } from '../../contexts'\nimport { useIntl, defineMessages } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { AddonAvailable, Addons } from '../../types/guillotina'\n\nconst messages = defineMessages({\n available_addons: {\n id: 'available_addons',\n defaultMessage: 'Available Addons',\n },\n no_available_addons_container: {\n id: 'no_available_addons_container',\n defaultMessage: 'No Addon available in this container',\n },\n installed_addons: {\n id: 'installed_addons',\n defaultMessage: 'Installed Addons',\n },\n})\n\n// TODO: Refactor without useAsync... just crudContext\nexport function PanelAddons() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [action, setAction] = useState(false)\n const [state, setState] = useState<{\n data?: {\n available: AddonAvailable[]\n installed: AddonAvailable[]\n }\n loading: boolean\n error?: Error\n }>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n useEffect(() => {\n const getAddons = async () => {\n if (!state.loading && !state.data && !state.error) {\n try {\n const response = await Ctx.client.getAddons(Ctx.pathPrefix)\n const data: Addons = await response.json()\n setState({ ...state, loading: false, data: prepareData(data) })\n } catch (err) {\n setState({ ...state, loading: false, error: err as Error })\n }\n }\n }\n getAddons()\n }, [action])\n\n const installAddon = async (Ctx: Traversal, key: string) => {\n await Ctx.client.installAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} installed`, 'success')\n setAction(!action)\n }\n\n const removeAddon = async (Ctx: Traversal, key: string) => {\n await Ctx.client.removeAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} removed`, 'success')\n setAction(!action)\n }\n\n return (\n <Fragment>\n {state.loading ? (\n <div>{intl.formatMessage(genericMessages.loading)}</div>\n ) : state.error ? (\n <p>Error: {state.error.message}</p>\n ) : (\n <div className=\"columns\">\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.available_addons)}\n </h2>\n <hr />\n {(state.data?.available ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.available ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-primary is-small\"\n onClick={() => installAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.install)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.installed_addons)}\n </h2>\n <hr />\n {(state.data?.installed ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.installed ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-danger is-small\"\n onClick={() => removeAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.remove)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nconst prepareData = (result: Addons) => {\n const addons = arrayToObject(result.available)\n return {\n available: result.available.filter(\n (item) => !result.installed.includes(item.id)\n ),\n installed: result.installed.map((id) => addons[id]),\n }\n}\n\nconst arrayToObject = (\n array: AddonAvailable[]\n): {\n [key: string]: AddonAvailable\n} =>\n array.reduce((obj, item) => {\n return {\n ...obj,\n [item.id]: item,\n }\n }, {})\n","import { useCrudContext } from '../../hooks/useCrudContext'\nimport { Table } from '../ui/table'\nimport { Button } from '../input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { GuillotinaBehaviors } from '../../types/guillotina'\n\nexport function PanelBehaviors() {\n const intl = useIntl()\n const { Ctx, get, result, loading, isError } =\n useCrudContext<GuillotinaBehaviors>()\n const ops = useCrudContext()\n\n const [state, setState] = useState(false)\n\n const enableBehavior = (behavior: string) => async () => {\n await ops.patch({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n const disableBehavior = (behavior: string) => async () => {\n await ops.del({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n useEffect(() => {\n get('@behaviors')\n }, [])\n\n return (\n <div className=\"columns behaviors\">\n <div className=\"column is-8 is-size-7\">\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(genericMessages.behaviors)}\n </h2>\n {!loading && !isError && result && (\n <Fragment>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.static)}\n </h3>\n </td>\n </tr>\n {result.static.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.static)}</td>\n <td>{behavior}</td>\n <td className=\"\">\n <Button className=\"is-small is-pulled-right\" disabled>\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.enabled)}\n </h3>\n </td>\n </tr>\n {result.dynamic.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.enabled)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-danger is-pulled-right\"\n onClick={disableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.available)}\n </h3>\n </td>\n </tr>\n {result.available.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.available)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-primary is-pulled-right\"\n onClick={enableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.enable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n </Fragment>\n )}\n </div>\n <div className=\"column is-4\"></div>\n </div>\n )\n}\n","import { createContext, useState, useContext } from 'react'\nimport Dropdown from './input/dropdown'\nimport { Checkbox } from './input/checkbox'\nimport { useTraversal } from '../contexts'\nimport { useIntl } from 'react-intl'\nimport { SearchItem } from '../types/guillotina'\n\nexport const ItemsActionsCtx = createContext<{\n selected: {\n all: boolean\n [key: string]: boolean\n }\n onSelectOneItem?: (item: SearchItem) => void\n onSelectAllItems?: (chedked: boolean) => void\n onAction?: (action: string) => void\n}>({\n selected: {\n all: false,\n },\n})\n\n/**\n * Actions to apply after select some items\n * Ex: Delete, Move, Copy...\n */\ninterface PropsItemsActionsProvider {\n items: SearchItem[]\n children: React.ReactNode\n}\nexport function ItemsActionsProvider({\n items,\n children,\n}: PropsItemsActionsProvider) {\n const traversal = useTraversal()\n const actions = traversal.registry.getActionsList(\n traversal.context['@type'],\n true\n )\n const [selected, setSelected] = useState<{\n all: boolean\n [key: string]: boolean\n }>({\n all: false,\n })\n function onSelectAllItems(checked: boolean) {\n setSelected(\n items.reduce(\n (obj, item) => {\n return {\n ...obj,\n [`${item.path}/${item.id}`]: checked,\n }\n },\n { all: checked }\n )\n )\n }\n\n function onSelectOneItem(item: SearchItem) {\n setSelected((state) => ({\n ...state,\n all: false,\n [`${item.path}/${item.id}`]: !state[`${item.path}/${item.id}`],\n }))\n }\n\n function onAction(actionKey: string) {\n traversal.doAction(actions[actionKey].action, {\n items: items.filter((item) => selected[`${item.path}/${item.id}`]),\n })\n }\n\n return (\n <ItemsActionsCtx.Provider\n value={{\n onAction,\n onSelectAllItems,\n onSelectOneItem,\n selected,\n }}\n >\n {children}\n </ItemsActionsCtx.Provider>\n )\n}\n\nexport const useItemsActions = () => {\n const { onAction, onSelectOneItem, onSelectAllItems, selected } =\n useContext(ItemsActionsCtx)\n if (!onAction || !onSelectOneItem || !onSelectAllItems || !selected) {\n throw new Error('useItemsActions must be used inside ItemsActionsProvider')\n }\n return { onAction, onSelectOneItem, onSelectAllItems, selected }\n}\n/**\n * Checkbox component without props that consume the ItemsActionsContext\n * and it select/unselect all items of the page.\n */\nexport function AllItemsCheckbox({ dataTest }: { dataTest?: string }) {\n const { onSelectAllItems, selected } = useItemsActions()\n\n return (\n <Checkbox\n onChange={onSelectAllItems}\n checked={selected.all}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Checkbox component to select ONE item.\n */\ninterface PropsItemCheckbox {\n item: SearchItem\n dataTest?: string\n}\nexport function ItemCheckbox({ item, dataTest }: PropsItemCheckbox) {\n const { selected, onSelectOneItem } = useItemsActions()\n const absId = `${item.path}/${item.id}`\n const value = selected[absId]\n\n return (\n <Checkbox\n onChange={() => onSelectOneItem(item)}\n checked={value}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Dropdown to choose some action to apply to the selected items.\n */\nexport function ItemsActionsDropdown() {\n const intl = useIntl()\n const traversal = useTraversal()\n const ACTIONS_OBJECT = traversal.registry.getActionsList(\n traversal.context['@type'],\n true\n )\n const { selected, onAction } = useItemsActions()\n const disabled = Object.values(selected).every((v) => !v)\n const options = Object.keys(ACTIONS_OBJECT).map((action) => ({\n text: intl.formatMessage(ACTIONS_OBJECT[action].text),\n value: action,\n }))\n\n return (\n <Dropdown\n disabled={disabled}\n id=\"items-actions\"\n onChange={onAction}\n optionDisabledWhen={(o) =>\n ACTIONS_OBJECT[o.value].perms.some((perm) => !traversal.hasPerm(perm))\n }\n options={options}\n isRight={false}\n >\n <div data-test=\"btnChooseActionTest\">\n {intl.formatMessage({\n id: 'choose_action',\n defaultMessage: 'Choose action...',\n })}\n </div>\n </Dropdown>\n )\n}\n","import { useIntl } from 'react-intl'\n\ninterface Props {\n current: number\n total: number\n doPaginate: (page: number) => void\n pager: number\n}\nexport function Pagination({ current, total, doPaginate, pager }: Props) {\n const intl = useIntl()\n const maxPages = Math.ceil(total / pager)\n if (maxPages <= 1) {\n return null\n }\n\n return (\n <div>\n <p className=\"level-right has-text-grey is-size-7\">\n <span>\n {intl.formatMessage(\n {\n id: 'pagination',\n defaultMessage:\n '{currentPage} / {totalPages} of {totalItems} items',\n },\n {\n currentPage: current + 1,\n totalPages: maxPages,\n totalItems: total,\n }\n )}\n </span>\n </p>\n <nav\n className=\"pagination is-size-7\"\n role=\"navigation\"\n aria-label=\"pagination\"\n >\n <a\n className=\"pagination-previous is-small\"\n // disabled={current === 0}\n onClick={() => (current > 0 ? doPaginate(current - 1) : null)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-left\"></i>\n </span>\n </a>\n <a\n className=\"pagination-next is-small\"\n // disabled={current >= maxPages - 1}\n onClick={() => doPaginate(current + 1)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-right\"></i>\n </span>\n </a>\n </nav>\n </div>\n )\n}\n","import {\n GuillotinaSharing,\n GuillotinaSharingInheritItem,\n GuillotinaSharingMap,\n} from '../types/guillotina'\n\nconst base: GuillotinaSharing = {\n local: {\n roleperm: {},\n prinperm: {},\n prinrole: {},\n },\n inherit: [],\n}\n\nexport class Sharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n\n constructor(element: GuillotinaSharing | undefined) {\n if (element === undefined) {\n throw new Error('Sharing element is undefined')\n }\n this.local = element.local || base.local\n this.inherit = element.inherit || base.inherit\n }\n get roles() {\n return Object.keys(this.local.roleperm)\n }\n\n getRole(role: string) {\n return this.local.roleperm[role]\n }\n\n get principals() {\n return Object.keys(this.local.prinperm)\n }\n\n getPrincipals(principal: string) {\n return this.local.prinperm[principal]\n }\n\n get prinrole() {\n return Object.keys(this.local.prinrole)\n }\n\n getPrinroles(role: string) {\n return this.local.prinrole[role]\n }\n}\n","import { formatDate } from '../lib/utils'\nimport { useConfig } from '../hooks/useConfig'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\nexport * from './sharing'\n\nexport class ItemModel<\n T extends SearchItem | GuillotinaCommonObject =\n | SearchItem\n | GuillotinaCommonObject,\n> {\n item: T\n url: string\n constructor(item: T, url = '') {\n this.item = item\n this.url = url\n }\n\n get path() {\n // Compat\n const item = this.item['@id']\n ? this.item['@id']\n : this.item['@absolute_url']\n let path = item.split('//')[1].split('/').splice(1).join('/')\n path = `/${path}/`\n if (this.url.length > 0) {\n if (this.url.startsWith('/')) {\n path = path.replace(this.url.substring(1), '')\n } else {\n path = path.replace(this.url, '')\n }\n }\n\n return path\n }\n\n get name() {\n return this.item.title || this.item['@name']\n }\n\n get icon() {\n // eslint-disable-next-line react-hooks/rules-of-hooks -- legacy class getter; refactor with context\n const cfg = useConfig()\n if (cfg.icons && cfg.icons[this.type]) {\n return cfg.icons[this.type]\n }\n\n switch (this.type) {\n case 'GroupManager':\n return 'fas fa-users-cog'\n case 'UserManager':\n return 'fas fa-user-cog'\n case 'User':\n return 'fas fa-user'\n case 'Group':\n return 'fas fa-users'\n case 'Folder':\n return 'fas fa-folder'\n default:\n return 'fas fa-file'\n }\n }\n\n get fullPath() {\n return this.url + this.id\n }\n\n get id() {\n if ('id' in this.item) {\n return this.item.id\n }\n const id = this.item['@id'].split('&')[0].split('/')\n return id[id.length - 1]\n }\n\n get uid() {\n return this.item['@uid']\n }\n\n get type(): string {\n return this.item['@type'] || this.item.type_name\n }\n\n get title() {\n return this.item.title\n }\n\n get created() {\n return this.item.creation_date ? formatDate(this.item.creation_date) : ''\n }\n\n get updated() {\n return this.item.modification_date\n ? formatDate(this.item.modification_date)\n : ''\n }\n}\n","import React from 'react'\n\nimport { ItemModel } from '../models'\nimport { useLocation } from '../hooks/useLocation'\nimport { useTraversal } from '../contexts'\nimport { Icon } from './ui/icon'\nimport { ItemCheckbox } from './selected_items_actions'\nimport { Delete } from './ui'\nimport {\n GuillotinaCommonObject,\n ItemColumn,\n SearchItem,\n} from '../types/guillotina'\n\ninterface ItemProps {\n item: { id: string; path: string }\n icon?: string\n}\nexport function Item({ item, icon }: ItemProps) {\n const [, navigate] = useLocation()\n const link = () => navigate({ path: item.path }, true)\n return (\n <tr>\n <td onClick={link} style={{ width: '25px' }}>\n {icon && <Icon icon={icon} />}\n </td>\n <td onClick={link}>{item.id}</td>\n </tr>\n )\n}\n\nconst smallcss = {\n width: 25,\n}\n\ninterface RItemProps {\n item: SearchItem\n search: string\n columns: ItemColumn<SearchItem | GuillotinaCommonObject>[]\n}\nexport function RItem({ item, search, columns }: RItemProps) {\n const [, navigate] = useLocation()\n const traversal = useTraversal()\n const model = new ItemModel(item, traversal.url)\n const link = () => navigate({ path: model.path }, true)\n\n return (\n <tr key={item.id} data-test={`itemTest-${item.id}`}>\n <td style={smallcss}>\n <ItemCheckbox item={item} dataTest=\"itemCheckboxRowTest\" />\n </td>\n {columns.map((i) => (\n <React.Fragment key={i.label}>\n {i.child({ model, link, search })}\n </React.Fragment>\n ))}\n <td style={smallcss}>\n {traversal.hasPerm('guillotina.DeleteContent') && (\n <Delete\n onClick={() =>\n traversal.doAction('removeItems', { items: [model.item] })\n }\n />\n )}\n </td>\n </tr>\n )\n}\n\ninterface ItemTitleProps {\n title: string\n actions?: React.ReactNode\n}\nexport function ItemTitle({ title, actions }: ItemTitleProps) {\n return (\n <nav className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <h4 className=\"title has-text-primary is-size-5\">{title}</h4>\n </div>\n </div>\n <div className=\"level-right\">\n <div className=\"level-item\">{actions && actions}</div>\n </div>\n </nav>\n )\n}\n","import { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n}\nexport function SearchLabels({ query }: Props) {\n const [location, , del] = useLocation()\n const search = location.get(query ?? 'q')\n\n const clearSearch = () => {\n del(query ?? 'q')\n }\n\n if (search) {\n return (\n <div className=\"tags\">\n <Tag\n id={search}\n name={search}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n options?: { value: string; text: string }[]\n}\nexport function SearchOptionsLabels({ query = 'q', options }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState<string | undefined>(undefined)\n const defaultRenderValue = location.get(query) || ''\n\n useEffect(() => {\n let value = defaultRenderValue\n if (options && (options ?? []).length > 0) {\n const option = options.find((item) => item.value === value)\n if (option) {\n value = option.text\n }\n }\n setRenderValue(value)\n }, [defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\nimport { useVocabulary } from '../hooks/useVocabulary'\n\ninterface Props {\n query?: string\n vocabularyName: string\n}\n\nexport function SearchVocabularyLabels({ query = 'q', vocabularyName }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState<string | undefined>(undefined)\n const vocabulary = useVocabulary(vocabularyName)\n const defaultRenderValue = location.get(query) || ''\n\n useEffect(() => {\n let value: string = defaultRenderValue\n\n if ((vocabulary?.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary?.data?.items.find(\n (item) => item.token === value\n )\n if (vocabularyValue) {\n value = vocabularyValue.title\n }\n }\n setRenderValue(value)\n }, [vocabulary, defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import useSetState from '../../hooks/useSetState'\nimport {\n ItemsActionsProvider,\n AllItemsCheckbox,\n ItemsActionsDropdown,\n} from '../selected_items_actions'\nimport { Pagination } from '../pagination'\nimport { RItem } from '../item'\nimport { SearchLabels } from '../search_labels'\nimport { SearchOptionsLabels } from '../search_options_labels'\nimport { SearchVocabularyLabels } from '../search_vocabulary_labels'\nimport { useTraversal } from '../../contexts'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect } from 'react'\nimport { useLocation } from '../../hooks/useLocation'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { RegistrySchemaFilter, SearchItem } from '../../types/guillotina'\n\ninterface InitialState {\n page: number\n items: SearchItem[]\n loading: boolean\n total: number\n}\nconst initialState: InitialState = {\n page: 0,\n items: [],\n loading: true,\n total: 0,\n}\n\nexport function PanelItems() {\n const [location, setLocation, del] = useLocation()\n const { PageSize, SearchEngine } = useConfig()\n const intl = useIntl()\n\n const Ctx = useTraversal()\n const [state, setState] = useSetState<InitialState>(initialState)\n const { items, loading, total } = state\n\n const filterSchema: RegistrySchemaFilter[] =\n Ctx.registry.getSchemas(Ctx.context['@type']).filters || []\n\n const columns =\n Ctx.registry.getItemsColumn(Ctx.context['@type']) ||\n Ctx.client.getItemsColumn()\n\n const search = location.get('q')\n const type = location.get('type')\n const sort = location.get('sort')\n const sortDirection = location.get('sort_direction')\n let page: number\n\n try {\n page = parseInt(location.get('page') || '0')\n } catch {\n page = 0\n }\n\n let searchParsed: string[][] | undefined = undefined\n if (search && search !== '') {\n const fieldsToFilter = Ctx.registry.getFieldsToFilter(Ctx.context['@type'])\n searchParsed = parser(search, fieldsToFilter)\n }\n\n let typeParsed: string[][] | undefined = undefined\n if (type && type !== '') {\n typeParsed = parser(type, 'type_name')\n }\n\n let sortParsed: string[][] | undefined = undefined\n if (sort && sort !== '') {\n if (sortDirection === 'asc') {\n sortParsed = parser(`_sort_asc=${sort}`)\n } else if (sortDirection === 'des') {\n sortParsed = parser(`_sort_des=${sort}`)\n }\n }\n\n const onSort = (key: string) => {\n if (sort === key && sortDirection === 'des') {\n setLocation({\n sort: key,\n sort_direction: 'asc',\n page: 0,\n })\n } else {\n setLocation({\n sort: key,\n sort_direction: 'des',\n page: 0,\n })\n }\n }\n\n let resultQueryParams: string[][] = []\n const resultDynamicLocation: string[] = []\n filterSchema.forEach((filter) => {\n const itemParam = location.get(filter.attribute_key) || ''\n resultDynamicLocation.push(itemParam)\n if (itemParam) {\n const filterParsed = parser(itemParam, filter.attribute_key)\n resultQueryParams = [...resultQueryParams, ...filterParsed]\n }\n })\n\n useEffect(() => {\n const controller = new AbortController()\n if (Ctx.state.loading) return\n const getData = async () => {\n setState({ loading: true, total: Ctx.context.length })\n const { getSearchEngineQueryParamsFunction } = Ctx.registry\n const fnName = getSearchEngineQueryParamsFunction(SearchEngine)\n if (sortParsed === undefined) {\n const defaultSortValue = Ctx.registry.getDefaultSortValue(\n Ctx.context['@type'],\n undefined\n )\n sortParsed = parser(\n `_sort_${defaultSortValue.direction}=${defaultSortValue.key}`\n )\n }\n const qsParsed = Ctx.client.getQueryParamsSearchFunction(fnName)({\n path: Ctx.path,\n start: page * PageSize,\n pageSize: PageSize,\n })\n let qs = ''\n if (search || type || resultQueryParams.length > 0) {\n qs = buildQs([\n ...qsParsed,\n ...(searchParsed ?? []),\n ...(typeParsed ?? []),\n ...(sortParsed ?? []),\n ...resultQueryParams,\n ])\n } else {\n qs = buildQs([...qsParsed, ...(sortParsed ?? [])])\n }\n\n const { signal } = controller\n const data = await Ctx.client.search<SearchItem>(\n Ctx.path,\n qs,\n false,\n false,\n signal\n )\n setState({\n items: data.items,\n loading: false,\n total: data.items_count,\n })\n }\n getData()\n return () => {\n controller.abort()\n }\n }, [\n search,\n type,\n Ctx.state.refresh,\n page,\n sort,\n sortDirection,\n ...resultDynamicLocation,\n ])\n\n const doPaginate = (page: number) => {\n setLocation({ page: page })\n }\n\n const getIcon = (key: string, isSortable: boolean) => {\n let icon = null\n if (isSortable) {\n if (sort !== key) {\n icon = <i className=\"fas fa-sort\" />\n } else if (sortDirection === 'des') {\n icon = <i className=\"fas fa-sort-down\" />\n } else {\n icon = <i className=\"fas fa-sort-up\"></i>\n }\n }\n return <span className=\"icon is-small\">{icon}</span>\n }\n\n return (\n <ItemsActionsProvider items={items}>\n {filterSchema.length > 0 && (\n <div className=\"filters-items-view\">\n {filterSchema.map((filter) => {\n if (filter.type === 'select' && (filter.values ?? []).length > 0) {\n return (\n <Select\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n classWrap=\"is-size-7 is-fullwidth\"\n options={filter.values ?? []}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'select' && filter.vocabulary) {\n return (\n <SelectVocabulary\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n vocabularyName={filter.vocabulary}\n classWrap=\"is-size-7 is-fullwidth\"\n val={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'input') {\n return (\n <Input\n id={filter.attribute_key}\n key={`filter-${filter.attribute_key}`}\n placeholder={filter.label}\n className=\"is-size-7 is-fullwidth\"\n type={filter.input_type || 'text'}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n }\n return null\n })}\n </div>\n )}\n <div className=\"wrapper-filters-info\">\n <div className=\"is-size-7\">\n <ItemsActionsDropdown />\n </div>\n <div className=\"wrapper-filters-tags\">\n {location.get('q') && <SearchLabels />}\n {location.get('type') && <SearchLabels query=\"type\" />}\n\n {(filterSchema ?? []).map((filter) => {\n const filterData = location.get(filter.attribute_key)\n if (filterData) {\n if (filter.type === 'select' && filter.vocabulary) {\n return (\n <div key={filter.attribute_key}>\n <SearchVocabularyLabels\n query={filter.attribute_key}\n vocabularyName={filter?.vocabulary}\n />\n </div>\n )\n } else if (\n filter.type === 'select' &&\n (filter.values ?? []).length > 0\n ) {\n return (\n <div key={filter.attribute_key}>\n <SearchOptionsLabels\n query={filter.attribute_key}\n options={filter?.values}\n />\n </div>\n )\n }\n return (\n <div key={filter.attribute_key}>\n <SearchLabels query={filter.attribute_key} />\n </div>\n )\n }\n return null\n })}\n </div>\n <div>\n <Pagination\n current={page}\n total={total}\n key=\"pagination-top\"\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </div>\n\n {loading && <div className=\"progress-line\"></div>}\n {!loading && (\n <table\n className=\"table is-fullwidth is-hoverable\"\n data-test=\"itemPanelTableTest\"\n >\n <thead className=\"is-size-7\">\n <tr>\n <th>\n <AllItemsCheckbox />\n </th>\n {columns.map((column) => (\n <th\n key={`table-col-${column.label}`}\n onClick={() => column.isSortable && onSort(column.key)}\n data-test={`sortableColumn${column.key}`}\n >\n <div className=\"has-text-info is-flex is-align-items-center\">\n <span>{column.label}</span>\n {getIcon(column.key, !!column.isSortable)}\n </div>\n </th>\n ))}\n <th>&nbsp;</th>\n </tr>\n </thead>\n <tbody>\n {items &&\n items.map((item) => (\n <RItem\n item={item}\n key={item['@uid']}\n search={search ?? ''}\n columns={columns}\n />\n ))}\n {items && items.length === 0 && (\n <tr>\n <td colSpan={6} className=\"has-text-centered\">\n {intl.formatMessage(genericMessages.no_results)}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n )}\n <div className=\"columns is-centered\">\n <Pagination\n current={page}\n key=\"pagination-bottom\"\n total={total}\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </ItemsActionsProvider>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { get } from '../lib/utils'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaCommonObject, GuillotinaSchema } from '../types/guillotina'\n\ninterface Props {\n context: GuillotinaCommonObject\n schema: GuillotinaSchema\n}\nexport function BehaviorsView({ context, schema }: Props) {\n const Ctx = useTraversal()\n const { getBehavior } = Ctx.registry\n\n const behaviors: string[] = [\n ...(context.__behaviors__ ?? []),\n ...Object(context['@static_behaviors']),\n ]\n\n const GetBehavior = (behaviorName: string) => {\n const Cls = getBehavior(behaviorName, BehaviorNotImplemented)\n return (\n <Cls\n values={context[behaviorName as keyof GuillotinaCommonObject]}\n properties={get(\n schema,\n ['definitions', behaviorName, 'properties'],\n {}\n )}\n />\n )\n }\n\n return (\n <>\n {behaviors.map((behavior) => (\n <div className=\"container\" key={behavior}>\n <h3 className=\"title is-size-6 has-text-grey\">{behavior}</h3>\n {GetBehavior(behavior)}\n <hr />\n </div>\n ))}\n </>\n )\n}\n\nexport function BehaviorNotImplemented() {\n const intl = useIntl()\n return (\n <tr>\n <td colSpan={3}>{intl.formatMessage(genericMessages.not_implemented)}</td>\n </tr>\n )\n}\n","import React from 'react'\nimport { useTraversal } from '../contexts'\n\nexport function PropertiesButtonView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Buttons) {\n const Element = React.cloneElement(Props.Buttons, { Ctx: Ctx })\n return Element\n }\n return null\n}\n\nexport function PropertiesView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Panels) {\n const Element = React.cloneElement(Props.Panels, { Ctx: Ctx })\n return Element\n }\n return null\n}\n","import { useEffect } from 'react'\nimport { ItemModel } from '../../models'\nimport { BehaviorsView } from '../behavior_view'\nimport { Icon } from '../ui/icon'\nimport { EditableField } from '../fields/editableField'\nimport { PropertiesButtonView } from '../properties_view'\nimport { PropertiesView } from '../properties_view'\nimport { useConfig } from '../../hooks/useConfig'\nimport useSetState from '../../hooks/useSetState'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\n\nconst _showProperties = ['@id', '@name', '@uid']\nconst _ignoreFields = [\n 'guillotina.behaviors.dublincore.IDublinCore',\n 'guillotina.behaviors.attachment.IAttachment',\n 'guillotina.behaviors.attachment.IMultiAttachment',\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior',\n 'guillotina.contrib.image.behaviors.IImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment',\n '__behaviors__',\n 'type_name',\n 'creation_date',\n 'modification_date',\n 'uuid',\n 'title',\n]\n\ninterface State {\n data?: GuillotinaSchema\n loading: boolean\n error: string | unknown\n}\n\nexport function PanelProperties() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const cfg = useConfig()\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const model = new ItemModel(Ctx.context)\n\n const showProperties: string[] =\n Ctx.registry.getProperties(Ctx.context['@type']).default ||\n cfg.properties_default ||\n _showProperties\n\n const ignoreFields =\n Ctx.registry.getProperties(Ctx.context['@type']).ignoreField ||\n cfg.properties_ignore_fields ||\n _ignoreFields\n\n const properties = Object.keys(schema?.data?.properties || [])\n .filter((key) => !ignoreFields.includes(key))\n .map((key) => ({\n key,\n value: schema?.data?.properties[key] as GuillotinaSchemaProperty,\n }))\n\n useEffect(() => {\n async function getSchema() {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(\n Ctx.path,\n Ctx.context.type_name\n )\n setSchema({ loading: false, data: dataJson })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n return (\n <div className=\"container\">\n <div className=\"level\">\n <div className=\"level-left\">\n <h2 className=\"title is-size-4 is-primary\">\n <Icon icon={model.icon} align=\"is-left\" className=\"has-text-grey\" />\n &nbsp;\n <span>{Ctx.context.title || Ctx.context['@name']}</span>\n </h2>\n </div>\n <div className=\"level-right\">\n <PropertiesButtonView />\n </div>\n </div>\n\n <hr />\n {schema && schema.data && !schema.loading && (\n <div className=\"columns\">\n <div className=\"column\">\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {showProperties.map((prop) => (\n <tr key={'prop' + prop}>\n <td style={{ width: '150px' }}>{prop}</td>\n <td>\n <EditableField\n field={prop}\n value={get(Ctx.context, prop, '')}\n modifyContent={false}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {properties.length > 0 && (\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {properties.map(({ key, value }) => {\n return (\n <tr key={'prop' + key}>\n <td style={{ width: '150px' }}>{value.title || key}</td>\n <td>\n <EditableField\n field={key}\n value={get(Ctx.context, key, '')}\n schema={value}\n modifyContent={modifyContent}\n required={(schema.data?.required ?? []).includes(\n key\n )}\n />\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n <PropertiesView />\n <BehaviorsView context={Ctx.context} schema={schema.data} />\n </div>\n </div>\n )}\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal?: string\n permission: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n principals?: { text: string; value: string }[]\n permissions?: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinperm({\n principals,\n permissions,\n operations,\n refresh,\n}: Props) {\n const Ctx = useTraversal()\n const intl = useIntl()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinperm: state.permission.map((perm) => ({\n principal: state.principal,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals ?? []}\n onChange={(value) => setState({ principal: value as string })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions ?? []}\n onChange={(values) => {\n setState({ permission: values as string[] })\n }}\n size={5}\n multiple\n dataTest=\"selectPermissionsTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal?: string\n roles: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n principals?: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinrole({\n principals,\n roles,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n roles: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.roles.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form_data) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinrole: state.roles.map((perm) => ({\n principal: state.principal,\n role: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals ?? []}\n onChange={(value) => setState({ principal: value as string })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n options={roles}\n onChange={(values) => {\n setState({ roles: values as string[] })\n }}\n size={5}\n multiple\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n role?: string\n permission: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n roles: { text: string; value: string }[]\n permissions?: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionRoleperm({\n roles,\n permissions,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n role: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.role || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n roleperm: state.permission.map((perm) => ({\n role: state.role,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n appendDefault\n options={roles}\n onChange={(value) => setState({ role: value as string })}\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions ?? []}\n onChange={(values) => {\n setState({ permission: values as string[] })\n }}\n dataTest=\"selectPermissionsTest\"\n size={5}\n multiple\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import useSetState from '../../hooks/useSetState'\nimport { PermissionPrinperm } from './permissions_prinperm'\nimport { PermissionPrinrole } from './permissions_prinrole'\nimport { PermissionRoleperm } from './permissions_roleperm'\nimport { Select } from '../input/select'\nimport { Sharing } from '../../models'\nimport { Table } from '../ui/table'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useMemo, useState } from 'react'\nimport { GuillotinaSharing } from '../../types/guillotina'\n\nconst messages = defineMessages({\n role_permissions: {\n id: 'role_permissions',\n defaultMessage: 'Role Permissions',\n },\n no_role_permissions: {\n id: 'no_role_permissions',\n defaultMessage: 'No roles permissions defined',\n },\n no_principal_permissions: {\n id: 'no_principal_permissions',\n defaultMessage: 'No principal permissions defined',\n },\n no_principal_roles: {\n id: 'no_principal_roles',\n defaultMessage: 'No principal roles defined',\n },\n principal_permissions: {\n id: 'principal_permissions',\n defaultMessage: 'Principal Permissions',\n },\n principal_roles: {\n id: 'principal_roles',\n defaultMessage: 'Principal Roles',\n },\n allow: {\n id: 'allow',\n defaultMessage: 'Allow',\n },\n deny: {\n id: 'deny',\n defaultMessage: 'Deny',\n },\n allow_single: {\n id: 'allow_single',\n defaultMessage: 'AllowSingle',\n },\n unset: {\n id: 'unset',\n defaultMessage: 'Unset',\n },\n add_permissions: {\n id: 'add_permissions',\n defaultMessage: 'Add Permissions',\n },\n select_type: {\n id: 'select_type',\n defaultMessage: 'Select a type:',\n },\n})\n\nexport function PanelPermissions() {\n const intl = useIntl()\n const { get, result, loading } = useCrudContext<GuillotinaSharing>()\n const ctx = useTraversal()\n\n const [reset, setReset] = useState(1)\n\n useEffect(() => {\n get('@sharing')\n }, [reset])\n\n const perms = useMemo(() => {\n if (result) {\n return new Sharing(result)\n }\n return null\n }, [result])\n if (perms === null) {\n return null\n }\n return (\n <div className=\"columns\">\n {!loading && (\n <div\n className=\"column is-8 is-size-7 permissions\"\n data-test=\"containerPermissionsInfoTest\"\n >\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.role_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.roles.map((role, idx) => (\n <Fragment key={'ff' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n {/* <td>\n <Icon icon=\"fas fa-ban\" />\n <span>Remove</span>\n </td> */}\n </tr>\n {Object.keys(perms.getRole(role)).map((row, idx) => (\n <tr key={'k' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getRole(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.roles.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.principals.map((role, idx) => (\n <Fragment key={'f2' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrincipals(role)).map((row, idx) => (\n <tr key={'x' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrincipals(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.principals.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_principal_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_roles)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.prinrole.map((role, idx) => (\n <Fragment key={role + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrinroles(role)).map((row, idx) => (\n <tr key={'xx' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrinroles(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.prinrole.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n </div>\n )}\n {ctx.hasPerm('guillotina.ChangePermissions') && (\n <AddPermission refresh={setReset} reset={reset} />\n )}\n </div>\n )\n}\n\ninterface State {\n permissions?: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n principals?: { text: string; value: string }[]\n current: string\n}\nconst initial: State = {\n permissions: undefined,\n roles: [],\n principals: undefined,\n current: '',\n}\n\ninterface AddPermissionProps {\n refresh: (state: number) => void\n reset: number\n}\nexport function AddPermission({ refresh, reset }: AddPermissionProps) {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State>(initial)\n const intl = useIntl()\n\n const operations = [\n { text: intl.formatMessage(messages.allow), value: 'Allow' },\n { text: intl.formatMessage(messages.deny), value: 'Deny' },\n { text: intl.formatMessage(messages.allow_single), value: 'AllowSingle' },\n { text: intl.formatMessage(messages.unset), value: 'Unset' },\n ]\n\n const defaultOptions = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n { text: intl.formatMessage(messages.role_permissions), value: 'roleperm' },\n {\n text: intl.formatMessage(messages.principal_permissions),\n value: 'prinperm',\n },\n { text: intl.formatMessage(messages.principal_roles), value: 'prinrole' },\n ]\n\n useEffect(() => {\n async function init() {\n const permissions = (await Ctx.client.getAllPermissions(Ctx.path)).map(\n (perm) => ({\n text: perm,\n value: perm,\n })\n )\n let principals = []\n let roles = []\n\n const principalsData = await Ctx.client.getPrincipals(Ctx.path)\n const groups = principalsData.groups.map((group) => ({\n text: group['@name'],\n value: group['@name'],\n }))\n const users = principalsData.users.map((user) => ({\n text: user.fullname || user['@name'],\n value: user['@name'],\n }))\n principals = [...groups, ...users]\n\n const req = await Ctx.client.getRoles(Ctx.path)\n if (req.ok) {\n roles = (await req.json()).map((role: string) => ({\n text: role,\n value: role,\n }))\n }\n setState({ permissions, roles, principals })\n }\n\n init()\n }, [reset])\n\n return (\n <div className=\"column is-4 is-size-7\">\n <h1 className=\"title is-size-5\">\n {intl.formatMessage(messages.add_permissions)}\n </h1>\n <p>{intl.formatMessage(messages.select_type)}</p>\n <Select\n options={defaultOptions}\n onChange={(value) => setState({ current: value as string })}\n dataTest=\"selectPermissionTypeTest\"\n />\n <hr />\n {state.current && state.current === 'roleperm' && (\n <PermissionRoleperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinperm' && (\n <PermissionPrinperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinrole' && (\n <PermissionPrinrole\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n </div>\n )\n}\n","import { Select } from '../input/select'\nimport { Tag } from '../ui/tag'\nimport { Loading } from '../ui/loading'\nimport { useRef, useState } from 'react'\n\nconst prepareAvailable = (\n items: {\n value: string\n text: string\n }[],\n already: string[],\n title: string\n) => {\n const def = { value: '', text: `Add ${title}` }\n if (items.length === 0) return []\n return [def].concat(items).filter((item) => !already.includes(item.value))\n}\n\ninterface Props {\n items: string[]\n available?: {\n value: string\n text: string\n }[]\n title: string\n noData: string\n onChange: (items: string[]) => void\n loading?: boolean\n}\nexport function TagsWidget({\n items,\n available,\n title,\n noData,\n onChange,\n loading,\n}: Props) {\n const selectRef = useRef<HTMLSelectElement>(null)\n\n const [result, setResult] = useState(items)\n const availableData = prepareAvailable(available || [], result, title)\n\n const remove = (value: string) => {\n const items = result.filter((item) => item !== value)\n setResult(items)\n onChange(items)\n }\n\n const addItem = (value: string) => {\n if (value === '') return\n const items = result.concat([value])\n setResult(items)\n onChange(items)\n }\n\n return (\n <>\n <h3 className=\"title is-size-6\">{title}</h3>\n {loading ? <Loading style={{ marginBottom: '1.5rem' }} /> : <hr />}\n <ul>\n <div className=\"tags\">\n {result.map((item) => (\n <Tag\n id={item}\n name={item}\n onRemove={() => remove(item)}\n key={item}\n />\n ))}\n </div>\n {result.length === 0 && (\n <li style={{ marginBottom: '20px' }}>{noData}</li>\n )}\n {(available ?? []).length > 1 && (\n <li className=\"widget-list-add select is-small\">\n <Select\n options={availableData}\n ref={selectRef}\n onChange={(value) => {\n addItem(value as string)\n if (selectRef.current) {\n selectRef.current.value = ''\n }\n }}\n />\n </li>\n )}\n </ul>\n </>\n )\n}\n","import { GuillotinaFile } from './guillotina'\n\nexport interface LightFile {\n filename: string\n data: ArrayBuffer | string\n 'content-type': string\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface IndexSignature<T = any> {\n [key: string]: T\n}\n\nexport type EditableFieldValue =\n | GuillotinaFile\n | LightFile\n | IndexSignature\n | string\n | string[]\n | boolean\n | Date\n | undefined\n | null\n\nexport function getFilterInputValue(form: HTMLFormElement): string {\n const input = form.elements.namedItem('filterInput')\n return input instanceof HTMLInputElement ? input.value : ''\n}\n","import { useEffect, useState } from 'react'\n\nimport Dropdown from './input/dropdown'\nimport { Button } from './input/button'\nimport { Icon } from './ui/icon'\nimport { useTraversal } from '../contexts'\nimport { useConfig } from '../hooks/useConfig'\nimport { useLocation } from '../hooks/useLocation'\nimport { Select } from './input/select'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { getFilterInputValue } from '../types/global'\n\ninterface CreateButtonProps {\n types: string[]\n}\n\nexport function CreateButton({ types }: CreateButtonProps) {\n const intl = useIntl()\n const Ctx = useTraversal()\n\n const doAction = (item: string) => {\n Ctx.doAction('addItem', { type: item })\n }\n\n if (types.length === 0) {\n return null\n }\n\n if (types.length === 1) {\n return (\n <Button\n className={'is-small is-success'}\n onClick={() => doAction(types[0])}\n dataTest=\"itemAddTypeTest\"\n >\n {intl.formatMessage(genericMessages.add_type, { type: types[0] })}\n </Button>\n )\n }\n\n return (\n <Dropdown\n id=\"dropdown-menu\"\n isRight\n onChange={doAction}\n options={types.map((item) => ({ text: item, value: item }))}\n >\n <span className=\"icon\" data-test=\"itemAddTypeTest\">\n <i className=\"fas fa-plus\"></i>\n </span>\n </Dropdown>\n )\n}\n\ninterface Props {\n AddButton?: React.FC<CreateButtonProps>\n}\nexport function ContextToolbar({ AddButton }: Props) {\n const intl = useIntl()\n const [types, setTypes] = useState<string[]>([])\n const [location, setLocation, del] = useLocation()\n const traversal = useTraversal()\n const Config = useConfig()\n const searchText = location.get('q') || ''\n const [searchValue, setSearchValue] = useState(searchText || '')\n\n useEffect(() => {\n async function loadTypes() {\n const fetchedTypes: string[] = await traversal.client.getTypes(\n traversal.path\n )\n setTypes(\n fetchedTypes.filter((item) => !Config.DisabledTypes.includes(item))\n )\n }\n loadTypes()\n }, [traversal.path])\n\n useEffect(() => {\n setSearchValue(searchText)\n }, [searchText])\n\n const onSearchQuery = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setLocation({\n q: getFilterInputValue(event.currentTarget),\n tab: 'Items',\n page: 0,\n })\n }\n\n const onSearchByType = (typeText: string) => {\n if (typeText && typeText !== '') {\n setLocation({ type: typeText, tab: 'Items', page: 0 })\n } else {\n del('type')\n }\n }\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n value={searchValue || ''}\n onChange={(ev) => setSearchValue(ev.target.value)}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n name=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <div className=\"level-item\">\n <Select\n appendDefault\n dataTest=\"selectFilterTypeTest\"\n classWrap=\"is-size-7\"\n options={types.map((item) => ({\n text: item,\n value: item,\n }))}\n onChange={(value) => onSearchByType(value as string)}\n />\n </div>\n {traversal.hasPerm('guillotina.AddContent') && (\n <div className=\"level-item\">\n {AddButton !== undefined ? (\n <AddButton types={types} />\n ) : (\n <CreateButton types={types} />\n )}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Notification } from './ui/notification'\nimport { Delete } from './ui/delete'\n\nexport function Flash() {\n const Ctx = useTraversal()\n const { flash } = Ctx.state\n\n if (!flash.message) return null\n\n return (\n <Notification isColor={flash.type}>\n {flash.message}\n <Delete onClick={() => Ctx.clearFlash()} />\n </Notification>\n )\n}\n","import React, { useState } from 'react'\nimport { useLocation } from '../hooks/useLocation'\nimport { IndexSignature } from '../types/global'\n\nfunction FallbackTab({ title }: { title: string }) {\n return <div>Tab &apos;{title}&apos; not found</div>\n}\n\ninterface TabsPanelProps {\n tabs: IndexSignature\n currentTab: string\n rightToolbar?: React.ReactNode\n fallback?: React.ComponentType<{ title: string }>\n}\n\ntype TabsPanelPropsWithChildren<T = Record<string, unknown>> = TabsPanelProps &\n T\n\nexport function TabsPanel<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({\n tabs,\n currentTab,\n rightToolbar,\n fallback = FallbackTab,\n ...restProps\n}: TabsPanelPropsWithChildren<T>) {\n const [location, setLocation] = useLocation()\n\n currentTab = location.get('tab') || Object.keys(tabs)[0]\n /*if (!Object.keys(tabs).includes(currentTab)) {\n setLocation(defaultTab)\n currentTab = defaultTab\n }*/\n\n const [current, setTab] = useState(currentTab)\n const CurrentComp = tabs[current] || fallback\n\n React.useEffect(() => {\n if (Object.keys(tabs).includes(currentTab)) {\n setTab(currentTab)\n // setLocation({tab: currentTab})\n }\n }, [currentTab, tabs])\n\n const changeTab = (tab: string) => {\n setLocation({ tab: tab })\n }\n\n return (\n <div className=\"container\">\n <div className=\"level is-flex-wrap-wrap\">\n <div className=\"level-left mb-4\">\n <div className=\"tabs\">\n <ul>\n {Object.keys(tabs).map((tab) => (\n <li\n className={\n 'is-size-7 ' + (tab === current ? 'is-active' : '')\n }\n key={tab}\n >\n <a\n data-test={`tabTest-${tab.toLowerCase()}`}\n onClick={() => changeTab(tab)}\n >\n {tab}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n {rightToolbar && <div className=\"level-right\">{rightToolbar}</div>}\n </div>\n <div className=\"container\">\n <CurrentComp title={current} {...restProps} />\n </div>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { useTraversal } from '../contexts'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function FolderCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { useTraversal } from '../contexts'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelActions } from '../components/panel/actions'\n\nconst tabs = {\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ItemCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return <TabsPanel tabs={calculated} currentTab=\"Properties\" />\n}\n","import { Item } from '../components/item'\nimport { ItemTitle } from '../components/item'\nimport { Button } from '../components/input/button'\nimport { useState } from 'react'\nimport { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { Form } from '../components/input/form'\nimport { Input } from '../components/input/input'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaApplication, GuillotinaDatabase } from '../types/guillotina'\n\nexport function ApplicationCtx() {\n const intl = useIntl()\n const traversal = useTraversal()\n const appContext = traversal.state.context as GuillotinaApplication\n const { databases } = appContext\n return (\n <>\n <h3>\n {intl.formatMessage({\n id: 'databases',\n defaultMessage: 'Databases',\n })}\n </h3>\n <div className=\"container\">\n <ItemTitle title=\"Objects\" />\n <table>\n <tbody>\n {databases.map((db) => (\n <Item\n item={{ id: db, path: `/${db}/` }}\n key={db}\n icon={'fas fa-database'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function DatabaseCtx() {\n const traversal = useTraversal()\n const { containers } = traversal.state.context as GuillotinaDatabase\n const { path } = traversal.state\n return (\n <>\n <div className=\"container\">\n <ItemTitle title=\"Containers\" actions={<CreateContainer />} />\n <table className=\"table is-fullwidth is-hoverable\">\n <tbody>\n {containers.map((db) => (\n <Item\n item={{ id: db, path: `${path}${db}/` }}\n key={db}\n icon={'fas fa-archive'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function CreateContainer() {\n const intl = useIntl()\n const [isActive, setActive] = useState(false)\n\n return (\n <>\n <ModalAddContainer isActive={isActive} setActive={setActive} />\n <button\n className=\"button is-warning is-pulled-right\"\n onClick={() => setActive(true)}\n >\n <span className=\"icon is-small\">\n <i className=\"fas fa-plus\"></i>\n </span>\n <span>{intl.formatMessage(genericMessages.create)}</span>\n </button>\n </>\n )\n}\n\nexport const messages = defineMessages({\n add_container: {\n id: 'add_container',\n defaultMessage: 'Add Container',\n },\n container_created: {\n id: 'container_created',\n defaultMessage: 'Container Created',\n },\n})\n\ninterface ModalAddContainerProps {\n isActive: boolean\n setActive: (value: boolean) => void\n}\nfunction ModalAddContainer({ isActive, setActive }: ModalAddContainerProps) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [isLoading, setLoading] = useState(false)\n const [idField, setId] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n async function createContainer() {\n setLoading(true)\n const data = {\n '@type': 'Container',\n id: idField,\n }\n try {\n const res = await Ctx.client.createObject(Ctx.path, data)\n const result = await res.json()\n if (res.status === 200) {\n Ctx.refresh()\n setId('')\n setLoading(false)\n setActive(false)\n Ctx.flash(intl.formatMessage(messages.container_created), 'primary')\n } else {\n setId('')\n setLoading(false)\n setError(result.message)\n }\n } catch {\n setError('Error-submitting-form')\n setLoading(false)\n }\n }\n\n return (\n <Modal isActive={isActive} setActive={setActive}>\n <Form\n onSubmit={createContainer}\n title={intl.formatMessage(messages.add_container)}\n error={error}\n >\n <Input\n required\n placeholder=\"Container Name\"\n onChange={(v) => {\n setId(v)\n }}\n value={idField}\n loading={isLoading}\n />\n <Button loading={isLoading}>\n {intl.formatMessage(messages.add_container)}\n </Button>\n </Form>\n </Modal>\n )\n}\n","import { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface Props {\n title: string\n}\nexport function PanelNotImplemented(props: Props) {\n const intl = useIntl()\n return (\n <div className=\"container\">\n <h2 className=\"title\">{props.title}</h2>\n <p>{intl.formatMessage(genericMessages.not_implemented)}</p>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { PanelAddons } from '../components/panel/addons'\nimport { useTraversal } from '../contexts'\nimport { PanelNotImplemented } from './base'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Addons: PanelAddons,\n Registry: PanelNotImplemented,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Addons: 'guillotina.ManageAddons',\n Registry: 'guillotina.ReadConfiguration',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ContainerCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { FormBuilder } from '../components/input/form_builder'\nimport { useIntl } from 'react-intl'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n children: React.ReactNode\n onSubmit: (data: IndexSignature) => void\n actionName: string\n formData?: IndexSignature\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\nexport const UserForm = ({\n children,\n actionName,\n onSubmit,\n formData,\n exclude,\n remotes,\n submitButton,\n}: Props) => {\n const intl = useIntl()\n\n const schema = {\n $schema: '',\n title: '',\n type: 'object',\n definitions: {},\n required: ['username', 'password'],\n properties: {\n username: {\n type: 'string',\n title: intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n }),\n },\n email: {\n type: 'string',\n title: intl.formatMessage({\n id: 'email',\n defaultMessage: 'Email',\n }),\n widget: 'email',\n },\n name: {\n type: 'string',\n title: intl.formatMessage({\n id: 'name',\n defaultMessage: 'Name',\n }),\n },\n password: {\n type: 'string',\n title: intl.formatMessage({\n id: 'password',\n defaultMessage: 'Password',\n }),\n widget: 'password',\n },\n disabled: {\n type: 'boolean',\n title: 'Disabled',\n },\n },\n }\n\n return (\n <FormBuilder\n schema={schema}\n actionName={actionName}\n onSubmit={onSubmit}\n formData={formData}\n exclude={exclude}\n remotes={remotes}\n submitButton={submitButton}\n >\n {children}\n </FormBuilder>\n )\n}\n","/*\n This hook allows to bind (remote) fields on the DOM\n to a form generated with Formbuilder.\n You can link whatever field you want...\n\n const [remoteFields, updateRemoteField] = useRemoteField({widget_1: ['a', 'b']})\n\n <Form remotes={remoteFields} onSubmit={ev => console.log(ev)}>\n <Input />\n </Form>\n\n <Widget onChange={updateRemoteField('widgte_1')}>\n\n This will add the values from a remote field into the desired widget\n\n*/\n\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nexport const useRemoteField = (\n initial: IndexSignature<string[]>\n): [IndexSignature<string[]>, (name: string) => (value: string[]) => void] => {\n const [remotes, setRemote] = useState(initial)\n\n const updateRemote = (name: string) => (value: string[]) => {\n setRemote({\n ...remotes,\n [name]: value,\n })\n }\n\n return [remotes, updateRemote]\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { UserForm } from '../forms/users'\nimport { formatDate } from '../lib/utils'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { TagsWidget } from '../components/widgets/tags'\nimport { Icon } from '../components/ui/icon'\nimport { Button } from '../components/input/button'\nimport { useRemoteField } from '../hooks/useRemoteField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { useEffect, useRef, useState } from 'react'\nimport { GuillotinaUser, SearchItem } from '../types/guillotina'\nimport { getFilterInputValue, IndexSignature } from '../types/global'\n\nconst tabs = {\n Users: PanelItems,\n}\n\nexport function UsersToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef<HTMLInputElement>(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setLocation({ q: getFilterInputValue(event.currentTarget), page: 0 })\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (ref.current && (!searchText || searchText === '')) {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n name=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'User' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-user\" />\n <span>{intl.formatMessage(genericMessages.add_user)}</span>\n </button>\n </>\n )\n}\n\nexport function UsersCtx() {\n return (\n <TabsPanel tabs={tabs} currentTab=\"Users\" rightToolbar={<UsersToolbar />} />\n )\n}\n\ninterface State {\n roles: string[]\n groups: {\n value: string\n text: string\n }[]\n}\nexport function UserCtx() {\n const intl = useIntl()\n const { Ctx, patch, loading } = useCrudContext()\n\n const [state, setState] = useState<State>({ roles: [], groups: [] })\n\n const userDataContext = Ctx.context as GuillotinaUser\n const fields = {\n user_groups: [],\n user_roles: userDataContext.user_roles,\n }\n\n const [remotes, updateRemote] = useRemoteField(fields)\n\n useEffect(() => {\n async function getRolesAndGroups() {\n const [requestGetGroups, requestGetRoles] = await Promise.all([\n Ctx.client.search<SearchItem>(Ctx.path, { type_name: 'Group' }, true),\n Ctx.client.getRoles(Ctx.path),\n ])\n\n const groups = requestGetGroups\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = await requestGetRoles.json()\n }\n\n setState({\n roles: roles,\n groups: groups.items.map((item) => ({\n value: item.id,\n text: item['@name'],\n })),\n })\n }\n getRolesAndGroups()\n }, [])\n\n const updateObject = async (data: IndexSignature) => {\n Ctx.apply(data)\n const { isError, errorMessage } = await patch(data)\n if (isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage({\n id: 'user_updated',\n defaultMessage: 'User updated',\n }),\n 'primary'\n )\n Ctx.refresh()\n }\n }\n\n return (\n <div className=\"container\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-user\"></Icon>\n &nbsp;\n {intl.formatMessage({\n id: 'user',\n defaultMessage: 'User',\n })}\n </h2>\n\n <hr />\n <div className=\"columns\">\n <div className=\"column\">\n <div className=\"container user-props\">\n <p>\n <label>\n {intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n })}\n :{' '}\n </label>{' '}\n {userDataContext.username} ({userDataContext.email})\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'creation_date',\n defaultMessage: 'Creation Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(userDataContext.creation_date)}\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'modification_date',\n defaultMessage: 'Modification Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(userDataContext.modification_date)}\n </p>\n <Button\n className=\"is-size-7 is-info\"\n onClick={() => {\n Ctx.doAction('changePassword')\n }}\n >\n {intl.formatMessage({\n id: 'change_password',\n defaultMessage: 'Change Password',\n })}\n </Button>\n </div>\n <hr />\n <UserForm\n actionName=\"Save\"\n onSubmit={(ev) => updateObject(ev)}\n formData={userDataContext}\n exclude={['password']}\n remotes={remotes}\n submitButton={false}\n >\n <Button loading={loading} dataTest=\"formUserTestBtnSubmit\">\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </UserForm>\n </div>\n <div className=\"column\">\n <TagsWidget\n onChange={updateRemote('user_groups')}\n items={userDataContext.user_groups}\n title=\"Groups\"\n noData={intl.formatMessage({\n id: 'there_is_no_groups_for_this_user',\n defaultMessage: 'There is no groups for this user',\n })}\n available={state.groups}\n />\n <hr />\n <TagsWidget\n onChange={updateRemote('user_roles')}\n items={remotes.user_roles}\n title=\"Roles\"\n noData={intl.formatMessage({\n id: 'the_user_doesnt_have_any_role',\n defaultMessage: \"The user doesn't have any role\",\n })}\n available={state.roles.map((x) => ({ value: x, text: x }))}\n />\n </div>\n </div>\n </div>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { getNewId } from '../lib/utils'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\nimport { SearchItem } from '../types/guillotina'\n\nconst withError = (res: Response) => res.status >= 300\n\ninterface Props {\n items: Array<ItemModel<SearchItem | GuillotinaCommonObject>>\n}\nexport function CopyItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function copyItems(path: string, form: IndexSignature) {\n const responses = await Promise.all(\n items.map((item, i) => {\n const input = form[i + 1] || {}\n return Ctx.client.post(`${Ctx.path}${item.id}/@duplicate`, {\n destination: path,\n new_id: input.value || getNewId(item.id),\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be copied to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not copied correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items copied!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={Ctx.client.clearContainerFromPath(Ctx.path)}\n onConfirm={copyItems}\n onCancel={() => Ctx.cancelAction()}\n >\n {items.map((item) => (\n <Fragment key={item.id}>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item.id}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item.id}`}\n defaultValue={getNewId(item.id)}\n />\n </Fragment>\n ))}\n &nbsp;\n </PathTree>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { getNewId } from '../lib/utils'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function CopyItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext()\n const { item } = props\n\n async function copyItem(path: string, form: IndexSignature) {\n const input = form[1] || {}\n const { isError, errorMessage } = await post(\n {\n destination: path,\n new_id: input.value || getNewId(item['@name']),\n },\n '@duplicate'\n )\n\n if (!isError) {\n Ctx.flash(`Field copied!`, 'success')\n } else {\n Ctx.flash(`Failed to copy item!: ${errorMessage}`, 'danger')\n }\n Ctx.refresh()\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={`/${item['parent']['@name'] ?? '/'}`}\n onConfirm={copyItem}\n onCancel={() => Ctx.cancelAction()}\n >\n <Fragment>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item['@name']}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item['@name']}`}\n defaultValue={getNewId(item['@name'])}\n />\n </Fragment>\n </PathTree>\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { ItemModel } from '../models'\nimport { GuillotinaCommonObject } from '../types/guillotina'\nimport { SearchItem } from '../types/guillotina'\n\nconst withError = (res: Response) => res.status >= 300\n\ninterface Props {\n items: ItemModel<SearchItem | GuillotinaCommonObject>[]\n}\nexport function MoveItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function moveItems(path: string) {\n const responses = await Promise.all(\n items.map((item) => {\n return Ctx.client.post(`${Ctx.path}${item.id}/@move`, {\n destination: path,\n new_id: item.id,\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be moved to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not moved correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items moved!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItems}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function MoveItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext<{ '@url': string }>()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function moveItem(path: string) {\n const { isError, errorMessage, result } = await post(\n {\n destination: path,\n new_id: item['@name'],\n },\n '@move'\n )\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(result!['@url'])}/`,\n tab: '',\n })\n Ctx.flash(`Field moved!`, 'success')\n } else {\n Ctx.flash(`Failed to move item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItem}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { Confirm } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function RemoveItem(props: Props) {\n const Ctx = useTraversal()\n const { del, loading } = useCrudContext()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function removeItem() {\n const { isError, errorMessage } = await del()\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(item['parent']['@id'])}/`,\n tab: '',\n })\n Ctx.flash(`Field removed!`, 'success')\n } else {\n Ctx.flash(`Failed to delete item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItem}\n message={`Are you sure to remove: ${item['@name']}?`}\n />\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Input } from '../components/input/input'\nimport { Button } from '../components/input/button'\nimport { Form } from '../components/input/form'\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nconst initial = {\n pass1: '',\n pass2: '',\n}\n\nexport function ChangePassword() {\n const [state, setState] = useState(initial)\n const [perror, setPerror] = useState<string | undefined>(undefined)\n\n const Ctx = useTraversal()\n const { patch } = useCrudContext()\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit() {\n if (state.pass1 === '') {\n setPerror('provide a password')\n return\n }\n\n if (state.pass1 !== state.pass2) {\n setPerror(\"passwords doesn't match\")\n return\n }\n\n setPerror(undefined)\n\n const form = {\n password: state.pass1,\n }\n\n const { isError, errorMessage } = await patch(form)\n if (!isError) {\n Ctx.flash('Password Changed', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n const setPass = (field: string) => (val: string) => {\n const n: IndexSignature = {}\n n[field] = val\n setState((state) => ({ ...state, ...n }))\n setPerror(undefined)\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form onSubmit={doSubmit} title=\"Change Password\">\n {perror && (\n <div className=\"notification is-danger is-size-7\">\n <button className=\"delete\"></button>\n {perror}\n </div>\n )}\n <Input\n id=\"pass\"\n placeholder=\"New Password\"\n type=\"password\"\n value={state.pass1}\n onChange={setPass('pass1')}\n />\n\n <Input\n id=\"pass\"\n placeholder=\"Repeat Password\"\n type=\"password\"\n value={state.pass2}\n onChange={setPass('pass2')}\n />\n <Button>Change</Button>\n </Form>\n </Modal>\n )\n}\n","import { useState } from 'react'\nimport { Input } from '../components/input/input'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\nexport interface BaseFormProps {\n onSubmit: (data: { title: string; id: string }) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n type: string\n}\nexport function BaseForm({\n onSubmit,\n actionName,\n title,\n dataTest,\n loading,\n}: BaseFormProps) {\n const intl = useIntl()\n const [name, setName] = useState('')\n const [id, setId] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n const submit = () => {\n if (name === '') {\n setError(intl.formatMessage(genericMessages.field_is_required))\n return\n }\n onSubmit({ title: name, id })\n }\n\n const setTitle = (value: string) => {\n setId(stringToSlug(value))\n setName(value)\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n <Input\n id=\"title\"\n placeholder={intl.formatMessage(genericMessages.title)}\n required\n value={name}\n onChange={setTitle}\n autofocus\n error={error}\n dataTest=\"titleTestInput\"\n />\n\n <Input\n id=\"id\"\n placeholder=\"Id\"\n value={id}\n onChange={setId}\n dataTest=\"idTestInput\"\n />\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\nconst editableFields = [\n 'title',\n 'description',\n 'effective_date',\n 'expiration_date',\n]\n\ninterface Props {\n properties: { [key: string]: any }\n values: { [key: string]: any }\n}\n\nexport function IDublinCore({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'dublin_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values[key]}\n ns=\"guillotina.behaviors.dublincore.IDublinCore\"\n schema={properties[key]}\n modifyContent={modifyContent && editableFields.includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Icon } from '../components/ui/icon'\nimport { useEffect, useRef } from 'react'\nimport { useState } from 'react'\nimport { Select } from '../components/input/select'\nimport { SearchInput } from '../components/input/search_input'\nimport { Tag } from '../components/ui/tag'\nimport { parser } from '../lib/search'\nimport { EditableField } from '../components/fields/editableField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { getFilterInputValue } from '../types/global'\nimport { GuillotinaGroup } from '../types/guillotina'\nimport { processResponse } from '../lib/processResponse'\n\nconst tabs = {\n Groups: PanelItems,\n}\n\nexport function GroupToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef<HTMLInputElement>(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (event: React.FormEvent<HTMLFormElement>) => {\n event.preventDefault()\n setLocation({ q: getFilterInputValue(event.currentTarget), page: 0 })\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (ref.current && (!searchText || searchText === '')) {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n name=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'Group' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-users\" />\n <span>\n {intl.formatMessage({\n id: 'add_group',\n defaultMessage: 'Add Group',\n })}\n </span>\n </button>\n </>\n )\n}\n\nexport function GroupsCtx() {\n return (\n <TabsPanel\n tabs={tabs}\n currentTab=\"Groups\"\n rightToolbar={<GroupToolbar />}\n />\n )\n}\n\nconst sortParsed = parser(`_sort_asc=id`)\nconst searchParsed = parser('type_name=User')\n\nexport function GroupCtx() {\n const intl = useIntl()\n const { Ctx, patch } = useCrudContext()\n const [roles, setRoles] = useState<{ text: string; value: string }[]>([])\n const groupDataContext = Ctx.context as GuillotinaGroup\n\n useEffect(() => {\n async function getRoles() {\n const requestGetRoles = await Ctx.client.getRoles(Ctx.path)\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = (await requestGetRoles.json()).map((role: string) => ({\n text: role,\n value: role,\n }))\n }\n setRoles(roles)\n }\n getRoles()\n }, [])\n\n const handleResponse = async (\n isError: boolean,\n message: string,\n errorMessage: string\n ) => {\n if (!isError) {\n Ctx.flash(message, 'success')\n Ctx.refresh()\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n }\n\n const addRole = async (role: string) => {\n const { isError, errorMessage } = await patch({\n user_roles: groupDataContext.user_roles.concat(role),\n })\n handleResponse(\n !!isError,\n intl.formatMessage(\n {\n id: 'role_added_to_group',\n defaultMessage: 'Role {role} added to group',\n },\n { role }\n ),\n errorMessage ?? ''\n )\n }\n\n const removeRole = async (role: string) => {\n const { isError, errorMessage } = await patch({\n user_roles: groupDataContext.user_roles.filter((r) => r !== role),\n })\n handleResponse(\n !!isError,\n intl.formatMessage(\n {\n id: 'role_removed_from_group',\n defaultMessage: 'Role {role} removed from group',\n },\n { role }\n ),\n errorMessage ?? ''\n )\n }\n\n const addUser = async (newUserId: string) => {\n const data: { [key: string]: boolean } = {}\n groupDataContext.users.forEach((user) => {\n data[user] = true\n })\n data[newUserId] = true\n const response = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n const { isError, errorMessage } = await processResponse(response)\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_added_to_group',\n defaultMessage: 'User {user} added to group',\n },\n { user: newUserId }\n ),\n errorMessage ?? ''\n )\n }\n\n const removeUser = async (userToRemove: string) => {\n const data: { [key: string]: boolean } = {}\n groupDataContext.users.forEach((user: string) => {\n data[user] = userToRemove !== user\n })\n const response = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n const { isError, errorMessage } = await processResponse(response)\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_removed_from_group',\n defaultMessage: 'User {user} removed from group',\n },\n { user: userToRemove }\n ),\n errorMessage ?? ''\n )\n }\n\n return (\n <div className=\"container group-view\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-users\"></Icon>\n <span>\n &nbsp;\n {intl.formatMessage({\n id: 'group',\n defaultMessage: 'Group',\n })}\n </span>\n </h2>\n <hr />\n <div className=\"columns\">\n <div className=\"column is-4\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.title)}{' '}\n </label>\n <EditableField\n field=\"title\"\n modifyContent\n value={Ctx.context.title}\n />\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'roles',\n defaultMessage: 'Roles',\n })}\n </h3>\n <p>\n {intl.formatMessage({\n id: 'add_role',\n defaultMessage: 'Add a Role',\n })}\n </p>\n <Select\n options={roles.filter(\n (role) => !groupDataContext.user_roles.includes(role.value)\n )}\n appendDefault\n onChange={(value) => addRole(value as string)}\n />\n <hr />\n {groupDataContext.user_roles.map((urole) => (\n <p className=\"control\" key={`roles_${urole}`}>\n <Tag\n name={urole}\n onRemove={() => removeRole(urole)}\n size=\"is-small\"\n id={`roles_${urole}`}\n />\n </p>\n ))}\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'users',\n defaultMessage: 'Users',\n })}\n </h3>\n <p>{intl.formatMessage(genericMessages.add_user)}</p>\n <SearchInput\n path={`${Ctx.containerPath}/users/`}\n qs={[...searchParsed, ...sortParsed]}\n traversal={Ctx}\n onChange={addUser}\n btnClass=\"is-small\"\n />\n <hr />\n {groupDataContext.users.map((user) => (\n <p className=\"control\" key={`user_${user}`}>\n <Tag\n name={user}\n onRemove={() => removeUser(user)}\n size=\"is-small\"\n id={`user_${user}`}\n />\n </p>\n ))}\n </div>\n </div>\n </div>\n )\n}\n","import { Component, ErrorInfo } from 'react'\nimport { IntlShape, useIntl } from 'react-intl'\n\nconst style = { color: '#F44336', fontSize: 20, paddingBottom: 20 }\n\nclass ErrorBoundaryComponent extends Component<\n { intl: IntlShape; children: React.ReactNode },\n { hasError: boolean; errorMsg: string; errorStack: string | null | undefined }\n> {\n state = {\n hasError: false,\n errorMsg: '',\n errorStack: '',\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n this.setState({\n hasError: true,\n errorMsg: error.message,\n errorStack: errorInfo.componentStack,\n })\n }\n\n render() {\n const { hasError, errorMsg, errorStack } = this.state\n\n if (hasError) {\n return (\n <div className=\"box main-panel\">\n <div style={style}>\n {this.props.intl.formatMessage({\n id: 'something_went_wrong',\n defaultMessage: 'Something went wrong.',\n })}\n </div>\n {errorMsg && (\n <p>\n <b>{errorMsg}</b>\n </p>\n )}\n {errorStack && <p>{errorStack}</p>}\n </div>\n )\n }\n\n return this.props.children\n }\n}\n\nexport function ErrorBoundary({ children }: { children: React.ReactNode }) {\n const intl = useIntl()\n\n return <ErrorBoundaryComponent intl={intl}>{children}</ErrorBoundaryComponent>\n}\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotAllowed() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-danger\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-ban\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_allowed',\n defaultMessage: 'Not Allowed',\n })}\n </h1>\n </div>\n )\n}\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotFound() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-grey\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-dizzy\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_found',\n defaultMessage: '404. Not Found',\n })}\n </h1>\n </div>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { useLocation } from '../hooks/useLocation'\n\nexport function Path() {\n const ctx = useTraversal()\n const [, navigate] = useLocation()\n\n const segments = ctx.path.replace(/\\/$/, '').split('/')\n const links = buildPaths(segments)\n\n if (segments.length === 1) {\n return null\n }\n\n return (\n <nav className=\"breadcrumb\" aria-label=\"breadcrumbs\">\n <ul>\n {segments.map((item, indx) => {\n const path = links[indx]\n const onClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (e.ctrlKey || e.metaKey) return\n e.preventDefault()\n navigate({ path }, true)\n }\n\n return indx === 0 ? (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-home`}\n >\n <span className=\"icon\">\n <i className=\"fas fa-home\"></i>\n </span>\n </a>\n </li>\n ) : (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-${item.toLowerCase()}`}\n >\n {item}\n </a>\n </li>\n )\n })}\n </ul>\n </nav>\n )\n}\n\nconst buildPaths = (segments: string[]) => {\n let current = ''\n const results: string[] = []\n segments.map((item, indx) => {\n if (indx === 0) {\n current += '/'\n } else {\n current += item + '/'\n }\n results.push(current)\n return item\n })\n return results\n}\n","import { FolderCtx } from '../views/folder'\nimport { ItemCtx } from '../views/item'\nimport { ApplicationCtx } from '../views/application'\nimport { DatabaseCtx } from '../views/application'\nimport { ContainerCtx } from '../views/container'\nimport { UsersCtx } from '../views/users'\nimport { UserCtx } from '../views/users'\nimport { CopyItems } from '../actions/copy_items'\nimport { CopyItem } from '../actions/copy_item'\nimport { MoveItems } from '../actions/move_items'\nimport { MoveItem } from '../actions/move_item'\nimport { RemoveItems } from '../actions/remove_items'\nimport { RemoveItem } from '../actions/remove_item'\nimport { AddItem } from '../actions/add_item'\nimport { ChangePassword } from '../actions/change_pass'\nimport { BaseForm, BaseFormProps } from '../forms/base'\nimport { UserForm } from '../forms/users'\nimport { IAttachment } from '../components/behaviors/iattachment'\nimport { IDublinCore } from '../components/behaviors/idublincore'\nimport { IMultiAttachment } from '../components/behaviors/imultiattachment'\nimport { IImageAttachment } from '../components/behaviors/iimageattachment'\nimport { IMultiImageAttachment } from '../components/behaviors/imultiimageattachment'\nimport { IMultiImageOrderedAttachment } from '../components/behaviors/imultiimageorderedattachment'\nimport { IWorkflow } from '../components/behaviors/iworkflow'\nimport { GroupCtx, GroupsCtx } from '../views/groups'\nimport { ErrorBoundary } from '../components/error_boundary'\nimport React from 'react'\nimport { NotAllowed } from '../components/notallowed'\nimport { NotFound } from '../components/notfound'\nimport { Path } from '../components/path'\nimport { EditComponent } from '../components/fields/editComponent'\nimport { RenderFieldComponent } from '../components/fields/renderField'\nimport {\n GuillotinaCommonObject,\n ItemColumn,\n RegistrySchema,\n SearchOrCommonObject,\n} from '../types/guillotina'\nimport { buildQs, parser } from '../lib/search'\nimport { MessageDescriptor } from 'react-intl'\nimport { getActionsObject } from '../lib/helpers'\nimport { Traversal } from '../contexts'\n\nexport interface RegistrySortValue {\n direction: 'asc' | 'des'\n key: string\n}\nexport interface RegistryProperties {\n Buttons: React.ReactElement<{ Ctx?: Traversal }>\n Panels: React.ReactElement<{ Ctx?: Traversal }>\n default: string[]\n ignoreField: string[]\n}\nexport interface IRegistry {\n paths: {\n [key: string]: React.FC\n }\n views: {\n [key: string]: React.ComponentType<any>\n }\n actions: {\n [key: string]: (props: any) => React.ReactElement\n }\n forms: {\n [key: string]: (props: any) => React.ReactElement\n }\n behaviors: {\n [key: string]: (props: any | undefined) => React.ReactElement | null\n }\n itemsColumn: {\n [key: string]: <\n T extends SearchOrCommonObject = SearchOrCommonObject,\n >() => ItemColumn<T>[]\n }\n schemas: {\n [key: string]: RegistrySchema\n }\n properties: {\n [key: string]: RegistryProperties\n }\n components: {\n [key: string]: (props: any) => React.ReactNode | null | undefined\n }\n searchEngineQueryParamsFunction: {\n [key: string]: string\n }\n fieldsToFilter: {\n [key: string]: string[]\n }\n parseSearchQueryParamFunction: {\n [key: string]: (query: string, type: string) => string\n }\n defaultSortValue: {\n [key: string]: RegistrySortValue\n }\n actionsList: {\n [key: string]: (multiple: boolean) => {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n }\n }\n}\n\nconst registry: IRegistry = {\n paths: {},\n views: {\n ErrorBoundary: ErrorBoundary,\n NotAllowed: NotAllowed,\n NotFound: NotFound,\n Application: ApplicationCtx,\n Database: DatabaseCtx,\n Container: ContainerCtx,\n UserManager: UsersCtx,\n User: UserCtx,\n Group: GroupCtx,\n GroupManager: GroupsCtx,\n Folder: FolderCtx,\n Item: ItemCtx,\n },\n actions: {\n addItem: AddItem,\n copyItems: CopyItems,\n copyItem: CopyItem,\n moveItems: MoveItems,\n moveItem: MoveItem,\n removeItems: RemoveItems,\n changePassword: ChangePassword,\n removeItem: RemoveItem,\n },\n forms: {\n UserManager: BaseForm,\n GroupManager: BaseForm,\n Folder: BaseForm,\n Item: BaseForm,\n User: UserForm,\n Group: BaseForm,\n },\n behaviors: {\n 'guillotina.behaviors.dublincore.IDublinCore': IDublinCore,\n 'guillotina.behaviors.attachment.IAttachment': IAttachment,\n 'guillotina.behaviors.attachment.IMultiAttachment': IMultiAttachment,\n 'guillotina.contrib.image.behaviors.IImageAttachment': IImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment':\n IMultiImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment':\n IMultiImageOrderedAttachment,\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior': IWorkflow,\n },\n itemsColumn: {},\n schemas: {},\n properties: {},\n components: {\n Path: Path,\n EditComponent: EditComponent,\n RenderFieldComponent: RenderFieldComponent,\n },\n searchEngineQueryParamsFunction: {\n PostreSQL: 'getQueryParamsPostresql',\n Elasticsearch: 'getQueryParamsElasticsearch',\n },\n fieldsToFilter: {\n UserManager: ['id', 'email', 'user_name'],\n },\n parseSearchQueryParamFunction: {},\n defaultSortValue: {},\n actionsList: {},\n}\n\nexport interface IManageRegistry {\n registry: IRegistry\n getPathComponent: (\n context: GuillotinaCommonObject | undefined,\n path: string,\n fallback?: React.FC\n ) => React.ComponentType<any>\n getComponent: (name: string) => React.ComponentType<any>\n getView: (name: string) => React.ComponentType<any>\n getForm: (type: string, fallback?: React.FC) => React.FC<BaseFormProps>\n getAction: (type: string, fallback?: React.FC) => React.FC\n getBehavior: (type: string, fallback?: React.FC) => React.FC<any>\n getProperties: (type: string) => RegistryProperties\n getItemsColumn: <T extends SearchOrCommonObject = SearchOrCommonObject>(\n type: string\n ) => ItemColumn<T>[] | undefined\n getSchemas: (type: string) => RegistrySchema\n getFieldsToFilter: (type: string, fallback?: string[]) => string[]\n getParsedSearchQueryParam: (query: string, type: string) => string\n getDefaultSortValue: (\n type: string,\n fallback?: RegistrySortValue\n ) => RegistrySortValue\n getSearchEngineQueryParamsFunction: (type: string) => string\n getActionsList: (\n type: string,\n multiple: boolean\n ) => {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n }\n}\n\nconst getPathComponent = (\n context: GuillotinaCommonObject | undefined,\n path: string,\n fallback: React.FC | undefined = undefined\n) => {\n if (!context) return () => null\n // console.log(\"Component for path\", path)\n // lookup by path\n if (registry.paths[path]) {\n return registry.paths[path]\n }\n // by type\n if (registry.views[context['@type']]) {\n return registry.views[context['@type']]\n }\n if (fallback) {\n return fallback\n }\n return defaultComponent(context)\n}\n\nconst getItemsColumn = (type: string) => {\n const funcCols = registry.itemsColumn[type]\n if (funcCols) {\n return funcCols()\n }\n return undefined\n}\n\nconst getComponent = (name: string) => {\n return registry.components[name]\n}\n\nconst getView = (name: string) => {\n return registry.views[name]\n}\n\nconst getForm = (type: string, fallback?: React.FC<BaseFormProps>) => {\n return registry.forms[type] || fallback || BaseForm\n}\n\nconst getAction = (type: string, fallback?: React.FC) => {\n return registry.actions[type] || fallback\n}\n\nconst getBehavior = (type: string, fallback?: React.FC) => {\n return registry.behaviors[type] || fallback\n}\n\nconst getProperties = (type: string) => {\n return registry.properties[type] || {}\n}\n\nconst getSchemas = (type: string): RegistrySchema => {\n return registry.schemas[type] || {}\n}\n\nconst getFieldsToFilter = (type: string, fallback: string[] = ['title']) => {\n return registry.fieldsToFilter[type] || fallback\n}\n\nconst getDefaultSortValue = (\n type: string,\n fallback: RegistrySortValue | undefined = {\n key: 'id',\n direction: 'des',\n }\n) => {\n return registry.defaultSortValue[type] || fallback\n}\n\nconst getSearchEngineQueryParamsFunction = (type: string) => {\n return registry.searchEngineQueryParamsFunction[type]\n}\n\nconst getParsedSearchQueryParam = (query: string, type: string) => {\n const parsedFunction = registry.parseSearchQueryParamFunction[type]\n if (!parsedFunction) {\n const fieldsToFilter = getFieldsToFilter(type)\n return buildQs(parser(query, fieldsToFilter))\n }\n return parsedFunction(query, type)\n}\n\nconst getActionsList = (\n type: string,\n multiple: boolean\n): {\n [key: string]: {\n text: MessageDescriptor\n perms: string[]\n action: string\n }\n} => {\n const funcActionsList = registry.actionsList[type]\n if (funcActionsList) {\n return funcActionsList(multiple)\n }\n return getActionsObject(multiple)\n}\n\nexport const defaultComponent = (context: GuillotinaCommonObject) => {\n return context.is_folderish ? FolderCtx : ItemCtx\n}\n\nexport function useRegistry(data: Partial<IRegistry>): IManageRegistry {\n // if data is provided we need to merge it into actual registry\n const ref = React.useRef<unknown>(undefined)\n if (data && !ref.current) {\n ref.current = true\n Object.keys(data).map((key) => {\n const registryKey = key as keyof IRegistry\n registry[registryKey] = {\n ...registry[registryKey],\n ...data[registryKey],\n } as any\n })\n }\n\n return {\n registry,\n getForm,\n getComponent,\n getPathComponent,\n getAction,\n getBehavior,\n getProperties,\n getItemsColumn,\n getFieldsToFilter,\n getParsedSearchQueryParam,\n getDefaultSortValue,\n getSchemas,\n getView,\n getSearchEngineQueryParamsFunction,\n getActionsList,\n }\n}\n\n/*\n\nconst registry = {\n paths: {\n \"/db/guillotina/tags/\": TagsContext\n },\n forms: {\n Tag: AddTagForm\n }\n}\n\n\n<guillotina registry={registry} />\n\n\n*/\n","{\n \"actions\": [\n {\n \"type\": 0,\n \"value\": \"Accions:\"\n }\n ],\n \"add\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix\"\n }\n ],\n \"add_container\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix un Contenidor\"\n }\n ],\n \"add_group\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix un Grup\"\n }\n ],\n \"add_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix Permisos\"\n }\n ],\n \"add_role\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix un Rol\"\n }\n ],\n \"add_type\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix \"\n },\n {\n \"type\": 1,\n \"value\": \"type\"\n }\n ],\n \"add_user\": [\n {\n \"type\": 0,\n \"value\": \"Afegeix un Usuari\"\n }\n ],\n \"allow\": [\n {\n \"type\": 0,\n \"value\": \"Permet\"\n }\n ],\n \"allow_single\": [\n {\n \"type\": 0,\n \"value\": \"Permet Únic\"\n }\n ],\n \"available\": [\n {\n \"type\": 0,\n \"value\": \"Disponible\"\n }\n ],\n \"available_addons\": [\n {\n \"type\": 0,\n \"value\": \"Addons Disponibles\"\n }\n ],\n \"behaviors\": [\n {\n \"type\": 0,\n \"value\": \"Comportaments\"\n }\n ],\n \"can_not_delete_field\": [\n {\n \"type\": 0,\n \"value\": \"No pots eliminar el \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \"!\"\n }\n ],\n \"cancel\": [\n {\n \"type\": 0,\n \"value\": \"Cancel·la\"\n }\n ],\n \"change_password\": [\n {\n \"type\": 0,\n \"value\": \"Canvia la Contrasenya\"\n }\n ],\n \"choose\": [\n {\n \"type\": 0,\n \"value\": \"Trieu...\"\n }\n ],\n \"choose_action\": [\n {\n \"type\": 0,\n \"value\": \"Trieu una acció...\"\n }\n ],\n \"choose_file\": [\n {\n \"type\": 0,\n \"value\": \"Tria un arxiu\"\n }\n ],\n \"confirm\": [\n {\n \"type\": 0,\n \"value\": \"Confirma\"\n }\n ],\n \"confirm_message\": [\n {\n \"type\": 0,\n \"value\": \"Estàs segur de canviar l'estat: \"\n },\n {\n \"type\": 1,\n \"value\": \"title\"\n },\n {\n \"type\": 0,\n \"value\": \"?\"\n }\n ],\n \"confirm_message_delete_file\": [\n {\n \"type\": 0,\n \"value\": \"Estàs segur de eliminar: \"\n },\n {\n \"type\": 1,\n \"value\": \"fileKeyToDelete\"\n },\n {\n \"type\": 0,\n \"value\": \"?\"\n }\n ],\n \"confirm_message_delete_image\": [\n {\n \"type\": 0,\n \"value\": \"Estàs segur d'eliminar la imatge?\"\n }\n ],\n \"container_created\": [\n {\n \"type\": 0,\n \"value\": \"Contenidor Creat\"\n }\n ],\n \"copy_to\": [\n {\n \"type\": 0,\n \"value\": \"Copia a...\"\n }\n ],\n \"create\": [\n {\n \"type\": 0,\n \"value\": \"Crea\"\n }\n ],\n \"creation_date\": [\n {\n \"type\": 0,\n \"value\": \"Data de Creació\"\n }\n ],\n \"current_state\": [\n {\n \"type\": 0,\n \"value\": \"Estat actual: \"\n },\n {\n \"type\": 1,\n \"value\": \"state\"\n }\n ],\n \"databases\": [\n {\n \"type\": 0,\n \"value\": \"Bases de Dades\"\n }\n ],\n \"default_value_editable_field\": [\n {\n \"type\": 0,\n \"value\": \"Clica per editar\"\n }\n ],\n \"delete\": [\n {\n \"type\": 0,\n \"value\": \"Elimina\"\n }\n ],\n \"deny\": [\n {\n \"type\": 0,\n \"value\": \"Denega\"\n }\n ],\n \"disable\": [\n {\n \"type\": 0,\n \"value\": \"Desactiva\"\n }\n ],\n \"download\": [\n {\n \"type\": 0,\n \"value\": \"Descarrega\"\n }\n ],\n \"email\": [\n {\n \"type\": 0,\n \"value\": \"Correu Electrònic\"\n }\n ],\n \"enable\": [\n {\n \"type\": 0,\n \"value\": \"Activa\"\n }\n ],\n \"enabled\": [\n {\n \"type\": 0,\n \"value\": \"Activat\"\n }\n ],\n \"error_file_key_name\": [\n {\n \"type\": 0,\n \"value\": \"Proporciona un arxiu i un nom de clau\"\n }\n ],\n \"error_in_field\": [\n {\n \"type\": 0,\n \"value\": \"Error en el camp \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \"!\"\n }\n ],\n \"error_provide_key_name\": [\n {\n \"type\": 0,\n \"value\": \"Proporciona un nom de clau\"\n }\n ],\n \"error_upload_file\": [\n {\n \"type\": 0,\n \"value\": \"Error en pujar l'arxiu\"\n }\n ],\n \"error_upload_file_size\": [\n {\n \"type\": 0,\n \"value\": \"Error en pujar l'arxiu \"\n },\n {\n \"type\": 1,\n \"value\": \"size\"\n }\n ],\n \"failed_delete_file\": [\n {\n \"type\": 0,\n \"value\": \"Error en eliminar l'arxiu\"\n }\n ],\n \"failed_to_sort_images\": [\n {\n \"type\": 0,\n \"value\": \"Error en ordenar les imatges\"\n }\n ],\n \"failed_to_update\": [\n {\n \"type\": 0,\n \"value\": \"Error en actualitzar: \"\n },\n {\n \"type\": 1,\n \"value\": \"error\"\n }\n ],\n \"field_deleted\": [\n {\n \"type\": 0,\n \"value\": \"Camp \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \", eliminat!\"\n }\n ],\n \"field_is_required\": [\n {\n \"type\": 0,\n \"value\": \"Aquest camp és obligatori\"\n }\n ],\n \"field_updated\": [\n {\n \"type\": 0,\n \"value\": \"Camp \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \", actualitzat!\"\n }\n ],\n \"file_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"Arxiu pujat!\"\n }\n ],\n \"group\": [\n {\n \"type\": 0,\n \"value\": \"Grup\"\n }\n ],\n \"image\": [\n {\n \"type\": 0,\n \"value\": \"Imatge\"\n }\n ],\n \"image_deleted\": [\n {\n \"type\": 0,\n \"value\": \"Imatge eliminada!\"\n }\n ],\n \"image_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"Imatge pujada!\"\n }\n ],\n \"images_sorted\": [\n {\n \"type\": 0,\n \"value\": \"Imatges ordenades\"\n }\n ],\n \"install\": [\n {\n \"type\": 0,\n \"value\": \"Instal·la\"\n }\n ],\n \"installed_addons\": [\n {\n \"type\": 0,\n \"value\": \"Addons Instal·lats\"\n }\n ],\n \"invalid_email\": [\n {\n \"type\": 0,\n \"value\": \"Correu electrònic no vàlid\"\n }\n ],\n \"invalid_form\": [\n {\n \"type\": 0,\n \"value\": \"Formulari no vàlid\"\n }\n ],\n \"invalid_form_data\": [\n {\n \"type\": 0,\n \"value\": \"Dades del formulari no vàlides\"\n }\n ],\n \"load_more\": [\n {\n \"type\": 0,\n \"value\": \"Carrega més\"\n }\n ],\n \"loading\": [\n {\n \"type\": 0,\n \"value\": \"Carregant\"\n }\n ],\n \"mandatory_field\": [\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \" és obligatori!\"\n }\n ],\n \"modification_date\": [\n {\n \"type\": 0,\n \"value\": \"Data de Modificació\"\n }\n ],\n \"move_to\": [\n {\n \"type\": 0,\n \"value\": \"Mou a...\"\n }\n ],\n \"name\": [\n {\n \"type\": 0,\n \"value\": \"Nom\"\n }\n ],\n \"no_available_addons_container\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha Addons disponibles en aquest contenidor\"\n }\n ],\n \"no_files_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha arxius pujats\"\n }\n ],\n \"no_images_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha imatges pujades\"\n }\n ],\n \"no_principal_permissions\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha permisos pels usuaris definits\"\n }\n ],\n \"no_principal_roles\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha rols pels usuaris definits\"\n }\n ],\n \"no_results\": [\n {\n \"type\": 0,\n \"value\": \"Sense resultats\"\n }\n ],\n \"no_role_permissions\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha permisos de rol definits\"\n }\n ],\n \"not_allowed\": [\n {\n \"type\": 0,\n \"value\": \"No Permès\"\n }\n ],\n \"not_found\": [\n {\n \"type\": 0,\n \"value\": \"404. No Trobat\"\n }\n ],\n \"not_implemented\": [\n {\n \"type\": 0,\n \"value\": \"No implementat\"\n }\n ],\n \"open\": [\n {\n \"type\": 0,\n \"value\": \"Obre\"\n }\n ],\n \"operation\": [\n {\n \"type\": 0,\n \"value\": \"Operació\"\n }\n ],\n \"pagination\": [\n {\n \"type\": 1,\n \"value\": \"currentPage\"\n },\n {\n \"type\": 0,\n \"value\": \" / \"\n },\n {\n \"type\": 1,\n \"value\": \"totalPages\"\n },\n {\n \"type\": 0,\n \"value\": \" de \"\n },\n {\n \"type\": 1,\n \"value\": \"totalItems\"\n },\n {\n \"type\": 0,\n \"value\": \" elements\"\n }\n ],\n \"password\": [\n {\n \"type\": 0,\n \"value\": \"Contrasenya\"\n }\n ],\n \"permission\": [\n {\n \"type\": 0,\n \"value\": \"Permís\"\n }\n ],\n \"press_enter_to_add_value\": [\n {\n \"type\": 0,\n \"value\": \"Prem enter per afegir un valor\"\n }\n ],\n \"principal_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Permisos - Usuaris\"\n }\n ],\n \"principal_roles\": [\n {\n \"type\": 0,\n \"value\": \"Rols - Usuaris\"\n }\n ],\n \"property\": [\n {\n \"type\": 0,\n \"value\": \"Propietat\"\n }\n ],\n \"remove\": [\n {\n \"type\": 0,\n \"value\": \"Elimina\"\n }\n ],\n \"role\": [\n {\n \"type\": 0,\n \"value\": \"Rol\"\n }\n ],\n \"role_added_to_group\": [\n {\n \"type\": 0,\n \"value\": \"Rol \"\n },\n {\n \"type\": 1,\n \"value\": \"role\"\n },\n {\n \"type\": 0,\n \"value\": \" afegit al grup\"\n }\n ],\n \"role_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Permisos del Rol\"\n }\n ],\n \"role_removed_from_group\": [\n {\n \"type\": 0,\n \"value\": \"Rol \"\n },\n {\n \"type\": 1,\n \"value\": \"role\"\n },\n {\n \"type\": 0,\n \"value\": \" eliminat del grup\"\n }\n ],\n \"roles\": [\n {\n \"type\": 0,\n \"value\": \"Rols\"\n }\n ],\n \"save\": [\n {\n \"type\": 0,\n \"value\": \"Desa\"\n }\n ],\n \"search\": [\n {\n \"type\": 0,\n \"value\": \"Cerca\"\n }\n ],\n \"select_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Selecciona els permisos\"\n }\n ],\n \"select_principal\": [\n {\n \"type\": 0,\n \"value\": \"Selecciona un Usuari\"\n }\n ],\n \"select_role\": [\n {\n \"type\": 0,\n \"value\": \"Selecciona un Rol\"\n }\n ],\n \"select_type\": [\n {\n \"type\": 0,\n \"value\": \"Selecciona un tipus:\"\n }\n ],\n \"setting\": [\n {\n \"type\": 0,\n \"value\": \"Configuració\"\n }\n ],\n \"something_went_wrong\": [\n {\n \"type\": 0,\n \"value\": \"Alguna cosa ha anat malament.\"\n }\n ],\n \"static\": [\n {\n \"type\": 0,\n \"value\": \"Estàtic\"\n }\n ],\n \"status_changed_error\": [\n {\n \"type\": 0,\n \"value\": \"Error en canvi de l'estat!: \"\n },\n {\n \"type\": 1,\n \"value\": \"error\"\n }\n ],\n \"status_changed_ok\": [\n {\n \"type\": 0,\n \"value\": \"Genial, l'estat ha canviat!\"\n }\n ],\n \"the_user_doesnt_have_any_role\": [\n {\n \"type\": 0,\n \"value\": \"L'usuari no té cap rol\"\n }\n ],\n \"there_is_no_groups_for_this_user\": [\n {\n \"type\": 0,\n \"value\": \"No hi ha grups per aquest usuari\"\n }\n ],\n \"title\": [\n {\n \"type\": 0,\n \"value\": \"Títol\"\n }\n ],\n \"unset\": [\n {\n \"type\": 0,\n \"value\": \"Desestableix\"\n }\n ],\n \"upload\": [\n {\n \"type\": 0,\n \"value\": \"Puja\"\n }\n ],\n \"upload_a_file\": [\n {\n \"type\": 0,\n \"value\": \"Puja un arxiu\"\n }\n ],\n \"upload_an_image\": [\n {\n \"type\": 0,\n \"value\": \"Puja una imatge\"\n }\n ],\n \"user\": [\n {\n \"type\": 0,\n \"value\": \"Usuari\"\n }\n ],\n \"user_added_to_group\": [\n {\n \"type\": 0,\n \"value\": \"Usuari \"\n },\n {\n \"type\": 1,\n \"value\": \"user\"\n },\n {\n \"type\": 0,\n \"value\": \" afegit al grup\"\n }\n ],\n \"user_removed_from_group\": [\n {\n \"type\": 0,\n \"value\": \"Usuari \"\n },\n {\n \"type\": 1,\n \"value\": \"user\"\n },\n {\n \"type\": 0,\n \"value\": \" eliminat del grup\"\n }\n ],\n \"user_updated\": [\n {\n \"type\": 0,\n \"value\": \"Usuari actualitzat\"\n }\n ],\n \"username\": [\n {\n \"type\": 0,\n \"value\": \"Nom d'usuari\"\n }\n ],\n \"users\": [\n {\n \"type\": 0,\n \"value\": \"Usuaris\"\n }\n ],\n \"value\": [\n {\n \"type\": 0,\n \"value\": \"Valor\"\n }\n ]\n}","{\n \"actions\": [\n {\n \"type\": 0,\n \"value\": \"Acciones:\"\n }\n ],\n \"add\": [\n {\n \"type\": 0,\n \"value\": \"Añadir\"\n }\n ],\n \"add_container\": [\n {\n \"type\": 0,\n \"value\": \"Añadir Contenedor\"\n }\n ],\n \"add_group\": [\n {\n \"type\": 0,\n \"value\": \"Añadir Grupo\"\n }\n ],\n \"add_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Añadir Permisos\"\n }\n ],\n \"add_role\": [\n {\n \"type\": 0,\n \"value\": \"Añadir un Rol\"\n }\n ],\n \"add_type\": [\n {\n \"type\": 0,\n \"value\": \"Añadir \"\n },\n {\n \"type\": 1,\n \"value\": \"type\"\n }\n ],\n \"add_user\": [\n {\n \"type\": 0,\n \"value\": \"Añadir un Usuario\"\n }\n ],\n \"allow\": [\n {\n \"type\": 0,\n \"value\": \"Permitir\"\n }\n ],\n \"allow_single\": [\n {\n \"type\": 0,\n \"value\": \"Permitir Único\"\n }\n ],\n \"available\": [\n {\n \"type\": 0,\n \"value\": \"Disponible\"\n }\n ],\n \"available_addons\": [\n {\n \"type\": 0,\n \"value\": \"Complementos Disponibles\"\n }\n ],\n \"behaviors\": [\n {\n \"type\": 0,\n \"value\": \"Comportamientos\"\n }\n ],\n \"can_not_delete_field\": [\n {\n \"type\": 0,\n \"value\": \"¡No puedes eliminar \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \"!\"\n }\n ],\n \"cancel\": [\n {\n \"type\": 0,\n \"value\": \"Cancelar\"\n }\n ],\n \"change_password\": [\n {\n \"type\": 0,\n \"value\": \"Cambiar Contraseña\"\n }\n ],\n \"choose\": [\n {\n \"type\": 0,\n \"value\": \"Elegir...\"\n }\n ],\n \"choose_action\": [\n {\n \"type\": 0,\n \"value\": \"Elegir acción...\"\n }\n ],\n \"choose_file\": [\n {\n \"type\": 0,\n \"value\": \"Elegir un archivo\"\n }\n ],\n \"confirm\": [\n {\n \"type\": 0,\n \"value\": \"Confirmar\"\n }\n ],\n \"confirm_message\": [\n {\n \"type\": 0,\n \"value\": \"¿Estás seguro de cambiar el estado: \"\n },\n {\n \"type\": 1,\n \"value\": \"title\"\n },\n {\n \"type\": 0,\n \"value\": \"?\"\n }\n ],\n \"confirm_message_delete_file\": [\n {\n \"type\": 0,\n \"value\": \"¿Estás seguro de eliminar: \"\n },\n {\n \"type\": 1,\n \"value\": \"fileKeyToDelete\"\n },\n {\n \"type\": 0,\n \"value\": \"?\"\n }\n ],\n \"confirm_message_delete_image\": [\n {\n \"type\": 0,\n \"value\": \"¿Estás seguro de eliminar la imagen?\"\n }\n ],\n \"container_created\": [\n {\n \"type\": 0,\n \"value\": \"Contenedor Creado\"\n }\n ],\n \"copy_to\": [\n {\n \"type\": 0,\n \"value\": \"Copiar a...\"\n }\n ],\n \"create\": [\n {\n \"type\": 0,\n \"value\": \"Crear\"\n }\n ],\n \"creation_date\": [\n {\n \"type\": 0,\n \"value\": \"Fecha de Creación\"\n }\n ],\n \"current_state\": [\n {\n \"type\": 0,\n \"value\": \"Estado actual: \"\n },\n {\n \"type\": 1,\n \"value\": \"state\"\n }\n ],\n \"databases\": [\n {\n \"type\": 0,\n \"value\": \"Bases de Datos\"\n }\n ],\n \"default_value_editable_field\": [\n {\n \"type\": 0,\n \"value\": \"Haz clic para editar\"\n }\n ],\n \"delete\": [\n {\n \"type\": 0,\n \"value\": \"Eliminar\"\n }\n ],\n \"deny\": [\n {\n \"type\": 0,\n \"value\": \"Denegar\"\n }\n ],\n \"disable\": [\n {\n \"type\": 0,\n \"value\": \"Deshabilitar\"\n }\n ],\n \"download\": [\n {\n \"type\": 0,\n \"value\": \"Descargar\"\n }\n ],\n \"email\": [\n {\n \"type\": 0,\n \"value\": \"Correo Electrónico\"\n }\n ],\n \"enable\": [\n {\n \"type\": 0,\n \"value\": \"Habilitar\"\n }\n ],\n \"enabled\": [\n {\n \"type\": 0,\n \"value\": \"Habilitado\"\n }\n ],\n \"error_file_key_name\": [\n {\n \"type\": 0,\n \"value\": \"Proporcione un archivo y un nombre de clave\"\n }\n ],\n \"error_in_field\": [\n {\n \"type\": 0,\n \"value\": \"Error en el campo \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \"!\"\n }\n ],\n \"error_provide_key_name\": [\n {\n \"type\": 0,\n \"value\": \"Proporcione un nombre de clave\"\n }\n ],\n \"error_upload_file\": [\n {\n \"type\": 0,\n \"value\": \"Error al subir archivo\"\n }\n ],\n \"error_upload_file_size\": [\n {\n \"type\": 0,\n \"value\": \"Error al subir archivo \"\n },\n {\n \"type\": 1,\n \"value\": \"size\"\n }\n ],\n \"failed_delete_file\": [\n {\n \"type\": 0,\n \"value\": \"Error al eliminar archivo\"\n }\n ],\n \"failed_to_sort_images\": [\n {\n \"type\": 0,\n \"value\": \"Error al ordenar imágenes\"\n }\n ],\n \"failed_to_update\": [\n {\n \"type\": 0,\n \"value\": \"Error al actualizar: \"\n },\n {\n \"type\": 1,\n \"value\": \"error\"\n }\n ],\n \"field_deleted\": [\n {\n \"type\": 0,\n \"value\": \"Campo \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \", eliminado!\"\n }\n ],\n \"field_is_required\": [\n {\n \"type\": 0,\n \"value\": \"Este campo es obligatorio\"\n }\n ],\n \"field_updated\": [\n {\n \"type\": 0,\n \"value\": \"Campo \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \", actualizado!\"\n }\n ],\n \"file_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"Archivo subido!\"\n }\n ],\n \"group\": [\n {\n \"type\": 0,\n \"value\": \"Grupo\"\n }\n ],\n \"image\": [\n {\n \"type\": 0,\n \"value\": \"Imagen\"\n }\n ],\n \"image_deleted\": [\n {\n \"type\": 0,\n \"value\": \"Imagen eliminada!\"\n }\n ],\n \"image_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"Imagen subida!\"\n }\n ],\n \"images_sorted\": [\n {\n \"type\": 0,\n \"value\": \"Imágenes ordenadas\"\n }\n ],\n \"install\": [\n {\n \"type\": 0,\n \"value\": \"Instalar\"\n }\n ],\n \"installed_addons\": [\n {\n \"type\": 0,\n \"value\": \"Complementos Instalados\"\n }\n ],\n \"invalid_email\": [\n {\n \"type\": 0,\n \"value\": \"Correo electrónico inválido\"\n }\n ],\n \"invalid_form\": [\n {\n \"type\": 0,\n \"value\": \"Formulario inválido\"\n }\n ],\n \"invalid_form_data\": [\n {\n \"type\": 0,\n \"value\": \"Datos de formulario inválidos\"\n }\n ],\n \"load_more\": [\n {\n \"type\": 0,\n \"value\": \"Cargar más\"\n }\n ],\n \"loading\": [\n {\n \"type\": 0,\n \"value\": \"Cargando\"\n }\n ],\n \"mandatory_field\": [\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \" es obligatorio!\"\n }\n ],\n \"modification_date\": [\n {\n \"type\": 0,\n \"value\": \"Fecha de Modificación\"\n }\n ],\n \"move_to\": [\n {\n \"type\": 0,\n \"value\": \"Mover a...\"\n }\n ],\n \"name\": [\n {\n \"type\": 0,\n \"value\": \"Nombre\"\n }\n ],\n \"no_available_addons_container\": [\n {\n \"type\": 0,\n \"value\": \"No hay complementos disponibles en este contenedor\"\n }\n ],\n \"no_files_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"No se subieron archivos\"\n }\n ],\n \"no_images_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"No se subieron imágenes\"\n }\n ],\n \"no_principal_permissions\": [\n {\n \"type\": 0,\n \"value\": \"No se definieron permisos para los usuarios\"\n }\n ],\n \"no_principal_roles\": [\n {\n \"type\": 0,\n \"value\": \"No se definieron roles para los usuarios\"\n }\n ],\n \"no_results\": [\n {\n \"type\": 0,\n \"value\": \"Sin resultados\"\n }\n ],\n \"no_role_permissions\": [\n {\n \"type\": 0,\n \"value\": \"No se definieron permisos de roles\"\n }\n ],\n \"not_allowed\": [\n {\n \"type\": 0,\n \"value\": \"No Permitido\"\n }\n ],\n \"not_found\": [\n {\n \"type\": 0,\n \"value\": \"404. No Encontrado\"\n }\n ],\n \"not_implemented\": [\n {\n \"type\": 0,\n \"value\": \"No implementado\"\n }\n ],\n \"open\": [\n {\n \"type\": 0,\n \"value\": \"Abrir\"\n }\n ],\n \"operation\": [\n {\n \"type\": 0,\n \"value\": \"Operación\"\n }\n ],\n \"pagination\": [\n {\n \"type\": 1,\n \"value\": \"currentPage\"\n },\n {\n \"type\": 0,\n \"value\": \" / \"\n },\n {\n \"type\": 1,\n \"value\": \"totalPages\"\n },\n {\n \"type\": 0,\n \"value\": \" de \"\n },\n {\n \"type\": 1,\n \"value\": \"totalItems\"\n },\n {\n \"type\": 0,\n \"value\": \" elementos\"\n }\n ],\n \"password\": [\n {\n \"type\": 0,\n \"value\": \"Contraseña\"\n }\n ],\n \"permission\": [\n {\n \"type\": 0,\n \"value\": \"Permiso\"\n }\n ],\n \"press_enter_to_add_value\": [\n {\n \"type\": 0,\n \"value\": \"Presiona enter para añadir valor\"\n }\n ],\n \"principal_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Usuario - Permisos\"\n }\n ],\n \"principal_roles\": [\n {\n \"type\": 0,\n \"value\": \"Roles - Usuarios\"\n }\n ],\n \"property\": [\n {\n \"type\": 0,\n \"value\": \"Propiedad\"\n }\n ],\n \"remove\": [\n {\n \"type\": 0,\n \"value\": \"Eliminar\"\n }\n ],\n \"role\": [\n {\n \"type\": 0,\n \"value\": \"Rol\"\n }\n ],\n \"role_added_to_group\": [\n {\n \"type\": 0,\n \"value\": \"Rol \"\n },\n {\n \"type\": 1,\n \"value\": \"role\"\n },\n {\n \"type\": 0,\n \"value\": \" añadido al grupo\"\n }\n ],\n \"role_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Permisos de Rol\"\n }\n ],\n \"role_removed_from_group\": [\n {\n \"type\": 0,\n \"value\": \"Rol \"\n },\n {\n \"type\": 1,\n \"value\": \"role\"\n },\n {\n \"type\": 0,\n \"value\": \" eliminado del grupo\"\n }\n ],\n \"roles\": [\n {\n \"type\": 0,\n \"value\": \"Roles\"\n }\n ],\n \"save\": [\n {\n \"type\": 0,\n \"value\": \"Guardar\"\n }\n ],\n \"search\": [\n {\n \"type\": 0,\n \"value\": \"Buscar\"\n }\n ],\n \"select_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Seleccionar permisos\"\n }\n ],\n \"select_principal\": [\n {\n \"type\": 0,\n \"value\": \"Seleccionar un usuario\"\n }\n ],\n \"select_role\": [\n {\n \"type\": 0,\n \"value\": \"Seleccionar un Rol\"\n }\n ],\n \"select_type\": [\n {\n \"type\": 0,\n \"value\": \"Seleccionar un tipo:\"\n }\n ],\n \"setting\": [\n {\n \"type\": 0,\n \"value\": \"Setting\"\n }\n ],\n \"something_went_wrong\": [\n {\n \"type\": 0,\n \"value\": \"Algo salió mal.\"\n }\n ],\n \"static\": [\n {\n \"type\": 0,\n \"value\": \"Estático\"\n }\n ],\n \"status_changed_error\": [\n {\n \"type\": 0,\n \"value\": \"¡Error al cambiar el estado!: \"\n },\n {\n \"type\": 1,\n \"value\": \"error\"\n }\n ],\n \"status_changed_ok\": [\n {\n \"type\": 0,\n \"value\": \"¡Cambio de estado exitoso!\"\n }\n ],\n \"the_user_doesnt_have_any_role\": [\n {\n \"type\": 0,\n \"value\": \"El usuario no tiene ningún rol\"\n }\n ],\n \"there_is_no_groups_for_this_user\": [\n {\n \"type\": 0,\n \"value\": \"No hay grupos para este usuario\"\n }\n ],\n \"title\": [\n {\n \"type\": 0,\n \"value\": \"Título\"\n }\n ],\n \"unset\": [\n {\n \"type\": 0,\n \"value\": \"Desestablecer\"\n }\n ],\n \"upload\": [\n {\n \"type\": 0,\n \"value\": \"Subir\"\n }\n ],\n \"upload_a_file\": [\n {\n \"type\": 0,\n \"value\": \"Subir un archivo\"\n }\n ],\n \"upload_an_image\": [\n {\n \"type\": 0,\n \"value\": \"Subir una imagen\"\n }\n ],\n \"user\": [\n {\n \"type\": 0,\n \"value\": \"Usuario\"\n }\n ],\n \"user_added_to_group\": [\n {\n \"type\": 0,\n \"value\": \"Usuario \"\n },\n {\n \"type\": 1,\n \"value\": \"user\"\n },\n {\n \"type\": 0,\n \"value\": \" añadido al grupo\"\n }\n ],\n \"user_removed_from_group\": [\n {\n \"type\": 0,\n \"value\": \"Usuario \"\n },\n {\n \"type\": 1,\n \"value\": \"user\"\n },\n {\n \"type\": 0,\n \"value\": \" eliminado del grupo\"\n }\n ],\n \"user_updated\": [\n {\n \"type\": 0,\n \"value\": \"Usuario actualizado\"\n }\n ],\n \"username\": [\n {\n \"type\": 0,\n \"value\": \"Nombre de Usuario\"\n }\n ],\n \"users\": [\n {\n \"type\": 0,\n \"value\": \"Usuarios\"\n }\n ],\n \"value\": [\n {\n \"type\": 0,\n \"value\": \"Valor\"\n }\n ]\n}","{\n \"actions\": [\n {\n \"type\": 0,\n \"value\": \"Actions:\"\n }\n ],\n \"add\": [\n {\n \"type\": 0,\n \"value\": \"Add\"\n }\n ],\n \"add_container\": [\n {\n \"type\": 0,\n \"value\": \"Add Container\"\n }\n ],\n \"add_group\": [\n {\n \"type\": 0,\n \"value\": \"Add Group\"\n }\n ],\n \"add_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Add Permissions\"\n }\n ],\n \"add_role\": [\n {\n \"type\": 0,\n \"value\": \"Add a Role\"\n }\n ],\n \"add_type\": [\n {\n \"type\": 0,\n \"value\": \"Add \"\n },\n {\n \"type\": 1,\n \"value\": \"type\"\n }\n ],\n \"add_user\": [\n {\n \"type\": 0,\n \"value\": \"Add a User\"\n }\n ],\n \"allow\": [\n {\n \"type\": 0,\n \"value\": \"Allow\"\n }\n ],\n \"allow_single\": [\n {\n \"type\": 0,\n \"value\": \"AllowSingle\"\n }\n ],\n \"available\": [\n {\n \"type\": 0,\n \"value\": \"Available\"\n }\n ],\n \"available_addons\": [\n {\n \"type\": 0,\n \"value\": \"Available Addons\"\n }\n ],\n \"behaviors\": [\n {\n \"type\": 0,\n \"value\": \"Behaviors\"\n }\n ],\n \"can_not_delete_field\": [\n {\n \"type\": 0,\n \"value\": \"You can not delete \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \"!\"\n }\n ],\n \"cancel\": [\n {\n \"type\": 0,\n \"value\": \"Cancel\"\n }\n ],\n \"change_password\": [\n {\n \"type\": 0,\n \"value\": \"Change Password\"\n }\n ],\n \"choose\": [\n {\n \"type\": 0,\n \"value\": \"Choose...\"\n }\n ],\n \"choose_action\": [\n {\n \"type\": 0,\n \"value\": \"Choose action...\"\n }\n ],\n \"choose_file\": [\n {\n \"type\": 0,\n \"value\": \"Choose a file\"\n }\n ],\n \"confirm\": [\n {\n \"type\": 0,\n \"value\": \"Confirm\"\n }\n ],\n \"confirm_message\": [\n {\n \"type\": 0,\n \"value\": \"Are you sure to change state: \"\n },\n {\n \"type\": 1,\n \"value\": \"title\"\n },\n {\n \"type\": 0,\n \"value\": \"?\"\n }\n ],\n \"confirm_message_delete_file\": [\n {\n \"type\": 0,\n \"value\": \"Are you sure to remove: \"\n },\n {\n \"type\": 1,\n \"value\": \"fileKeyToDelete\"\n },\n {\n \"type\": 0,\n \"value\": \"?\"\n }\n ],\n \"confirm_message_delete_image\": [\n {\n \"type\": 0,\n \"value\": \"Are you sure to remove the image?\"\n }\n ],\n \"container_created\": [\n {\n \"type\": 0,\n \"value\": \"Container Created\"\n }\n ],\n \"copy_to\": [\n {\n \"type\": 0,\n \"value\": \"Copy to...\"\n }\n ],\n \"create\": [\n {\n \"type\": 0,\n \"value\": \"Create\"\n }\n ],\n \"creation_date\": [\n {\n \"type\": 0,\n \"value\": \"Creation Date\"\n }\n ],\n \"current_state\": [\n {\n \"type\": 0,\n \"value\": \"Current state: \"\n },\n {\n \"type\": 1,\n \"value\": \"state\"\n }\n ],\n \"databases\": [\n {\n \"type\": 0,\n \"value\": \"Databases\"\n }\n ],\n \"default_value_editable_field\": [\n {\n \"type\": 0,\n \"value\": \"Click to edit\"\n }\n ],\n \"delete\": [\n {\n \"type\": 0,\n \"value\": \"Delete\"\n }\n ],\n \"deny\": [\n {\n \"type\": 0,\n \"value\": \"Deny\"\n }\n ],\n \"disable\": [\n {\n \"type\": 0,\n \"value\": \"Disable\"\n }\n ],\n \"download\": [\n {\n \"type\": 0,\n \"value\": \"Download\"\n }\n ],\n \"email\": [\n {\n \"type\": 0,\n \"value\": \"Email\"\n }\n ],\n \"enable\": [\n {\n \"type\": 0,\n \"value\": \"Enable\"\n }\n ],\n \"enabled\": [\n {\n \"type\": 0,\n \"value\": \"Enabled\"\n }\n ],\n \"error_file_key_name\": [\n {\n \"type\": 0,\n \"value\": \"Provide a file and a key name\"\n }\n ],\n \"error_in_field\": [\n {\n \"type\": 0,\n \"value\": \"Error in field \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \"!\"\n }\n ],\n \"error_provide_key_name\": [\n {\n \"type\": 0,\n \"value\": \"Provide a key name\"\n }\n ],\n \"error_upload_file\": [\n {\n \"type\": 0,\n \"value\": \"Failed to upload file\"\n }\n ],\n \"error_upload_file_size\": [\n {\n \"type\": 0,\n \"value\": \"Failed to upload file \"\n },\n {\n \"type\": 1,\n \"value\": \"size\"\n }\n ],\n \"failed_delete_file\": [\n {\n \"type\": 0,\n \"value\": \"Failed to delete file\"\n }\n ],\n \"failed_to_sort_images\": [\n {\n \"type\": 0,\n \"value\": \"Failed to sort images\"\n }\n ],\n \"failed_to_update\": [\n {\n \"type\": 0,\n \"value\": \"Failed to update: \"\n },\n {\n \"type\": 1,\n \"value\": \"error\"\n }\n ],\n \"field_deleted\": [\n {\n \"type\": 0,\n \"value\": \"Field \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \", deleted!\"\n }\n ],\n \"field_is_required\": [\n {\n \"type\": 0,\n \"value\": \"This field is required\"\n }\n ],\n \"field_updated\": [\n {\n \"type\": 0,\n \"value\": \"Field \"\n },\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \", updated!\"\n }\n ],\n \"file_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"File uploaded!\"\n }\n ],\n \"group\": [\n {\n \"type\": 0,\n \"value\": \"Group\"\n }\n ],\n \"image\": [\n {\n \"type\": 0,\n \"value\": \"Image\"\n }\n ],\n \"image_deleted\": [\n {\n \"type\": 0,\n \"value\": \"Image deleted!\"\n }\n ],\n \"image_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"Image uploaded!\"\n }\n ],\n \"images_sorted\": [\n {\n \"type\": 0,\n \"value\": \"Images sorted\"\n }\n ],\n \"install\": [\n {\n \"type\": 0,\n \"value\": \"Install\"\n }\n ],\n \"installed_addons\": [\n {\n \"type\": 0,\n \"value\": \"Installed Addons\"\n }\n ],\n \"invalid_email\": [\n {\n \"type\": 0,\n \"value\": \"Invalid email\"\n }\n ],\n \"invalid_form\": [\n {\n \"type\": 0,\n \"value\": \"Invalid form\"\n }\n ],\n \"invalid_form_data\": [\n {\n \"type\": 0,\n \"value\": \"Invalid form data\"\n }\n ],\n \"load_more\": [\n {\n \"type\": 0,\n \"value\": \"Load more\"\n }\n ],\n \"loading\": [\n {\n \"type\": 0,\n \"value\": \"Loading\"\n }\n ],\n \"mandatory_field\": [\n {\n \"type\": 1,\n \"value\": \"field\"\n },\n {\n \"type\": 0,\n \"value\": \" is mandatory!\"\n }\n ],\n \"modification_date\": [\n {\n \"type\": 0,\n \"value\": \"Modification Date\"\n }\n ],\n \"move_to\": [\n {\n \"type\": 0,\n \"value\": \"Move to...\"\n }\n ],\n \"name\": [\n {\n \"type\": 0,\n \"value\": \"Name\"\n }\n ],\n \"no_available_addons_container\": [\n {\n \"type\": 0,\n \"value\": \"No Addon available in this container\"\n }\n ],\n \"no_files_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"No files uploaded\"\n }\n ],\n \"no_images_uploaded\": [\n {\n \"type\": 0,\n \"value\": \"No images uploaded\"\n }\n ],\n \"no_principal_permissions\": [\n {\n \"type\": 0,\n \"value\": \"No principal permissions defined\"\n }\n ],\n \"no_principal_roles\": [\n {\n \"type\": 0,\n \"value\": \"No principal roles defined\"\n }\n ],\n \"no_results\": [\n {\n \"type\": 0,\n \"value\": \"No results\"\n }\n ],\n \"no_role_permissions\": [\n {\n \"type\": 0,\n \"value\": \"No roles permissions defined\"\n }\n ],\n \"not_allowed\": [\n {\n \"type\": 0,\n \"value\": \"Not Allowed\"\n }\n ],\n \"not_found\": [\n {\n \"type\": 0,\n \"value\": \"404. Not Found\"\n }\n ],\n \"not_implemented\": [\n {\n \"type\": 0,\n \"value\": \"Not implemented\"\n }\n ],\n \"open\": [\n {\n \"type\": 0,\n \"value\": \"Open\"\n }\n ],\n \"operation\": [\n {\n \"type\": 0,\n \"value\": \"Operation\"\n }\n ],\n \"pagination\": [\n {\n \"type\": 1,\n \"value\": \"currentPage\"\n },\n {\n \"type\": 0,\n \"value\": \" / \"\n },\n {\n \"type\": 1,\n \"value\": \"totalPages\"\n },\n {\n \"type\": 0,\n \"value\": \" of \"\n },\n {\n \"type\": 1,\n \"value\": \"totalItems\"\n },\n {\n \"type\": 0,\n \"value\": \" items\"\n }\n ],\n \"password\": [\n {\n \"type\": 0,\n \"value\": \"Password\"\n }\n ],\n \"permission\": [\n {\n \"type\": 0,\n \"value\": \"Permission\"\n }\n ],\n \"press_enter_to_add_value\": [\n {\n \"type\": 0,\n \"value\": \"Press enter to add value\"\n }\n ],\n \"principal_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Principal Permissions\"\n }\n ],\n \"principal_roles\": [\n {\n \"type\": 0,\n \"value\": \"Principal Roles\"\n }\n ],\n \"property\": [\n {\n \"type\": 0,\n \"value\": \"Property\"\n }\n ],\n \"remove\": [\n {\n \"type\": 0,\n \"value\": \"Remove\"\n }\n ],\n \"role\": [\n {\n \"type\": 0,\n \"value\": \"Role\"\n }\n ],\n \"role_added_to_group\": [\n {\n \"type\": 0,\n \"value\": \"Role \"\n },\n {\n \"type\": 1,\n \"value\": \"role\"\n },\n {\n \"type\": 0,\n \"value\": \" added to group\"\n }\n ],\n \"role_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Role Permissions\"\n }\n ],\n \"role_removed_from_group\": [\n {\n \"type\": 0,\n \"value\": \"Role \"\n },\n {\n \"type\": 1,\n \"value\": \"role\"\n },\n {\n \"type\": 0,\n \"value\": \" removed from group\"\n }\n ],\n \"roles\": [\n {\n \"type\": 0,\n \"value\": \"Roles\"\n }\n ],\n \"save\": [\n {\n \"type\": 0,\n \"value\": \"Save\"\n }\n ],\n \"search\": [\n {\n \"type\": 0,\n \"value\": \"Search\"\n }\n ],\n \"select_permissions\": [\n {\n \"type\": 0,\n \"value\": \"Select permissions\"\n }\n ],\n \"select_principal\": [\n {\n \"type\": 0,\n \"value\": \"Select a Principal\"\n }\n ],\n \"select_role\": [\n {\n \"type\": 0,\n \"value\": \"Select a Role\"\n }\n ],\n \"select_type\": [\n {\n \"type\": 0,\n \"value\": \"Select a type:\"\n }\n ],\n \"setting\": [\n {\n \"type\": 0,\n \"value\": \"Setting\"\n }\n ],\n \"something_went_wrong\": [\n {\n \"type\": 0,\n \"value\": \"Something went wrong.\"\n }\n ],\n \"static\": [\n {\n \"type\": 0,\n \"value\": \"Static\"\n }\n ],\n \"status_changed_error\": [\n {\n \"type\": 0,\n \"value\": \"Failed to status changed!: \"\n },\n {\n \"type\": 1,\n \"value\": \"error\"\n }\n ],\n \"status_changed_ok\": [\n {\n \"type\": 0,\n \"value\": \"Great status changed!\"\n }\n ],\n \"the_user_doesnt_have_any_role\": [\n {\n \"type\": 0,\n \"value\": \"The user doesn't have any role\"\n }\n ],\n \"there_is_no_groups_for_this_user\": [\n {\n \"type\": 0,\n \"value\": \"There is no groups for this user\"\n }\n ],\n \"title\": [\n {\n \"type\": 0,\n \"value\": \"Title\"\n }\n ],\n \"unset\": [\n {\n \"type\": 0,\n \"value\": \"Unset\"\n }\n ],\n \"upload\": [\n {\n \"type\": 0,\n \"value\": \"Upload\"\n }\n ],\n \"upload_a_file\": [\n {\n \"type\": 0,\n \"value\": \"Upload a file\"\n }\n ],\n \"upload_an_image\": [\n {\n \"type\": 0,\n \"value\": \"Upload an image\"\n }\n ],\n \"user\": [\n {\n \"type\": 0,\n \"value\": \"User\"\n }\n ],\n \"user_added_to_group\": [\n {\n \"type\": 0,\n \"value\": \"User \"\n },\n {\n \"type\": 1,\n \"value\": \"user\"\n },\n {\n \"type\": 0,\n \"value\": \" added to group\"\n }\n ],\n \"user_removed_from_group\": [\n {\n \"type\": 0,\n \"value\": \"User \"\n },\n {\n \"type\": 1,\n \"value\": \"user\"\n },\n {\n \"type\": 0,\n \"value\": \" removed from group\"\n }\n ],\n \"user_updated\": [\n {\n \"type\": 0,\n \"value\": \"User updated\"\n }\n ],\n \"username\": [\n {\n \"type\": 0,\n \"value\": \"Username\"\n }\n ],\n \"users\": [\n {\n \"type\": 0,\n \"value\": \"Users\"\n }\n ],\n \"value\": [\n {\n \"type\": 0,\n \"value\": \"Value\"\n }\n ]\n}","import React from 'react'\nimport { useReducer } from 'react'\nimport { useEffect } from 'react'\nimport { Flash } from './flash'\nimport { TraversalProvider, useGuillotinaClient } from '../contexts'\nimport { IConfig, useConfig } from '../hooks/useConfig'\nimport { IRegistry, useRegistry } from '../hooks/useRegistry'\nimport { useLocation } from '../hooks/useLocation'\nimport {\n GuillotinaGlobalState,\n GuillotinaReducerActionTypes,\n guillotinaReducer,\n} from '../reducers/guillotina'\nimport { initialState } from '../reducers/guillotina'\nimport { Loading } from './ui/loading'\nimport { IntlProvider } from 'react-intl'\nimport langCA from '../locales/compiled/ca.json'\nimport langES from '../locales/compiled/es.json'\nimport langEN from '../locales/compiled/en.json'\nimport { Auth } from '../lib/auth'\n\nfunction loadLocaleData(locale: string) {\n switch (locale) {\n case 'ca':\n return langCA\n case 'es':\n return langES\n default:\n return langEN\n }\n}\n\ninterface GuillotinaProps {\n auth: Auth\n locale: string\n url: string\n config?: Partial<IConfig>\n registry: Partial<IRegistry>\n}\nexport function Guillotina({ auth, locale, ...props }: GuillotinaProps) {\n const messages = loadLocaleData(locale)\n const url = props.url || 'http://localhost:8080' // without trailing slash\n const config = props.config || {}\n const client = useGuillotinaClient()\n\n const { Permissions } = useConfig(config)\n const registry = useRegistry(props.registry)\n // Location is cooked routing solution (only uses search params)\n const [location] = useLocation()\n\n // if there is no path provided just go to root\n const searchPath = location.get('path') || '/'\n if (searchPath && searchPath !== '') {\n initialState.path = searchPath\n }\n\n const [state, dispatch] = useReducer(guillotinaReducer, initialState)\n\n const { path, refresh } = state\n\n useEffect(() => {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_PATH,\n payload: {\n path: searchPath,\n },\n })\n }, [searchPath])\n\n useEffect(() => {\n const initContext = async () => {\n const data = await client.getContext(path)\n if (data.status === 401) {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_ERROR,\n payload: {\n errorStatus: 'notallowed',\n },\n })\n return\n } else if (data.status === 404) {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_ERROR,\n payload: {\n errorStatus: 'notallowed',\n },\n })\n return\n }\n const context = await data.json()\n const pr = await client.canido(path, Permissions)\n const permissions = await pr.json()\n dispatch({\n type: GuillotinaReducerActionTypes.SET_CONTEXT,\n payload: { context, permissions },\n })\n }\n initContext()\n }, [path, refresh, client])\n\n const ErrorBoundary: React.ComponentType<{\n children: React.ReactNode\n }> = registry.getView('ErrorBoundary')\n const NotAllowed = registry.getView('NotAllowed')\n const NotFound = registry.getView('NotFound')\n const Path = registry.getComponent('Path')\n\n const contextData = {\n url,\n client,\n auth,\n state,\n dispatch,\n registry,\n flash: config.flash,\n }\n\n const { action, errorStatus, permissions } = state\n const Main = registry.getPathComponent(state.context, path) as React.FC<{\n state: GuillotinaGlobalState\n }>\n const Action = action.action\n ? (registry.getAction(action.action) as React.FC<any>)\n : null\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={messages}>\n <ErrorBoundary>\n {!errorStatus && (\n <TraversalProvider {...contextData}>\n {permissions && (\n <React.Fragment>\n {action.action && Action !== null && (\n <Action {...action.params} />\n )}\n <div className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <Path />\n </div>\n </div>\n </div>\n <Flash />\n {Main !== undefined && (\n <ErrorBoundary>\n <div className=\"box main-panel\">\n {state.loading && <Loading />}\n {!state.loading && <Main state={state} />}\n </div>\n </ErrorBoundary>\n )}\n {/* <p>Guillotina {JSON.stringify(state.context)}</p> */}\n </React.Fragment>\n )}\n </TraversalProvider>\n )}\n {errorStatus === 'notallowed' && <NotAllowed />}\n {errorStatus === 'notfound' && <NotFound />}\n </ErrorBoundary>\n </IntlProvider>\n )\n}\n","import { useState } from 'react'\nimport { Auth } from '../lib/auth'\nimport { Icon } from './ui/icon'\nimport { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n onLogout: () => void\n auth: Auth\n}\nexport function Layout({ children, onLogout, auth }: Props) {\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const doLogout = () => {\n auth.logout()\n // Clear query parameters from URL\n if (window.location.search) {\n window.history.replaceState({}, '', window.location.pathname)\n }\n onLogout()\n }\n\n return (\n <>\n <header>\n <nav className=\"navbar\" role=\"navigation\" aria-label=\"main navigation\">\n <div className=\"navbar-brand\" style={{ alignItems: 'center' }}>\n <a className=\"navbar-item\" href=\"/\">\n <img src=\"/logo.svg\" alt=\"Guillotina logo\" height=\"80\" />\n </a>\n <div\n id=\"burger\"\n role=\"button\"\n className={classnames([\n 'navbar-burger',\n 'burger',\n isMenuOpen && 'is-active',\n ])}\n aria-label=\"menu\"\n aria-expanded=\"false\"\n data-target=\"navbarmenu\"\n onClick={() => setIsMenuOpen(!isMenuOpen)}\n >\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n </div>\n </div>\n <div\n id=\"navbarmenu\"\n className={classnames(['navbar-menu', isMenuOpen && 'is-active'])}\n >\n <div className=\"navbar-start\"></div>\n <div className=\"navbar-end\">\n <div className=\"navbar-item\">\n {auth.isLogged && (\n <div className=\"buttons\">\n <button className=\"button is-size-7\" onClick={doLogout}>\n <Icon icon=\"fas fa-sign-out-alt\" />\n <span>Logout</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n </nav>\n </header>\n <section className=\"section main\">\n <div className=\"container\">\n <div className=\"column\">{children}</div>\n </div>\n </section>\n </>\n )\n}\n","import React, { useRef, useEffect } from 'react'\nimport useSetState from '../hooks/useSetState'\nimport { Auth } from '../lib/auth'\n\nconst ERRORS: { [key: string]: string } = {\n failed_to_fetch: 'Failed to fetch data: Backend not running?',\n invalid_credentials: 'Failed! Invalid credentials',\n}\ninterface State {\n username: string\n password: string\n loading: boolean\n errors?: string\n}\nconst initialState = {\n username: '',\n password: '',\n loading: false,\n errors: undefined,\n}\n\ninterface Props {\n currentSchema: string\n setCurrentSchema: (schema: string) => void\n schemas: string[]\n auth: Auth\n onLogin?: () => void\n}\nexport const Login = ({\n currentSchema,\n setCurrentSchema,\n schemas,\n auth,\n onLogin,\n}: Props) => {\n const [state, setState] = useSetState<State>(initialState)\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.focus()\n }\n }, [inputRef])\n\n const doLogin = async (ev: React.FormEvent) => {\n ev.preventDefault()\n setState({ loading: true, errors: undefined })\n const { username, password } = state\n\n if (currentSchema !== '') {\n auth.setAccount(currentSchema)\n }\n const res = await auth.login(username, password)\n\n if (!res) {\n setState({ errors: auth.errors, loading: false })\n return\n }\n\n if (onLogin) {\n onLogin()\n }\n }\n\n return (\n <React.Fragment>\n <form\n className=\"login__form\"\n action=\"\"\n onSubmit={doLogin}\n data-test=\"formLoginTest\"\n >\n <div className=\"field\">\n <label className=\"label\">Username:</label>\n <input\n type=\"text\"\n className=\"input\"\n placeholder=\"Username\"\n onChange={(e) => setState({ username: e.target.value })}\n value={state.username}\n ref={inputRef}\n data-test=\"inputUsernameLoginTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">Password:</label>\n <input\n type=\"password\"\n className=\"input\"\n placeholder=\"Password\"\n onChange={(e) => setState({ password: e.target.value })}\n value={state.password}\n data-test=\"inputPasswordLoginTest\"\n />\n </div>\n {schemas && schemas.length > 1 && (\n <div className=\"field\">\n <label className=\"label\">Schema:</label>\n <div className=\"select\">\n <select\n data-test=\"selectSchemaTest\"\n onChange={(e) => setCurrentSchema(e.target.value)}\n >\n {schemas.map((s) => (\n <option value={s} key={s}>\n {s}\n </option>\n ))}\n </select>\n </div>\n </div>\n )}\n <div className=\"field\">\n <button\n className=\"button is-warning\"\n type=\"submit\"\n data-test=\"btnLoginTest\"\n >\n Login\n </button>\n </div>\n <div className=\"field\">\n {state.errors && (\n <p className=\"has-text-danger\">\n {ERRORS[state.errors] || 'Generic error'}\n </p>\n )}\n </div>\n </form>\n </React.Fragment>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useTraversal } from '../contexts'\nimport useSetState from '../hooks/useSetState'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nconst ignoreFiels: string[] = []\nconst extraFields = ['title']\n\ninterface Props {\n onSubmit: (data: IndexSignature) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n type: string\n}\ninterface State {\n data?: IndexSignature\n loading: boolean\n error?: unknown\n formFields: string[]\n}\nexport function RequiredFieldsForm({\n loading,\n onSubmit,\n actionName,\n title,\n dataTest,\n type,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n\n const EditComponent = Ctx.registry.getComponent('EditComponent')\n\n const [formData, setFormData] = useState<IndexSignature>({})\n const [errors, setErrors] = useState<IndexSignature<string>>({})\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n formFields: [],\n })\n\n useEffect(() => {\n const getSchema = async () => {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(Ctx.path, type)\n setSchema({\n loading: false,\n data: dataJson,\n formFields: [...dataJson.required, ...extraFields],\n })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n const submit = () => {\n const currentErrors: IndexSignature<string> = {}\n\n schema.formFields.forEach((key) => {\n if (!formData[key]) {\n currentErrors[key] = intl.formatMessage(\n genericMessages.field_is_required\n )\n }\n })\n\n if (Object.keys(currentErrors).length > 0) {\n setErrors(currentErrors)\n return\n }\n\n onSubmit({ id: formData.uuid, ...formData })\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n {schema &&\n schema.data &&\n !schema.loading &&\n schema.formFields.map((key) => {\n if (!ignoreFiels.includes(key)) {\n const value = schema.data?.properties[key]\n return (\n <EditComponent\n key={key}\n id={key}\n placeholder={value?.title ?? ''}\n className=\"\"\n required\n schema={schema.data?.properties[key]}\n setValue={(value: string) => {\n if (key === 'title') {\n setFormData({\n ...formData,\n uuid: stringToSlug(value),\n [key]: value,\n })\n } else if (key === 'uuid') {\n setFormData({\n ...formData,\n uuid: stringToSlug(value),\n })\n } else {\n setFormData({ ...formData, [key]: value })\n }\n }}\n error={errors[key]}\n dataTest={`${key}TestInput`}\n val={key in formData ? formData[key] : ''}\n />\n )\n }\n return null\n })}\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import { jwtDecode } from 'jwt-decode'\nimport { IndexSignature } from '../types/global'\n\nexport class Auth {\n maxRetry = 1\n retryRefresh = 0\n events = {}\n url: string\n base_url: string\n errors?: string\n\n constructor(url: string) {\n this.url = url\n this.base_url = url\n this.errors = undefined\n }\n\n getUrl(endpoint: string) {\n return `${this.url}${endpoint}`\n }\n\n setAccount(account: string) {\n this.url = this.base_url + account\n }\n\n async login(username: string, password: string) {\n const url = this.getUrl('@login')\n try {\n const data = await fetch(url, {\n method: 'post',\n body: JSON.stringify({\n username: username,\n password: password,\n }),\n })\n if (data.status === 200) {\n const credentials = await data.json()\n this.storeAuth(credentials)\n return true\n } else {\n this.errors = 'invalid_credentials'\n }\n } catch (_e) {\n this.errors = 'failed_to_fetch'\n return false\n }\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n return false\n }\n\n get isLogged() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token, expires] = this._getToken()\n if (!token || !expires) {\n return false\n }\n if (this.isExpired(expires)) {\n return false\n }\n return true\n }\n\n get username() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token] = this._getToken()\n const data: IndexSignature = jwtDecode(token as string)\n console.log(token)\n return data.id\n }\n\n storeAuth(data: { token: string; exp: number }) {\n localStorage.setItem('auth', data.token)\n localStorage.setItem(\n 'auth_expires',\n new Date(data.exp).getTime().toString()\n )\n }\n\n cleanAuth() {\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n }\n\n logout() {\n this.cleanAuth()\n }\n\n async refreshToken() {\n console.log('refresh!!!')\n this.retryRefresh++\n const data = await fetch(this.getUrl('@login-renew'), {\n headers: this.getHeaders(),\n method: 'post',\n })\n if (data.status === 401) {\n // invalid token\n this.cleanAuth()\n this.logout()\n return\n }\n const res = await data.json()\n console.log('refresh data', res)\n this.storeAuth(res)\n console.log('token refreshed')\n this.retryRefresh = 0\n return res.token\n }\n\n willExpire(expiration: string) {\n const now = new Date().getTime()\n if (parseInt(expiration) < now + 10) {\n return true\n }\n return false\n }\n\n isExpired(expiration: string) {\n const now = new Date().getTime()\n if (parseInt(expiration) > now) {\n return false\n }\n return true\n }\n\n _getToken() {\n return [localStorage.getItem('auth'), localStorage.getItem('auth_expires')]\n }\n\n getToken() {\n const [token] = this._getToken()\n return token\n }\n\n getHeaders(): HeadersInit {\n const [authToken, expires] = this._getToken()\n if (!authToken) return {}\n\n if (this.willExpire(expires ?? '') && this.retryRefresh < this.maxRetry) {\n // eslint-disable-next-line no-extra-semi\n ;(async () => await this.refreshToken())()\n }\n\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + authToken,\n }\n }\n}\n","import { ItemModel } from '../models'\nimport { IndexSignature } from './global'\n\ntype ItemsPropertyObject = {\n '@id': string\n '@name': string\n '@type': string\n '@uid': string\n '@absolute_url': string\n title: string\n creation_date: string\n modification_date: string\n uuid: string\n type_name: string\n}\n\nexport type GuillotinaCommonObject = {\n type_name: string\n uuid: string\n is_folderish: boolean\n parent: GuillotinaParentObject\n length: number\n __behaviors__?: string[]\n '@static_behaviors': string[]\n 'guillotina.behaviors.dublincore.IDublinCore'?: IBehaviorDublinCore\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior'?: IWorkflowBehavior\n 'guillotina.behaviors.attachment.IAttachment'?: {\n file: GuillotinaFile\n }\n 'guillotina.behaviors.attachment.IMultiAttachment'?: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n 'guillotina.contrib.image.behaviors.IImageAttachment'?: {\n image: GuillotinaFile\n }\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment'?: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment'?: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n} & ItemsPropertyObject\n\nexport type SearchItem = {\n id: string\n parent_uuid: string\n path: string\n tid: string\n depth: number\n description: string\n access_roles: string[]\n access_users: string[]\n contributors: string[]\n tags: string[]\n creators: string[]\n} & ItemsPropertyObject\n\nexport interface IBehaviorDublinCore {\n title: string\n description: string | null\n creation_date: string\n modification_date: string\n effective_date: string | null\n expiration_date: string | null\n creators: string[]\n tags: string[] | null\n publisher: string | null\n contributors: string[]\n}\n\nexport interface IWorkflowBehavior {\n review_state: string\n history: WorkflowHistory[]\n}\n\ninterface GuillotinaParentObject {\n '@id': string\n '@name': string\n '@type': string\n '@uid': string\n}\n\nexport interface GuillotinaSchema {\n title: string\n $schema: string\n type: string\n required: string[]\n definitions: Definitions\n properties: GuillotinaSchemaProperties\n}\n\nexport interface GuillotinaSchemaProperties {\n [key: string]: GuillotinaSchemaProperty | { $ref: string }[]\n}\n\nexport interface Definitions {\n [key: string]: {\n type: string\n properties: GuillotinaSchemaProperties\n required: string[]\n title: string\n description: string\n }\n}\n\nexport interface GuillotinaSchemaProperty {\n type: string\n title: string\n widget?: string\n readonly?: boolean\n description?: string\n vocabularyName?: string\n vocabulary?: string[]\n items?: GuillotinaSchemaProperty\n properties?: GuillotinaSchemaProperties\n additionalProperties?: GuillotinaSchemaProperties\n typeNameQuery?: string\n labelProperty?: string\n enum?: string[]\n queryCondition?: string\n queryPath?: string\n}\n\nexport type GuillotinaFile = {\n filename: string\n content_type: string\n extension: string\n size: number\n md5: string\n}\n\nexport interface GuillotinaVocabulary {\n '@id': string\n items: GuillotinaVocabularyItem[]\n items_total: number\n}\n\nexport interface GuillotinaVocabularyItem {\n title: string\n token: string\n}\nexport interface GuillotinaSharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n}\n\nexport interface GuillotinaSharingInheritItem extends GuillotinaSharingMap {\n '@id': string\n}\nexport interface GuillotinaSharingMap {\n roleperm: {\n [key: string]: IndexSignature<string>\n }\n prinperm: {\n [key: string]: IndexSignature<string>\n }\n prinrole: {\n [key: string]: IndexSignature<string>\n }\n}\n\nexport interface GuillotinaBehaviors {\n static: string[]\n dynamic: string[]\n available: string[]\n}\n\nexport interface AllPermissions {\n [key: string]: AllPermissionsItem\n}\n\nexport interface AllPermissionsItem {\n prinperm?: PrimPerm[]\n prinrole?: Prinrole[]\n roleperm?: Roleperm[]\n perminhe?: Perminhe[]\n}\n\nexport interface Prinrole {\n principal: string\n role: string\n setting: Setting\n}\n\nexport interface Roleperm {\n permission: string\n role: string\n setting: Setting\n}\nexport interface PrimPerm {\n principal: string\n permission: string\n setting: Setting\n}\nexport interface Perminhe {\n permission: string\n setting: Setting\n}\n\nexport enum Setting {\n Allow = 'Allow',\n AllowSingle = 'AllowSingle',\n Deny = 'Deny',\n Unset = 'Unset',\n}\n\nexport interface Workflow {\n '@id': string\n history: WorkflowHistory[]\n transitions: Transition[]\n}\n\nexport interface WorkflowHistory {\n actor: string\n comments: string\n time: string\n title: string\n type: string\n data: WorkflowHistoryData\n}\n\nexport interface WorkflowHistoryData {\n action: null\n review_state: string\n}\n\nexport interface Transition {\n '@id': string\n title: string\n metadata: IndexSignature\n}\n\nexport interface Addons {\n available: AddonAvailable[]\n installed: string[]\n}\n\nexport interface AddonAvailable {\n id: string\n title: string\n dependencies: any[]\n}\n\nexport interface RegistrySchema {\n filters: RegistrySchemaFilter[]\n}\n\nexport interface RegistrySchemaFilter {\n attribute_key: string\n label: string\n type: string\n values?: { value: string; text: string }[]\n vocabulary?: string\n input_type?: string\n}\n\nexport type ReturnSearch<T> = {\n items: T[]\n items_total: number\n}\n\nexport type ReturnSearchCompatible<T> = {\n member: T[]\n items_count: number\n items: T[]\n items_total: number\n}\n\nexport type SearchOrCommonObject = SearchItem | GuillotinaCommonObject\n\nexport interface ItemColumn<\n T extends SearchOrCommonObject = SearchOrCommonObject,\n> {\n key: string\n label: string\n isSortable?: boolean\n child: ({ model, link, search }: ItemColumnChild<T>) => React.ReactNode\n}\nexport interface ItemColumnChild<\n T extends SearchOrCommonObject = SearchOrCommonObject,\n> {\n model: ItemModel<T>\n link?: () => void\n search?: string\n}\n\nexport type GuillotinaUser = {\n user_roles: string[]\n user_groups: string[]\n user_permissions: string[]\n fullname: string\n email: string\n username: string\n} & GuillotinaCommonObject\n\nexport type GuillotinaGroup = {\n user_roles: string[]\n users: string[]\n} & GuillotinaCommonObject\n\nexport type GuillotinaApplication = {\n databases: string[]\n} & GuillotinaCommonObject\n\nexport type GuillotinaDatabase = {\n containers: string[]\n} & GuillotinaCommonObject\n"],"x_google_ignoreList":[52,53,54,55,56,57,58,59,60,61,62,63,64,120],"mappings":"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"}