@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,390 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "EditUpload", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return EditUpload;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const _modal = require("@faceless-ui/modal");
|
|
13
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
14
|
+
const _reactimagecrop = /*#__PURE__*/ _interop_require_default(require("react-image-crop"));
|
|
15
|
+
require("react-image-crop/dist/ReactCrop.css");
|
|
16
|
+
const _Upload = require("../../elements/Upload");
|
|
17
|
+
const _Plus = require("../../icons/Plus");
|
|
18
|
+
const _FormQueryParams = require("../../providers/FormQueryParams");
|
|
19
|
+
const _Translation = require("../../providers/Translation");
|
|
20
|
+
const _Button = require("../Button");
|
|
21
|
+
require("./index.scss");
|
|
22
|
+
function _interop_require_default(obj) {
|
|
23
|
+
return obj && obj.__esModule ? obj : {
|
|
24
|
+
default: obj
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
28
|
+
if (typeof WeakMap !== "function") return null;
|
|
29
|
+
var cacheBabelInterop = new WeakMap();
|
|
30
|
+
var cacheNodeInterop = new WeakMap();
|
|
31
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
32
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
33
|
+
})(nodeInterop);
|
|
34
|
+
}
|
|
35
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
36
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
37
|
+
return obj;
|
|
38
|
+
}
|
|
39
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
40
|
+
return {
|
|
41
|
+
default: obj
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
45
|
+
if (cache && cache.has(obj)) {
|
|
46
|
+
return cache.get(obj);
|
|
47
|
+
}
|
|
48
|
+
var newObj = {
|
|
49
|
+
__proto__: null
|
|
50
|
+
};
|
|
51
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
52
|
+
for(var key in obj){
|
|
53
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
54
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
55
|
+
if (desc && (desc.get || desc.set)) {
|
|
56
|
+
Object.defineProperty(newObj, key, desc);
|
|
57
|
+
} else {
|
|
58
|
+
newObj[key] = obj[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
newObj.default = obj;
|
|
63
|
+
if (cache) {
|
|
64
|
+
cache.set(obj, newObj);
|
|
65
|
+
}
|
|
66
|
+
return newObj;
|
|
67
|
+
}
|
|
68
|
+
const baseClass = 'edit-upload';
|
|
69
|
+
const Input = ({ name, onChange, value })=>/*#__PURE__*/ _react.default.createElement("div", {
|
|
70
|
+
className: `${baseClass}__input`
|
|
71
|
+
}, name, /*#__PURE__*/ _react.default.createElement("input", {
|
|
72
|
+
name: name,
|
|
73
|
+
onChange: (e)=>onChange(e.target.value),
|
|
74
|
+
type: "number",
|
|
75
|
+
value: value
|
|
76
|
+
}));
|
|
77
|
+
const EditUpload = ({ fileName, fileSrc, imageCacheTag, showCrop, showFocalPoint })=>{
|
|
78
|
+
const { closeModal } = (0, _modal.useModal)();
|
|
79
|
+
const { t } = (0, _Translation.useTranslation)();
|
|
80
|
+
const { formQueryParams, setFormQueryParams } = (0, _FormQueryParams.useFormQueryParams)();
|
|
81
|
+
const { uploadEdits } = formQueryParams || {};
|
|
82
|
+
const [crop, setCrop] = (0, _react.useState)({
|
|
83
|
+
height: uploadEdits?.crop?.height || 100,
|
|
84
|
+
unit: '%',
|
|
85
|
+
width: uploadEdits?.crop?.width || 100,
|
|
86
|
+
x: uploadEdits?.crop?.x || 0,
|
|
87
|
+
y: uploadEdits?.crop?.y || 0
|
|
88
|
+
});
|
|
89
|
+
const [pointPosition, setPointPosition] = (0, _react.useState)({
|
|
90
|
+
x: uploadEdits?.focalPoint?.x || 50,
|
|
91
|
+
y: uploadEdits?.focalPoint?.y || 50
|
|
92
|
+
});
|
|
93
|
+
const [checkBounds, setCheckBounds] = (0, _react.useState)(false);
|
|
94
|
+
const [originalHeight, setOriginalHeight] = (0, _react.useState)(0);
|
|
95
|
+
const [originalWidth, setOriginalWidth] = (0, _react.useState)(0);
|
|
96
|
+
const focalWrapRef = (0, _react.useRef)();
|
|
97
|
+
const imageRef = (0, _react.useRef)();
|
|
98
|
+
const cropRef = (0, _react.useRef)();
|
|
99
|
+
const fineTuneCrop = ({ dimension, value })=>{
|
|
100
|
+
const intValue = parseInt(value);
|
|
101
|
+
if (dimension === 'width' && intValue >= originalWidth) return null;
|
|
102
|
+
if (dimension === 'height' && intValue >= originalHeight) return null;
|
|
103
|
+
const percentage = 100 * (intValue / (dimension === 'width' ? originalWidth : originalHeight));
|
|
104
|
+
if (percentage === 100 || percentage === 0) return null;
|
|
105
|
+
setCrop({
|
|
106
|
+
...crop,
|
|
107
|
+
[dimension]: percentage
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
const fineTuneFocalPoint = ({ coordinate, value })=>{
|
|
111
|
+
const intValue = parseInt(value);
|
|
112
|
+
if (intValue >= 0 && intValue <= 100) {
|
|
113
|
+
setPointPosition((prevPosition)=>({
|
|
114
|
+
...prevPosition,
|
|
115
|
+
[coordinate]: intValue
|
|
116
|
+
}));
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const saveEdits = ()=>{
|
|
120
|
+
setFormQueryParams({
|
|
121
|
+
...formQueryParams,
|
|
122
|
+
uploadEdits: {
|
|
123
|
+
crop: crop || undefined,
|
|
124
|
+
focalPoint: pointPosition ? pointPosition : undefined
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
closeModal(_Upload.editDrawerSlug);
|
|
128
|
+
};
|
|
129
|
+
const onDragEnd = _react.default.useCallback(({ x, y })=>{
|
|
130
|
+
setPointPosition({
|
|
131
|
+
x,
|
|
132
|
+
y
|
|
133
|
+
});
|
|
134
|
+
setCheckBounds(false);
|
|
135
|
+
}, []);
|
|
136
|
+
const centerFocalPoint = ()=>{
|
|
137
|
+
const containerRect = focalWrapRef.current.getBoundingClientRect();
|
|
138
|
+
const boundsRect = showCrop ? cropRef.current.getBoundingClientRect() : imageRef.current.getBoundingClientRect();
|
|
139
|
+
const xCenter = (boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width * 100;
|
|
140
|
+
const yCenter = (boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height * 100;
|
|
141
|
+
setPointPosition({
|
|
142
|
+
x: xCenter,
|
|
143
|
+
y: yCenter
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
const fileSrcToUse = imageCacheTag ? `${fileSrc}?${imageCacheTag}` : fileSrc;
|
|
147
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
148
|
+
className: baseClass
|
|
149
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
150
|
+
className: `${baseClass}__header`
|
|
151
|
+
}, /*#__PURE__*/ _react.default.createElement("h2", {
|
|
152
|
+
title: `${t('general:editing')} ${fileName}`
|
|
153
|
+
}, t('general:editing'), " ", fileName), /*#__PURE__*/ _react.default.createElement("div", {
|
|
154
|
+
className: `${baseClass}__actions`
|
|
155
|
+
}, /*#__PURE__*/ _react.default.createElement(_Button.Button, {
|
|
156
|
+
"aria-label": t('general:cancel'),
|
|
157
|
+
buttonStyle: "secondary",
|
|
158
|
+
className: `${baseClass}__cancel`,
|
|
159
|
+
onClick: ()=>closeModal(_Upload.editDrawerSlug)
|
|
160
|
+
}, t('general:cancel')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
|
|
161
|
+
"aria-label": t('general:applyChanges'),
|
|
162
|
+
buttonStyle: "primary",
|
|
163
|
+
className: `${baseClass}__save`,
|
|
164
|
+
onClick: ()=>saveEdits()
|
|
165
|
+
}, t('general:applyChanges')))), /*#__PURE__*/ _react.default.createElement("div", {
|
|
166
|
+
className: `${baseClass}__toolWrap`
|
|
167
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
168
|
+
className: `${baseClass}__crop`
|
|
169
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
170
|
+
className: `${baseClass}__focal-wrapper`,
|
|
171
|
+
ref: focalWrapRef,
|
|
172
|
+
style: {
|
|
173
|
+
aspectRatio: `${originalWidth / originalHeight}`
|
|
174
|
+
}
|
|
175
|
+
}, showCrop ? /*#__PURE__*/ _react.default.createElement(_reactimagecrop.default, {
|
|
176
|
+
className: `${baseClass}__reactCrop`,
|
|
177
|
+
crop: crop,
|
|
178
|
+
onChange: (_, c)=>setCrop(c),
|
|
179
|
+
onComplete: ()=>setCheckBounds(true),
|
|
180
|
+
renderSelectionAddon: ()=>{
|
|
181
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
182
|
+
className: `${baseClass}__crop-window`,
|
|
183
|
+
ref: cropRef
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}, /*#__PURE__*/ _react.default.createElement("img", {
|
|
187
|
+
alt: t('upload:setCropArea'),
|
|
188
|
+
onLoad: (e)=>{
|
|
189
|
+
setOriginalHeight(e.currentTarget.naturalHeight);
|
|
190
|
+
setOriginalWidth(e.currentTarget.naturalWidth);
|
|
191
|
+
},
|
|
192
|
+
ref: imageRef,
|
|
193
|
+
src: fileSrcToUse
|
|
194
|
+
})) : /*#__PURE__*/ _react.default.createElement("img", {
|
|
195
|
+
alt: t('upload:setFocalPoint'),
|
|
196
|
+
onLoad: (e)=>{
|
|
197
|
+
setOriginalHeight(e.currentTarget.naturalHeight);
|
|
198
|
+
setOriginalWidth(e.currentTarget.naturalWidth);
|
|
199
|
+
},
|
|
200
|
+
ref: imageRef,
|
|
201
|
+
src: fileSrcToUse
|
|
202
|
+
}), showFocalPoint && /*#__PURE__*/ _react.default.createElement(DraggableElement, {
|
|
203
|
+
boundsRef: showCrop ? cropRef : imageRef,
|
|
204
|
+
checkBounds: showCrop ? checkBounds : false,
|
|
205
|
+
className: `${baseClass}__focalPoint`,
|
|
206
|
+
containerRef: focalWrapRef,
|
|
207
|
+
initialPosition: pointPosition,
|
|
208
|
+
onDragEnd: onDragEnd,
|
|
209
|
+
setCheckBounds: showCrop ? setCheckBounds : false
|
|
210
|
+
}, /*#__PURE__*/ _react.default.createElement(_Plus.Plus, null)))), (showCrop || showFocalPoint) && /*#__PURE__*/ _react.default.createElement("div", {
|
|
211
|
+
className: `${baseClass}__sidebar`
|
|
212
|
+
}, showCrop && /*#__PURE__*/ _react.default.createElement("div", {
|
|
213
|
+
className: `${baseClass}__groupWrap`
|
|
214
|
+
}, /*#__PURE__*/ _react.default.createElement("div", null, /*#__PURE__*/ _react.default.createElement("div", {
|
|
215
|
+
className: `${baseClass}__titleWrap`
|
|
216
|
+
}, /*#__PURE__*/ _react.default.createElement("h3", null, t('upload:crop')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
|
|
217
|
+
buttonStyle: "none",
|
|
218
|
+
className: `${baseClass}__reset`,
|
|
219
|
+
onClick: ()=>setCrop({
|
|
220
|
+
height: 100,
|
|
221
|
+
unit: '%',
|
|
222
|
+
width: 100,
|
|
223
|
+
x: 0,
|
|
224
|
+
y: 0
|
|
225
|
+
})
|
|
226
|
+
}, t('general:reset')))), /*#__PURE__*/ _react.default.createElement("span", {
|
|
227
|
+
className: `${baseClass}__description`
|
|
228
|
+
}, t('upload:cropToolDescription')), /*#__PURE__*/ _react.default.createElement("div", {
|
|
229
|
+
className: `${baseClass}__inputsWrap`
|
|
230
|
+
}, /*#__PURE__*/ _react.default.createElement(Input, {
|
|
231
|
+
name: `${t('upload:width')} (px)`,
|
|
232
|
+
onChange: (value)=>fineTuneCrop({
|
|
233
|
+
dimension: 'width',
|
|
234
|
+
value
|
|
235
|
+
}),
|
|
236
|
+
value: (crop.width / 100 * originalWidth).toFixed(0)
|
|
237
|
+
}), /*#__PURE__*/ _react.default.createElement(Input, {
|
|
238
|
+
name: `${t('upload:height')} (px)`,
|
|
239
|
+
onChange: (value)=>fineTuneCrop({
|
|
240
|
+
dimension: 'height',
|
|
241
|
+
value
|
|
242
|
+
}),
|
|
243
|
+
value: (crop.height / 100 * originalHeight).toFixed(0)
|
|
244
|
+
}))), showFocalPoint && /*#__PURE__*/ _react.default.createElement("div", {
|
|
245
|
+
className: `${baseClass}__groupWrap`
|
|
246
|
+
}, /*#__PURE__*/ _react.default.createElement("div", null, /*#__PURE__*/ _react.default.createElement("div", {
|
|
247
|
+
className: `${baseClass}__titleWrap`
|
|
248
|
+
}, /*#__PURE__*/ _react.default.createElement("h3", null, t('upload:focalPoint')), /*#__PURE__*/ _react.default.createElement(_Button.Button, {
|
|
249
|
+
buttonStyle: "none",
|
|
250
|
+
className: `${baseClass}__reset`,
|
|
251
|
+
onClick: centerFocalPoint
|
|
252
|
+
}, t('general:reset')))), /*#__PURE__*/ _react.default.createElement("span", {
|
|
253
|
+
className: `${baseClass}__description`
|
|
254
|
+
}, t('upload:focalPointDescription')), /*#__PURE__*/ _react.default.createElement("div", {
|
|
255
|
+
className: `${baseClass}__inputsWrap`
|
|
256
|
+
}, /*#__PURE__*/ _react.default.createElement(Input, {
|
|
257
|
+
name: "X %",
|
|
258
|
+
onChange: (value)=>fineTuneFocalPoint({
|
|
259
|
+
coordinate: 'x',
|
|
260
|
+
value
|
|
261
|
+
}),
|
|
262
|
+
value: pointPosition.x.toFixed(0)
|
|
263
|
+
}), /*#__PURE__*/ _react.default.createElement(Input, {
|
|
264
|
+
name: "Y %",
|
|
265
|
+
onChange: (value)=>fineTuneFocalPoint({
|
|
266
|
+
coordinate: 'y',
|
|
267
|
+
value
|
|
268
|
+
}),
|
|
269
|
+
value: pointPosition.y.toFixed(0)
|
|
270
|
+
}))))));
|
|
271
|
+
};
|
|
272
|
+
const DraggableElement = ({ boundsRef, checkBounds, children, className, containerRef, initialPosition = {
|
|
273
|
+
x: 50,
|
|
274
|
+
y: 50
|
|
275
|
+
}, onDragEnd, setCheckBounds })=>{
|
|
276
|
+
const [position, setPosition] = (0, _react.useState)({
|
|
277
|
+
x: initialPosition.x,
|
|
278
|
+
y: initialPosition.y
|
|
279
|
+
});
|
|
280
|
+
const [isDragging, setIsDragging] = (0, _react.useState)(false);
|
|
281
|
+
const dragRef = (0, _react.useRef)();
|
|
282
|
+
const getCoordinates = _react.default.useCallback((mouseXArg, mouseYArg, recenter)=>{
|
|
283
|
+
const containerRect = containerRef.current.getBoundingClientRect();
|
|
284
|
+
const boundsRect = boundsRef.current.getBoundingClientRect();
|
|
285
|
+
const mouseX = mouseXArg ?? boundsRect.left;
|
|
286
|
+
const mouseY = mouseYArg ?? boundsRect.top;
|
|
287
|
+
const xOutOfBounds = mouseX < boundsRect.left || mouseX > boundsRect.right;
|
|
288
|
+
const yOutOfBounds = mouseY < boundsRect.top || mouseY > boundsRect.bottom;
|
|
289
|
+
let x = (mouseX - containerRect.left) / containerRect.width * 100;
|
|
290
|
+
let y = (mouseY - containerRect.top) / containerRect.height * 100;
|
|
291
|
+
const xCenter = (boundsRect.left - containerRect.left + boundsRect.width / 2) / containerRect.width * 100;
|
|
292
|
+
const yCenter = (boundsRect.top - containerRect.top + boundsRect.height / 2) / containerRect.height * 100;
|
|
293
|
+
if (xOutOfBounds || yOutOfBounds) {
|
|
294
|
+
setIsDragging(false);
|
|
295
|
+
if (mouseX < boundsRect.left) {
|
|
296
|
+
x = (boundsRect.left - containerRect.left) / containerRect.width * 100;
|
|
297
|
+
} else if (mouseX > boundsRect.right) {
|
|
298
|
+
x = (containerRect.width - (containerRect.right - boundsRect.right)) / containerRect.width * 100;
|
|
299
|
+
}
|
|
300
|
+
if (mouseY < boundsRect.top) {
|
|
301
|
+
y = (boundsRect.top - containerRect.top) / containerRect.height * 100;
|
|
302
|
+
} else if (mouseY > boundsRect.bottom) {
|
|
303
|
+
y = (containerRect.height - (containerRect.bottom - boundsRect.bottom)) / containerRect.height * 100;
|
|
304
|
+
}
|
|
305
|
+
if (recenter) {
|
|
306
|
+
x = xOutOfBounds ? xCenter : x;
|
|
307
|
+
y = yOutOfBounds ? yCenter : y;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
return {
|
|
311
|
+
x,
|
|
312
|
+
y
|
|
313
|
+
};
|
|
314
|
+
}, [
|
|
315
|
+
boundsRef,
|
|
316
|
+
containerRef
|
|
317
|
+
]);
|
|
318
|
+
const handleMouseDown = (event)=>{
|
|
319
|
+
event.preventDefault();
|
|
320
|
+
setIsDragging(true);
|
|
321
|
+
};
|
|
322
|
+
const handleMouseMove = (event)=>{
|
|
323
|
+
if (!isDragging) return null;
|
|
324
|
+
const { x, y } = getCoordinates(event.clientX, event.clientY);
|
|
325
|
+
setPosition({
|
|
326
|
+
x,
|
|
327
|
+
y
|
|
328
|
+
});
|
|
329
|
+
};
|
|
330
|
+
const onDrop = ()=>{
|
|
331
|
+
setIsDragging(false);
|
|
332
|
+
onDragEnd(position);
|
|
333
|
+
};
|
|
334
|
+
_react.default.useEffect(()=>{
|
|
335
|
+
if (isDragging || !dragRef.current) return;
|
|
336
|
+
if (checkBounds) {
|
|
337
|
+
const { height, left, top, width } = dragRef.current.getBoundingClientRect();
|
|
338
|
+
const { x, y } = getCoordinates(left + width / 2, top + height / 2, true);
|
|
339
|
+
onDragEnd({
|
|
340
|
+
x,
|
|
341
|
+
y
|
|
342
|
+
});
|
|
343
|
+
setPosition({
|
|
344
|
+
x,
|
|
345
|
+
y
|
|
346
|
+
});
|
|
347
|
+
setCheckBounds(false);
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
}, [
|
|
351
|
+
getCoordinates,
|
|
352
|
+
isDragging,
|
|
353
|
+
checkBounds,
|
|
354
|
+
setCheckBounds,
|
|
355
|
+
position.x,
|
|
356
|
+
position.y,
|
|
357
|
+
onDragEnd
|
|
358
|
+
]);
|
|
359
|
+
_react.default.useEffect(()=>{
|
|
360
|
+
setPosition({
|
|
361
|
+
x: initialPosition.x,
|
|
362
|
+
y: initialPosition.y
|
|
363
|
+
});
|
|
364
|
+
}, [
|
|
365
|
+
initialPosition.x,
|
|
366
|
+
initialPosition.y
|
|
367
|
+
]);
|
|
368
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
369
|
+
className: [
|
|
370
|
+
`${baseClass}__draggable-container`,
|
|
371
|
+
isDragging && `${baseClass}__draggable-container--dragging`
|
|
372
|
+
].filter(Boolean).join(' '),
|
|
373
|
+
onMouseMove: handleMouseMove
|
|
374
|
+
}, /*#__PURE__*/ _react.default.createElement("button", {
|
|
375
|
+
className: [
|
|
376
|
+
`${baseClass}__draggable`,
|
|
377
|
+
className
|
|
378
|
+
].filter(Boolean).join(' '),
|
|
379
|
+
onMouseDown: handleMouseDown,
|
|
380
|
+
onMouseUp: onDrop,
|
|
381
|
+
ref: dragRef,
|
|
382
|
+
style: {
|
|
383
|
+
left: `${position.x}%`,
|
|
384
|
+
top: `${position.y}%`
|
|
385
|
+
},
|
|
386
|
+
type: "button"
|
|
387
|
+
}, children), /*#__PURE__*/ _react.default.createElement("div", null));
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9FZGl0VXBsb2FkL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcbmltcG9ydCB0eXBlIHsgRGF0YSB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IHVzZU1vZGFsIH0gZnJvbSAnQGZhY2VsZXNzLXVpL21vZGFsJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdENyb3AsIHsgdHlwZSBDcm9wIGFzIENyb3BUeXBlIH0gZnJvbSAncmVhY3QtaW1hZ2UtY3JvcCdcbmltcG9ydCAncmVhY3QtaW1hZ2UtY3JvcC9kaXN0L1JlYWN0Q3JvcC5jc3MnXG5cbmltcG9ydCB7IGVkaXREcmF3ZXJTbHVnIH0gZnJvbSAnLi4vLi4vZWxlbWVudHMvVXBsb2FkJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJy4uLy4uL2ljb25zL1BsdXMnXG5pbXBvcnQgeyB1c2VGb3JtUXVlcnlQYXJhbXMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvRm9ybVF1ZXJ5UGFyYW1zJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvVHJhbnNsYXRpb24nXG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tICcuLi9CdXR0b24nXG5pbXBvcnQgJy4vaW5kZXguc2NzcydcblxuY29uc3QgYmFzZUNsYXNzID0gJ2VkaXQtdXBsb2FkJ1xuXG5jb25zdCBJbnB1dDogUmVhY3QuRkM8eyBuYW1lOiBzdHJpbmc7IG9uQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDsgdmFsdWU6IHN0cmluZyB9PiA9ICh7XG4gIG5hbWUsXG4gIG9uQ2hhbmdlLFxuICB2YWx1ZSxcbn0pID0+IChcbiAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0YH0+XG4gICAge25hbWV9XG4gICAgPGlucHV0IG5hbWU9e25hbWV9IG9uQ2hhbmdlPXsoZSkgPT4gb25DaGFuZ2UoZS50YXJnZXQudmFsdWUpfSB0eXBlPVwibnVtYmVyXCIgdmFsdWU9e3ZhbHVlfSAvPlxuICA8L2Rpdj5cbilcblxuZXhwb3J0IGNvbnN0IEVkaXRVcGxvYWQ6IFJlYWN0LkZDPHtcbiAgZG9jPzogRGF0YVxuICBmaWxlTmFtZTogc3RyaW5nXG4gIGZpbGVTcmM6IHN0cmluZ1xuICBpbWFnZUNhY2hlVGFnPzogc3RyaW5nXG4gIHNob3dDcm9wPzogYm9vbGVhblxuICBzaG93Rm9jYWxQb2ludD86IGJvb2xlYW5cbn0+ID0gKHsgZmlsZU5hbWUsIGZpbGVTcmMsIGltYWdlQ2FjaGVUYWcsIHNob3dDcm9wLCBzaG93Rm9jYWxQb2ludCB9KSA9PiB7XG4gIGNvbnN0IHsgY2xvc2VNb2RhbCB9ID0gdXNlTW9kYWwoKVxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKClcbiAgY29uc3QgeyBmb3JtUXVlcnlQYXJhbXMsIHNldEZvcm1RdWVyeVBhcmFtcyB9ID0gdXNlRm9ybVF1ZXJ5UGFyYW1zKClcbiAgY29uc3QgeyB1cGxvYWRFZGl0cyB9ID0gZm9ybVF1ZXJ5UGFyYW1zIHx8IHt9XG4gIGNvbnN0IFtjcm9wLCBzZXRDcm9wXSA9IHVzZVN0YXRlPENyb3BUeXBlPih7XG4gICAgaGVpZ2h0OiB1cGxvYWRFZGl0cz8uY3JvcD8uaGVpZ2h0IHx8IDEwMCxcbiAgICB1bml0OiAnJScsXG4gICAgd2lkdGg6IHVwbG9hZEVkaXRzPy5jcm9wPy53aWR0aCB8fCAxMDAsXG4gICAgeDogdXBsb2FkRWRpdHM/LmNyb3A/LnggfHwgMCxcbiAgICB5OiB1cGxvYWRFZGl0cz8uY3JvcD8ueSB8fCAwLFxuICB9KVxuXG4gIGNvbnN0IFtwb2ludFBvc2l0aW9uLCBzZXRQb2ludFBvc2l0aW9uXSA9IHVzZVN0YXRlPHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfT4oe1xuICAgIHg6IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50Py54IHx8IDUwLFxuICAgIHk6IHVwbG9hZEVkaXRzPy5mb2NhbFBvaW50Py55IHx8IDUwLFxuICB9KVxuICBjb25zdCBbY2hlY2tCb3VuZHMsIHNldENoZWNrQm91bmRzXSA9IHVzZVN0YXRlPGJvb2xlYW4+KGZhbHNlKVxuICBjb25zdCBbb3JpZ2luYWxIZWlnaHQsIHNldE9yaWdpbmFsSGVpZ2h0XSA9IHVzZVN0YXRlPG51bWJlcj4oMClcbiAgY29uc3QgW29yaWdpbmFsV2lkdGgsIHNldE9yaWdpbmFsV2lkdGhdID0gdXNlU3RhdGU8bnVtYmVyPigwKVxuXG4gIGNvbnN0IGZvY2FsV3JhcFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudCB8IHVuZGVmaW5lZD4oKVxuICBjb25zdCBpbWFnZVJlZiA9IHVzZVJlZjxIVE1MSW1hZ2VFbGVtZW50IHwgdW5kZWZpbmVkPigpXG4gIGNvbnN0IGNyb3BSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCB1bmRlZmluZWQ+KClcblxuICBjb25zdCBmaW5lVHVuZUNyb3AgPSAoeyBkaW1lbnNpb24sIHZhbHVlIH06IHsgZGltZW5zaW9uOiAnaGVpZ2h0JyB8ICd3aWR0aCc7IHZhbHVlOiBzdHJpbmcgfSkgPT4ge1xuICAgIGNvbnN0IGludFZhbHVlID0gcGFyc2VJbnQodmFsdWUpXG4gICAgaWYgKGRpbWVuc2lvbiA9PT0gJ3dpZHRoJyAmJiBpbnRWYWx1ZSA+PSBvcmlnaW5hbFdpZHRoKSByZXR1cm4gbnVsbFxuICAgIGlmIChkaW1lbnNpb24gPT09ICdoZWlnaHQnICYmIGludFZhbHVlID49IG9yaWdpbmFsSGVpZ2h0KSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgcGVyY2VudGFnZSA9IDEwMCAqIChpbnRWYWx1ZSAvIChkaW1lbnNpb24gPT09ICd3aWR0aCcgPyBvcmlnaW5hbFdpZHRoIDogb3JpZ2luYWxIZWlnaHQpKVxuXG4gICAgaWYgKHBlcmNlbnRhZ2UgPT09IDEwMCB8fCBwZXJjZW50YWdlID09PSAwKSByZXR1cm4gbnVsbFxuXG4gICAgc2V0Q3JvcCh7XG4gICAgICAuLi5jcm9wLFxuICAgICAgW2RpbWVuc2lvbl06IHBlcmNlbnRhZ2UsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbmVUdW5lRm9jYWxQb2ludCA9ICh7IGNvb3JkaW5hdGUsIHZhbHVlIH06IHsgY29vcmRpbmF0ZTogJ3gnIHwgJ3knOyB2YWx1ZTogc3RyaW5nIH0pID0+IHtcbiAgICBjb25zdCBpbnRWYWx1ZSA9IHBhcnNlSW50KHZhbHVlKVxuICAgIGlmIChpbnRWYWx1ZSA+PSAwICYmIGludFZhbHVlIDw9IDEwMCkge1xuICAgICAgc2V0UG9pbnRQb3NpdGlvbigocHJldlBvc2l0aW9uKSA9PiAoeyAuLi5wcmV2UG9zaXRpb24sIFtjb29yZGluYXRlXTogaW50VmFsdWUgfSkpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc2F2ZUVkaXRzID0gKCkgPT4ge1xuICAgIHNldEZvcm1RdWVyeVBhcmFtcyh7XG4gICAgICAuLi5mb3JtUXVlcnlQYXJhbXMsXG4gICAgICB1cGxvYWRFZGl0czoge1xuICAgICAgICBjcm9wOiBjcm9wIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgZm9jYWxQb2ludDogcG9pbnRQb3NpdGlvbiA/IHBvaW50UG9zaXRpb24gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgIH0pXG4gICAgY2xvc2VNb2RhbChlZGl0RHJhd2VyU2x1ZylcbiAgfVxuXG4gIGNvbnN0IG9uRHJhZ0VuZCA9IFJlYWN0LnVzZUNhbGxiYWNrKCh7IHgsIHkgfSkgPT4ge1xuICAgIHNldFBvaW50UG9zaXRpb24oeyB4LCB5IH0pXG4gICAgc2V0Q2hlY2tCb3VuZHMoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGNlbnRlckZvY2FsUG9pbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGZvY2FsV3JhcFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgYm91bmRzUmVjdCA9IHNob3dDcm9wXG4gICAgICA/IGNyb3BSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgOiBpbWFnZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgeENlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QubGVmdCAtIGNvbnRhaW5lclJlY3QubGVmdCArIGJvdW5kc1JlY3Qud2lkdGggLyAyKSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgY29uc3QgeUNlbnRlciA9XG4gICAgICAoKGJvdW5kc1JlY3QudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBib3VuZHNSZWN0LmhlaWdodCAvIDIpIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgc2V0UG9pbnRQb3NpdGlvbih7IHg6IHhDZW50ZXIsIHk6IHlDZW50ZXIgfSlcbiAgfVxuXG4gIGNvbnN0IGZpbGVTcmNUb1VzZSA9IGltYWdlQ2FjaGVUYWcgPyBgJHtmaWxlU3JjfT8ke2ltYWdlQ2FjaGVUYWd9YCA6IGZpbGVTcmNcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtiYXNlQ2xhc3N9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2hlYWRlcmB9PlxuICAgICAgICA8aDIgdGl0bGU9e2Ake3QoJ2dlbmVyYWw6ZWRpdGluZycpfSAke2ZpbGVOYW1lfWB9PlxuICAgICAgICAgIHt0KCdnZW5lcmFsOmVkaXRpbmcnKX0ge2ZpbGVOYW1lfVxuICAgICAgICA8L2gyPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYWN0aW9uc2B9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2dlbmVyYWw6Y2FuY2VsJyl9XG4gICAgICAgICAgICBidXR0b25TdHlsZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NhbmNlbGB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjbG9zZU1vZGFsKGVkaXREcmF3ZXJTbHVnKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbDpjYW5jZWwnKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdnZW5lcmFsOmFwcGx5Q2hhbmdlcycpfVxuICAgICAgICAgICAgYnV0dG9uU3R5bGU9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fc2F2ZWB9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzYXZlRWRpdHMoKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbDphcHBseUNoYW5nZXMnKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X190b29sV3JhcGB9PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fY3JvcGB9PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZm9jYWwtd3JhcHBlcmB9XG4gICAgICAgICAgICByZWY9e2ZvY2FsV3JhcFJlZn1cbiAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgIGFzcGVjdFJhdGlvOiBgJHtvcmlnaW5hbFdpZHRoIC8gb3JpZ2luYWxIZWlnaHR9YCxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Nob3dDcm9wID8gKFxuICAgICAgICAgICAgICA8UmVhY3RDcm9wXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19yZWFjdENyb3BgfVxuICAgICAgICAgICAgICAgIGNyb3A9e2Nyb3B9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhfLCBjKSA9PiBzZXRDcm9wKGMpfVxuICAgICAgICAgICAgICAgIG9uQ29tcGxldGU9eygpID0+IHNldENoZWNrQm91bmRzKHRydWUpfVxuICAgICAgICAgICAgICAgIHJlbmRlclNlbGVjdGlvbkFkZG9uPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Nyb3Atd2luZG93YH0gcmVmPXtjcm9wUmVmfSAvPlxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICBhbHQ9e3QoJ3VwbG9hZDpzZXRDcm9wQXJlYScpfVxuICAgICAgICAgICAgICAgICAgb25Mb2FkPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzZXRPcmlnaW5hbEhlaWdodChlLmN1cnJlbnRUYXJnZXQubmF0dXJhbEhlaWdodClcbiAgICAgICAgICAgICAgICAgICAgc2V0T3JpZ2luYWxXaWR0aChlLmN1cnJlbnRUYXJnZXQubmF0dXJhbFdpZHRoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIHJlZj17aW1hZ2VSZWZ9XG4gICAgICAgICAgICAgICAgICBzcmM9e2ZpbGVTcmNUb1VzZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1JlYWN0Q3JvcD5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBhbHQ9e3QoJ3VwbG9hZDpzZXRGb2NhbFBvaW50Jyl9XG4gICAgICAgICAgICAgICAgb25Mb2FkPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgc2V0T3JpZ2luYWxIZWlnaHQoZS5jdXJyZW50VGFyZ2V0Lm5hdHVyYWxIZWlnaHQpXG4gICAgICAgICAgICAgICAgICBzZXRPcmlnaW5hbFdpZHRoKGUuY3VycmVudFRhcmdldC5uYXR1cmFsV2lkdGgpXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICByZWY9e2ltYWdlUmVmfVxuICAgICAgICAgICAgICAgIHNyYz17ZmlsZVNyY1RvVXNlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIHtzaG93Rm9jYWxQb2ludCAmJiAoXG4gICAgICAgICAgICAgIDxEcmFnZ2FibGVFbGVtZW50XG4gICAgICAgICAgICAgICAgYm91bmRzUmVmPXtzaG93Q3JvcCA/IGNyb3BSZWYgOiBpbWFnZVJlZn1cbiAgICAgICAgICAgICAgICBjaGVja0JvdW5kcz17c2hvd0Nyb3AgPyBjaGVja0JvdW5kcyA6IGZhbHNlfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZm9jYWxQb2ludGB9XG4gICAgICAgICAgICAgICAgY29udGFpbmVyUmVmPXtmb2NhbFdyYXBSZWZ9XG4gICAgICAgICAgICAgICAgaW5pdGlhbFBvc2l0aW9uPXtwb2ludFBvc2l0aW9ufVxuICAgICAgICAgICAgICAgIG9uRHJhZ0VuZD17b25EcmFnRW5kfVxuICAgICAgICAgICAgICAgIHNldENoZWNrQm91bmRzPXtzaG93Q3JvcCA/IHNldENoZWNrQm91bmRzIDogZmFsc2V9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8UGx1cyAvPlxuICAgICAgICAgICAgICA8L0RyYWdnYWJsZUVsZW1lbnQ+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeyhzaG93Q3JvcCB8fCBzaG93Rm9jYWxQb2ludCkgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19zaWRlYmFyYH0+XG4gICAgICAgICAgICB7c2hvd0Nyb3AgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXBXcmFwYH0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X190aXRsZVdyYXBgfT5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt0KCd1cGxvYWQ6Y3JvcCcpfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVzZXRgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRDcm9wKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXQ6ICclJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3QoJ2dlbmVyYWw6cmVzZXQnKX1cbiAgICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2Rlc2NyaXB0aW9uYH0+XG4gICAgICAgICAgICAgICAgICB7dCgndXBsb2FkOmNyb3BUb29sRGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2lucHV0c1dyYXBgfT5cbiAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtgJHt0KCd1cGxvYWQ6d2lkdGgnKX0gKHB4KWB9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lQ3JvcCh7IGRpbWVuc2lvbjogJ3dpZHRoJywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsoKGNyb3Aud2lkdGggLyAxMDApICogb3JpZ2luYWxXaWR0aCkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17YCR7dCgndXBsb2FkOmhlaWdodCcpfSAocHgpYH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyh2YWx1ZSkgPT4gZmluZVR1bmVDcm9wKHsgZGltZW5zaW9uOiAnaGVpZ2h0JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXsoKGNyb3AuaGVpZ2h0IC8gMTAwKSAqIG9yaWdpbmFsSGVpZ2h0KS50b0ZpeGVkKDApfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApfVxuXG4gICAgICAgICAgICB7c2hvd0ZvY2FsUG9pbnQgJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZ3JvdXBXcmFwYH0+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X190aXRsZVdyYXBgfT5cbiAgICAgICAgICAgICAgICAgICAgPGgzPnt0KCd1cGxvYWQ6Zm9jYWxQb2ludCcpfTwvaDM+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBidXR0b25TdHlsZT1cIm5vbmVcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fcmVzZXRgfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2NlbnRlckZvY2FsUG9pbnR9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7dCgnZ2VuZXJhbDpyZXNldCcpfVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fZGVzY3JpcHRpb25gfT5cbiAgICAgICAgICAgICAgICAgIHt0KCd1cGxvYWQ6Zm9jYWxQb2ludERlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pbnB1dHNXcmFwYH0+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlggJVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lRm9jYWxQb2ludCh7IGNvb3JkaW5hdGU6ICd4JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwb2ludFBvc2l0aW9uLngudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgbmFtZT1cIlkgJVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsodmFsdWUpID0+IGZpbmVUdW5lRm9jYWxQb2ludCh7IGNvb3JkaW5hdGU6ICd5JywgdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtwb2ludFBvc2l0aW9uLnkudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG5cbmNvbnN0IERyYWdnYWJsZUVsZW1lbnQgPSAoe1xuICBib3VuZHNSZWYsXG4gIGNoZWNrQm91bmRzLFxuICBjaGlsZHJlbixcbiAgY2xhc3NOYW1lLFxuICBjb250YWluZXJSZWYsXG4gIGluaXRpYWxQb3NpdGlvbiA9IHsgeDogNTAsIHk6IDUwIH0sXG4gIG9uRHJhZ0VuZCxcbiAgc2V0Q2hlY2tCb3VuZHMsXG59KSA9PiB7XG4gIGNvbnN0IFtwb3NpdGlvbiwgc2V0UG9zaXRpb25dID0gdXNlU3RhdGUoeyB4OiBpbml0aWFsUG9zaXRpb24ueCwgeTogaW5pdGlhbFBvc2l0aW9uLnkgfSlcbiAgY29uc3QgW2lzRHJhZ2dpbmcsIHNldElzRHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IGRyYWdSZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCB1bmRlZmluZWQ+KClcblxuICBjb25zdCBnZXRDb29yZGluYXRlcyA9IFJlYWN0LnVzZUNhbGxiYWNrKFxuICAgIChtb3VzZVhBcmc/OiBudW1iZXIsIG1vdXNlWUFyZz86IG51bWJlciwgcmVjZW50ZXI/OiBib29sZWFuKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IGJvdW5kc1JlY3QgPSBib3VuZHNSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgbW91c2VYID0gbW91c2VYQXJnID8/IGJvdW5kc1JlY3QubGVmdFxuICAgICAgY29uc3QgbW91c2VZID0gbW91c2VZQXJnID8/IGJvdW5kc1JlY3QudG9wXG5cbiAgICAgIGNvbnN0IHhPdXRPZkJvdW5kcyA9IG1vdXNlWCA8IGJvdW5kc1JlY3QubGVmdCB8fCBtb3VzZVggPiBib3VuZHNSZWN0LnJpZ2h0XG4gICAgICBjb25zdCB5T3V0T2ZCb3VuZHMgPSBtb3VzZVkgPCBib3VuZHNSZWN0LnRvcCB8fCBtb3VzZVkgPiBib3VuZHNSZWN0LmJvdHRvbVxuXG4gICAgICBsZXQgeCA9ICgobW91c2VYIC0gY29udGFpbmVyUmVjdC5sZWZ0KSAvIGNvbnRhaW5lclJlY3Qud2lkdGgpICogMTAwXG4gICAgICBsZXQgeSA9ICgobW91c2VZIC0gY29udGFpbmVyUmVjdC50b3ApIC8gY29udGFpbmVyUmVjdC5oZWlnaHQpICogMTAwXG4gICAgICBjb25zdCB4Q2VudGVyID1cbiAgICAgICAgKChib3VuZHNSZWN0LmxlZnQgLSBjb250YWluZXJSZWN0LmxlZnQgKyBib3VuZHNSZWN0LndpZHRoIC8gMikgLyBjb250YWluZXJSZWN0LndpZHRoKSAqIDEwMFxuICAgICAgY29uc3QgeUNlbnRlciA9XG4gICAgICAgICgoYm91bmRzUmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGJvdW5kc1JlY3QuaGVpZ2h0IC8gMikgLyBjb250YWluZXJSZWN0LmhlaWdodCkgKiAxMDBcbiAgICAgIGlmICh4T3V0T2ZCb3VuZHMgfHwgeU91dE9mQm91bmRzKSB7XG4gICAgICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gICAgICAgIGlmIChtb3VzZVggPCBib3VuZHNSZWN0LmxlZnQpIHtcbiAgICAgICAgICB4ID0gKChib3VuZHNSZWN0LmxlZnQgLSBjb250YWluZXJSZWN0LmxlZnQpIC8gY29udGFpbmVyUmVjdC53aWR0aCkgKiAxMDBcbiAgICAgICAgfSBlbHNlIGlmIChtb3VzZVggPiBib3VuZHNSZWN0LnJpZ2h0KSB7XG4gICAgICAgICAgeCA9XG4gICAgICAgICAgICAoKGNvbnRhaW5lclJlY3Qud2lkdGggLSAoY29udGFpbmVyUmVjdC5yaWdodCAtIGJvdW5kc1JlY3QucmlnaHQpKSAvXG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlY3Qud2lkdGgpICpcbiAgICAgICAgICAgIDEwMFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1vdXNlWSA8IGJvdW5kc1JlY3QudG9wKSB7XG4gICAgICAgICAgeSA9ICgoYm91bmRzUmVjdC50b3AgLSBjb250YWluZXJSZWN0LnRvcCkgLyBjb250YWluZXJSZWN0LmhlaWdodCkgKiAxMDBcbiAgICAgICAgfSBlbHNlIGlmIChtb3VzZVkgPiBib3VuZHNSZWN0LmJvdHRvbSkge1xuICAgICAgICAgIHkgPVxuICAgICAgICAgICAgKChjb250YWluZXJSZWN0LmhlaWdodCAtIChjb250YWluZXJSZWN0LmJvdHRvbSAtIGJvdW5kc1JlY3QuYm90dG9tKSkgL1xuICAgICAgICAgICAgICBjb250YWluZXJSZWN0LmhlaWdodCkgKlxuICAgICAgICAgICAgMTAwXG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVjZW50ZXIpIHtcbiAgICAgICAgICB4ID0geE91dE9mQm91bmRzID8geENlbnRlciA6IHhcbiAgICAgICAgICB5ID0geU91dE9mQm91bmRzID8geUNlbnRlciA6IHlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4geyB4LCB5IH1cbiAgICB9LFxuICAgIFtib3VuZHNSZWYsIGNvbnRhaW5lclJlZl0sXG4gIClcblxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgc2V0SXNEcmFnZ2luZyh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlTW91c2VNb3ZlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKCFpc0RyYWdnaW5nKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IHsgeCwgeSB9ID0gZ2V0Q29vcmRpbmF0ZXMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcblxuICAgIHNldFBvc2l0aW9uKHsgeCwgeSB9KVxuICB9XG5cbiAgY29uc3Qgb25Ecm9wID0gKCkgPT4ge1xuICAgIHNldElzRHJhZ2dpbmcoZmFsc2UpXG4gICAgb25EcmFnRW5kKHBvc2l0aW9uKVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNEcmFnZ2luZyB8fCAhZHJhZ1JlZi5jdXJyZW50KSByZXR1cm5cbiAgICBpZiAoY2hlY2tCb3VuZHMpIHtcbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCBsZWZ0LCB0b3AsIHdpZHRoIH0gPSBkcmFnUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICAgIGNvbnN0IHsgeCwgeSB9ID0gZ2V0Q29vcmRpbmF0ZXMobGVmdCArIHdpZHRoIC8gMiwgdG9wICsgaGVpZ2h0IC8gMiwgdHJ1ZSlcbiAgICAgIG9uRHJhZ0VuZCh7IHgsIHkgfSlcbiAgICAgIHNldFBvc2l0aW9uKHsgeCwgeSB9KVxuICAgICAgc2V0Q2hlY2tCb3VuZHMoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG4gIH0sIFtnZXRDb29yZGluYXRlcywgaXNEcmFnZ2luZywgY2hlY2tCb3VuZHMsIHNldENoZWNrQm91bmRzLCBwb3NpdGlvbi54LCBwb3NpdGlvbi55LCBvbkRyYWdFbmRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UG9zaXRpb24oeyB4OiBpbml0aWFsUG9zaXRpb24ueCwgeTogaW5pdGlhbFBvc2l0aW9uLnkgfSlcbiAgfSwgW2luaXRpYWxQb3NpdGlvbi54LCBpbml0aWFsUG9zaXRpb24ueV0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e1tcbiAgICAgICAgYCR7YmFzZUNsYXNzfV9fZHJhZ2dhYmxlLWNvbnRhaW5lcmAsXG4gICAgICAgIGlzRHJhZ2dpbmcgJiYgYCR7YmFzZUNsYXNzfV9fZHJhZ2dhYmxlLWNvbnRhaW5lci0tZHJhZ2dpbmdgLFxuICAgICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcgJyl9XG4gICAgICBvbk1vdXNlTW92ZT17aGFuZGxlTW91c2VNb3ZlfVxuICAgID5cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtbYCR7YmFzZUNsYXNzfV9fZHJhZ2dhYmxlYCwgY2xhc3NOYW1lXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpfVxuICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlTW91c2VEb3dufVxuICAgICAgICBvbk1vdXNlVXA9e29uRHJvcH1cbiAgICAgICAgcmVmPXtkcmFnUmVmfVxuICAgICAgICBzdHlsZT17eyBsZWZ0OiBgJHtwb3NpdGlvbi54fSVgLCB0b3A6IGAke3Bvc2l0aW9uLnl9JWAgfX1cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGRpdiAvPlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiRWRpdFVwbG9hZCIsImJhc2VDbGFzcyIsIklucHV0IiwibmFtZSIsIm9uQ2hhbmdlIiwidmFsdWUiLCJkaXYiLCJjbGFzc05hbWUiLCJpbnB1dCIsImUiLCJ0YXJnZXQiLCJ0eXBlIiwiZmlsZU5hbWUiLCJmaWxlU3JjIiwiaW1hZ2VDYWNoZVRhZyIsInNob3dDcm9wIiwic2hvd0ZvY2FsUG9pbnQiLCJjbG9zZU1vZGFsIiwidXNlTW9kYWwiLCJ0IiwidXNlVHJhbnNsYXRpb24iLCJmb3JtUXVlcnlQYXJhbXMiLCJzZXRGb3JtUXVlcnlQYXJhbXMiLCJ1c2VGb3JtUXVlcnlQYXJhbXMiLCJ1cGxvYWRFZGl0cyIsImNyb3AiLCJzZXRDcm9wIiwidXNlU3RhdGUiLCJoZWlnaHQiLCJ1bml0Iiwid2lkdGgiLCJ4IiwieSIsInBvaW50UG9zaXRpb24iLCJzZXRQb2ludFBvc2l0aW9uIiwiZm9jYWxQb2ludCIsImNoZWNrQm91bmRzIiwic2V0Q2hlY2tCb3VuZHMiLCJvcmlnaW5hbEhlaWdodCIsInNldE9yaWdpbmFsSGVpZ2h0Iiwib3JpZ2luYWxXaWR0aCIsInNldE9yaWdpbmFsV2lkdGgiLCJmb2NhbFdyYXBSZWYiLCJ1c2VSZWYiLCJpbWFnZVJlZiIsImNyb3BSZWYiLCJmaW5lVHVuZUNyb3AiLCJkaW1lbnNpb24iLCJpbnRWYWx1ZSIsInBhcnNlSW50IiwicGVyY2VudGFnZSIsImZpbmVUdW5lRm9jYWxQb2ludCIsImNvb3JkaW5hdGUiLCJwcmV2UG9zaXRpb24iLCJzYXZlRWRpdHMiLCJ1bmRlZmluZWQiLCJlZGl0RHJhd2VyU2x1ZyIsIm9uRHJhZ0VuZCIsIlJlYWN0IiwidXNlQ2FsbGJhY2siLCJjZW50ZXJGb2NhbFBvaW50IiwiY29udGFpbmVyUmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJib3VuZHNSZWN0IiwieENlbnRlciIsImxlZnQiLCJ5Q2VudGVyIiwidG9wIiwiZmlsZVNyY1RvVXNlIiwiaDIiLCJ0aXRsZSIsIkJ1dHRvbiIsImFyaWEtbGFiZWwiLCJidXR0b25TdHlsZSIsIm9uQ2xpY2siLCJyZWYiLCJzdHlsZSIsImFzcGVjdFJhdGlvIiwiUmVhY3RDcm9wIiwiXyIsImMiLCJvbkNvbXBsZXRlIiwicmVuZGVyU2VsZWN0aW9uQWRkb24iLCJpbWciLCJhbHQiLCJvbkxvYWQiLCJjdXJyZW50VGFyZ2V0IiwibmF0dXJhbEhlaWdodCIsIm5hdHVyYWxXaWR0aCIsInNyYyIsIkRyYWdnYWJsZUVsZW1lbnQiLCJib3VuZHNSZWYiLCJjb250YWluZXJSZWYiLCJpbml0aWFsUG9zaXRpb24iLCJQbHVzIiwiaDMiLCJzcGFuIiwidG9GaXhlZCIsImNoaWxkcmVuIiwicG9zaXRpb24iLCJzZXRQb3NpdGlvbiIsImlzRHJhZ2dpbmciLCJzZXRJc0RyYWdnaW5nIiwiZHJhZ1JlZiIsImdldENvb3JkaW5hdGVzIiwibW91c2VYQXJnIiwibW91c2VZQXJnIiwicmVjZW50ZXIiLCJtb3VzZVgiLCJtb3VzZVkiLCJ4T3V0T2ZCb3VuZHMiLCJyaWdodCIsInlPdXRPZkJvdW5kcyIsImJvdHRvbSIsImhhbmRsZU1vdXNlRG93biIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVNb3VzZU1vdmUiLCJjbGllbnRYIiwiY2xpZW50WSIsIm9uRHJvcCIsInVzZUVmZmVjdCIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwib25Nb3VzZU1vdmUiLCJidXR0b24iLCJvbk1vdXNlRG93biIsIm9uTW91c2VVcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OytCQTRCYUE7OztlQUFBQTs7O3VCQXpCWTsrREFDZTt1RUFDUztRQUMxQzt3QkFFd0I7c0JBQ1Y7aUNBQ2M7NkJBQ0o7d0JBQ1I7UUFDaEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUMsWUFBWTtBQUVsQixNQUFNQyxRQUFzRixDQUFDLEVBQzNGQyxJQUFJLEVBQ0pDLFFBQVEsRUFDUkMsS0FBSyxFQUNOLGlCQUNDLDZCQUFDQztRQUFJQyxXQUFXLENBQUMsRUFBRU4sVUFBVSxPQUFPLENBQUM7T0FDbENFLG9CQUNELDZCQUFDSztRQUFNTCxNQUFNQTtRQUFNQyxVQUFVLENBQUNLLElBQU1MLFNBQVNLLEVBQUVDLE1BQU0sQ0FBQ0wsS0FBSztRQUFHTSxNQUFLO1FBQVNOLE9BQU9BOztBQUloRixNQUFNTCxhQU9SLENBQUMsRUFBRVksUUFBUSxFQUFFQyxPQUFPLEVBQUVDLGFBQWEsRUFBRUMsUUFBUSxFQUFFQyxjQUFjLEVBQUU7SUFDbEUsTUFBTSxFQUFFQyxVQUFVLEVBQUUsR0FBR0MsSUFBQUEsZUFBUTtJQUMvQixNQUFNLEVBQUVDLENBQUMsRUFBRSxHQUFHQyxJQUFBQSwyQkFBYztJQUM1QixNQUFNLEVBQUVDLGVBQWUsRUFBRUMsa0JBQWtCLEVBQUUsR0FBR0MsSUFBQUEsbUNBQWtCO0lBQ2xFLE1BQU0sRUFBRUMsV0FBVyxFQUFFLEdBQUdILG1CQUFtQixDQUFDO0lBQzVDLE1BQU0sQ0FBQ0ksTUFBTUMsUUFBUSxHQUFHQyxJQUFBQSxlQUFRLEVBQVc7UUFDekNDLFFBQVFKLGFBQWFDLE1BQU1HLFVBQVU7UUFDckNDLE1BQU07UUFDTkMsT0FBT04sYUFBYUMsTUFB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
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "ErrorPill", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return ErrorPill;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = /*#__PURE__*/ _interop_require_default(require("react"));
|
|
12
|
+
require("./index.scss");
|
|
13
|
+
function _interop_require_default(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const baseClass = 'error-pill';
|
|
19
|
+
const ErrorPill = (props)=>{
|
|
20
|
+
const { className, count, i18n, withMessage } = props;
|
|
21
|
+
const lessThan3Chars = !withMessage && count < 99;
|
|
22
|
+
const classes = [
|
|
23
|
+
baseClass,
|
|
24
|
+
lessThan3Chars && `${baseClass}--fixed-width`,
|
|
25
|
+
className && className
|
|
26
|
+
].filter(Boolean).join(' ');
|
|
27
|
+
if (count === 0) return null;
|
|
28
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
29
|
+
className: classes
|
|
30
|
+
}, /*#__PURE__*/ _react.default.createElement("div", {
|
|
31
|
+
className: `${baseClass}__content`
|
|
32
|
+
}, /*#__PURE__*/ _react.default.createElement("span", {
|
|
33
|
+
className: `${baseClass}__count`
|
|
34
|
+
}, count), withMessage && ` ${count > 1 ? i18n.t('general:errors') : i18n.t('general:error')}`));
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9FcnJvclBpbGwvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBQcm9wcyB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCAnLi9pbmRleC5zY3NzJ1xuXG5jb25zdCBiYXNlQ2xhc3MgPSAnZXJyb3ItcGlsbCdcblxuZXhwb3J0IGNvbnN0IEVycm9yUGlsbDogUmVhY3QuRkM8UHJvcHM+ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY2xhc3NOYW1lLCBjb3VudCwgaTE4biwgd2l0aE1lc3NhZ2UgfSA9IHByb3BzXG4gIGNvbnN0IGxlc3NUaGFuM0NoYXJzID0gIXdpdGhNZXNzYWdlICYmIGNvdW50IDwgOTlcblxuICBjb25zdCBjbGFzc2VzID0gW2Jhc2VDbGFzcywgbGVzc1RoYW4zQ2hhcnMgJiYgYCR7YmFzZUNsYXNzfS0tZml4ZWQtd2lkdGhgLCBjbGFzc05hbWUgJiYgY2xhc3NOYW1lXVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignICcpXG5cbiAgaWYgKGNvdW50ID09PSAwKSByZXR1cm4gbnVsbFxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXN9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2NvbnRlbnRgfT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19jb3VudGB9Pntjb3VudH08L3NwYW4+XG4gICAgICAgIHt3aXRoTWVzc2FnZSAmJiBgICR7Y291bnQgPiAxID8gaTE4bi50KCdnZW5lcmFsOmVycm9ycycpIDogaTE4bi50KCdnZW5lcmFsOmVycm9yJyl9YH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsiRXJyb3JQaWxsIiwiYmFzZUNsYXNzIiwicHJvcHMiLCJjbGFzc05hbWUiLCJjb3VudCIsImkxOG4iLCJ3aXRoTWVzc2FnZSIsImxlc3NUaGFuM0NoYXJzIiwiY2xhc3NlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiZGl2Iiwic3BhbiIsInQiXSwibWFwcGluZ3MiOiI7Ozs7K0JBUWFBOzs7ZUFBQUE7Ozs4REFSSztRQUlYOzs7Ozs7QUFFUCxNQUFNQyxZQUFZO0FBRVgsTUFBTUQsWUFBNkIsQ0FBQ0U7SUFDekMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFQyxXQUFXLEVBQUUsR0FBR0o7SUFDaEQsTUFBTUssaUJBQWlCLENBQUNELGVBQWVGLFFBQVE7SUFFL0MsTUFBTUksVUFBVTtRQUFDUDtRQUFXTSxrQkFBa0IsQ0FBQyxFQUFFTixVQUFVLGFBQWEsQ0FBQztRQUFFRSxhQUFhQTtLQUFVLENBQy9GTSxNQUFNLENBQUNDLFNBQ1BDLElBQUksQ0FBQztJQUVSLElBQUlQLFVBQVUsR0FBRyxPQUFPO0lBRXhCLHFCQUNFLDZCQUFDUTtRQUFJVCxXQUFXSztxQkFDZCw2QkFBQ0k7UUFBSVQsV0FBVyxDQUFDLEVBQUVGLFVBQVUsU0FBUyxDQUFDO3FCQUNyQyw2QkFBQ1k7UUFBS1YsV0FBVyxDQUFDLEVBQUVGLFVBQVUsT0FBTyxDQUFDO09BQUdHLFFBQ3hDRSxlQUFlLENBQUMsQ0FBQyxFQUFFRixRQUFRLElBQUlDLEtBQUtTLENBQUMsQ0FBQyxvQkFBb0JULEtBQUtTLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztBQUk1RiJ9
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "FieldSelect", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return FieldSelect;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _translations = require("@payloadcms/translations");
|
|
12
|
+
const _types = require("payload/types");
|
|
13
|
+
const _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
|
|
14
|
+
const _context = require("../../forms/Form/context");
|
|
15
|
+
const _createNestedFieldPath = require("../../forms/Form/createNestedFieldPath");
|
|
16
|
+
const _Label = /*#__PURE__*/ _interop_require_default(require("../../forms/Label"));
|
|
17
|
+
const _Translation = require("../../providers/Translation");
|
|
18
|
+
const _ReactSelect = /*#__PURE__*/ _interop_require_default(require("../ReactSelect"));
|
|
19
|
+
require("./index.scss");
|
|
20
|
+
function _interop_require_default(obj) {
|
|
21
|
+
return obj && obj.__esModule ? obj : {
|
|
22
|
+
default: obj
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
26
|
+
if (typeof WeakMap !== "function") return null;
|
|
27
|
+
var cacheBabelInterop = new WeakMap();
|
|
28
|
+
var cacheNodeInterop = new WeakMap();
|
|
29
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
30
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
31
|
+
})(nodeInterop);
|
|
32
|
+
}
|
|
33
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
34
|
+
if (!nodeInterop && obj && obj.__esModule) {
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
37
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
|
|
38
|
+
return {
|
|
39
|
+
default: obj
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
43
|
+
if (cache && cache.has(obj)) {
|
|
44
|
+
return cache.get(obj);
|
|
45
|
+
}
|
|
46
|
+
var newObj = {
|
|
47
|
+
__proto__: null
|
|
48
|
+
};
|
|
49
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
50
|
+
for(var key in obj){
|
|
51
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
52
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
53
|
+
if (desc && (desc.get || desc.set)) {
|
|
54
|
+
Object.defineProperty(newObj, key, desc);
|
|
55
|
+
} else {
|
|
56
|
+
newObj[key] = obj[key];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
newObj.default = obj;
|
|
61
|
+
if (cache) {
|
|
62
|
+
cache.set(obj, newObj);
|
|
63
|
+
}
|
|
64
|
+
return newObj;
|
|
65
|
+
}
|
|
66
|
+
const baseClass = 'field-select';
|
|
67
|
+
const combineLabel = (prefix, field, i18n)=>`${prefix === '' ? '' : `${prefix} > `}${(0, _translations.getTranslation)(field.label || field.name, i18n) || ''}`;
|
|
68
|
+
const reduceFields = (fields, i18n, path = '', labelPrefix = '')=>fields.reduce((fieldsToUse, field)=>{
|
|
69
|
+
// escape for a variety of reasons
|
|
70
|
+
if ((0, _types.fieldAffectsData)(field) && (field.admin?.disableBulkEdit || field.unique || field.hidden || field.admin?.hidden || field.admin?.readOnly)) {
|
|
71
|
+
return fieldsToUse;
|
|
72
|
+
}
|
|
73
|
+
if (!(field.type === 'array' || field.type === 'blocks') && (0, _types.fieldHasSubFields)(field)) {
|
|
74
|
+
return [
|
|
75
|
+
...fieldsToUse,
|
|
76
|
+
...reduceFields(field.fields, i18n, (0, _createNestedFieldPath.createNestedFieldPath)(path, field), combineLabel(labelPrefix, field, i18n))
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
if (field.type === 'tabs') {
|
|
80
|
+
return [
|
|
81
|
+
...fieldsToUse,
|
|
82
|
+
...field.tabs.reduce((tabFields, tab)=>{
|
|
83
|
+
return [
|
|
84
|
+
...tabFields,
|
|
85
|
+
...reduceFields(tab.fields, i18n, (0, _types.tabHasName)(tab) ? (0, _createNestedFieldPath.createNestedFieldPath)(path, field) : path, combineLabel(labelPrefix, field, i18n))
|
|
86
|
+
];
|
|
87
|
+
}, [])
|
|
88
|
+
];
|
|
89
|
+
}
|
|
90
|
+
const formattedField = {
|
|
91
|
+
label: combineLabel(labelPrefix, field, i18n),
|
|
92
|
+
value: {
|
|
93
|
+
...field,
|
|
94
|
+
path: (0, _createNestedFieldPath.createNestedFieldPath)(path, field)
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
return [
|
|
98
|
+
...fieldsToUse,
|
|
99
|
+
formattedField
|
|
100
|
+
];
|
|
101
|
+
}, []);
|
|
102
|
+
const FieldSelect = ({ fields, setSelected })=>{
|
|
103
|
+
const { i18n, t } = (0, _Translation.useTranslation)();
|
|
104
|
+
const [options] = (0, _react.useState)(()=>reduceFields(fields, i18n));
|
|
105
|
+
const { dispatchFields, getFields } = (0, _context.useForm)();
|
|
106
|
+
const handleChange = (selected)=>{
|
|
107
|
+
const activeFields = getFields();
|
|
108
|
+
if (selected === null) {
|
|
109
|
+
setSelected([]);
|
|
110
|
+
} else {
|
|
111
|
+
setSelected(selected.map(({ value })=>value));
|
|
112
|
+
}
|
|
113
|
+
// remove deselected values from form state
|
|
114
|
+
if (selected === null || Object.keys(activeFields || []).length > selected.length) {
|
|
115
|
+
Object.keys(activeFields).forEach((path)=>{
|
|
116
|
+
if (selected === null || !selected.find((field)=>{
|
|
117
|
+
return field.value.path === path;
|
|
118
|
+
})) {
|
|
119
|
+
dispatchFields({
|
|
120
|
+
type: 'REMOVE',
|
|
121
|
+
path
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
return /*#__PURE__*/ _react.default.createElement("div", {
|
|
128
|
+
className: baseClass
|
|
129
|
+
}, /*#__PURE__*/ _react.default.createElement(_Label.default, {
|
|
130
|
+
label: t('fields:selectFieldsToEdit')
|
|
131
|
+
}), /*#__PURE__*/ _react.default.createElement(_ReactSelect.default, {
|
|
132
|
+
isMulti: true,
|
|
133
|
+
onChange: handleChange,
|
|
134
|
+
options: options
|
|
135
|
+
}));
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50cy9GaWVsZFNlbGVjdC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGaWVsZCwgRmllbGRXaXRoUGF0aCB9IGZyb20gJ3BheWxvYWQvdHlwZXMnXG5cbmltcG9ydCB7IGdldFRyYW5zbGF0aW9uIH0gZnJvbSAnQHBheWxvYWRjbXMvdHJhbnNsYXRpb25zJ1xuaW1wb3J0IHsgZmllbGRBZmZlY3RzRGF0YSwgZmllbGRIYXNTdWJGaWVsZHMsIHRhYkhhc05hbWUgfSBmcm9tICdwYXlsb2FkL3R5cGVzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICcuLi8uLi9mb3Jtcy9Gb3JtL2NvbnRleHQnXG5pbXBvcnQgeyBjcmVhdGVOZXN0ZWRGaWVsZFBhdGggfSBmcm9tICcuLi8uLi9mb3Jtcy9Gb3JtL2NyZWF0ZU5lc3RlZEZpZWxkUGF0aCdcbmltcG9ydCBMYWJlbCBmcm9tICcuLi8uLi9mb3Jtcy9MYWJlbCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL1RyYW5zbGF0aW9uJ1xuaW1wb3J0IFJlYWN0U2VsZWN0IGZyb20gJy4uL1JlYWN0U2VsZWN0J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbmNvbnN0IGJhc2VDbGFzcyA9ICdmaWVsZC1zZWxlY3QnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGZpZWxkczogRmllbGRbXVxuICBzZXRTZWxlY3RlZDogKGZpZWxkczogRmllbGRXaXRoUGF0aFtdKSA9PiB2b2lkXG59XG5cbmNvbnN0IGNvbWJpbmVMYWJlbCA9IChwcmVmaXgsIGZpZWxkLCBpMThuKTogc3RyaW5nID0+XG4gIGAke3ByZWZpeCA9PT0gJycgPyAnJyA6IGAke3ByZWZpeH0gPiBgfSR7Z2V0VHJhbnNsYXRpb24oZmllbGQubGFiZWwgfHwgZmllbGQubmFtZSwgaTE4bikgfHwgJyd9YFxuY29uc3QgcmVkdWNlRmllbGRzID0gKFxuICBmaWVsZHM6IEZpZWxkW10sXG4gIGkxOG4sXG4gIHBhdGggPSAnJyxcbiAgbGFiZWxQcmVmaXggPSAnJyxcbik6IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IEZpZWxkV2l0aFBhdGggfVtdID0+XG4gIGZpZWxkcy5yZWR1Y2UoKGZpZWxkc1RvVXNlLCBmaWVsZCkgPT4ge1xuICAgIC8vIGVzY2FwZSBmb3IgYSB2YXJpZXR5IG9mIHJlYXNvbnNcbiAgICBpZiAoXG4gICAgICBmaWVsZEFmZmVjdHNEYXRhKGZpZWxkKSAmJlxuICAgICAgKGZpZWxkLmFkbWluPy5kaXNhYmxlQnVsa0VkaXQgfHxcbiAgICAgICAgZmllbGQudW5pcXVlIHx8XG4gICAgICAgIGZpZWxkLmhpZGRlbiB8fFxuICAgICAgICBmaWVsZC5hZG1pbj8uaGlkZGVuIHx8XG4gICAgICAgIGZpZWxkLmFkbWluPy5yZWFkT25seSlcbiAgICApIHtcbiAgICAgIHJldHVybiBmaWVsZHNUb1VzZVxuICAgIH1cbiAgICBpZiAoIShmaWVsZC50eXBlID09PSAnYXJyYXknIHx8IGZpZWxkLnR5cGUgPT09ICdibG9ja3MnKSAmJiBmaWVsZEhhc1N1YkZpZWxkcyhmaWVsZCkpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmZpZWxkc1RvVXNlLFxuICAgICAgICAuLi5yZWR1Y2VGaWVsZHMoXG4gICAgICAgICAgZmllbGQuZmllbGRzLFxuICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgY3JlYXRlTmVzdGVkRmllbGRQYXRoKHBhdGgsIGZpZWxkKSxcbiAgICAgICAgICBjb21iaW5lTGFiZWwobGFiZWxQcmVmaXgsIGZpZWxkLCBpMThuKSxcbiAgICAgICAgKSxcbiAgICAgIF1cbiAgICB9XG4gICAgaWYgKGZpZWxkLnR5cGUgPT09ICd0YWJzJykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uZmllbGRzVG9Vc2UsXG4gICAgICAgIC4uLmZpZWxkLnRhYnMucmVkdWNlKCh0YWJGaWVsZHMsIHRhYikgPT4ge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50YWJGaWVsZHMsXG4gICAgICAgICAgICAuLi5yZWR1Y2VGaWVsZHMoXG4gICAgICAgICAgICAgIHRhYi5maWVsZHMsXG4gICAgICAgICAgICAgIGkxOG4sXG4gICAgICAgICAgICAgIHRhYkhhc05hbWUodGFiKSA/IGNyZWF0ZU5lc3RlZEZpZWxkUGF0aChwYXRoLCBmaWVsZCkgOiBwYXRoLFxuICAgICAgICAgICAgICBjb21iaW5lTGFiZWwobGFiZWxQcmVmaXgsIGZpZWxkLCBpMThuKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgXVxuICAgICAgICB9LCBbXSksXG4gICAgICBdXG4gICAgfVxuICAgIGNvbnN0IGZvcm1hdHRlZEZpZWxkID0ge1xuICAgICAgbGFiZWw6IGNvbWJpbmVMYWJlbChsYWJlbFByZWZpeCwgZmllbGQsIGkxOG4pLFxuICAgICAgdmFsdWU6IHtcbiAgICAgICAgLi4uZmllbGQsXG4gICAgICAgIHBhdGg6IGNyZWF0ZU5lc3RlZEZpZWxkUGF0aChwYXRoLCBmaWVsZCksXG4gICAgICB9LFxuICAgIH1cblxuICAgIHJldHVybiBbLi4uZmllbGRzVG9Vc2UsIGZvcm1hdHRlZEZpZWxkXVxuICB9LCBbXSlcbmV4cG9ydCBjb25zdCBGaWVsZFNlbGVjdDogUmVhY3QuRkM8UHJvcHM+ID0gKHsgZmllbGRzLCBzZXRTZWxlY3RlZCB9KSA9PiB7XG4gIGNvbnN0IHsgaTE4biwgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuICBjb25zdCBbb3B0aW9uc10gPSB1c2VTdGF0ZSgoKSA9PiByZWR1Y2VGaWVsZHMoZmllbGRzLCBpMThuKSlcbiAgY29uc3QgeyBkaXNwYXRjaEZpZWxkcywgZ2V0RmllbGRzIH0gPSB1c2VGb3JtKClcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKHNlbGVjdGVkKSA9PiB7XG4gICAgY29uc3QgYWN0aXZlRmllbGRzID0gZ2V0RmllbGRzKClcbiAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHtcbiAgICAgIHNldFNlbGVjdGVkKFtdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTZWxlY3RlZChzZWxlY3RlZC5tYXAoKHsgdmFsdWUgfSkgPT4gdmFsdWUpKVxuICAgIH1cbiAgICAvLyByZW1vdmUgZGVzZWxlY3RlZCB2YWx1ZXMgZnJvbSBmb3JtIHN0YXRlXG4gICAgaWYgKHNlbGVjdGVkID09PSBudWxsIHx8IE9iamVjdC5rZXlzKGFjdGl2ZUZpZWxkcyB8fCBbXSkubGVuZ3RoID4gc2VsZWN0ZWQubGVuZ3RoKSB7XG4gICAgICBPYmplY3Qua2V5cyhhY3RpdmVGaWVsZHMpLmZvckVhY2goKHBhdGgpID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHNlbGVjdGVkID09PSBudWxsIHx8XG4gICAgICAgICAgIXNlbGVjdGVkLmZpbmQoKGZpZWxkKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmllbGQudmFsdWUucGF0aCA9PT0gcGF0aFxuICAgICAgICAgIH0pXG4gICAgICAgICkge1xuICAgICAgICAgIGRpc3BhdGNoRmllbGRzKHtcbiAgICAgICAgICAgIHR5cGU6ICdSRU1PVkUnLFxuICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e2Jhc2VDbGFzc30+XG4gICAgICA8TGFiZWwgbGFiZWw9e3QoJ2ZpZWxkczpzZWxlY3RGaWVsZHNUb0VkaXQnKX0gLz5cbiAgICAgIDxSZWFjdFNlbGVjdCBpc011bHRpIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9IG9wdGlvbnM9e29wdGlvbnN9IC8+XG4gICAgPC9kaXY+XG4gIClcbn1cbiJdLCJuYW1lcyI6WyJGaWVsZFNlbGVjdCIsImJhc2VDbGFzcyIsImNvbWJpbmVMYWJlbCIsInByZWZpeCIsImZpZWxkIiwiaTE4biIsImdldFRyYW5zbGF0aW9uIiwibGFiZWwiLCJuYW1lIiwicmVkdWNlRmllbGRzIiwiZmllbGRzIiwicGF0aCIsImxhYmVsUHJlZml4IiwicmVkdWNlIiwiZmllbGRzVG9Vc2UiLCJmaWVsZEFmZmVjdHNEYXRhIiwiYWRtaW4iLCJkaXNhYmxlQnVsa0VkaXQiLCJ1bmlxdWUiLCJoaWRkZW4iLCJyZWFkT25seSIsInR5cGUiLCJmaWVsZEhhc1N1YkZpZWxkcyIsImNyZWF0ZU5lc3RlZEZpZWxkUGF0aCIsInRhYnMiLCJ0YWJGaWVsZHMiLCJ0YWIiLCJ0YWJIYXNOYW1lIiwiZm9ybWF0dGVkRmllbGQiLCJ2YWx1ZSIsInNldFNlbGVjdGVkIiwidCIsInVzZVRyYW5zbGF0aW9uIiwib3B0aW9ucyIsInVzZVN0YXRlIiwiZGlzcGF0Y2hGaWVsZHMiLCJnZXRGaWVsZHMiLCJ1c2VGb3JtIiwiaGFuZGxlQ2hhbmdlIiwic2VsZWN0ZWQiLCJhY3RpdmVGaWVsZHMiLCJtYXAiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZm9yRWFjaCIsImZpbmQiLCJkaXYiLCJjbGFzc05hbWUiLCJMYWJlbCIsIlJlYWN0U2VsZWN0IiwiaXNNdWx0aSIsIm9uQ2hhbmdlIl0sIm1hcHBpbmdzIjoiOzs7OytCQTZFYUE7OztlQUFBQTs7OzhCQTNFa0I7dUJBQ2lDOytEQUNoQzt5QkFFUjt1Q0FDYzs4REFDcEI7NkJBQ2E7b0VBQ1A7UUFDakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRVAsTUFBTUMsWUFBWTtBQU9sQixNQUFNQyxlQUFlLENBQUNDLFFBQVFDLE9BQU9DLE9BQ25DLENBQUMsRUFBRUYsV0FBVyxLQUFLLEtBQUssQ0FBQyxFQUFFQSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUVHLElBQUFBLDRCQUFjLEVBQUNGLE1BQU1HLEtBQUssSUFBSUgsTUFBTUksSUFBSSxFQUFFSCxTQUFTLEdBQUcsQ0FBQztBQUNsRyxNQUFNSSxlQUFlLENBQ25CQyxRQUNBTCxNQUNBTSxPQUFPLEVBQUUsRUFDVEMsY0FBYyxFQUFFLEdB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
|