@payloadcms/ui 3.0.0-alpha.0 → 3.0.0-alpha.2
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.
- package/dist/@types/assets.d.js +3 -0
- package/dist/config.js +13 -0
- package/dist/elements/ArrayAction/index.js +120 -0
- package/dist/elements/ArrayAction/types.js +6 -0
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +207 -0
- package/dist/elements/Autosave/types.js +6 -0
- package/dist/elements/Banner/index.js +52 -0
- package/dist/elements/Banner/types.js +6 -0
- package/dist/elements/Button/index.js +166 -0
- package/dist/elements/Button/types.js +6 -0
- package/dist/elements/Card/index.js +46 -0
- package/dist/elements/Card/types.js +6 -0
- package/dist/elements/CodeEditor/CodeEditor.js +53 -0
- package/dist/elements/CodeEditor/index.js +68 -0
- package/dist/elements/CodeEditor/types.js +6 -0
- package/dist/elements/Collapsible/index.js +128 -0
- package/dist/elements/Collapsible/provider.js +90 -0
- package/dist/elements/Collapsible/types.js +6 -0
- package/dist/elements/ColumnSelector/index.js +109 -0
- package/dist/elements/ColumnSelector/types.js +6 -0
- package/dist/elements/CopyToClipboard/index.js +98 -0
- package/dist/elements/CopyToClipboard/types.js +6 -0
- package/dist/elements/DatePicker/DatePicker.js +147 -0
- package/dist/elements/DatePicker/index.js +63 -0
- package/dist/elements/DatePicker/types.js +6 -0
- package/dist/elements/DeleteDocument/index.js +178 -0
- package/dist/elements/DeleteDocument/types.js +6 -0
- package/dist/elements/DeleteMany/index.js +176 -0
- package/dist/elements/DeleteMany/types.js +6 -0
- package/dist/elements/DocumentControls/index.d.ts +2 -2
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +159 -0
- package/dist/elements/DocumentDrawer/DrawerContent.js +219 -0
- package/dist/elements/DocumentDrawer/index.js +185 -0
- package/dist/elements/DocumentDrawer/types.js +6 -0
- package/dist/elements/DocumentFields/index.js +55 -0
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js +23 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +42 -0
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js +105 -0
- package/dist/elements/DocumentHeader/Tabs/getCustomViews.js +48 -0
- package/dist/elements/DocumentHeader/Tabs/getViewConfig.js +24 -0
- package/dist/elements/DocumentHeader/Tabs/index.js +84 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js +27 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js +75 -0
- package/dist/elements/DocumentHeader/index.js +81 -0
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +82 -0
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js +6 -0
- package/dist/elements/DraggableSortable/index.js +96 -0
- package/dist/elements/DraggableSortable/types.js +6 -0
- package/dist/elements/DraggableSortable/useDraggableSortable/index.js +32 -0
- package/dist/elements/DraggableSortable/useDraggableSortable/types.js +6 -0
- package/dist/elements/Drawer/index.js +156 -0
- package/dist/elements/Drawer/types.js +6 -0
- package/dist/elements/Drawer/useDrawerSlug.js +23 -0
- package/dist/elements/Dropzone/index.js +117 -0
- package/dist/elements/DuplicateDocument/index.js +217 -0
- package/dist/elements/DuplicateDocument/types.js +6 -0
- package/dist/elements/EditMany/index.js +274 -0
- package/dist/elements/EditMany/types.js +6 -0
- package/dist/elements/EditUpload/index.js +390 -0
- package/dist/elements/ErrorPill/index.js +37 -0
- package/dist/elements/ErrorPill/types.js +6 -0
- package/dist/elements/FieldSelect/index.js +138 -0
- package/dist/elements/FileDetails/FileMeta/index.js +96 -0
- package/dist/elements/FileDetails/FileMeta/types.js +6 -0
- package/dist/elements/FileDetails/index.js +59 -0
- package/dist/elements/FileDetails/types.js +6 -0
- package/dist/elements/GenerateConfirmation/index.js +72 -0
- package/dist/elements/GenerateConfirmation/types.js +6 -0
- package/dist/elements/GetFilterOptions/index.js +57 -0
- package/dist/elements/Gutter/index.js +72 -0
- package/dist/elements/Hamburger/index.js +54 -0
- package/dist/elements/Header/index.d.ts.map +1 -1
- package/dist/elements/Header/index.js +140 -0
- package/dist/elements/HydrateClientUser/index.js +28 -0
- package/dist/elements/IDLabel/index.js +28 -0
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js +21 -0
- package/dist/elements/ListControls/index.js +149 -0
- package/dist/elements/ListControls/types.js +6 -0
- package/dist/elements/ListDrawer/DrawerContent.js +315 -0
- package/dist/elements/ListDrawer/index.js +198 -0
- package/dist/elements/ListDrawer/types.js +6 -0
- package/dist/elements/ListSelection/index.js +83 -0
- package/dist/elements/Loading/index.js +103 -0
- package/dist/elements/LoadingOverlay/index.js +130 -0
- package/dist/elements/LoadingOverlay/reducer.js +49 -0
- package/dist/elements/LoadingOverlay/types.js +6 -0
- package/dist/elements/Localizer/LocalizerLabel/index.js +43 -0
- package/dist/elements/Localizer/index.js +121 -0
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +49 -0
- package/dist/elements/Nav/NavHamburger/index.js +34 -0
- package/dist/elements/Nav/NavToggler/index.js +53 -0
- package/dist/elements/Nav/NavWrapper/index.js +34 -0
- package/dist/elements/Nav/context.js +150 -0
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +106 -0
- package/dist/elements/NavGroup/index.js +129 -0
- package/dist/elements/Pagination/ClickableArrow/index.js +36 -0
- package/dist/elements/Pagination/ClickableArrow/types.js +6 -0
- package/dist/elements/Pagination/Page/index.js +33 -0
- package/dist/elements/Pagination/Page/types.js +6 -0
- package/dist/elements/Pagination/Separator/index.js +22 -0
- package/dist/elements/Pagination/index.js +126 -0
- package/dist/elements/Pagination/types.js +6 -0
- package/dist/elements/PerPage/index.d.ts.map +1 -1
- package/dist/elements/PerPage/index.js +115 -0
- package/dist/elements/Pill/index.js +93 -0
- package/dist/elements/Pill/types.js +6 -0
- package/dist/elements/Popup/PopupButtonList/index.d.ts +2 -2
- package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.js +118 -0
- package/dist/elements/Popup/PopupTrigger/index.js +51 -0
- package/dist/elements/Popup/PopupTrigger/types.js +6 -0
- package/dist/elements/Popup/index.js +193 -0
- package/dist/elements/Popup/types.js +6 -0
- package/dist/elements/PreviewButton/index.js +129 -0
- package/dist/elements/PreviewSizes/index.js +163 -0
- package/dist/elements/Publish/index.js +153 -0
- package/dist/elements/PublishMany/index.js +169 -0
- package/dist/elements/PublishMany/types.js +6 -0
- package/dist/elements/ReactSelect/ClearIndicator/index.js +31 -0
- package/dist/elements/ReactSelect/Control/index.js +49 -0
- package/dist/elements/ReactSelect/MultiValue/index.js +55 -0
- package/dist/elements/ReactSelect/MultiValueLabel/index.js +34 -0
- package/dist/elements/ReactSelect/MultiValueRemove/index.js +48 -0
- package/dist/elements/ReactSelect/SingleValue/index.js +30 -0
- package/dist/elements/ReactSelect/ValueContainer/index.js +29 -0
- package/dist/elements/ReactSelect/index.js +177 -0
- package/dist/elements/ReactSelect/types.js +6 -0
- package/dist/elements/RenderCustomComponent/index.js +28 -0
- package/dist/elements/RenderCustomComponent/types.js +6 -0
- package/dist/elements/RenderTitle/index.js +42 -0
- package/dist/elements/RenderTitle/types.js +6 -0
- package/dist/elements/Save/index.js +103 -0
- package/dist/elements/SaveDraft/index.js +147 -0
- package/dist/elements/SearchFilter/index.d.ts.map +1 -1
- package/dist/elements/SearchFilter/index.js +139 -0
- package/dist/elements/SearchFilter/types.js +6 -0
- package/dist/elements/SelectAll/index.js +35 -0
- package/dist/elements/SelectRow/index.js +31 -0
- package/dist/elements/ShimmerEffect/index.js +96 -0
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +139 -0
- package/dist/elements/SortColumn/types.js +6 -0
- package/dist/elements/SortComplex/index.d.ts.map +1 -1
- package/dist/elements/SortComplex/index.js +157 -0
- package/dist/elements/SortComplex/types.js +6 -0
- package/dist/elements/Status/index.js +202 -0
- package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
- package/dist/elements/StayLoggedIn/index.js +57 -0
- package/dist/elements/StayLoggedIn/types.js +6 -0
- package/dist/elements/StepNav/SetStepNav.js +25 -0
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +127 -0
- package/dist/elements/StepNav/types.js +6 -0
- package/dist/elements/Table/TableCellProvider/index.js +47 -0
- package/dist/elements/Table/index.js +63 -0
- package/dist/elements/Table/types.js +6 -0
- package/dist/elements/TableColumns/buildColumns.js +77 -0
- package/dist/elements/TableColumns/columnReducer.js +47 -0
- package/dist/elements/TableColumns/index.js +199 -0
- package/dist/elements/Thumbnail/index.js +89 -0
- package/dist/elements/Thumbnail/types.js +6 -0
- package/dist/elements/ThumbnailCard/index.js +54 -0
- package/dist/elements/ThumbnailCard/types.js +6 -0
- package/dist/elements/Tooltip/index.js +114 -0
- package/dist/elements/Tooltip/types.js +6 -0
- package/dist/elements/Translation/index.js +81 -0
- package/dist/elements/UnpublishMany/index.js +169 -0
- package/dist/elements/UnpublishMany/types.js +6 -0
- package/dist/elements/Upload/index.js +250 -0
- package/dist/elements/Upload/types.js +6 -0
- package/dist/elements/ViewDescription/index.js +38 -0
- package/dist/elements/ViewDescription/types.js +21 -0
- package/dist/elements/WhereBuilder/Condition/Date/index.js +32 -0
- package/dist/elements/WhereBuilder/Condition/Date/types.js +6 -0
- package/dist/elements/WhereBuilder/Condition/Number/index.js +33 -0
- package/dist/elements/WhereBuilder/Condition/Number/types.js +6 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +337 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js +98 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/types.js +6 -0
- package/dist/elements/WhereBuilder/Condition/Select/index.js +96 -0
- package/dist/elements/WhereBuilder/Condition/Select/types.js +6 -0
- package/dist/elements/WhereBuilder/Condition/Text/index.js +33 -0
- package/dist/elements/WhereBuilder/Condition/Text/types.js +6 -0
- package/dist/elements/WhereBuilder/Condition/index.js +203 -0
- package/dist/elements/WhereBuilder/Condition/types.js +6 -0
- package/dist/elements/WhereBuilder/field-types.js +185 -0
- package/dist/elements/WhereBuilder/index.js +235 -0
- package/dist/elements/WhereBuilder/reducer.js +88 -0
- package/dist/elements/WhereBuilder/transformWhereQuery.js +57 -0
- package/dist/elements/WhereBuilder/types.js +6 -0
- package/dist/elements/WhereBuilder/validateWhereQuery.js +46 -0
- package/dist/exports/assets.js +27 -0
- package/dist/exports/elements.js +226 -0
- package/dist/exports/forms.js +158 -0
- package/dist/exports/graphics.js +27 -0
- package/dist/exports/hooks.js +55 -0
- package/dist/exports/icons.js +82 -0
- package/dist/exports/index.js +28 -0
- package/dist/exports/providers.js +116 -0
- package/dist/exports/templates.js +22 -0
- package/dist/exports/types.js +6 -0
- package/dist/exports/utilities.js +62 -0
- package/dist/forms/Error/index.js +43 -0
- package/dist/forms/FieldDescription/index.js +38 -0
- package/dist/forms/FieldDescription/types.js +6 -0
- package/dist/forms/FieldPathProvider/index.js +44 -0
- package/dist/forms/FieldPathProvider/types.js +6 -0
- package/dist/forms/Form/buildFieldSchemaMap.js +54 -0
- package/dist/forms/Form/buildInitialState.js +26 -0
- package/dist/forms/Form/context.js +84 -0
- package/dist/forms/Form/createNestedFieldPath.js +25 -0
- package/dist/forms/Form/errorMessages.js +15 -0
- package/dist/forms/Form/fieldReducer.js +286 -0
- package/dist/forms/Form/getDataByPath.js +29 -0
- package/dist/forms/Form/getSiblingData.js +50 -0
- package/dist/forms/Form/index.js +565 -0
- package/dist/forms/Form/initContextState.js +45 -0
- package/dist/forms/Form/mergeServerFormState.js +45 -0
- package/dist/forms/Form/reduceFieldsToValues.js +34 -0
- package/dist/forms/Form/rows.js +53 -0
- package/dist/forms/Form/types.js +6 -0
- package/dist/forms/Label/index.js +36 -0
- package/dist/forms/NullifyField/index.js +103 -0
- package/dist/forms/RenderFields/RenderField.js +30 -0
- package/dist/forms/RenderFields/index.js +66 -0
- package/dist/forms/RenderFields/types.js +6 -0
- package/dist/forms/RowLabel/index.js +50 -0
- package/dist/forms/RowLabel/types.js +21 -0
- package/dist/forms/Submit/index.js +75 -0
- package/dist/forms/WatchChildErrors/buildPathSegments.js +37 -0
- package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js +35 -0
- package/dist/forms/WatchChildErrors/getNestedFieldState.js +28 -0
- package/dist/forms/WatchChildErrors/index.js +41 -0
- package/dist/forms/fields/Array/ArrayRow.js +87 -0
- package/dist/forms/fields/Array/index.js +305 -0
- package/dist/forms/fields/Array/types.js +6 -0
- package/dist/forms/fields/Blocks/BlockRow.js +101 -0
- package/dist/forms/fields/Blocks/BlocksDrawer/BlockSearch/index.js +37 -0
- package/dist/forms/fields/Blocks/BlocksDrawer/index.js +134 -0
- package/dist/forms/fields/Blocks/BlocksDrawer/types.js +6 -0
- package/dist/forms/fields/Blocks/RowActions.js +52 -0
- package/dist/forms/fields/Blocks/SectionTitle/index.js +54 -0
- package/dist/forms/fields/Blocks/SectionTitle/types.js +6 -0
- package/dist/forms/fields/Blocks/index.js +317 -0
- package/dist/forms/fields/Blocks/types.js +6 -0
- package/dist/forms/fields/Checkbox/Input.js +56 -0
- package/dist/forms/fields/Checkbox/index.js +134 -0
- package/dist/forms/fields/Checkbox/types.js +6 -0
- package/dist/forms/fields/Code/index.js +115 -0
- package/dist/forms/fields/Code/types.js +6 -0
- package/dist/forms/fields/Collapsible/index.js +169 -0
- package/dist/forms/fields/Collapsible/types.js +6 -0
- package/dist/forms/fields/ConfirmPassword/index.js +112 -0
- package/dist/forms/fields/ConfirmPassword/types.js +6 -0
- package/dist/forms/fields/DateTime/index.js +115 -0
- package/dist/forms/fields/DateTime/types.js +6 -0
- package/dist/forms/fields/Email/index.js +121 -0
- package/dist/forms/fields/Email/types.js +6 -0
- package/dist/forms/fields/Group/index.js +127 -0
- package/dist/forms/fields/Group/provider.js +74 -0
- package/dist/forms/fields/Group/types.js +6 -0
- package/dist/forms/fields/HiddenInput/index.js +88 -0
- package/dist/forms/fields/HiddenInput/types.js +6 -0
- package/dist/forms/fields/JSON/index.js +137 -0
- package/dist/forms/fields/JSON/types.js +6 -0
- package/dist/forms/fields/Number/index.js +212 -0
- package/dist/forms/fields/Number/types.js +6 -0
- package/dist/forms/fields/Password/index.js +116 -0
- package/dist/forms/fields/Password/types.js +6 -0
- package/dist/forms/fields/Point/index.js +147 -0
- package/dist/forms/fields/Point/types.js +6 -0
- package/dist/forms/fields/RadioGroup/Radio/index.js +45 -0
- package/dist/forms/fields/RadioGroup/index.js +147 -0
- package/dist/forms/fields/RadioGroup/types.js +6 -0
- package/dist/forms/fields/Relationship/AddNew/index.js +216 -0
- package/dist/forms/fields/Relationship/AddNew/types.js +6 -0
- package/dist/forms/fields/Relationship/AddNew/useRelatedCollections.js +27 -0
- package/dist/forms/fields/Relationship/createRelationMap.js +59 -0
- package/dist/forms/fields/Relationship/findOptionsByValue.js +45 -0
- package/dist/forms/fields/Relationship/index.js +509 -0
- package/dist/forms/fields/Relationship/optionsReducer.js +126 -0
- package/dist/forms/fields/Relationship/select-components/MultiValueLabel/index.js +109 -0
- package/dist/forms/fields/Relationship/select-components/SingleValue/index.js +108 -0
- package/dist/forms/fields/Relationship/types.js +6 -0
- package/dist/forms/fields/RichText/index.js +16 -0
- package/dist/forms/fields/RichText/types.js +6 -0
- package/dist/forms/fields/Row/index.js +42 -0
- package/dist/forms/fields/Row/provider.js +74 -0
- package/dist/forms/fields/Row/types.js +6 -0
- package/dist/forms/fields/Select/index.js +183 -0
- package/dist/forms/fields/Select/types.js +6 -0
- package/dist/forms/fields/Tabs/Tab/index.js +85 -0
- package/dist/forms/fields/Tabs/index.js +167 -0
- package/dist/forms/fields/Tabs/provider.js +74 -0
- package/dist/forms/fields/Tabs/types.js +6 -0
- package/dist/forms/fields/Text/index.js +194 -0
- package/dist/forms/fields/Text/types.js +6 -0
- package/dist/forms/fields/Textarea/index.js +133 -0
- package/dist/forms/fields/Textarea/types.js +6 -0
- package/dist/forms/fields/UI/index.js +16 -0
- package/dist/forms/fields/Upload/Input.js +3 -0
- package/dist/forms/fields/Upload/index.js +210 -0
- package/dist/forms/fields/Upload/types.js +6 -0
- package/dist/forms/fields/getFilterOptionsQuery.js +39 -0
- package/dist/forms/fields/index.js +67 -0
- package/dist/forms/fields/shared.js +29 -0
- package/dist/forms/useField/index.js +169 -0
- package/dist/forms/useField/types.js +6 -0
- package/dist/forms/utilities/buildStateFromSchema/addFieldStatePromise.js +335 -0
- package/dist/forms/utilities/buildStateFromSchema/buildStateFromSchema.spec.js +76 -0
- package/dist/forms/utilities/buildStateFromSchema/index.js +35 -0
- package/dist/forms/utilities/buildStateFromSchema/iterateFields.js +48 -0
- package/dist/forms/withCondition/WatchCondition.js +66 -0
- package/dist/forms/withCondition/index.js +33 -0
- package/dist/graphics/Account/Default/index.js +43 -0
- package/dist/graphics/Account/Gravatar/index.js +42 -0
- package/dist/graphics/Account/index.js +50 -0
- package/dist/graphics/DefaultBlockImage/index.js +84 -0
- package/dist/graphics/ExternalLink/index.js +34 -0
- package/dist/graphics/File/index.js +36 -0
- package/dist/graphics/Icon/index.js +64 -0
- package/dist/graphics/Logo/index.js +60 -0
- package/dist/graphics/Search/index.js +42 -0
- package/dist/hooks/useAdminThumbnail.js +17 -0
- package/dist/hooks/useDebounce.js +31 -0
- package/dist/hooks/useDebouncedCallback.js +29 -0
- package/dist/hooks/useDebouncedEffect.js +32 -0
- package/dist/hooks/useDelay.js +82 -0
- package/dist/hooks/useDelayedRender.js +97 -0
- package/dist/hooks/useHotkey.js +129 -0
- package/dist/hooks/useIntersect.js +39 -0
- package/dist/hooks/usePayloadAPI.js +94 -0
- package/dist/hooks/useResize.js +59 -0
- package/dist/hooks/useThrottledEffect.js +31 -0
- package/dist/hooks/useThumbnail.js +57 -0
- package/dist/hooks/useUseAsTitle.js +19 -0
- package/dist/icons/Calendar/index.js +48 -0
- package/dist/icons/Check/index.js +34 -0
- package/dist/icons/Chevron/index.js +36 -0
- package/dist/icons/CloseMenu/index.js +39 -0
- package/dist/icons/CodeBlock/index.js +32 -0
- package/dist/icons/Copy/index.js +33 -0
- package/dist/icons/DragHandle/index.js +57 -0
- package/dist/icons/Edit/index.js +37 -0
- package/dist/icons/Line/index.js +30 -0
- package/dist/icons/Link/index.js +33 -0
- package/dist/icons/LogOut/index.js +37 -0
- package/dist/icons/Menu/index.js +45 -0
- package/dist/icons/MinimizeMaximize/index.js +87 -0
- package/dist/icons/More/index.js +42 -0
- package/dist/icons/Plus/index.js +36 -0
- package/dist/icons/Search/index.js +36 -0
- package/dist/icons/Swap/index.js +43 -0
- package/dist/icons/X/index.js +41 -0
- package/dist/index.js +20 -0
- package/dist/providers/ActionsProvider/index.js +89 -0
- package/dist/providers/Auth/HydrateClientUser/index.js +28 -0
- package/dist/providers/Auth/index.js +373 -0
- package/dist/providers/Auth/types.js +6 -0
- package/dist/providers/ClientFunction/index.js +65 -0
- package/dist/providers/ComponentMapProvider/index.js +98 -0
- package/dist/providers/Config/index.js +70 -0
- package/dist/providers/CustomProvider/index.js +38 -0
- package/dist/providers/DocumentEvents/index.js +77 -0
- package/dist/providers/DocumentEvents/types.js +6 -0
- package/dist/providers/DocumentInfo/SetDocumentInfo/index.js +34 -0
- package/dist/providers/DocumentInfo/index.js +353 -0
- package/dist/providers/DocumentInfo/types.js +6 -0
- package/dist/providers/EditDepth/index.js +71 -0
- package/dist/providers/FormQueryParams/index.js +77 -0
- package/dist/providers/ListInfo/index.js +78 -0
- package/dist/providers/ListInfo/types.js +6 -0
- package/dist/providers/Locale/index.js +122 -0
- package/dist/providers/OperationProvider/index.js +71 -0
- package/dist/providers/Params/index.js +72 -0
- package/dist/providers/Portal/index.js +20 -0
- package/dist/providers/Preferences/index.js +184 -0
- package/dist/providers/Root/index.js +103 -0
- package/dist/providers/SearchParams/index.js +119 -0
- package/dist/providers/SearchParams/types.js +6 -0
- package/dist/providers/SelectionProvider/index.js +218 -0
- package/dist/providers/Theme/index.js +123 -0
- package/dist/providers/Theme/types.js +6 -0
- package/dist/providers/Theme/utilities.js +35 -0
- package/dist/providers/Translation/index.js +92 -0
- package/dist/templates/Default/NavHamburger/index.js +28 -0
- package/dist/templates/Default/Wrapper/index.js +32 -0
- package/dist/templates/Default/index.js +88 -0
- package/dist/templates/Default/types.js +6 -0
- package/dist/templates/Minimal/index.js +34 -0
- package/dist/templates/Minimal/types.js +6 -0
- package/dist/utilities/api.js +98 -0
- package/dist/utilities/arraysHaveSameStrings.js +28 -0
- package/dist/utilities/buildComponentMap/index.js +101 -0
- package/dist/utilities/buildComponentMap/mapFields.js +318 -0
- package/dist/utilities/buildComponentMap/types.js +6 -0
- package/dist/utilities/buildFieldSchemaMap/index.js +36 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +94 -0
- package/dist/utilities/buildFieldSchemaMap/types.js +6 -0
- package/dist/utilities/canUseDOM.js +13 -0
- package/dist/utilities/findLocaleFromCode.js +18 -0
- package/dist/utilities/formatDate/getSupportedDateLocale.js +21 -0
- package/dist/utilities/formatDate/index.js +78 -0
- package/dist/utilities/formatDocTitle.js +33 -0
- package/dist/utilities/formatFields.js +14 -0
- package/dist/utilities/getFormState.js +28 -0
- package/dist/utilities/getOffsetTop.js +26 -0
- package/dist/utilities/getRequestLanguage.js +17 -0
- package/dist/utilities/getSupportedMonacoLocale.js +26 -0
- package/dist/utilities/groupNavItems.js +61 -0
- package/dist/utilities/scrollToID.js +22 -0
- package/dist/utilities/setsAreEqual.js +17 -0
- package/dist/utilities/withMergedProps/index.js +27 -0
- package/dist/views/Global/RenderCustomView.js +3 -0
- package/package.json +5 -5
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
AuthProvider: function() {
|
|
14
|
+
return AuthProvider;
|
|
15
|
+
},
|
|
16
|
+
useAuth: function() {
|
|
17
|
+
return useAuth;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const _modal = require("@faceless-ui/modal");
|
|
21
|
+
const _navigation = require("next/navigation");
|
|
22
|
+
const _qs = /*#__PURE__*/ _interop_require_default(require("qs"));
|
|
23
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
24
|
+
const _reacttoastify = require("react-toastify");
|
|
25
|
+
const _useDebounce = /*#__PURE__*/ _interop_require_default(require("../../hooks/useDebounce"));
|
|
26
|
+
const _Translation = require("../../providers/Translation");
|
|
27
|
+
const _api = require("../../utilities/api");
|
|
28
|
+
const _Config = require("../Config");
|
|
29
|
+
const _SearchParams = require("../SearchParams");
|
|
30
|
+
function _interop_require_default(obj) {
|
|
31
|
+
return obj && obj.__esModule ? obj : {
|
|
32
|
+
default: obj
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
36
|
+
if (typeof WeakMap !== "function") return null;
|
|
37
|
+
var cacheBabelInterop = new WeakMap();
|
|
38
|
+
var cacheNodeInterop = new WeakMap();
|
|
39
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
40
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
41
|
+
})(nodeInterop);
|
|
42
|
+
}
|
|
43
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
44
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
45
|
+
return obj;
|
|
46
|
+
}
|
|
47
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
48
|
+
return {
|
|
49
|
+
default: obj
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
53
|
+
if (cache && cache.has(obj)) {
|
|
54
|
+
return cache.get(obj);
|
|
55
|
+
}
|
|
56
|
+
var newObj = {
|
|
57
|
+
__proto__: null
|
|
58
|
+
};
|
|
59
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
60
|
+
for(var key in obj){
|
|
61
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
62
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
63
|
+
if (desc && (desc.get || desc.set)) {
|
|
64
|
+
Object.defineProperty(newObj, key, desc);
|
|
65
|
+
} else {
|
|
66
|
+
newObj[key] = obj[key];
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
newObj.default = obj;
|
|
71
|
+
if (cache) {
|
|
72
|
+
cache.set(obj, newObj);
|
|
73
|
+
}
|
|
74
|
+
return newObj;
|
|
75
|
+
}
|
|
76
|
+
// import { useLocale } from '../Locale'
|
|
77
|
+
const Context = /*#__PURE__*/ (0, _react.createContext)({});
|
|
78
|
+
const maxTimeoutTime = 2147483647;
|
|
79
|
+
const AuthProvider = ({ children })=>{
|
|
80
|
+
const { searchParams } = (0, _SearchParams.useSearchParams)();
|
|
81
|
+
const [user, setUser] = (0, _react.useState)();
|
|
82
|
+
const [tokenInMemory, setTokenInMemory] = (0, _react.useState)();
|
|
83
|
+
const [tokenExpiration, setTokenExpiration] = (0, _react.useState)();
|
|
84
|
+
const pathname = (0, _navigation.usePathname)();
|
|
85
|
+
const { push } = (0, _navigation.useRouter)();
|
|
86
|
+
// const { code } = useLocale()
|
|
87
|
+
const code = 'en' // TODO: re-enable i18n asap
|
|
88
|
+
;
|
|
89
|
+
const config = (0, _Config.useConfig)();
|
|
90
|
+
const { admin: { autoLogin, inactivityRoute: logoutInactivityRoute, user: userSlug }, routes: { admin, api }, serverURL } = config;
|
|
91
|
+
const [permissions, setPermissions] = (0, _react.useState)();
|
|
92
|
+
const { i18n } = (0, _Translation.useTranslation)();
|
|
93
|
+
const { closeAllModals, openModal } = (0, _modal.useModal)();
|
|
94
|
+
const [lastLocationChange, setLastLocationChange] = (0, _react.useState)(0);
|
|
95
|
+
const debouncedLocationChange = (0, _useDebounce.default)(lastLocationChange, 10000);
|
|
96
|
+
const id = user?.id;
|
|
97
|
+
const redirectToInactivityRoute = (0, _react.useCallback)(()=>{
|
|
98
|
+
if (window.location.pathname.startsWith(admin)) {
|
|
99
|
+
const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname.replace(admin, ''))}`;
|
|
100
|
+
push(`${admin}${logoutInactivityRoute}${redirectParam}`);
|
|
101
|
+
} else {
|
|
102
|
+
push(`${admin}${logoutInactivityRoute}`);
|
|
103
|
+
}
|
|
104
|
+
closeAllModals();
|
|
105
|
+
}, [
|
|
106
|
+
push,
|
|
107
|
+
admin,
|
|
108
|
+
logoutInactivityRoute,
|
|
109
|
+
closeAllModals
|
|
110
|
+
]);
|
|
111
|
+
const revokeTokenAndExpire = (0, _react.useCallback)(()=>{
|
|
112
|
+
setTokenInMemory(undefined);
|
|
113
|
+
setTokenExpiration(undefined);
|
|
114
|
+
}, []);
|
|
115
|
+
const setTokenAndExpiration = (0, _react.useCallback)((json)=>{
|
|
116
|
+
const token = json?.token || json?.refreshedToken;
|
|
117
|
+
if (token && json?.exp) {
|
|
118
|
+
setTokenInMemory(token);
|
|
119
|
+
setTokenExpiration(json.exp);
|
|
120
|
+
} else {
|
|
121
|
+
revokeTokenAndExpire();
|
|
122
|
+
}
|
|
123
|
+
}, [
|
|
124
|
+
revokeTokenAndExpire
|
|
125
|
+
]);
|
|
126
|
+
const refreshCookie = (0, _react.useCallback)((forceRefresh)=>{
|
|
127
|
+
const now = Math.round(new Date().getTime() / 1000);
|
|
128
|
+
const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now;
|
|
129
|
+
if (forceRefresh || tokenExpiration && remainingTime < 120) {
|
|
130
|
+
setTimeout(async ()=>{
|
|
131
|
+
try {
|
|
132
|
+
const request = await _api.requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {
|
|
133
|
+
headers: {
|
|
134
|
+
'Accept-Language': i18n.language
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
if (request.status === 200) {
|
|
138
|
+
const json = await request.json();
|
|
139
|
+
setUser(json.user);
|
|
140
|
+
setTokenAndExpiration(json);
|
|
141
|
+
} else {
|
|
142
|
+
setUser(null);
|
|
143
|
+
redirectToInactivityRoute();
|
|
144
|
+
}
|
|
145
|
+
} catch (e) {
|
|
146
|
+
_reacttoastify.toast.error(e.message);
|
|
147
|
+
}
|
|
148
|
+
}, 1000);
|
|
149
|
+
}
|
|
150
|
+
}, [
|
|
151
|
+
tokenExpiration,
|
|
152
|
+
serverURL,
|
|
153
|
+
api,
|
|
154
|
+
userSlug,
|
|
155
|
+
i18n,
|
|
156
|
+
redirectToInactivityRoute,
|
|
157
|
+
setTokenAndExpiration
|
|
158
|
+
]);
|
|
159
|
+
const refreshCookieAsync = (0, _react.useCallback)(async (skipSetUser)=>{
|
|
160
|
+
try {
|
|
161
|
+
const request = await _api.requests.post(`${serverURL}${api}/${userSlug}/refresh-token`, {
|
|
162
|
+
headers: {
|
|
163
|
+
'Accept-Language': i18n.language
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
if (request.status === 200) {
|
|
167
|
+
const json = await request.json();
|
|
168
|
+
if (!skipSetUser) {
|
|
169
|
+
setUser(json.user);
|
|
170
|
+
setTokenAndExpiration(json);
|
|
171
|
+
}
|
|
172
|
+
return json.user;
|
|
173
|
+
}
|
|
174
|
+
setUser(null);
|
|
175
|
+
redirectToInactivityRoute();
|
|
176
|
+
return null;
|
|
177
|
+
} catch (e) {
|
|
178
|
+
_reacttoastify.toast.error(`Refreshing token failed: ${e.message}`);
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}, [
|
|
182
|
+
serverURL,
|
|
183
|
+
api,
|
|
184
|
+
userSlug,
|
|
185
|
+
i18n,
|
|
186
|
+
redirectToInactivityRoute,
|
|
187
|
+
setTokenAndExpiration
|
|
188
|
+
]);
|
|
189
|
+
const logOut = (0, _react.useCallback)(()=>{
|
|
190
|
+
setUser(null);
|
|
191
|
+
revokeTokenAndExpire();
|
|
192
|
+
try {
|
|
193
|
+
_api.requests.post(`${serverURL}${api}/${userSlug}/logout`);
|
|
194
|
+
} catch (e) {
|
|
195
|
+
_reacttoastify.toast.error(`Logging out failed: ${e.message}`);
|
|
196
|
+
}
|
|
197
|
+
}, [
|
|
198
|
+
serverURL,
|
|
199
|
+
api,
|
|
200
|
+
userSlug,
|
|
201
|
+
revokeTokenAndExpire
|
|
202
|
+
]);
|
|
203
|
+
const refreshPermissions = (0, _react.useCallback)(async ()=>{
|
|
204
|
+
const params = {
|
|
205
|
+
locale: code
|
|
206
|
+
};
|
|
207
|
+
try {
|
|
208
|
+
const request = await _api.requests.get(`${serverURL}${api}/access?${_qs.default.stringify(params)}`, {
|
|
209
|
+
headers: {
|
|
210
|
+
'Accept-Language': i18n.language
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
if (request.status === 200) {
|
|
214
|
+
const json = await request.json();
|
|
215
|
+
setPermissions(json);
|
|
216
|
+
} else {
|
|
217
|
+
throw new Error(`Fetching permissions failed with status code ${request.status}`);
|
|
218
|
+
}
|
|
219
|
+
} catch (e) {
|
|
220
|
+
_reacttoastify.toast.error(`Refreshing permissions failed: ${e.message}`);
|
|
221
|
+
}
|
|
222
|
+
}, [
|
|
223
|
+
serverURL,
|
|
224
|
+
api,
|
|
225
|
+
i18n,
|
|
226
|
+
code
|
|
227
|
+
]);
|
|
228
|
+
const fetchFullUser = _react.default.useCallback(async ()=>{
|
|
229
|
+
try {
|
|
230
|
+
const request = await _api.requests.get(`${serverURL}${api}/${userSlug}/me`, {
|
|
231
|
+
headers: {
|
|
232
|
+
'Accept-Language': i18n.language
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
if (request.status === 200) {
|
|
236
|
+
const json = await request.json();
|
|
237
|
+
if (json?.user) {
|
|
238
|
+
setUser(json.user);
|
|
239
|
+
if (json?.token) {
|
|
240
|
+
setTokenAndExpiration(json);
|
|
241
|
+
}
|
|
242
|
+
} else if (autoLogin && autoLogin.prefillOnly !== true) {
|
|
243
|
+
// auto log-in with the provided autoLogin credentials. This is used in dev mode
|
|
244
|
+
// so you don't have to log in over and over again
|
|
245
|
+
const autoLoginResult = await _api.requests.post(`${serverURL}${api}/${userSlug}/login`, {
|
|
246
|
+
body: JSON.stringify({
|
|
247
|
+
email: autoLogin.email,
|
|
248
|
+
password: autoLogin.password
|
|
249
|
+
}),
|
|
250
|
+
headers: {
|
|
251
|
+
'Accept-Language': i18n.language,
|
|
252
|
+
'Content-Type': 'application/json'
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
if (autoLoginResult.status === 200) {
|
|
256
|
+
const autoLoginJson = await autoLoginResult.json();
|
|
257
|
+
setUser(autoLoginJson.user);
|
|
258
|
+
if (autoLoginJson?.token) {
|
|
259
|
+
setTokenAndExpiration(autoLoginJson);
|
|
260
|
+
}
|
|
261
|
+
push(typeof searchParams['redirect'] === 'string' ? searchParams['redirect'] : admin);
|
|
262
|
+
} else {
|
|
263
|
+
setUser(null);
|
|
264
|
+
revokeTokenAndExpire();
|
|
265
|
+
}
|
|
266
|
+
} else {
|
|
267
|
+
setUser(null);
|
|
268
|
+
revokeTokenAndExpire();
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
} catch (e) {
|
|
272
|
+
_reacttoastify.toast.error(`Fetching user failed: ${e.message}`);
|
|
273
|
+
}
|
|
274
|
+
}, [
|
|
275
|
+
serverURL,
|
|
276
|
+
api,
|
|
277
|
+
userSlug,
|
|
278
|
+
i18n.language,
|
|
279
|
+
autoLogin,
|
|
280
|
+
setTokenAndExpiration,
|
|
281
|
+
push,
|
|
282
|
+
searchParams,
|
|
283
|
+
admin,
|
|
284
|
+
revokeTokenAndExpire
|
|
285
|
+
]);
|
|
286
|
+
// On mount, get user and set
|
|
287
|
+
(0, _react.useEffect)(()=>{
|
|
288
|
+
fetchFullUser();
|
|
289
|
+
}, [
|
|
290
|
+
fetchFullUser
|
|
291
|
+
]);
|
|
292
|
+
// When location changes, refresh cookie
|
|
293
|
+
(0, _react.useEffect)(()=>{
|
|
294
|
+
if (id) {
|
|
295
|
+
refreshCookie();
|
|
296
|
+
}
|
|
297
|
+
}, [
|
|
298
|
+
debouncedLocationChange,
|
|
299
|
+
refreshCookie,
|
|
300
|
+
id
|
|
301
|
+
]);
|
|
302
|
+
(0, _react.useEffect)(()=>{
|
|
303
|
+
setLastLocationChange(Date.now());
|
|
304
|
+
}, [
|
|
305
|
+
pathname
|
|
306
|
+
]);
|
|
307
|
+
// When user changes, get new access
|
|
308
|
+
(0, _react.useEffect)(()=>{
|
|
309
|
+
if (id) {
|
|
310
|
+
refreshPermissions();
|
|
311
|
+
}
|
|
312
|
+
}, [
|
|
313
|
+
i18n,
|
|
314
|
+
id,
|
|
315
|
+
api,
|
|
316
|
+
serverURL,
|
|
317
|
+
refreshPermissions
|
|
318
|
+
]);
|
|
319
|
+
(0, _react.useEffect)(()=>{
|
|
320
|
+
let reminder;
|
|
321
|
+
const now = Math.round(new Date().getTime() / 1000);
|
|
322
|
+
const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0;
|
|
323
|
+
if (remainingTime > 0) {
|
|
324
|
+
reminder = setTimeout(()=>{
|
|
325
|
+
openModal('stay-logged-in');
|
|
326
|
+
}, Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime)));
|
|
327
|
+
}
|
|
328
|
+
return ()=>{
|
|
329
|
+
if (reminder) clearTimeout(reminder);
|
|
330
|
+
};
|
|
331
|
+
}, [
|
|
332
|
+
tokenExpiration,
|
|
333
|
+
openModal
|
|
334
|
+
]);
|
|
335
|
+
(0, _react.useEffect)(()=>{
|
|
336
|
+
let forceLogOut;
|
|
337
|
+
const now = Math.round(new Date().getTime() / 1000);
|
|
338
|
+
const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0;
|
|
339
|
+
if (remainingTime > 0) {
|
|
340
|
+
forceLogOut = setTimeout(()=>{
|
|
341
|
+
setUser(null);
|
|
342
|
+
revokeTokenAndExpire();
|
|
343
|
+
redirectToInactivityRoute();
|
|
344
|
+
}, Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0));
|
|
345
|
+
}
|
|
346
|
+
return ()=>{
|
|
347
|
+
if (forceLogOut) clearTimeout(forceLogOut);
|
|
348
|
+
};
|
|
349
|
+
}, [
|
|
350
|
+
tokenExpiration,
|
|
351
|
+
closeAllModals,
|
|
352
|
+
i18n,
|
|
353
|
+
redirectToInactivityRoute,
|
|
354
|
+
revokeTokenAndExpire
|
|
355
|
+
]);
|
|
356
|
+
return /*#__PURE__*/ _react.default.createElement(Context.Provider, {
|
|
357
|
+
value: {
|
|
358
|
+
fetchFullUser,
|
|
359
|
+
logOut,
|
|
360
|
+
permissions,
|
|
361
|
+
refreshCookie,
|
|
362
|
+
refreshCookieAsync,
|
|
363
|
+
refreshPermissions,
|
|
364
|
+
setPermissions,
|
|
365
|
+
setUser,
|
|
366
|
+
token: tokenInMemory,
|
|
367
|
+
user
|
|
368
|
+
}
|
|
369
|
+
}, children);
|
|
370
|
+
};
|
|
371
|
+
const useAuth = ()=>(0, _react.useContext)(Context);
|
|
372
|
+
|
|
373
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQXV0aC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBjbGllbnQnXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25zLCBVc2VyIH0gZnJvbSAncGF5bG9hZC9hdXRoJ1xuXG5pbXBvcnQgeyB1c2VNb2RhbCB9IGZyb20gJ0BmYWNlbGVzcy11aS9tb2RhbCdcbmltcG9ydCB7IHVzZVBhdGhuYW1lLCB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgcXMgZnJvbSAncXMnXG5pbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHRvYXN0IH0gZnJvbSAncmVhY3QtdG9hc3RpZnknXG5cbmltcG9ydCB0eXBlIHsgQXV0aENvbnRleHQgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgdXNlRGVib3VuY2UgZnJvbSAnLi4vLi4vaG9va3MvdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9UcmFuc2xhdGlvbidcbmltcG9ydCB7IHJlcXVlc3RzIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2FwaSdcbmltcG9ydCB7IHVzZUNvbmZpZyB9IGZyb20gJy4uL0NvbmZpZydcbmltcG9ydCB7IHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJy4uL1NlYXJjaFBhcmFtcydcbi8vIGltcG9ydCB7IHVzZUxvY2FsZSB9IGZyb20gJy4uL0xvY2FsZSdcblxuY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoe30gYXMgQXV0aENvbnRleHQpXG5cbmNvbnN0IG1heFRpbWVvdXRUaW1lID0gMjE0NzQ4MzY0N1xuXG5leHBvcnQgY29uc3QgQXV0aFByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IHsgc2VhcmNoUGFyYW1zIH0gPSB1c2VTZWFyY2hQYXJhbXMoKVxuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxVc2VyIHwgbnVsbD4oKVxuICBjb25zdCBbdG9rZW5Jbk1lbW9yeSwgc2V0VG9rZW5Jbk1lbW9yeV0gPSB1c2VTdGF0ZTxzdHJpbmc+KClcbiAgY29uc3QgW3Rva2VuRXhwaXJhdGlvbiwgc2V0VG9rZW5FeHBpcmF0aW9uXSA9IHVzZVN0YXRlPG51bWJlcj4oKVxuICBjb25zdCBwYXRobmFtZSA9IHVzZVBhdGhuYW1lKClcbiAgY29uc3QgeyBwdXNoIH0gPSB1c2VSb3V0ZXIoKVxuICAvLyBjb25zdCB7IGNvZGUgfSA9IHVzZUxvY2FsZSgpXG4gIGNvbnN0IGNvZGUgPSAnZW4nIC8vIFRPRE86IHJlLWVuYWJsZSBpMThuIGFzYXBcblxuICBjb25zdCBjb25maWcgPSB1c2VDb25maWcoKVxuXG4gIGNvbnN0IHtcbiAgICBhZG1pbjogeyBhdXRvTG9naW4sIGluYWN0aXZpdHlSb3V0ZTogbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCB1c2VyOiB1c2VyU2x1ZyB9LFxuICAgIHJvdXRlczogeyBhZG1pbiwgYXBpIH0sXG4gICAgc2VydmVyVVJMLFxuICB9ID0gY29uZmlnXG5cbiAgY29uc3QgW3Blcm1pc3Npb25zLCBzZXRQZXJtaXNzaW9uc10gPSB1c2VTdGF0ZTxQZXJtaXNzaW9ucz4oKVxuXG4gIGNvbnN0IHsgaTE4biB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCB7IGNsb3NlQWxsTW9kYWxzLCBvcGVuTW9kYWwgfSA9IHVzZU1vZGFsKClcbiAgY29uc3QgW2xhc3RMb2NhdGlvbkNoYW5nZSwgc2V0TGFzdExvY2F0aW9uQ2hhbmdlXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IGRlYm91bmNlZExvY2F0aW9uQ2hhbmdlID0gdXNlRGVib3VuY2UobGFzdExvY2F0aW9uQ2hhbmdlLCAxMDAwMClcblxuICBjb25zdCBpZCA9IHVzZXI/LmlkXG5cbiAgY29uc3QgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnN0YXJ0c1dpdGgoYWRtaW4pKSB7XG4gICAgICBjb25zdCByZWRpcmVjdFBhcmFtID0gYD9yZWRpcmVjdD0ke2VuY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLnJlcGxhY2UoYWRtaW4sICcnKSxcbiAgICAgICl9YFxuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX0ke3JlZGlyZWN0UGFyYW19YClcbiAgICB9IGVsc2Uge1xuICAgICAgcHVzaChgJHthZG1pbn0ke2xvZ291dEluYWN0aXZpdHlSb3V0ZX1gKVxuICAgIH1cbiAgICBjbG9zZUFsbE1vZGFscygpXG4gIH0sIFtwdXNoLCBhZG1pbiwgbG9nb3V0SW5hY3Rpdml0eVJvdXRlLCBjbG9zZUFsbE1vZGFsc10pXG5cbiAgY29uc3QgcmV2b2tlVG9rZW5BbmRFeHBpcmUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW5Jbk1lbW9yeSh1bmRlZmluZWQpXG4gICAgc2V0VG9rZW5FeHBpcmF0aW9uKHVuZGVmaW5lZClcbiAgfSwgW10pXG5cbiAgY29uc3Qgc2V0VG9rZW5BbmRFeHBpcmF0aW9uID0gdXNlQ2FsbGJhY2soXG4gICAgKGpzb24pID0+IHtcbiAgICAgIGNvbnN0IHRva2VuID0ganNvbj8udG9rZW4gfHwganNvbj8ucmVmcmVzaGVkVG9rZW5cbiAgICAgIGlmICh0b2tlbiAmJiBqc29uPy5leHApIHtcbiAgICAgICAgc2V0VG9rZW5Jbk1lbW9yeSh0b2tlbilcbiAgICAgICAgc2V0VG9rZW5FeHBpcmF0aW9uKGpzb24uZXhwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Jldm9rZVRva2VuQW5kRXhwaXJlXSxcbiAgKVxuXG4gIGNvbnN0IHJlZnJlc2hDb29raWUgPSB1c2VDYWxsYmFjayhcbiAgICAoZm9yY2VSZWZyZXNoPzogYm9vbGVhbikgPT4ge1xuICAgICAgY29uc3Qgbm93ID0gTWF0aC5yb3VuZChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDApXG4gICAgICBjb25zdCByZW1haW5pbmdUaW1lID0gKHR5cGVvZiB0b2tlbkV4cGlyYXRpb24gPT09ICdudW1iZXInID8gdG9rZW5FeHBpcmF0aW9uIDogMCkgLSBub3dcblxuICAgICAgaWYgKGZvcmNlUmVmcmVzaCB8fCAodG9rZW5FeHBpcmF0aW9uICYmIHJlbWFpbmluZ1RpbWUgPCAxMjApKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L3JlZnJlc2gtdG9rZW5gLCB7XG4gICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuICAgICAgICAgICAgICBzZXRVc2VyKGpzb24udXNlcilcbiAgICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgICAgIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRvYXN0LmVycm9yKGUubWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMDApXG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICB0b2tlbkV4cGlyYXRpb24sXG4gICAgICBzZXJ2ZXJVUkwsXG4gICAgICBhcGksXG4gICAgICB1c2VyU2x1ZyxcbiAgICAgIGkxOG4sXG4gICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlLFxuICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uLFxuICAgIF0sXG4gIClcblxuICBjb25zdCByZWZyZXNoQ29va2llQXN5bmMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoc2tpcFNldFVzZXI/OiBib29sZWFuKTogUHJvbWlzZTxVc2VyPiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L3JlZnJlc2gtdG9rZW5gLCB7XG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuICAgICAgICAgIGlmICghc2tpcFNldFVzZXIpIHtcbiAgICAgICAgICAgIHNldFVzZXIoanNvbi51c2VyKVxuICAgICAgICAgICAgc2V0VG9rZW5BbmRFeHBpcmF0aW9uKGpzb24pXG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBqc29uLnVzZXJcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgcmVkaXJlY3RUb0luYWN0aXZpdHlSb3V0ZSgpXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRvYXN0LmVycm9yKGBSZWZyZXNoaW5nIHRva2VuIGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXJ2ZXJVUkwsIGFwaSwgdXNlclNsdWcsIGkxOG4sIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsIHNldFRva2VuQW5kRXhwaXJhdGlvbl0sXG4gIClcblxuICBjb25zdCBsb2dPdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VXNlcihudWxsKVxuICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICB0cnkge1xuICAgICAgcmVxdWVzdHMucG9zdChgJHtzZXJ2ZXJVUkx9JHthcGl9LyR7dXNlclNsdWd9L2xvZ291dGApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYExvZ2dpbmcgb3V0IGZhaWxlZDogJHtlLm1lc3NhZ2V9YClcbiAgICB9XG4gIH0sIFtzZXJ2ZXJVUkwsIGFwaSwgdXNlclNsdWcsIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICBjb25zdCByZWZyZXNoUGVybWlzc2lvbnMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgbG9jYWxlOiBjb2RlLFxuICAgIH1cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHJlcXVlc3RzLmdldChgJHtzZXJ2ZXJVUkx9JHthcGl9L2FjY2Vzcz8ke3FzLnN0cmluZ2lmeShwYXJhbXMpfWAsIHtcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBpMThuLmxhbmd1YWdlLFxuICAgICAgICB9LFxuICAgICAgfSlcblxuICAgICAgaWYgKHJlcXVlc3Quc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgY29uc3QganNvbjogUGVybWlzc2lvbnMgPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuICAgICAgICBzZXRQZXJtaXNzaW9ucyhqc29uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGZXRjaGluZyBwZXJtaXNzaW9ucyBmYWlsZWQgd2l0aCBzdGF0dXMgY29kZSAke3JlcXVlc3Quc3RhdHVzfWApXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdG9hc3QuZXJyb3IoYFJlZnJlc2hpbmcgcGVybWlzc2lvbnMgZmFpbGVkOiAke2UubWVzc2FnZX1gKVxuICAgIH1cbiAgfSwgW3NlcnZlclVSTCwgYXBpLCBpMThuLCBjb2RlXSlcblxuICBjb25zdCBmZXRjaEZ1bGxVc2VyID0gUmVhY3QudXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVxdWVzdHMuZ2V0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vbWVgLCB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogaTE4bi5sYW5ndWFnZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG5cbiAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyA9PT0gMjAwKSB7XG4gICAgICAgIGNvbnN0IGpzb24gPSBhd2FpdCByZXF1ZXN0Lmpzb24oKVxuXG4gICAgICAgIGlmIChqc29uPy51c2VyKSB7XG4gICAgICAgICAgc2V0VXNlcihqc29uLnVzZXIpXG4gICAgICAgICAgaWYgKGpzb24/LnRva2VuKSB7XG4gICAgICAgICAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24oanNvbilcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYXV0b0xvZ2luICYmIGF1dG9Mb2dpbi5wcmVmaWxsT25seSAhPT0gdHJ1ZSkge1xuICAgICAgICAgIC8vIGF1dG8gbG9nLWluIHdpdGggdGhlIHByb3ZpZGVkIGF1dG9Mb2dpbiBjcmVkZW50aWFscy4gVGhpcyBpcyB1c2VkIGluIGRldiBtb2RlXG4gICAgICAgICAgLy8gc28geW91IGRvbid0IGhhdmUgdG8gbG9nIGluIG92ZXIgYW5kIG92ZXIgYWdhaW5cbiAgICAgICAgICBjb25zdCBhdXRvTG9naW5SZXN1bHQgPSBhd2FpdCByZXF1ZXN0cy5wb3N0KGAke3NlcnZlclVSTH0ke2FwaX0vJHt1c2VyU2x1Z30vbG9naW5gLCB7XG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIGVtYWlsOiBhdXRvTG9naW4uZW1haWwsXG4gICAgICAgICAgICAgIHBhc3N3b3JkOiBhdXRvTG9naW4ucGFzc3dvcmQsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGkxOG4ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGF1dG9Mb2dpblJlc3VsdC5zdGF0dXMgPT09IDIwMCkge1xuICAgICAgICAgICAgY29uc3QgYXV0b0xvZ2luSnNvbiA9IGF3YWl0IGF1dG9Mb2dpblJlc3VsdC5qc29uKClcbiAgICAgICAgICAgIHNldFVzZXIoYXV0b0xvZ2luSnNvbi51c2VyKVxuICAgICAgICAgICAgaWYgKGF1dG9Mb2dpbkpzb24/LnRva2VuKSB7XG4gICAgICAgICAgICAgIHNldFRva2VuQW5kRXhwaXJhdGlvbihhdXRvTG9naW5Kc29uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHVzaCh0eXBlb2Ygc2VhcmNoUGFyYW1zWydyZWRpcmVjdCddID09PSAnc3RyaW5nJyA/IHNlYXJjaFBhcmFtc1sncmVkaXJlY3QnXSA6IGFkbWluKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRVc2VyKG51bGwpXG4gICAgICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldFVzZXIobnVsbClcbiAgICAgICAgICByZXZva2VUb2tlbkFuZEV4cGlyZSgpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdC5lcnJvcihgRmV0Y2hpbmcgdXNlciBmYWlsZWQ6ICR7ZS5tZXNzYWdlfWApXG4gICAgfVxuICB9LCBbXG4gICAgc2VydmVyVVJMLFxuICAgIGFwaSxcbiAgICB1c2VyU2x1ZyxcbiAgICBpMThuLmxhbmd1YWdlLFxuICAgIGF1dG9Mb2dpbixcbiAgICBzZXRUb2tlbkFuZEV4cGlyYXRpb24sXG4gICAgcHVzaCxcbiAgICBzZWFyY2hQYXJhbXMsXG4gICAgYWRtaW4sXG4gICAgcmV2b2tlVG9rZW5BbmRFeHBpcmUsXG4gIF0pXG5cbiAgLy8gT24gbW91bnQsIGdldCB1c2VyIGFuZCBzZXRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaEZ1bGxVc2VyKClcbiAgfSwgW2ZldGNoRnVsbFVzZXJdKVxuXG4gIC8vIFdoZW4gbG9jYXRpb24gY2hhbmdlcywgcmVmcmVzaCBjb29raWVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hDb29raWUoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZExvY2F0aW9uQ2hhbmdlLCByZWZyZXNoQ29va2llLCBpZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRMYXN0TG9jYXRpb25DaGFuZ2UoRGF0ZS5ub3coKSlcbiAgfSwgW3BhdGhuYW1lXSlcblxuICAvLyBXaGVuIHVzZXIgY2hhbmdlcywgZ2V0IG5ldyBhY2Nlc3NcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucygpXG4gICAgfVxuICB9LCBbaTE4biwgaWQsIGFwaSwgc2VydmVyVVJMLCByZWZyZXNoUGVybWlzc2lvbnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHJlbWluZGVyOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgcmVtaW5kZXIgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgb3Blbk1vZGFsKCdzdGF5LWxvZ2dlZC1pbicpXG4gICAgICAgIH0sXG4gICAgICAgIE1hdGgubWF4KE1hdGgubWluKChyZW1haW5pbmdUaW1lIC0gNjApICogMTAwMCwgbWF4VGltZW91dFRpbWUpKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlbWluZGVyKSBjbGVhclRpbWVvdXQocmVtaW5kZXIpXG4gICAgfVxuICB9LCBbdG9rZW5FeHBpcmF0aW9uLCBvcGVuTW9kYWxdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGZvcmNlTG9nT3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PlxuICAgIGNvbnN0IG5vdyA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKVxuICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSB0eXBlb2YgdG9rZW5FeHBpcmF0aW9uID09PSAnbnVtYmVyJyA/IHRva2VuRXhwaXJhdGlvbiAtIG5vdyA6IDBcblxuICAgIGlmIChyZW1haW5pbmdUaW1lID4gMCkge1xuICAgICAgZm9yY2VMb2dPdXQgPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgc2V0VXNlcihudWxsKVxuICAgICAgICAgIHJldm9rZVRva2VuQW5kRXhwaXJlKClcbiAgICAgICAgICByZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlKClcbiAgICAgICAgfSxcbiAgICAgICAgTWF0aC5tYXgoTWF0aC5taW4ocmVtYWluaW5nVGltZSAqIDEwMDAsIG1heFRpbWVvdXRUaW1lKSwgMCksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmb3JjZUxvZ091dCkgY2xlYXJUaW1lb3V0KGZvcmNlTG9nT3V0KVxuICAgIH1cbiAgfSwgW3Rva2VuRXhwaXJhdGlvbiwgY2xvc2VBbGxNb2RhbHMsIGkxOG4sIHJlZGlyZWN0VG9JbmFjdGl2aXR5Um91dGUsIHJldm9rZVRva2VuQW5kRXhwaXJlXSlcblxuICByZXR1cm4gKFxuICAgIDxDb250ZXh0LlByb3ZpZGVyXG4gICAgICB2YWx1ZT17e1xuICAgICAgICBmZXRjaEZ1bGxVc2VyLFxuICAgICAgICBsb2dPdXQsXG4gICAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgICByZWZyZXNoQ29va2llLFxuICAgICAgICByZWZyZXNoQ29va2llQXN5bmMsXG4gICAgICAgIHJlZnJlc2hQZXJtaXNzaW9ucyxcbiAgICAgICAgc2V0UGVybWlzc2lvbnMsXG4gICAgICAgIHNldFVzZXIsXG4gICAgICAgIHRva2VuOiB0b2tlbkluTWVtb3J5LFxuICAgICAgICB1c2VyLFxuICAgICAgfX1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Db250ZXh0LlByb3ZpZGVyPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VBdXRoID0gPFQgPSBVc2VyLD4oKTogQXV0aENvbnRleHQ8VD4gPT4gdXNlQ29udGV4dChDb250ZXh0KSBhcyBBdXRoQ29udGV4dDxUPlxuIl0sIm5hbWVzIjpbIkF1dGhQcm92aWRlciIsInVzZUF1dGgiLCJDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsIm1heFRpbWVvdXRUaW1lIiwiY2hpbGRyZW4iLCJzZWFyY2hQYXJhbXMiLCJ1c2VTZWFyY2hQYXJhbXMiLCJ1c2VyIiwic2V0VXNlciIsInVzZVN0YXRlIiwidG9rZW5Jbk1lbW9yeSIsInNldFRva2VuSW5NZW1vcnkiLCJ0b2tlbkV4cGlyYXRpb24iLCJzZXRUb2tlbkV4cGlyYXRpb24iLCJwYXRobmFtZSIsInVzZVBhdGhuYW1lIiwicHVzaCIsInVzZVJvdXRlciIsImNvZGUiLCJjb25maWciLCJ1c2VDb25maWciLCJhZG1pbiIsImF1dG9Mb2dpbiIsImluYWN0aXZpdHlSb3V0ZSIsImxvZ291dEluYWN0aXZpdHlSb3V0ZSIsInVzZXJTbHVnIiwicm91dGVzIiwiYXBpIiwic2VydmVyVVJMIiwicGVybWlzc2lvbnMiLCJzZXRQZXJtaXNzaW9ucyIsImkxOG4iLCJ1c2VUcmFuc2xhdGlvbiIsImNsb3NlQWxsTW9kYWxzIiwib3Blbk1vZGFsIiwidXNlTW9kYWwiLCJsYXN0TG9jYXRpb25DaGFuZ2UiLCJzZXRMYXN0TG9jYXRpb25DaGFuZ2UiLCJkZWJvdW5jZWRMb2NhdGlvbkNoYW5nZSIsInVzZURlYm91bmNlIiwiaWQiLCJyZWRpcmVjdFRvSW5hY3Rpdml0eVJvdXRlIiwidXNlQ2FsbGJhY2siLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInN0YXJ0c1dpdGgiLCJyZWRpcmVjdFBhcmFtIiwiZW5jb2RlVVJJQ29tcG9uZW50IiwicmVwbGFjZSIsInJldm9rZVRva2VuQW5kRXhwaXJlIiwidW5kZWZpbmVkIiwic2V0VG9rZW5BbmRFeHBpcmF0aW9uIiwianNvbiIsInRva2VuIiwicmVmcmVzaGVkVG9rZW4iLCJleHAiLCJyZWZyZXNoQ29va2llIiwiZm9yY2VSZWZyZXNoIiwibm93IiwiTWF0aCIsInJvdW5kIiwiRGF0ZSIsImdldFRpbWUiLCJyZW1haW5pbmdUaW1lIiwic2V0VGltZW91dCIsInJlcXVlc3QiLCJyZXF1ZXN0cyIsInBvc3QiLCJoZWFkZXJzIiwibGFuZ3VhZ2UiLCJzdGF0dXMiLCJlIiwidG9hc3QiLCJlcnJvciIsIm1lc3NhZ2UiLCJyZWZyZXNoQ29va2llQXN5bmMiLCJza2lwU2V0VXNlciIsImxvZ091dCIsInJlZnJlc2hQZXJtaXNzaW9ucyIsInBhcmFtcyIsImxvY2FsZSIsImdldCIsInFzIiwic3RyaW5naWZ5IiwiRXJyb3IiLCJmZXRjaEZ1bGxVc2VyIiwiUmVhY3QiLCJwcmVmaWxsT25seSIsImF1dG9Mb2dpblJlc3VsdCIsImJvZHkiLCJKU09OIiwiZW1haWwiLCJwYXNzd29yZCIsImF1dG9Mb2dpbkpzb24iLCJ1c2VFZmZlY3QiLCJyZW1pbmRlciIsIm1heCIsIm1pbiIsImNsZWFyVGltZW91dCIsImZvcmNlTG9nT3V0IiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFzQmFBLFlBQVk7ZUFBWkE7O0lBNlNBQyxPQUFPO2VBQVBBOzs7dUJBaFVZOzRCQUNjOzJEQUN4QjsrREFDb0U7K0JBQzdEO29FQUlFOzZCQUNPO3FCQUNOO3dCQUNDOzhCQUNNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNoQyx3Q0FBd0M7QUFFeEMsTUFBTUMsd0JBQVVDLElBQUFBLG9CQUFhLEVBQUMsQ0FBQztBQUUvQixNQUFNQyxpQkFBaUI7QUFFaEIsTUFBTUosZUFBd0QsQ0FBQyxFQUFFSyxRQUFRLEVBQUU7SUFDaEYsTUFBTSxFQUFFQyxZQUFZLEVBQUUsR0FBR0MsSUFBQUEsNkJBQWU7SUFDeEMsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdDLElBQUFBLGVBQVE7SUFDaEMsTUFBTSxDQUFDQyxlQUFlQyxpQkFBaUIsR0FBR0YsSUFBQUEsZUFBUTtJQUNsRCxNQUFNLENBQUNHLGlCQUFpQkMsbUJBQW1CLEdBQUdKLElBQUFBLGVBQVE7SUFDdEQsTUFBTUssV0FBV0MsSUFBQUEsdUJBQVc7SUFDNUIsTUFBTSxFQUFFQyxJQUFJLEVBQUUsR0FBR0MsSUFBQUEscUJBQVM7SUFDMUIsK0JBQStCO0lBQy9CLE1BQU1DLE9BQU8sS0FBSyw0QkFBNEI7O0lBRTlDLE1BQU1DLFNBQVNDLElBQUFBLGlCQUFTO0lBRXhCLE1BQU0sRUFDSkMs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
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
ClientFunctionProvider: function() {
|
|
14
|
+
return ClientFunctionProvider;
|
|
15
|
+
},
|
|
16
|
+
useAddClientFunction: function() {
|
|
17
|
+
return useAddClientFunction;
|
|
18
|
+
},
|
|
19
|
+
useClientFunctions: function() {
|
|
20
|
+
return useClientFunctions;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
24
|
+
function _interop_require_default(obj) {
|
|
25
|
+
return obj && obj.__esModule ? obj : {
|
|
26
|
+
default: obj
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const AddClientFunctionContext = /*#__PURE__*/ _react.default.createContext(()=>null);
|
|
30
|
+
const ClientFunctionsContext = /*#__PURE__*/ _react.default.createContext({});
|
|
31
|
+
const ClientFunctionProvider = ({ children })=>{
|
|
32
|
+
const [clientFunctions, setClientFunctions] = _react.default.useState({});
|
|
33
|
+
const addClientFunction = _react.default.useCallback((args)=>{
|
|
34
|
+
setClientFunctions((state)=>{
|
|
35
|
+
const newState = {
|
|
36
|
+
...state
|
|
37
|
+
};
|
|
38
|
+
newState[args.key] = args.func;
|
|
39
|
+
return newState;
|
|
40
|
+
});
|
|
41
|
+
}, []);
|
|
42
|
+
return /*#__PURE__*/ _react.default.createElement(AddClientFunctionContext.Provider, {
|
|
43
|
+
value: addClientFunction
|
|
44
|
+
}, /*#__PURE__*/ _react.default.createElement(ClientFunctionsContext.Provider, {
|
|
45
|
+
value: clientFunctions
|
|
46
|
+
}, children));
|
|
47
|
+
};
|
|
48
|
+
const useAddClientFunction = (key, func)=>{
|
|
49
|
+
const addClientFunction = _react.default.useContext(AddClientFunctionContext);
|
|
50
|
+
_react.default.useEffect(()=>{
|
|
51
|
+
addClientFunction({
|
|
52
|
+
func,
|
|
53
|
+
key
|
|
54
|
+
});
|
|
55
|
+
}, [
|
|
56
|
+
func,
|
|
57
|
+
key,
|
|
58
|
+
addClientFunction
|
|
59
|
+
]);
|
|
60
|
+
};
|
|
61
|
+
const useClientFunctions = ()=>{
|
|
62
|
+
return _react.default.useContext(ClientFunctionsContext);
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQ2xpZW50RnVuY3Rpb24vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuXG50eXBlIEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dFR5cGUgPSAoZnVuYzogYW55KSA9PiB2b2lkXG50eXBlIENsaWVudEZ1bmN0aW9uc0NvbnRleHRUeXBlID0gUmVjb3JkPHN0cmluZywgYW55PlxuXG5jb25zdCBBZGRDbGllbnRGdW5jdGlvbkNvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0PEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dFR5cGU+KCgpID0+IG51bGwpXG5jb25zdCBDbGllbnRGdW5jdGlvbnNDb250ZXh0ID0gUmVhY3QuY3JlYXRlQ29udGV4dDxDbGllbnRGdW5jdGlvbnNDb250ZXh0VHlwZT4oe30pXG5cbnR5cGUgQWRkRnVuY3Rpb25BcmdzID0geyBmdW5jOiBhbnk7IGtleTogc3RyaW5nIH1cblxuZXhwb3J0IGNvbnN0IENsaWVudEZ1bmN0aW9uUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgW2NsaWVudEZ1bmN0aW9ucywgc2V0Q2xpZW50RnVuY3Rpb25zXSA9IFJlYWN0LnVzZVN0YXRlKHt9KVxuXG4gIGNvbnN0IGFkZENsaWVudEZ1bmN0aW9uID0gUmVhY3QudXNlQ2FsbGJhY2soKGFyZ3M6IEFkZEZ1bmN0aW9uQXJncykgPT4ge1xuICAgIHNldENsaWVudEZ1bmN0aW9ucygoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0geyAuLi5zdGF0ZSB9XG4gICAgICBuZXdTdGF0ZVthcmdzLmtleV0gPSBhcmdzLmZ1bmNcbiAgICAgIHJldHVybiBuZXdTdGF0ZVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIHJldHVybiAoXG4gICAgPEFkZENsaWVudEZ1bmN0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17YWRkQ2xpZW50RnVuY3Rpb259PlxuICAgICAgPENsaWVudEZ1bmN0aW9uc0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NsaWVudEZ1bmN0aW9uc30+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQ2xpZW50RnVuY3Rpb25zQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0FkZENsaWVudEZ1bmN0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQWRkQ2xpZW50RnVuY3Rpb24gPSAoa2V5OiBzdHJpbmcsIGZ1bmM6IGFueSkgPT4ge1xuICBjb25zdCBhZGRDbGllbnRGdW5jdGlvbiA9IFJlYWN0LnVzZUNvbnRleHQoQWRkQ2xpZW50RnVuY3Rpb25Db250ZXh0KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYWRkQ2xpZW50RnVuY3Rpb24oe1xuICAgICAgZnVuYyxcbiAgICAgIGtleSxcbiAgICB9KVxuICB9LCBbZnVuYywga2V5LCBhZGRDbGllbnRGdW5jdGlvbl0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDbGllbnRGdW5jdGlvbnMgPSAoKSA9PiB7XG4gIHJldHVybiBSZWFjdC51c2VDb250ZXh0KENsaWVudEZ1bmN0aW9uc0NvbnRleHQpXG59XG4iXSwibmFtZXMiOlsiQ2xpZW50RnVuY3Rpb25Qcm92aWRlciIsInVzZUFkZENsaWVudEZ1bmN0aW9uIiwidXNlQ2xpZW50RnVuY3Rpb25zIiwiQWRkQ2xpZW50RnVuY3Rpb25Db250ZXh0IiwiUmVhY3QiLCJjcmVhdGVDb250ZXh0IiwiQ2xpZW50RnVuY3Rpb25zQ29udGV4dCIsImNoaWxkcmVuIiwiY2xpZW50RnVuY3Rpb25zIiwic2V0Q2xpZW50RnVuY3Rpb25zIiwidXNlU3RhdGUiLCJhZGRDbGllbnRGdW5jdGlvbiIsInVzZUNhbGxiYWNrIiwiYXJncyIsInN0YXRlIiwibmV3U3RhdGUiLCJrZXkiLCJmdW5jIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFXYUEsc0JBQXNCO2VBQXRCQTs7SUFvQkFDLG9CQUFvQjtlQUFwQkE7O0lBV0FDLGtCQUFrQjtlQUFsQkE7Ozs4REF6Q0s7Ozs7OztBQUtsQixNQUFNQyx5Q0FBMkJDLGNBQUssQ0FBQ0MsYUFBYSxDQUErQixJQUFNO0FBQ3pGLE1BQU1DLHVDQUF5QkYsY0FBSyxDQUFDQyxhQUFhLENBQTZCLENBQUM7QUFJekUsTUFBTUwseUJBQWtFLENBQUMsRUFBRU8sUUFBUSxFQUFFO0lBQzFGLE1BQU0sQ0FBQ0MsaUJBQWlCQyxtQkFBbUIsR0FBR0wsY0FBSyxDQUFDTSxRQUFRLENBQUMsQ0FBQztJQUU5RCxNQUFNQyxvQkFBb0JQLGNBQUssQ0FBQ1EsV0FBVyxDQUFDLENBQUNDO1FBQzNDSixtQkFBbUIsQ0FBQ0s7WUFDbEIsTUFBTUMsV0FBVztnQkFBRSxHQUFHRCxLQUFLO1lBQUM7WUFDNUJDLFFBQVEsQ0FBQ0YsS0FBS0csR0FBRyxDQUFDLEdBQUdILEtBQUtJLElBQUk7WUFDOUIsT0FBT0Y7UUFDVDtJQUNGLEdBQUcsRUFBRTtJQUVMLHFCQUNFLDZCQUFDWix5QkFBeUJlLFFBQVE7UUFBQ0MsT0FBT1I7cUJBQ3hDLDZCQUFDTCx1QkFBdUJZLFFBQVE7UUFBQ0MsT0FBT1g7T0FDckNEO0FBSVQ7QUFFTyxNQUFNTix1QkFBdUIsQ0FBQ2UsS0FBYUM7SUFDaEQsTUFBTU4sb0JBQW9CUCxjQUFLLENBQUNnQixVQUFVLENBQUNqQjtJQUUzQ0MsY0FBSyxDQUFDaUIsU0FBUyxDQUFDO1FBQ2RWLGtCQUFrQjtZQUNoQk07WUFDQUQ7UUFDRjtJQUNGLEdBQUc7UUFBQ0M7UUFBTUQ7UUFBS0w7S0FBa0I7QUFDbkM7QUFFTyxNQUFNVCxxQkFBcUI7SUFDaEMsT0FBT0UsY0FBSyxDQUFDZ0IsVUFBVSxDQUFDZDtBQUMxQiJ9
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
ComponentMapProvider: function() {
|
|
14
|
+
return ComponentMapProvider;
|
|
15
|
+
},
|
|
16
|
+
useComponentMap: function() {
|
|
17
|
+
return useComponentMap;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
21
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
22
|
+
if (typeof WeakMap !== "function") return null;
|
|
23
|
+
var cacheBabelInterop = new WeakMap();
|
|
24
|
+
var cacheNodeInterop = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
26
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
27
|
+
})(nodeInterop);
|
|
28
|
+
}
|
|
29
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
30
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
34
|
+
return {
|
|
35
|
+
default: obj
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
39
|
+
if (cache && cache.has(obj)) {
|
|
40
|
+
return cache.get(obj);
|
|
41
|
+
}
|
|
42
|
+
var newObj = {
|
|
43
|
+
__proto__: null
|
|
44
|
+
};
|
|
45
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
|
+
for(var key in obj){
|
|
47
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
49
|
+
if (desc && (desc.get || desc.set)) {
|
|
50
|
+
Object.defineProperty(newObj, key, desc);
|
|
51
|
+
} else {
|
|
52
|
+
newObj[key] = obj[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
newObj.default = obj;
|
|
57
|
+
if (cache) {
|
|
58
|
+
cache.set(obj, newObj);
|
|
59
|
+
}
|
|
60
|
+
return newObj;
|
|
61
|
+
}
|
|
62
|
+
const ComponentMapContext = /*#__PURE__*/ (0, _react.createContext)({});
|
|
63
|
+
const ComponentMapProvider = ({ children, componentMap })=>{
|
|
64
|
+
const getMappedFieldByPath = (0, _react.useCallback)(({ collectionSlug, globalSlug, path })=>{
|
|
65
|
+
let fieldMap;
|
|
66
|
+
if (collectionSlug) {
|
|
67
|
+
fieldMap = componentMap.collections[collectionSlug].fieldMap;
|
|
68
|
+
}
|
|
69
|
+
if (globalSlug) {
|
|
70
|
+
fieldMap = componentMap.globals[globalSlug].fieldMap;
|
|
71
|
+
}
|
|
72
|
+
// TODO: better lookup for nested fields, etc.
|
|
73
|
+
return fieldMap.find((field)=>field.name === path);
|
|
74
|
+
}, [
|
|
75
|
+
componentMap
|
|
76
|
+
]);
|
|
77
|
+
const getFieldMap = (0, _react.useCallback)(({ collectionSlug, globalSlug })=>{
|
|
78
|
+
if (collectionSlug) {
|
|
79
|
+
return componentMap.collections[collectionSlug].fieldMap;
|
|
80
|
+
}
|
|
81
|
+
if (globalSlug) {
|
|
82
|
+
return componentMap.globals[globalSlug].fieldMap;
|
|
83
|
+
}
|
|
84
|
+
return [];
|
|
85
|
+
}, [
|
|
86
|
+
componentMap
|
|
87
|
+
]);
|
|
88
|
+
return /*#__PURE__*/ _react.default.createElement(ComponentMapContext.Provider, {
|
|
89
|
+
value: {
|
|
90
|
+
componentMap,
|
|
91
|
+
getFieldMap,
|
|
92
|
+
getMappedFieldByPath
|
|
93
|
+
}
|
|
94
|
+
}, children);
|
|
95
|
+
};
|
|
96
|
+
const useComponentMap = ()=>(0, _react.useContext)(ComponentMapContext);
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQ29tcG9uZW50TWFwUHJvdmlkZXIvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50J1xuaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHsgQ29tcG9uZW50TWFwLCBGaWVsZE1hcCwgTWFwcGVkRmllbGQgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvYnVpbGRDb21wb25lbnRNYXAvdHlwZXMnXG5cbmV4cG9ydCB0eXBlIElDb21wb25lbnRNYXBDb250ZXh0ID0ge1xuICBjb21wb25lbnRNYXA6IENvbXBvbmVudE1hcFxuICBnZXRGaWVsZE1hcDogKGFyZ3M6IHsgY29sbGVjdGlvblNsdWc/OiBzdHJpbmc7IGdsb2JhbFNsdWc/OiBzdHJpbmcgfSkgPT4gW10gfCBGaWVsZE1hcFxuICBnZXRNYXBwZWRGaWVsZEJ5UGF0aDogKGFyZ3M6IHtcbiAgICBjb2xsZWN0aW9uU2x1Zz86IHN0cmluZ1xuICAgIGdsb2JhbFNsdWc/OiBzdHJpbmdcbiAgICBwYXRoOiBzdHJpbmdcbiAgfSkgPT4gTWFwcGVkRmllbGQgfCB1bmRlZmluZWRcbn1cblxuY29uc3QgQ29tcG9uZW50TWFwQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8SUNvbXBvbmVudE1hcENvbnRleHQ+KHt9IGFzIElDb21wb25lbnRNYXBDb250ZXh0KVxuXG5leHBvcnQgY29uc3QgQ29tcG9uZW50TWFwUHJvdmlkZXI6IFJlYWN0LkZDPHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZVxuICBjb21wb25lbnRNYXA6IENvbXBvbmVudE1hcFxufT4gPSAoeyBjaGlsZHJlbiwgY29tcG9uZW50TWFwIH0pID0+IHtcbiAgY29uc3QgZ2V0TWFwcGVkRmllbGRCeVBhdGg6IElDb21wb25lbnRNYXBDb250ZXh0WydnZXRNYXBwZWRGaWVsZEJ5UGF0aCddID0gdXNlQ2FsbGJhY2soXG4gICAgKHsgY29sbGVjdGlvblNsdWcsIGdsb2JhbFNsdWcsIHBhdGggfSkgPT4ge1xuICAgICAgbGV0IGZpZWxkTWFwOiBGaWVsZE1hcFxuXG4gICAgICBpZiAoY29sbGVjdGlvblNsdWcpIHtcbiAgICAgICAgZmllbGRNYXAgPSBjb21wb25lbnRNYXAuY29sbGVjdGlvbnNbY29sbGVjdGlvblNsdWddLmZpZWxkTWFwXG4gICAgICB9XG5cbiAgICAgIGlmIChnbG9iYWxTbHVnKSB7XG4gICAgICAgIGZpZWxkTWFwID0gY29tcG9uZW50TWFwLmdsb2JhbHNbZ2xvYmFsU2x1Z10uZmllbGRNYXBcbiAgICAgIH1cblxuICAgICAgLy8gVE9ETzogYmV0dGVyIGxvb2t1cCBmb3IgbmVzdGVkIGZpZWxkcywgZXRjLlxuICAgICAgcmV0dXJuIGZpZWxkTWFwLmZpbmQoKGZpZWxkKSA9PiBmaWVsZC5uYW1lID09PSBwYXRoKVxuICAgIH0sXG4gICAgW2NvbXBvbmVudE1hcF0sXG4gIClcblxuICBjb25zdCBnZXRGaWVsZE1hcDogSUNvbXBvbmVudE1hcENvbnRleHRbJ2dldEZpZWxkTWFwJ10gPSB1c2VDYWxsYmFjayhcbiAgICAoeyBjb2xsZWN0aW9uU2x1ZywgZ2xvYmFsU2x1ZyB9KSA9PiB7XG4gICAgICBpZiAoY29sbGVjdGlvblNsdWcpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcC5jb2xsZWN0aW9uc1tjb2xsZWN0aW9uU2x1Z10uZmllbGRNYXBcbiAgICAgIH1cblxuICAgICAgaWYgKGdsb2JhbFNsdWcpIHtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudE1hcC5nbG9iYWxzW2dsb2JhbFNsdWddLmZpZWxkTWFwXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbXVxuICAgIH0sXG4gICAgW2NvbXBvbmVudE1hcF0sXG4gIClcblxuICByZXR1cm4gKFxuICAgIDxDb21wb25lbnRNYXBDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt7IGNvbXBvbmVudE1hcCwgZ2V0RmllbGRNYXAsIGdldE1hcHBlZEZpZWxkQnlQYXRoIH19PlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50TWFwQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ29tcG9uZW50TWFwID0gKCk6IElDb21wb25lbnRNYXBDb250ZXh0ID0+IHVzZUNvbnRleHQoQ29tcG9uZW50TWFwQ29udGV4dClcbiJdLCJuYW1lcyI6WyJDb21wb25lbnRNYXBQcm92aWRlciIsInVzZUNvbXBvbmVudE1hcCIsIkNvbXBvbmVudE1hcENvbnRleHQiLCJjcmVhdGVDb250ZXh0IiwiY2hpbGRyZW4iLCJjb21wb25lbnRNYXAiLCJnZXRNYXBwZWRGaWVsZEJ5UGF0aCIsInVzZUNhbGxiYWNrIiwiY29sbGVjdGlvblNsdWciLCJnbG9iYWxTbHVnIiwicGF0aCIsImZpZWxkTWFwIiwiY29sbGVjdGlvbnMiLCJnbG9iYWxzIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImdldEZpZWxkTWFwIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFpQmFBLG9CQUFvQjtlQUFwQkE7O0lBNENBQyxlQUFlO2VBQWZBOzs7K0RBNURpRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYzlELE1BQU1DLG9DQUFzQkMsSUFBQUEsb0JBQWEsRUFBdUIsQ0FBQztBQUUxRCxNQUFNSCx1QkFHUixDQUFDLEVBQUVJLFFBQVEsRUFBRUMsWUFBWSxFQUFFO0lBQzlCLE1BQU1DLHVCQUFxRUMsSUFBQUEsa0JBQVcsRUFDcEYsQ0FBQyxFQUFFQyxjQUFjLEVBQUVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFO1FBQ25DLElBQUlDO1FBRUosSUFBSUgsZ0JBQWdCO1lBQ2xCRyxXQUFXTixhQUFhTyxXQUFXLENBQUNKLGVBQWUsQ0FBQ0csUUFBUTtRQUM5RDtRQUVBLElBQUlGLFlBQVk7WUFDZEUsV0FBV04sYUFBYVEsT0FBTyxDQUFDSixXQUFXLENBQUNFLFFBQVE7UUFDdEQ7UUFFQSw4Q0FBOEM7UUFDOUMsT0FBT0EsU0FBU0csSUFBSSxDQUFDLENBQUNDLFFBQVVBLE1BQU1DLElBQUksS0FBS047SUFDakQsR0FDQTtRQUFDTDtLQUFhO0lBR2hCLE1BQU1ZLGNBQW1EVixJQUFBQSxrQkFBVyxFQUNsRSxDQUFDLEVBQUVDLGNBQWMsRUFBRUMsVUFBVSxFQUFFO1FBQzdCLElBQUlELGdCQUFnQjtZQUNsQixPQUFPSCxhQUFhTyxXQUFXLENBQUNKLGVBQWUsQ0FBQ0csUUFBUTtRQUMxRDtRQUVBLElBQUlGLFlBQVk7WUFDZCxPQUFPSixhQUFhUSxPQUFPLENBQUNKLFdBQVcsQ0FBQ0UsUUFBUTtRQUNsRDtRQUVBLE9BQU8sRUFBRTtJQUNYLEdBQ0E7UUFBQ047S0FBYTtJQUdoQixxQkFDRSw2QkFBQ0gsb0JBQW9CZ0IsUUFBUTtRQUFDQyxPQUFPO1lBQUVkO1lBQWNZO1lBQWFYO1FBQXFCO09BQ3BGRjtBQUdQO0FBRU8sTUFBTUgsa0JBQWtCLElBQTRCbUIsSUFBQUEsaUJBQVUsRUFBQ2xCIn0=
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: all[name]
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
ConfigProvider: function() {
|
|
14
|
+
return ConfigProvider;
|
|
15
|
+
},
|
|
16
|
+
useConfig: function() {
|
|
17
|
+
return useConfig;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
21
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
22
|
+
if (typeof WeakMap !== "function") return null;
|
|
23
|
+
var cacheBabelInterop = new WeakMap();
|
|
24
|
+
var cacheNodeInterop = new WeakMap();
|
|
25
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
26
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
27
|
+
})(nodeInterop);
|
|
28
|
+
}
|
|
29
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
30
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
34
|
+
return {
|
|
35
|
+
default: obj
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
39
|
+
if (cache && cache.has(obj)) {
|
|
40
|
+
return cache.get(obj);
|
|
41
|
+
}
|
|
42
|
+
var newObj = {
|
|
43
|
+
__proto__: null
|
|
44
|
+
};
|
|
45
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
46
|
+
for(var key in obj){
|
|
47
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
49
|
+
if (desc && (desc.get || desc.set)) {
|
|
50
|
+
Object.defineProperty(newObj, key, desc);
|
|
51
|
+
} else {
|
|
52
|
+
newObj[key] = obj[key];
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
newObj.default = obj;
|
|
57
|
+
if (cache) {
|
|
58
|
+
cache.set(obj, newObj);
|
|
59
|
+
}
|
|
60
|
+
return newObj;
|
|
61
|
+
}
|
|
62
|
+
const Context = /*#__PURE__*/ (0, _react.createContext)({});
|
|
63
|
+
const ConfigProvider = ({ children, config })=>{
|
|
64
|
+
return /*#__PURE__*/ _react.default.createElement(Context.Provider, {
|
|
65
|
+
value: config
|
|
66
|
+
}, children);
|
|
67
|
+
};
|
|
68
|
+
const useConfig = ()=>(0, _react.useContext)(Context);
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvQ29uZmlnL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgQ2xpZW50Q29uZmlnIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IFJlYWN0LCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tICdyZWFjdCdcblxuY29uc3QgQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q2xpZW50Q29uZmlnPih7fSBhcyBDbGllbnRDb25maWcpXG5cbmV4cG9ydCBjb25zdCBDb25maWdQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlOyBjb25maWc6IENsaWVudENvbmZpZyB9PiA9ICh7XG4gIGNoaWxkcmVuLFxuICBjb25maWcsXG59KSA9PiB7XG4gIHJldHVybiA8Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29uZmlnfT57Y2hpbGRyZW59PC9Db250ZXh0LlByb3ZpZGVyPlxufVxuXG5leHBvcnQgY29uc3QgdXNlQ29uZmlnID0gKCk6IENsaWVudENvbmZpZyA9PiB1c2VDb250ZXh0KENvbnRleHQpXG4iXSwibmFtZXMiOlsiQ29uZmlnUHJvdmlkZXIiLCJ1c2VDb25maWciLCJDb250ZXh0IiwiY3JlYXRlQ29udGV4dCIsImNoaWxkcmVuIiwiY29uZmlnIiwiUHJvdmlkZXIiLCJ2YWx1ZSIsInVzZUNvbnRleHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7SUFPYUEsY0FBYztlQUFkQTs7SUFPQUMsU0FBUztlQUFUQTs7OytEQVhvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWpELE1BQU1DLHdCQUFVQyxJQUFBQSxvQkFBYSxFQUFlLENBQUM7QUFFdEMsTUFBTUgsaUJBQWdGLENBQUMsRUFDNUZJLFFBQVEsRUFDUkMsTUFBTSxFQUNQO0lBQ0MscUJBQU8sNkJBQUNILFFBQVFJLFFBQVE7UUFBQ0MsT0FBT0Y7T0FBU0Q7QUFDM0M7QUFFTyxNQUFNSCxZQUFZLElBQW9CTyxJQUFBQSxpQkFBVSxFQUFDTiJ9
|