@webiny/app-website-builder 6.5.0-beta.0 → 6.5.0-beta.10
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/BaseEditor/config/Sidebar/Tab.d.ts +0 -4
- package/BaseEditor/config/Sidebar/Tab.js +5 -21
- package/BaseEditor/config/Sidebar/Tab.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js +6 -66
- package/BaseEditor/defaultConfig/Content/AddressBar/PreviewDomain.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/DropZoneManager.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/Iframe.d.ts +2 -2
- package/BaseEditor/defaultConfig/Content/Preview/Overlays/ElementOverlays.d.ts +2 -2
- package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js +1 -1
- package/BaseEditor/defaultConfig/Content/Preview/PreviewContainer.js.map +1 -1
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.d.ts +1 -6
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.js +1 -26
- package/BaseEditor/defaultConfig/DocumentStateEditor/DocumentStateEditor.d.ts +2 -2
- package/BaseEditor/defaultConfig/ElementInputRenderers.js +12 -0
- package/BaseEditor/defaultConfig/ElementInputRenderers.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js +2 -5
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/ElementSettingsGroup.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.d.ts +22 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.js +17 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.d.ts +1 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js +64 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/PreviewedBindings.test.js.map +1 -0
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js +7 -2
- package/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js +8 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderColor.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderRadius.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderStyle.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Border/BorderWidth.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/Alignment.d.ts +6 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Margin.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/MarginPadding/Padding.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Visibility/Visibility.d.ts +2 -2
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js.map +1 -1
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js +2 -5
- package/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js.map +1 -1
- package/BaseEditor/defaultConfig/Toolbar/Navigator/Navigator.d.ts +2 -2
- package/DocumentEditor/DocumentEditor.d.ts +2 -2
- package/DocumentEditor/StateInspector.d.ts +4 -2
- package/Extension.js +3 -0
- package/Extension.js.map +1 -1
- package/domain/Page/Page.d.ts +2 -0
- package/domain/Page/Page.js +1 -0
- package/domain/Page/Page.js.map +1 -1
- package/domain/PageRevision/PageRevision.d.ts +11 -0
- package/domain/PageRevision/PageRevision.js +20 -0
- package/domain/PageRevision/PageRevision.js.map +1 -1
- package/ecommerce/components/ResourcePage.d.ts +6 -2
- package/ecommerce/components/ResourcesList.d.ts +4 -4
- package/ecommerce/components/ResourcesPicker.d.ts +9 -4
- package/editorSdk/CommandBus.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js +41 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFrom.test.js.map +1 -1
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.d.ts +3 -2
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js +8 -2
- package/features/pages/createPageRevisionFrom/CreatePageRevisionFromRepository.js.map +1 -1
- package/features/pages/deletePageRevision/DeletePageRevision.test.d.ts +1 -0
- package/features/pages/deletePageRevision/DeletePageRevision.test.js +67 -0
- package/features/pages/deletePageRevision/DeletePageRevision.test.js.map +1 -0
- package/features/pages/deletePageRevision/DeletePageRevisionGateway.d.ts +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionGateway.js +2 -3
- package/features/pages/deletePageRevision/DeletePageRevisionGateway.js.map +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionRepository.d.ts +4 -2
- package/features/pages/deletePageRevision/DeletePageRevisionRepository.js +7 -3
- package/features/pages/deletePageRevision/DeletePageRevisionRepository.js.map +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionUseCase.js +1 -1
- package/features/pages/deletePageRevision/DeletePageRevisionUseCase.js.map +1 -1
- package/features/pages/deletePageRevision/abstractions.d.ts +2 -3
- package/features/pages/deletePageRevision/abstractions.js.map +1 -1
- package/features/pages/getPage/PageGatewayDto.d.ts +2 -0
- package/features/pages/publishPage/PublishPage.test.js +41 -1
- package/features/pages/publishPage/PublishPage.test.js.map +1 -1
- package/features/pages/publishPage/PublishPageRepository.d.ts +3 -2
- package/features/pages/publishPage/PublishPageRepository.js +15 -4
- package/features/pages/publishPage/PublishPageRepository.js.map +1 -1
- package/features/pages/shared/pageGraphQLFields.js +1 -0
- package/features/pages/shared/pageGraphQLFields.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPage.test.js +4 -1
- package/features/pages/unpublishPage/UnpublishPage.test.js.map +1 -1
- package/features/pages/unpublishPage/UnpublishPageRepository.d.ts +3 -2
- package/features/pages/unpublishPage/UnpublishPageRepository.js +12 -4
- package/features/pages/unpublishPage/UnpublishPageRepository.js.map +1 -1
- package/inputRenderers/DateTimeInput.d.ts +9 -0
- package/inputRenderers/DateTimeInput.js +21 -0
- package/inputRenderers/DateTimeInput.js.map +1 -0
- package/inputRenderers/DateTimeInput.test.d.ts +1 -0
- package/inputRenderers/DateTimeInput.test.js +27 -0
- package/inputRenderers/DateTimeInput.test.js.map +1 -0
- package/inputRenderers/FileInput.js +1 -1
- package/inputRenderers/FileInput.js.map +1 -1
- package/inputRenderers/RadioInput.d.ts +3 -0
- package/inputRenderers/RadioInput.js +20 -0
- package/inputRenderers/RadioInput.js.map +1 -0
- package/inputRenderers/TagsInput.d.ts +3 -0
- package/inputRenderers/TagsInput.js +22 -0
- package/inputRenderers/TagsInput.js.map +1 -0
- package/package.json +31 -31
- package/presentation/pages/CreatePage/CreatePageDialog.d.ts +2 -2
- package/presentation/pages/PageEditor/Revisions/RevisionListDrawer.js +4 -0
- package/presentation/pages/PageEditor/Revisions/RevisionListDrawer.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/RevisionListItem.d.ts +3 -3
- package/presentation/pages/PageEditor/Revisions/RevisionListItem.js +9 -20
- package/presentation/pages/PageEditor/Revisions/RevisionListItem.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/RevisionsList.js +7 -19
- package/presentation/pages/PageEditor/Revisions/RevisionsList.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/useRevision.d.ts +1 -1
- package/presentation/pages/PageEditor/Revisions/useRevision.js +84 -14
- package/presentation/pages/PageEditor/Revisions/useRevision.js.map +1 -1
- package/presentation/pages/PageEditor/Revisions/useRevisionList.d.ts +3 -0
- package/presentation/pages/PageEditor/Revisions/useRevisionList.js +31 -0
- package/presentation/pages/PageEditor/Revisions/useRevisionList.js.map +1 -0
- package/presentation/pages/PageEditor/TopBar/PageSettingsDrawer.d.ts +2 -2
- package/presentation/pages/PageEditor/TopBar/RevisionsMenu.js +7 -19
- package/presentation/pages/PageEditor/TopBar/RevisionsMenu.js.map +1 -1
- package/presentation/pages/PageList/PageListDataSource.js +1 -1
- package/presentation/pages/PageList/PageListDataSource.js.map +1 -1
- package/presentation/pages/PageList/PageListPresenter.test.d.ts +1 -0
- package/presentation/pages/PageList/PageListPresenter.test.js +293 -0
- package/presentation/pages/PageList/PageListPresenter.test.js.map +1 -0
- package/presentation/pages/PageList/components/BulkActions/BulkActionDelete.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionDuplicate.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionMovePage.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionPublish.d.ts +2 -2
- package/presentation/pages/PageList/components/BulkActions/BulkActionUnpublish.d.ts +2 -2
- package/presentation/pages/PageList/components/DocumentList.d.ts +2 -2
- package/presentation/pages/PageList/components/Table/Table.d.ts +2 -2
- package/presentation/pages/RevisionList/RevisionListPresenter.d.ts +27 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.js +73 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.js.map +1 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.test.d.ts +1 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.test.js +219 -0
- package/presentation/pages/RevisionList/RevisionListPresenter.test.js.map +1 -0
- package/presentation/pages/RevisionList/abstractions.d.ts +34 -0
- package/presentation/pages/RevisionList/abstractions.js +5 -0
- package/presentation/pages/RevisionList/abstractions.js.map +1 -0
- package/presentation/pages/RevisionList/feature.d.ts +3 -0
- package/presentation/pages/RevisionList/feature.js +17 -0
- package/presentation/pages/RevisionList/feature.js.map +1 -0
- package/presentation/pages/RevisionList/index.d.ts +2 -0
- package/presentation/pages/RevisionList/index.js +1 -0
- package/presentation/pages/TrashBin/WbTrashBin.d.ts +2 -2
- package/presentation/redirects/RedirectList/RedirectListDataSource.js +1 -1
- package/presentation/redirects/RedirectList/RedirectListDataSource.js.map +1 -1
- package/presentation/redirects/RedirectList/RedirectListPresenter.js.map +1 -1
- package/presentation/redirects/RedirectList/RedirectListPresenter.test.d.ts +1 -0
- package/presentation/redirects/RedirectList/RedirectListPresenter.test.js +273 -0
- package/presentation/redirects/RedirectList/RedirectListPresenter.test.js.map +1 -0
- package/presentation/redirects/RedirectList/components/BulkActionDelete.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/BulkActionMove.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/CreateRedirectDialog.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/DocumentList.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/EditRedirectDialog.d.ts +2 -2
- package/presentation/redirects/RedirectList/components/Table/Table.d.ts +2 -2
- package/shared/fileManagerItemToValue.js +3 -1
- package/shared/fileManagerItemToValue.js.map +1 -1
- package/shared/fileManagerItemToValue.test.d.ts +1 -0
- package/shared/fileManagerItemToValue.test.js +73 -0
- package/shared/fileManagerItemToValue.test.js.map +1 -0
- package/BaseEditor/defaultConfig/Content/usePreviewDomain.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport set from \"lodash/set.js\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils/generateId.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport type { ValueBinding, CreateElementParams } from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { InputAstNode } from \"@webiny/website-builder-sdk\";\nimport {\n functionConverter,\n InputsBindingsProcessor,\n StylesBindingsProcessor,\n createElement\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"~/editorSdk/utils/executeOnChange.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useElementInputsAst } from \"~/BaseEditor/hooks/useElementInputsAst.js\";\nimport {\n BreakpointElementMetadata,\n ElementMetadata,\n InputMetadata,\n type IMetadata\n} from \"~/BaseEditor/metadata/index.js\";\nimport { useElementFactory } from \"./useElementFactory.js\";\n\nexport type OnChangeParams = {\n value: InputValueObject;\n metadata: IMetadata;\n};\n\nexport type InputBindingOnChange = (cb: (params: OnChangeParams) => void) => void;\n\nexport class InputValueObject {\n private value: any;\n\n constructor(value: any) {\n this.value = value;\n }\n\n set(value: any) {\n this.value = value;\n }\n\n get() {\n return this.value;\n }\n\n unset() {\n this.value = undefined;\n }\n}\n\nfunction convertBracketPathToDotPath(path: string): string {\n // Flat binding paths use `/` as the segment separator (e.g. `items/0/label`, `address/city`).\n // lodash `set`/`get` expect `.`-delimited paths, and treat numeric segments as array indexes,\n // so a straight `/` -> `.` conversion handles both nested objects and list items.\n return path.replace(/\\//g, \".\");\n}\n\n/**\n * Reads a value from a deep inputs object using a flat `/`-delimited binding path.\n * Numeric segments are treated as array indexes (e.g. `items/0/label`).\n */\nfunction getDeepValueAtPath(obj: any, path: string): any {\n if (!path) {\n return obj;\n }\n\n const keys = path.split(\"/\").map(key => (/^\\d+$/.test(key) ? Number(key) : key));\n return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), obj);\n}\n\n/**\n * This makes UI interaction smoother (input blur in particular).\n */\nconst withTimeout = <T extends (...args: any[]) => unknown>(cb: T): T => {\n return ((...args: Parameters<T>) => {\n setTimeout(() => {\n cb(...args);\n }, 0);\n }) as unknown as T;\n};\n\nexport const useInputValue = (elementId: string, node: InputAstNode) => {\n const { breakpoint, breakpoints } = useBreakpoint();\n const editor = useDocumentEditor();\n const inputsAst = useElementInputsAst(elementId);\n const elementFactory = useElementFactory();\n\n const breakpointNames = useMemo(() => breakpoints.map(bp => bp.name), []);\n\n // These bindings already include per-breakpoint overrides.\n const { rawBindings, resolvedBindings, inheritanceMap } = useBindingsForElement(elementId);\n\n const stylesProcessor = useMemo(() => {\n return new StylesBindingsProcessor(elementId ?? \"\", breakpointNames, rawBindings);\n }, [elementId, rawBindings]);\n\n const inputsProcessor = useMemo(() => {\n return new InputsBindingsProcessor(\n elementId ?? \"\",\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n }, [elementId, rawBindings]);\n\n // This value is the final calculated breakpoint value.\n // Leaf inputs resolve directly from the flat bindings. Container inputs (object / object-list)\n // have no flat entry of their own, so we resolve their deep value (object / array) from the\n // processor - this is what list fields read to render items and to rewrite the whole array.\n const value = useMemo(() => {\n if (node.children.length > 0) {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n return getDeepValueAtPath(deepInputs, node.path);\n }\n\n return resolvedBindings.inputs[node.path];\n }, [resolvedBindings, node.path, inputsProcessor]);\n\n const inputMetadata = useMemo((): IMetadata => {\n let elementMetadata: IMetadata = new ElementMetadata(elementId, rawBindings.metadata);\n\n if (node.input.responsive) {\n elementMetadata = new BreakpointElementMetadata(\n breakpointNames,\n breakpoint.name,\n elementMetadata\n );\n }\n\n const valueId = value?.id ?? generateAlphaNumericLowerCaseId();\n\n return new InputMetadata(valueId, elementMetadata);\n }, [elementId, breakpoint.name, rawBindings]);\n\n const [localState, setLocalValue] = useState<ValueBinding>();\n\n const onChange = useCallback(\n withTimeout((cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});\n\n // Process input's `onChange`.\n if (node.input.onChange) {\n const callback = functionConverter.deserialize(\n // TODO: we know it's a string, but on the frontend it's a function. Fix types.\n node.input.onChange! as any as string\n );\n\n // Run onChange callback.\n const publicApi = {\n inputs: devFriendlyInputs,\n styles: devFriendlyStyles,\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n\n // Run input's `onChange` callback.\n callback(publicApi, {\n breakpoint: breakpoint.name\n });\n }\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs: devFriendlyInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint: breakpoint.name,\n elementFactory,\n deepStyles: devFriendlyStyles\n });\n\n editor.updateDocument(document => {\n const inputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const styles = stylesProcessor.createUpdate(devFriendlyStyles, breakpoint.name);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n\n inputMetadata.applyToDocument(document);\n\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n breakpoint.name,\n elementFactory\n );\n });\n\n // Clear local value\n setLocalValue(undefined);\n }),\n [elementId, resolvedBindings, breakpoint]\n );\n\n /**\n * In preview, we do not update the editor document. Instead, we create a patch and send it to the preview app.\n */\n const onPreviewChange = useCallback(\n (cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(localState ?? value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n setLocalValue({ static: valueObject.get() });\n\n const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const patch = updatedInputs.createJsonPatch(rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n },\n [elementId, rawBindings, localState]\n );\n\n const setBindingType = useCallback(\n (type: \"static\" | \"expression\") => {\n editor.updateDocument(state => {\n const bindings = state.bindings[elementId];\n const valueBinding = bindings.inputs![node.path];\n\n if (type === \"static\") {\n // Switching to static bindings means we have to remove the expression binding.\n delete valueBinding.expression;\n } else {\n valueBinding.expression = \"$noop\";\n }\n\n state.bindings[elementId] = {\n ...bindings,\n inputs: {\n ...bindings.inputs,\n [node.path]: valueBinding\n }\n };\n });\n },\n [elementId]\n );\n\n const onReset = useCallback(() => {\n onChange(({ value, metadata }) => {\n value.unset();\n metadata.unset();\n });\n }, [onChange]);\n\n return {\n value: localState ?? value,\n metadata: inputMetadata,\n inheritanceMap: inheritanceMap.inputs[node.path],\n onReset,\n onChange,\n onPreviewChange,\n setBindingType\n };\n};\n"],"names":["InputValueObject","value","undefined","convertBracketPathToDotPath","path","getDeepValueAtPath","obj","keys","key","Number","acc","withTimeout","cb","args","setTimeout","useInputValue","elementId","node","breakpoint","breakpoints","useBreakpoint","editor","useDocumentEditor","inputsAst","useElementInputsAst","elementFactory","useElementFactory","breakpointNames","useMemo","bp","rawBindings","resolvedBindings","inheritanceMap","useBindingsForElement","stylesProcessor","StylesBindingsProcessor","inputsProcessor","InputsBindingsProcessor","deepInputs","inputMetadata","elementMetadata","ElementMetadata","BreakpointElementMetadata","valueId","generateAlphaNumericLowerCaseId","InputMetadata","localState","setLocalValue","useState","onChange","useCallback","valueObject","updaterInput","valuePath","devFriendlyInputs","set","JSON","devFriendlyStyles","callback","functionConverter","publicApi","params","createElement","ancestorUpdates","executeOnChange","document","inputs","styles","applyAncestorUpdates","onPreviewChange","updatedInputs","patch","Commands","setBindingType","type","state","bindings","valueBinding","onReset","metadata"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/ElementSettings/useInputValue.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from \"react\";\nimport set from \"lodash/set.js\";\nimport { generateAlphaNumericLowerCaseId } from \"@webiny/utils/generateId.js\";\nimport { useDocumentEditor } from \"~/DocumentEditor/index.js\";\nimport type { ValueBinding, CreateElementParams } from \"@webiny/website-builder-sdk\";\nimport { Commands } from \"~/BaseEditor/index.js\";\nimport type { InputAstNode } from \"@webiny/website-builder-sdk\";\nimport {\n functionConverter,\n InputsBindingsProcessor,\n StylesBindingsProcessor,\n createElement\n} from \"@webiny/website-builder-sdk\";\nimport { executeOnChange, applyAncestorUpdates } from \"~/editorSdk/utils/executeOnChange.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { useBindingsForElement } from \"./useBindingsForElement.js\";\nimport { useElementInputsAst } from \"~/BaseEditor/hooks/useElementInputsAst.js\";\nimport {\n BreakpointElementMetadata,\n ElementMetadata,\n InputMetadata,\n type IMetadata\n} from \"~/BaseEditor/metadata/index.js\";\nimport { useElementFactory } from \"./useElementFactory.js\";\nimport { PreviewedBindings } from \"./PreviewedBindings.js\";\n\nexport type OnChangeParams = {\n value: InputValueObject;\n metadata: IMetadata;\n};\n\nexport type InputBindingOnChange = (cb: (params: OnChangeParams) => void) => void;\n\nexport class InputValueObject {\n private value: any;\n\n constructor(value: any) {\n this.value = value;\n }\n\n set(value: any) {\n this.value = value;\n }\n\n get() {\n return this.value;\n }\n\n unset() {\n this.value = undefined;\n }\n}\n\nfunction convertBracketPathToDotPath(path: string): string {\n // Flat binding paths use `/` as the segment separator (e.g. `items/0/label`, `address/city`).\n // lodash `set`/`get` expect `.`-delimited paths, and treat numeric segments as array indexes,\n // so a straight `/` -> `.` conversion handles both nested objects and list items.\n return path.replace(/\\//g, \".\");\n}\n\n/**\n * Reads a value from a deep inputs object using a flat `/`-delimited binding path.\n * Numeric segments are treated as array indexes (e.g. `items/0/label`).\n */\nfunction getDeepValueAtPath(obj: any, path: string): any {\n if (!path) {\n return obj;\n }\n\n const keys = path.split(\"/\").map(key => (/^\\d+$/.test(key) ? Number(key) : key));\n return keys.reduce((acc, key) => (acc == null ? undefined : acc[key]), obj);\n}\n\n/**\n * This makes UI interaction smoother (input blur in particular).\n */\nconst withTimeout = <T extends (...args: any[]) => unknown>(cb: T): T => {\n return ((...args: Parameters<T>) => {\n setTimeout(() => {\n cb(...args);\n }, 0);\n }) as unknown as T;\n};\n\nexport const useInputValue = (elementId: string, node: InputAstNode) => {\n const { breakpoint, breakpoints } = useBreakpoint();\n const editor = useDocumentEditor();\n const inputsAst = useElementInputsAst(elementId);\n const elementFactory = useElementFactory();\n\n const breakpointNames = useMemo(() => breakpoints.map(bp => bp.name), []);\n\n // These bindings already include per-breakpoint overrides.\n const { rawBindings, resolvedBindings, inheritanceMap } = useBindingsForElement(elementId);\n\n const stylesProcessor = useMemo(() => {\n return new StylesBindingsProcessor(elementId ?? \"\", breakpointNames, rawBindings);\n }, [elementId, rawBindings]);\n\n const inputsProcessor = useMemo(() => {\n return new InputsBindingsProcessor(\n elementId ?? \"\",\n inputsAst,\n breakpointNames,\n rawBindings,\n elementFactory\n );\n }, [elementId, rawBindings]);\n\n // This value is the final calculated breakpoint value.\n // Leaf inputs resolve directly from the flat bindings. Container inputs (object / object-list)\n // have no flat entry of their own, so we resolve their deep value (object / array) from the\n // processor - this is what list fields read to render items and to rewrite the whole array.\n const value = useMemo(() => {\n if (node.children.length > 0) {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n return getDeepValueAtPath(deepInputs, node.path);\n }\n\n return resolvedBindings.inputs[node.path];\n }, [resolvedBindings, node.path, inputsProcessor]);\n\n const inputMetadata = useMemo((): IMetadata => {\n let elementMetadata: IMetadata = new ElementMetadata(elementId, rawBindings.metadata);\n\n if (node.input.responsive) {\n elementMetadata = new BreakpointElementMetadata(\n breakpointNames,\n breakpoint.name,\n elementMetadata\n );\n }\n\n const valueId = value?.id ?? generateAlphaNumericLowerCaseId();\n\n return new InputMetadata(valueId, elementMetadata);\n }, [elementId, breakpoint.name, rawBindings]);\n\n const [localState, setLocalValue] = useState<ValueBinding>();\n\n // See PreviewedBindings: preview patches are diffed against what the preview shows.\n const previewedBindings = useMemo(() => new PreviewedBindings(), [elementId]);\n\n const onChange = useCallback(\n withTimeout((cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n const devFriendlyStyles = stylesProcessor.toDeepStyles(rawBindings.styles ?? {});\n\n // Process input's `onChange`.\n if (node.input.onChange) {\n const callback = functionConverter.deserialize(\n // TODO: we know it's a string, but on the frontend it's a function. Fix types.\n node.input.onChange! as any as string\n );\n\n // Run onChange callback.\n const publicApi = {\n inputs: devFriendlyInputs,\n styles: devFriendlyStyles,\n createElement: (params: CreateElementParams) => {\n return createElement(params);\n }\n };\n\n // Run input's `onChange` callback.\n callback(publicApi, {\n breakpoint: breakpoint.name\n });\n }\n\n // Run manifest.onChange + onDescendantChange on ancestors\n const ancestorUpdates = executeOnChange({\n editor,\n elementId,\n deepInputs: devFriendlyInputs,\n action: \"update\",\n breakpointNames,\n baseBreakpoint: breakpoint.name,\n elementFactory,\n deepStyles: devFriendlyStyles\n });\n\n editor.updateDocument(document => {\n const inputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n const styles = stylesProcessor.createUpdate(devFriendlyStyles, breakpoint.name);\n\n inputs.applyToDocument(document);\n styles.applyToDocument(document);\n\n inputMetadata.applyToDocument(document);\n\n applyAncestorUpdates(\n document,\n ancestorUpdates,\n breakpointNames,\n breakpoint.name,\n elementFactory\n );\n });\n\n // Clear local value\n setLocalValue(undefined);\n }),\n [elementId, resolvedBindings, breakpoint]\n );\n\n /**\n * In preview, we do not update the editor document. Instead, we create a patch and send it to the preview app.\n */\n const onPreviewChange = useCallback(\n (cb: (params: OnChangeParams) => void) => {\n const deepInputs = inputsProcessor.toDeepInputs(resolvedBindings.inputs);\n\n const valueObject = new InputValueObject(localState ?? value);\n\n const updaterInput = {\n value: valueObject,\n metadata: inputMetadata\n };\n\n // Change the input value (and metadata).\n cb(updaterInput);\n\n const valuePath = convertBracketPathToDotPath(node.path);\n const devFriendlyInputs = set(\n JSON.parse(JSON.stringify(deepInputs)),\n valuePath,\n valueObject.get()\n );\n\n setLocalValue({ static: valueObject.get() });\n\n const updatedInputs = inputsProcessor.createUpdate(devFriendlyInputs, breakpoint.name);\n\n const patch = previewedBindings.createPatch(updatedInputs, rawBindings);\n\n editor.executeCommand(Commands.PreviewPatchElement, { elementId, patch });\n },\n [elementId, rawBindings, localState, previewedBindings]\n );\n\n const setBindingType = useCallback(\n (type: \"static\" | \"expression\") => {\n editor.updateDocument(state => {\n const bindings = state.bindings[elementId];\n const valueBinding = bindings.inputs![node.path];\n\n if (type === \"static\") {\n // Switching to static bindings means we have to remove the expression binding.\n delete valueBinding.expression;\n } else {\n valueBinding.expression = \"$noop\";\n }\n\n state.bindings[elementId] = {\n ...bindings,\n inputs: {\n ...bindings.inputs,\n [node.path]: valueBinding\n }\n };\n });\n },\n [elementId]\n );\n\n const onReset = useCallback(() => {\n onChange(({ value, metadata }) => {\n value.unset();\n metadata.unset();\n });\n }, [onChange]);\n\n return {\n value: localState ?? value,\n metadata: inputMetadata,\n inheritanceMap: inheritanceMap.inputs[node.path],\n onReset,\n onChange,\n onPreviewChange,\n setBindingType\n };\n};\n"],"names":["InputValueObject","value","undefined","convertBracketPathToDotPath","path","getDeepValueAtPath","obj","keys","key","Number","acc","withTimeout","cb","args","setTimeout","useInputValue","elementId","node","breakpoint","breakpoints","useBreakpoint","editor","useDocumentEditor","inputsAst","useElementInputsAst","elementFactory","useElementFactory","breakpointNames","useMemo","bp","rawBindings","resolvedBindings","inheritanceMap","useBindingsForElement","stylesProcessor","StylesBindingsProcessor","inputsProcessor","InputsBindingsProcessor","deepInputs","inputMetadata","elementMetadata","ElementMetadata","BreakpointElementMetadata","valueId","generateAlphaNumericLowerCaseId","InputMetadata","localState","setLocalValue","useState","previewedBindings","PreviewedBindings","onChange","useCallback","valueObject","updaterInput","valuePath","devFriendlyInputs","set","JSON","devFriendlyStyles","callback","functionConverter","publicApi","params","createElement","ancestorUpdates","executeOnChange","document","inputs","styles","applyAncestorUpdates","onPreviewChange","updatedInputs","patch","Commands","setBindingType","type","state","bindings","valueBinding","onReset","metadata"],"mappings":"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"}
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundColor.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export declare const BackgroundColor: (({ elementId }: {
|
|
3
3
|
elementId: string;
|
|
4
|
-
}) => React.JSX.Element) & {
|
|
5
|
-
|
|
4
|
+
}) => React.JSX.Element) & React.NamedExoticComponent<{
|
|
5
|
+
elementId: string;
|
|
6
|
+
}> & {
|
|
7
|
+
readonly type: ({ elementId }: {
|
|
8
|
+
elementId: string;
|
|
9
|
+
}) => React.JSX.Element;
|
|
6
10
|
};
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.d.ts
CHANGED
|
@@ -2,6 +2,10 @@ import React from "react";
|
|
|
2
2
|
export declare const parseValue: (value: string) => undefined;
|
|
3
3
|
export declare const BackgroundImage: (({ elementId }: {
|
|
4
4
|
elementId: string;
|
|
5
|
-
}) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
}) => React.JSX.Element) & React.NamedExoticComponent<{
|
|
6
|
+
elementId: string;
|
|
7
|
+
}> & {
|
|
8
|
+
readonly type: ({ elementId }: {
|
|
9
|
+
elementId: string;
|
|
10
|
+
}) => React.JSX.Element;
|
|
7
11
|
};
|
|
@@ -65,6 +65,13 @@ const BackgroundImage = observer(({ elementId })=>{
|
|
|
65
65
|
};
|
|
66
66
|
const inheritance = inheritanceMap?.backgroundImage ?? {};
|
|
67
67
|
const fileInfo = metadata.get("backgroundImage");
|
|
68
|
+
const pickerValue = url && fileInfo ? {
|
|
69
|
+
id: fileInfo.id,
|
|
70
|
+
name: fileInfo.name,
|
|
71
|
+
size: fileInfo.size,
|
|
72
|
+
mimeType: fileInfo.type,
|
|
73
|
+
src: fileInfo.url
|
|
74
|
+
} : void 0;
|
|
68
75
|
return /*#__PURE__*/ react.createElement(SidebarRow, {
|
|
69
76
|
label: /*#__PURE__*/ react.createElement(InheritanceLabel, {
|
|
70
77
|
onReset: onReset,
|
|
@@ -78,7 +85,7 @@ const BackgroundImage = observer(({ elementId })=>{
|
|
|
78
85
|
render: ({ showFileManager })=>/*#__PURE__*/ react.createElement(FilePicker, {
|
|
79
86
|
variant: "secondary",
|
|
80
87
|
type: "compact",
|
|
81
|
-
value:
|
|
88
|
+
value: pickerValue,
|
|
82
89
|
onSelectItem: ()=>showFileManager(),
|
|
83
90
|
onRemoveItem: onRemove
|
|
84
91
|
})
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js","sources":["../../../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.tsx"],"sourcesContent":["import React, { useEffect, useState, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { FileManager, type FileManagerFileItem } from \"@webiny/app-admin\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { useStyles } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/useStyles.js\";\nimport { BackgroundImageParser } from \"./BackgroundImageParser.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { InheritanceLabel } from \"../../../InheritanceLabel.js\";\nimport { SidebarRow } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js\";\n\ntype FileInfo = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nconst DEFAULT_POSITION = \"center\";\nconst DEFAULT_SCALING = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\"\n};\n\nexport const parseValue = (value: string) => {\n if (!value) {\n return undefined;\n }\n\n return;\n};\n\nexport const BackgroundImage = observer(({ elementId }: { elementId: string }) => {\n const { isBaseBreakpoint } = useBreakpoint();\n const { styles, metadata, onChange, inheritanceMap } = useStyles(elementId);\n const [localValue, setLocalValue] = useState<string | null>(styles.backgroundImage);\n const url = useMemo(() => {\n const parser = new BackgroundImageParser(styles.backgroundImage);\n const rules = parser.getRules();\n const urlRule = rules.find(r => r.type === \"url\");\n if (urlRule && urlRule.type === \"url\") {\n return urlRule.parsed.url;\n }\n return null;\n }, [styles.backgroundImage]);\n\n useEffect(() => {\n if (styles.backgroundImage !== localValue) {\n setLocalValue(styles.backgroundImage);\n }\n }, [styles.backgroundImage]);\n\n const onFileChange = (file: FileManagerFileItem) => {\n onChange(({ styles, metadata }) => {\n styles.set(\"backgroundPosition\", DEFAULT_POSITION);\n styles.set(\"backgroundSize\", DEFAULT_SCALING.backgroundSize);\n styles.set(\"backgroundRepeat\", DEFAULT_SCALING.backgroundRepeat);\n styles.set(\"backgroundImage\", `url(\"${file.src}\")`);\n\n metadata.set(\"backgroundImage\", {\n id: file.id,\n name: file.name,\n size: file.size,\n type: file.type,\n url: file.src || \"\"\n });\n });\n };\n\n const onRemove = () => {\n onChange(({ styles, metadata }) => {\n // On base breakpoint, we unset the image and all styles related to it.\n if (isBaseBreakpoint) {\n styles.unset(\"backgroundImage\");\n styles.unset(\"backgroundPosition\");\n styles.unset(\"backgroundSize\");\n styles.unset(\"backgroundRepeat\");\n } else {\n styles.set(\"backgroundImage\", \"none\");\n }\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const onReset = () => {\n onChange(({ styles }) => {\n styles.unset(\"backgroundImage\");\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const inheritance = inheritanceMap?.backgroundImage ?? {};\n\n const fileInfo = metadata.get<FileInfo>(\"backgroundImage\");\n\n return (\n <SidebarRow\n label={\n <InheritanceLabel\n onReset={onReset}\n isOverridden={inheritance?.overridden ?? false}\n inheritedFrom={inheritance?.inheritedFrom}\n text={\"Image\"}\n />\n }\n >\n <FileManager\n images={true}\n onChange={onFileChange}\n render={({ showFileManager }) => (\n <FilePicker\n variant={\"secondary\"}\n type=\"compact\"\n value={
|
|
1
|
+
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.js","sources":["../../../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundImage.tsx"],"sourcesContent":["import React, { useEffect, useState, useMemo } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { FileManager, type FileManagerFileItem } from \"@webiny/app-admin\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { useStyles } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/useStyles.js\";\nimport { BackgroundImageParser } from \"./BackgroundImageParser.js\";\nimport { useBreakpoint } from \"~/BaseEditor/hooks/useBreakpoint.js\";\nimport { InheritanceLabel } from \"../../../InheritanceLabel.js\";\nimport { SidebarRow } from \"~/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js\";\n\ntype FileInfo = {\n id: string;\n name: string;\n size: number;\n type: string;\n url: string;\n};\n\nconst DEFAULT_POSITION = \"center\";\nconst DEFAULT_SCALING = {\n backgroundSize: \"cover\",\n backgroundRepeat: \"no-repeat\"\n};\n\nexport const parseValue = (value: string) => {\n if (!value) {\n return undefined;\n }\n\n return;\n};\n\nexport const BackgroundImage = observer(({ elementId }: { elementId: string }) => {\n const { isBaseBreakpoint } = useBreakpoint();\n const { styles, metadata, onChange, inheritanceMap } = useStyles(elementId);\n const [localValue, setLocalValue] = useState<string | null>(styles.backgroundImage);\n const url = useMemo(() => {\n const parser = new BackgroundImageParser(styles.backgroundImage);\n const rules = parser.getRules();\n const urlRule = rules.find(r => r.type === \"url\");\n if (urlRule && urlRule.type === \"url\") {\n return urlRule.parsed.url;\n }\n return null;\n }, [styles.backgroundImage]);\n\n useEffect(() => {\n if (styles.backgroundImage !== localValue) {\n setLocalValue(styles.backgroundImage);\n }\n }, [styles.backgroundImage]);\n\n const onFileChange = (file: FileManagerFileItem) => {\n onChange(({ styles, metadata }) => {\n styles.set(\"backgroundPosition\", DEFAULT_POSITION);\n styles.set(\"backgroundSize\", DEFAULT_SCALING.backgroundSize);\n styles.set(\"backgroundRepeat\", DEFAULT_SCALING.backgroundRepeat);\n styles.set(\"backgroundImage\", `url(\"${file.src}\")`);\n\n metadata.set(\"backgroundImage\", {\n id: file.id,\n name: file.name,\n size: file.size,\n type: file.type,\n url: file.src || \"\"\n });\n });\n };\n\n const onRemove = () => {\n onChange(({ styles, metadata }) => {\n // On base breakpoint, we unset the image and all styles related to it.\n if (isBaseBreakpoint) {\n styles.unset(\"backgroundImage\");\n styles.unset(\"backgroundPosition\");\n styles.unset(\"backgroundSize\");\n styles.unset(\"backgroundRepeat\");\n } else {\n styles.set(\"backgroundImage\", \"none\");\n }\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const onReset = () => {\n onChange(({ styles }) => {\n styles.unset(\"backgroundImage\");\n\n metadata.unset(\"backgroundImage\");\n });\n };\n\n const inheritance = inheritanceMap?.backgroundImage ?? {};\n\n const fileInfo = metadata.get<FileInfo>(\"backgroundImage\");\n\n // The FilePicker expects a FileItemDto (`mimeType`, `src`), but our metadata stores the\n // legacy shape (`type`, `url`). Map it across so the picker can detect an image and render\n // the thumbnail (otherwise `mimeType` is undefined and it shows the generic file icon).\n const pickerValue =\n url && fileInfo\n ? {\n id: fileInfo.id,\n name: fileInfo.name,\n size: fileInfo.size,\n mimeType: fileInfo.type,\n src: fileInfo.url\n }\n : undefined;\n\n return (\n <SidebarRow\n label={\n <InheritanceLabel\n onReset={onReset}\n isOverridden={inheritance?.overridden ?? false}\n inheritedFrom={inheritance?.inheritedFrom}\n text={\"Image\"}\n />\n }\n >\n <FileManager\n images={true}\n onChange={onFileChange}\n render={({ showFileManager }) => (\n <FilePicker\n variant={\"secondary\"}\n type=\"compact\"\n value={pickerValue}\n onSelectItem={() => showFileManager()}\n onRemoveItem={onRemove}\n />\n )}\n />\n </SidebarRow>\n );\n});\n"],"names":["DEFAULT_POSITION","DEFAULT_SCALING","parseValue","value","BackgroundImage","observer","elementId","isBaseBreakpoint","useBreakpoint","styles","metadata","onChange","inheritanceMap","useStyles","localValue","setLocalValue","useState","url","useMemo","parser","BackgroundImageParser","rules","urlRule","r","useEffect","onFileChange","file","onRemove","onReset","inheritance","fileInfo","pickerValue","undefined","SidebarRow","InheritanceLabel","FileManager","showFileManager","FilePicker"],"mappings":";;;;;;;;;AAkBA,MAAMA,mBAAmB;AACzB,MAAMC,kBAAkB;IACpB,gBAAgB;IAChB,kBAAkB;AACtB;AAEO,MAAMC,aAAa,CAACC,SAM3B;AAEO,MAAMC,kBAAkBC,SAAS,CAAC,EAAEC,SAAS,EAAyB;IACzE,MAAM,EAAEC,gBAAgB,EAAE,GAAGC;IAC7B,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAE,GAAGC,UAAUP;IACjE,MAAM,CAACQ,YAAYC,cAAc,GAAGC,SAAwBP,OAAO,eAAe;IAClF,MAAMQ,MAAMC,QAAQ;QAChB,MAAMC,SAAS,IAAIC,sBAAsBX,OAAO,eAAe;QAC/D,MAAMY,QAAQF,OAAO,QAAQ;QAC7B,MAAMG,UAAUD,MAAM,IAAI,CAACE,CAAAA,IAAKA,AAAW,UAAXA,EAAE,IAAI;QACtC,IAAID,WAAWA,AAAiB,UAAjBA,QAAQ,IAAI,EACvB,OAAOA,QAAQ,MAAM,CAAC,GAAG;QAE7B,OAAO;IACX,GAAG;QAACb,OAAO,eAAe;KAAC;IAE3Be,UAAU;QACN,IAAIf,OAAO,eAAe,KAAKK,YAC3BC,cAAcN,OAAO,eAAe;IAE5C,GAAG;QAACA,OAAO,eAAe;KAAC;IAE3B,MAAMgB,eAAe,CAACC;QAClBf,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAC1BD,OAAO,GAAG,CAAC,sBAAsBT;YACjCS,OAAO,GAAG,CAAC,kBAAkBR,gBAAgB,cAAc;YAC3DQ,OAAO,GAAG,CAAC,oBAAoBR,gBAAgB,gBAAgB;YAC/DQ,OAAO,GAAG,CAAC,mBAAmB,CAAC,KAAK,EAAEiB,KAAK,GAAG,CAAC,EAAE,CAAC;YAElDhB,SAAS,GAAG,CAAC,mBAAmB;gBAC5B,IAAIgB,KAAK,EAAE;gBACX,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,MAAMA,KAAK,IAAI;gBACf,KAAKA,KAAK,GAAG,IAAI;YACrB;QACJ;IACJ;IAEA,MAAMC,WAAW;QACbhB,SAAS,CAAC,EAAEF,MAAM,EAAEC,QAAQ,EAAE;YAE1B,IAAIH,kBAAkB;gBAClBE,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;gBACbA,OAAO,KAAK,CAAC;YACjB,OACIA,OAAO,GAAG,CAAC,mBAAmB;YAGlCC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMkB,UAAU;QACZjB,SAAS,CAAC,EAAEF,MAAM,EAAE;YAChBA,OAAO,KAAK,CAAC;YAEbC,SAAS,KAAK,CAAC;QACnB;IACJ;IAEA,MAAMmB,cAAcjB,gBAAgB,mBAAmB,CAAC;IAExD,MAAMkB,WAAWpB,SAAS,GAAG,CAAW;IAKxC,MAAMqB,cACFd,OAAOa,WACD;QACI,IAAIA,SAAS,EAAE;QACf,MAAMA,SAAS,IAAI;QACnB,MAAMA,SAAS,IAAI;QACnB,UAAUA,SAAS,IAAI;QACvB,KAAKA,SAAS,GAAG;IACrB,IACAE;IAEV,OAAO,WAAP,GACI,oBAACC,YAAUA;QACP,qBACI,oBAACC,kBAAgBA;YACb,SAASN;YACT,cAAcC,aAAa,cAAc;YACzC,eAAeA,aAAa;YAC5B,MAAM;;qBAId,oBAACM,aAAWA;QACR,QAAQ;QACR,UAAUV;QACV,QAAQ,CAAC,EAAEW,eAAe,EAAE,iBACxB,oBAACC,YAAUA;gBACP,SAAS;gBACT,MAAK;gBACL,OAAON;gBACP,cAAc,IAAMK;gBACpB,cAAcT;;;AAMtC"}
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundPosition.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export declare const BackgroundPosition: (({ elementId }: {
|
|
3
3
|
elementId: string;
|
|
4
|
-
}) => React.JSX.Element) & {
|
|
5
|
-
|
|
4
|
+
}) => React.JSX.Element) & React.NamedExoticComponent<{
|
|
5
|
+
elementId: string;
|
|
6
|
+
}> & {
|
|
7
|
+
readonly type: ({ elementId }: {
|
|
8
|
+
elementId: string;
|
|
9
|
+
}) => React.JSX.Element;
|
|
6
10
|
};
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Background/BackgroundScaling.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
export declare const BackgroundScaling: (({ elementId }: {
|
|
3
3
|
elementId: string;
|
|
4
|
-
}) => React.JSX.Element) & {
|
|
5
|
-
|
|
4
|
+
}) => React.JSX.Element) & React.NamedExoticComponent<{
|
|
5
|
+
elementId: string;
|
|
6
|
+
}> & {
|
|
7
|
+
readonly type: ({ elementId }: {
|
|
8
|
+
elementId: string;
|
|
9
|
+
}) => React.JSX.Element;
|
|
6
10
|
};
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
interface BorderColorProps {
|
|
3
3
|
elementId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const BorderColor: (({ elementId }: BorderColorProps) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
export declare const BorderColor: (({ elementId }: BorderColorProps) => React.JSX.Element) & React.NamedExoticComponent<BorderColorProps> & {
|
|
6
|
+
readonly type: ({ elementId }: BorderColorProps) => React.JSX.Element;
|
|
7
7
|
};
|
|
8
8
|
export {};
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
interface BorderRadiusProps {
|
|
3
3
|
elementId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const BorderRadius: (({ elementId }: BorderRadiusProps) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
export declare const BorderRadius: (({ elementId }: BorderRadiusProps) => React.JSX.Element) & React.NamedExoticComponent<BorderRadiusProps> & {
|
|
6
|
+
readonly type: ({ elementId }: BorderRadiusProps) => React.JSX.Element;
|
|
7
7
|
};
|
|
8
8
|
export {};
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
interface BorderStyleProps {
|
|
3
3
|
elementId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const BorderStyle: (({ elementId }: BorderStyleProps) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
export declare const BorderStyle: (({ elementId }: BorderStyleProps) => React.JSX.Element) & React.NamedExoticComponent<BorderStyleProps> & {
|
|
6
|
+
readonly type: ({ elementId }: BorderStyleProps) => React.JSX.Element;
|
|
7
7
|
};
|
|
8
8
|
export {};
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
interface BorderWidthProps {
|
|
3
3
|
elementId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const BorderWidth: (({ elementId }: BorderWidthProps) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
export declare const BorderWidth: (({ elementId }: BorderWidthProps) => React.JSX.Element) & React.NamedExoticComponent<BorderWidthProps> & {
|
|
6
|
+
readonly type: ({ elementId }: BorderWidthProps) => React.JSX.Element;
|
|
7
7
|
};
|
|
8
8
|
export {};
|
|
@@ -13,6 +13,10 @@ import React from "react";
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const Alignment: (({ elementId }: {
|
|
15
15
|
elementId: string;
|
|
16
|
-
}) => React.JSX.Element) & {
|
|
17
|
-
|
|
16
|
+
}) => React.JSX.Element) & React.NamedExoticComponent<{
|
|
17
|
+
elementId: string;
|
|
18
|
+
}> & {
|
|
19
|
+
readonly type: ({ elementId }: {
|
|
20
|
+
elementId: string;
|
|
21
|
+
}) => React.JSX.Element;
|
|
18
22
|
};
|
package/BaseEditor/defaultConfig/Sidebar/StyleSettings/Groups/Layout/LengthWithUnitInput.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ interface LengthWithUnitInputProps {
|
|
|
7
7
|
unitOptions: UnitOption[];
|
|
8
8
|
defaultValue?: string;
|
|
9
9
|
}
|
|
10
|
-
export declare const LengthWithUnitInput: (({ elementId, label, propertyName, defaultValue, unitOptions }: LengthWithUnitInputProps) => React.JSX.Element) & {
|
|
11
|
-
|
|
10
|
+
export declare const LengthWithUnitInput: (({ elementId, label, propertyName, defaultValue, unitOptions }: LengthWithUnitInputProps) => React.JSX.Element) & React.NamedExoticComponent<LengthWithUnitInputProps> & {
|
|
11
|
+
readonly type: ({ elementId, label, propertyName, defaultValue, unitOptions }: LengthWithUnitInputProps) => React.JSX.Element;
|
|
12
12
|
};
|
|
13
13
|
export {};
|
|
@@ -3,7 +3,7 @@ interface MarginProps {
|
|
|
3
3
|
elementId: string;
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
}
|
|
6
|
-
export declare const Margin: (({ elementId, children }: MarginProps) => React.JSX.Element) & {
|
|
7
|
-
|
|
6
|
+
export declare const Margin: (({ elementId, children }: MarginProps) => React.JSX.Element) & React.NamedExoticComponent<MarginProps> & {
|
|
7
|
+
readonly type: ({ elementId, children }: MarginProps) => React.JSX.Element;
|
|
8
8
|
};
|
|
9
9
|
export {};
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
interface PaddingProps {
|
|
3
3
|
elementId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const Padding: (({ elementId }: PaddingProps) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
export declare const Padding: (({ elementId }: PaddingProps) => React.JSX.Element) & React.NamedExoticComponent<PaddingProps> & {
|
|
6
|
+
readonly type: ({ elementId }: PaddingProps) => React.JSX.Element;
|
|
7
7
|
};
|
|
8
8
|
export {};
|
|
@@ -2,6 +2,6 @@ import React from "react";
|
|
|
2
2
|
export interface VisibilityProps {
|
|
3
3
|
elementId: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const Visibility: (({ elementId }: VisibilityProps) => React.JSX.Element) & {
|
|
6
|
-
|
|
5
|
+
export declare const Visibility: (({ elementId }: VisibilityProps) => React.JSX.Element) & React.NamedExoticComponent<VisibilityProps> & {
|
|
6
|
+
readonly type: ({ elementId }: VisibilityProps) => React.JSX.Element;
|
|
7
7
|
};
|
|
@@ -17,7 +17,7 @@ const SidebarRow = ({ label, tooltip, children })=>/*#__PURE__*/ react.createEle
|
|
|
17
17
|
}) : /*#__PURE__*/ react.createElement("div", {
|
|
18
18
|
className: "w-xs shrink-0"
|
|
19
19
|
})), /*#__PURE__*/ react.createElement("div", {
|
|
20
|
-
className: "flex-1"
|
|
20
|
+
className: "flex-1 min-w-0"
|
|
21
21
|
}, children));
|
|
22
22
|
export { SidebarRow };
|
|
23
23
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as InfoIcon } from \"@webiny/icons/info.svg\";\n\ninterface SidebarRowProps {\n label: React.ReactNode;\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const SidebarRow = ({ label, tooltip, children }: SidebarRowProps) => {\n return (\n <div className={\"flex items-start gap-xxs\"}>\n <div\n className={\n \"w-[80px] pt-sm flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong\"\n }\n >\n {label}\n\n {tooltip ? (\n <Tooltip\n trigger={\n <Icon\n icon={<InfoIcon />}\n size={\"xs\"}\n label={\"More information\"}\n color={\"neutral-light\"}\n />\n }\n content={tooltip}\n side={\"left\"}\n />\n ) : (\n <div className={\"w-xs shrink-0\"} />\n )}\n </div>\n <div className={\"flex-1\"}>{children}</div>\n </div>\n );\n};\n"],"names":["SidebarRow","label","tooltip","children","Tooltip","Icon","InfoIcon"],"mappings":";;;AAUO,MAAMA,aAAa,CAAC,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,EAAmB,GAC7D,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WACI;OAGHF,OAEAC,UAAU,WAAVA,GACG,oBAACE,SAAOA;QACJ,uBACI,oBAACC,MAAIA;YACD,oBAAM,oBAACC,gBAAQA;YACf,MAAM;YACN,OAAO;YACP,OAAO;;QAGf,SAASJ;QACT,MAAM;uBAGV,oBAAC;QAAI,WAAW;
|
|
1
|
+
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/SidebarRow.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon, Tooltip } from \"@webiny/admin-ui\";\nimport { ReactComponent as InfoIcon } from \"@webiny/icons/info.svg\";\n\ninterface SidebarRowProps {\n label: React.ReactNode;\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n}\n\nexport const SidebarRow = ({ label, tooltip, children }: SidebarRowProps) => {\n return (\n <div className={\"flex items-start gap-xxs\"}>\n <div\n className={\n \"w-[80px] pt-sm flex flex-row items-center gap-xxs shrink-0 text-sm text-neutral-strong\"\n }\n >\n {label}\n\n {tooltip ? (\n <Tooltip\n trigger={\n <Icon\n icon={<InfoIcon />}\n size={\"xs\"}\n label={\"More information\"}\n color={\"neutral-light\"}\n />\n }\n content={tooltip}\n side={\"left\"}\n />\n ) : (\n <div className={\"w-xs shrink-0\"} />\n )}\n </div>\n {/* min-w-0 lets the cell shrink below its content's intrinsic width, so long\n unbroken values (e.g. a hashed file name) truncate instead of widening the\n row and pushing controls past the sidebar edge. */}\n <div className={\"flex-1 min-w-0\"}>{children}</div>\n </div>\n );\n};\n"],"names":["SidebarRow","label","tooltip","children","Tooltip","Icon","InfoIcon"],"mappings":";;;AAUO,MAAMA,aAAa,CAAC,EAAEC,KAAK,EAAEC,OAAO,EAAEC,QAAQ,EAAmB,GAC7D,WAAP,GACI,oBAAC;QAAI,WAAW;qBACZ,oBAAC;QACG,WACI;OAGHF,OAEAC,UAAU,WAAVA,GACG,oBAACE,SAAOA;QACJ,uBACI,oBAACC,MAAIA;YACD,oBAAM,oBAACC,gBAAQA;YACf,MAAM;YACN,OAAO;YACP,OAAO;;QAGf,SAASJ;QACT,MAAM;uBAGV,oBAAC;QAAI,WAAW;uBAMxB,oBAAC;QAAI,WAAW;OAAmBC"}
|
|
@@ -2,10 +2,7 @@ import react from "react";
|
|
|
2
2
|
import { Icon } from "@webiny/admin-ui";
|
|
3
3
|
import { ReactComponent } from "@webiny/icons/select_all.svg";
|
|
4
4
|
import { Sidebar } from "../../../config/Sidebar/Sidebar.js";
|
|
5
|
-
|
|
6
|
-
const StyleSettingsGroup = ()=>/*#__PURE__*/ react.createElement(ScrollableContainer, {
|
|
7
|
-
tabIndex: -1
|
|
8
|
-
}, /*#__PURE__*/ react.createElement(Sidebar.Group.Tab, {
|
|
5
|
+
const StyleSettingsGroup = ()=>/*#__PURE__*/ react.createElement(Sidebar.Group.Tab, {
|
|
9
6
|
name: "style",
|
|
10
7
|
label: "Style",
|
|
11
8
|
icon: /*#__PURE__*/ react.createElement(Icon, {
|
|
@@ -15,7 +12,7 @@ const StyleSettingsGroup = ()=>/*#__PURE__*/ react.createElement(ScrollableConta
|
|
|
15
12
|
element: /*#__PURE__*/ react.createElement(Sidebar.Elements, {
|
|
16
13
|
group: "style"
|
|
17
14
|
})
|
|
18
|
-
})
|
|
15
|
+
});
|
|
19
16
|
export { StyleSettingsGroup };
|
|
20
17
|
|
|
21
18
|
//# sourceMappingURL=StyleSettingsGroup.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as SelectAllIcon } from \"@webiny/icons/select_all.svg\";\nimport { Sidebar } from \"~/BaseEditor/config/Sidebar/Sidebar.js\";\
|
|
1
|
+
{"version":3,"file":"BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.js","sources":["../../../../../src/BaseEditor/defaultConfig/Sidebar/StyleSettings/StyleSettingsGroup.tsx"],"sourcesContent":["import React from \"react\";\nimport { Icon } from \"@webiny/admin-ui\";\nimport { ReactComponent as SelectAllIcon } from \"@webiny/icons/select_all.svg\";\nimport { Sidebar } from \"~/BaseEditor/config/Sidebar/Sidebar.js\";\n\nexport const StyleSettingsGroup = () => {\n return (\n <Sidebar.Group.Tab\n name={\"style\"}\n label={\"Style\"}\n icon={<Icon icon={<SelectAllIcon />} label={\"Style\"} />}\n element={<Sidebar.Elements group={\"style\"} />}\n />\n );\n};\n"],"names":["StyleSettingsGroup","Sidebar","Icon","SelectAllIcon"],"mappings":";;;;AAKO,MAAMA,qBAAqB,IACvB,WAAP,GACI,oBAACC,QAAQ,KAAK,CAAC,GAAG;QACd,MAAM;QACN,OAAO;QACP,oBAAM,oBAACC,MAAIA;YAAC,oBAAM,oBAACC,gBAAaA;YAAK,OAAO;;QAC5C,uBAAS,oBAACF,QAAQ,QAAQ;YAAC,OAAO"}
|
|
@@ -10,7 +10,7 @@ interface DocumentEditorProps<TDocument> {
|
|
|
10
10
|
readOnly: boolean;
|
|
11
11
|
}
|
|
12
12
|
declare function BaseDocumentEditor<TDocument extends EditorDocument>({ document, name, children, readOnly }: DocumentEditorProps<TDocument>): React.JSX.Element;
|
|
13
|
-
export declare const DocumentEditor: typeof BaseDocumentEditor & {
|
|
14
|
-
|
|
13
|
+
export declare const DocumentEditor: typeof BaseDocumentEditor & React.NamedExoticComponent<DocumentEditorProps<import("@webiny/website-builder-sdk").Document>> & {
|
|
14
|
+
readonly type: typeof BaseDocumentEditor;
|
|
15
15
|
};
|
|
16
16
|
export {};
|
|
@@ -4,7 +4,9 @@ import type { Editor } from "../editorSdk/Editor.js";
|
|
|
4
4
|
declare function BaseStateInspector<TDocument extends EditorDocument>({ editor }: {
|
|
5
5
|
editor: Editor<TDocument>;
|
|
6
6
|
}): React.JSX.Element;
|
|
7
|
-
export declare const StateInspector: typeof BaseStateInspector & {
|
|
8
|
-
|
|
7
|
+
export declare const StateInspector: typeof BaseStateInspector & React.NamedExoticComponent<{
|
|
8
|
+
editor: Editor<import("@webiny/website-builder-sdk").Document>;
|
|
9
|
+
}> & {
|
|
10
|
+
readonly type: typeof BaseStateInspector;
|
|
9
11
|
};
|
|
10
12
|
export {};
|
package/Extension.js
CHANGED
|
@@ -24,6 +24,7 @@ import { UpdatePageRevisionDescriptionFeature } from "./features/pages/updatePag
|
|
|
24
24
|
import { CreatePageFeature } from "./features/pages/createPage/index.js";
|
|
25
25
|
import { GetPageFeature } from "./features/pages/getPage/index.js";
|
|
26
26
|
import { GetPageRevisionsFeature } from "./features/pages/getPageRevisions/index.js";
|
|
27
|
+
import { RevisionListFeature } from "./presentation/pages/RevisionList/feature.js";
|
|
27
28
|
import { SharedPageInfrastructureFeature } from "./features/pages/shared/feature.js";
|
|
28
29
|
import { CreatePageConfig } from "./presentation/pages/CreatePage/CreatePageConfig.js";
|
|
29
30
|
import { TranslatePageConfig } from "./presentation/pages/TranslatePage/TranslatePageConfig.js";
|
|
@@ -66,6 +67,8 @@ const Extension = ()=>{
|
|
|
66
67
|
feature: GetPageFeature
|
|
67
68
|
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
68
69
|
feature: GetPageRevisionsFeature
|
|
70
|
+
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
71
|
+
feature: RevisionListFeature
|
|
69
72
|
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
|
70
73
|
feature: feature_js_CreatePageFeature
|
|
71
74
|
}), /*#__PURE__*/ react.createElement(RegisterFeature, {
|
package/Extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Extension.js","sources":["../src/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, RegisterFeature, useRouter } from \"@webiny/app-admin\";\nimport {\n ReactComponent as PagesIcon,\n ReactComponent as PermissionsIcon\n} from \"@webiny/icons/table_chart.svg\";\nimport { PageEditor } from \"~/presentation/pages/PageEditor/PageEditor.js\";\nimport { PagesList } from \"~/presentation/pages/PageList/components/PagesList.js\";\nimport { useIntegrationsDialog } from \"./modules/integrations/useIntegrationsDialog.js\";\nimport { PagesListConfig } from \"~/presentation/pages/PageList/components/PagesListConfig.js\";\nimport { RedirectsList } from \"~/presentation/redirects/RedirectList/components/RedirectsList.js\";\nimport { RedirectsListConfig } from \"~/presentation/redirects/RedirectList/components/RedirectsListConfig.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PagesWidget } from \"~/modules/widgets/PagesWidget.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/constants.js\";\nimport { WbPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\nimport { TranslatePageFeature } from \"~/features/pages/translatePage/index.js\";\nimport { DeletePageFeature } from \"~/features/pages/deletePage/index.js\";\nimport { MovePageFeature } from \"~/features/pages/movePage/index.js\";\nimport { PublishPageFeature } from \"~/features/pages/publishPage/index.js\";\nimport { UnpublishPageFeature } from \"~/features/pages/unpublishPage/index.js\";\nimport { DuplicatePageFeature } from \"~/features/pages/duplicatePage/index.js\";\nimport { CreatePageRevisionFromFeature } from \"~/features/pages/createPageRevisionFrom/index.js\";\nimport { UpdatePageFeature } from \"~/features/pages/updatePage/index.js\";\nimport { UpdatePageRevisionDescriptionFeature } from \"~/features/pages/updatePageRevisionDescription/index.js\";\nimport { CreatePageFeature as CreatePageHeadlessFeature } from \"~/features/pages/createPage/index.js\";\nimport { GetPageFeature } from \"~/features/pages/getPage/index.js\";\nimport { GetPageRevisionsFeature } from \"~/features/pages/getPageRevisions/index.js\";\nimport { SharedPageInfrastructureFeature } from \"~/features/pages/shared/feature.js\";\nimport { CreatePageConfig } from \"./presentation/pages/CreatePage/CreatePageConfig.js\";\nimport { TranslatePageConfig } from \"./presentation/pages/TranslatePage/TranslatePageConfig.js\";\nimport { CreatePageFeature } from \"~/presentation/pages/CreatePage/feature.js\";\nimport { PageSettingsFeature } from \"~/presentation/pages/PageEditor/PageSettings/feature.js\";\nimport { DeletePageRevisionFeature } from \"~/features/pages/deletePageRevision/index.js\";\nimport { GetSettingsFeature } from \"~/features/settings/getSettings/index.js\";\nimport { GetEcommerceSettingsFeature } from \"~/features/ecommerce/settings/getSettings/index.js\";\nimport { UpdateEcommerceSettingsFeature } from \"~/features/ecommerce/settings/updateSettings/index.js\";\n\nconst { Security, Menu, Route, Dashboard } = AdminConfig;\n\nexport const Extension = () => {\n const router = useRouter();\n\n return (\n <>\n <RegisterFeature feature={SharedPageInfrastructureFeature} />\n <RegisterFeature feature={WbPermissionsFeature} />\n <RegisterFeature feature={TranslatePageFeature} />\n <RegisterFeature feature={DeletePageFeature} />\n <RegisterFeature feature={DeletePageRevisionFeature} />\n <RegisterFeature feature={MovePageFeature} />\n <RegisterFeature feature={PublishPageFeature} />\n <RegisterFeature feature={UnpublishPageFeature} />\n <RegisterFeature feature={DuplicatePageFeature} />\n <RegisterFeature feature={CreatePageRevisionFromFeature} />\n <RegisterFeature feature={UpdatePageFeature} />\n <RegisterFeature feature={UpdatePageRevisionDescriptionFeature} />\n <RegisterFeature feature={CreatePageHeadlessFeature} />\n <RegisterFeature feature={GetPageFeature} />\n <RegisterFeature feature={GetPageRevisionsFeature} />\n <RegisterFeature feature={CreatePageFeature} />\n <RegisterFeature feature={PageSettingsFeature} />\n <RegisterFeature feature={GetSettingsFeature} />\n <RegisterFeature feature={GetEcommerceSettingsFeature} />\n <RegisterFeature feature={UpdateEcommerceSettingsFeature} />\n <AdminConfig>\n <Security.Permissions\n name=\"website-builder\"\n title=\"Website Builder\"\n description=\"Manage Website Builder permissions.\"\n icon={<PermissionsIcon />}\n schema={WB_PERMISSIONS_SCHEMA}\n />\n <HasPermission any={[\"page\", \"redirect\"]}>\n <Menu\n name=\"wb\"\n element={\n <Menu.Item\n text={\"Website Builder\"}\n icon={\n <Menu.Link.Icon\n label={\"Website Builder\"}\n element={<PagesIcon />}\n />\n }\n />\n }\n />\n </HasPermission>\n\n <HasPermission entity={\"page\"}>\n <Route route={Routes.Pages.List} element={<PagesList />} />\n <Route route={Routes.Pages.Editor} element={<PageEditor />} />\n <Menu\n name=\"wb.pages\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Pages\"}\n to={router.getLink(Routes.Pages.List)}\n pinnable={true}\n />\n }\n />\n <Dashboard.Widget name=\"wb.pages\" column={\"left\"} element={<PagesWidget />} />\n </HasPermission>\n\n <HasPermission entity={\"redirect\"}>\n <Route route={Routes.Redirects.List} element={<RedirectsList />} />\n <Menu\n name=\"wb.redirects\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Redirects\"}\n to={router.getLink(Routes.Redirects.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <HasPermission entity={\"integrations\"}>\n <Menu name=\"wb.integrations\" parent=\"wb\" element={<IntegrationsMenuItem />} />\n </HasPermission>\n </AdminConfig>\n <PagesListConfig />\n <RedirectsListConfig />\n <CreatePageConfig />\n <TranslatePageConfig />\n </>\n );\n};\n\nExtension.displayName = \"WbExtension\";\n\nconst IntegrationsMenuItem = () => {\n const { showIntegrationsDialog } = useIntegrationsDialog();\n return <Menu.Item text={\"Integrations\"} onClick={showIntegrationsDialog} pinnable={true} />;\n};\n"],"names":["Security","Menu","Route","Dashboard","AdminConfig","Extension","router","useRouter","RegisterFeature","SharedPageInfrastructureFeature","WbPermissionsFeature","TranslatePageFeature","DeletePageFeature","DeletePageRevisionFeature","MovePageFeature","PublishPageFeature","UnpublishPageFeature","DuplicatePageFeature","CreatePageRevisionFromFeature","UpdatePageFeature","UpdatePageRevisionDescriptionFeature","CreatePageHeadlessFeature","GetPageFeature","GetPageRevisionsFeature","CreatePageFeature","PageSettingsFeature","GetSettingsFeature","GetEcommerceSettingsFeature","UpdateEcommerceSettingsFeature","PermissionsIcon","WB_PERMISSIONS_SCHEMA","HasPermission","PagesIcon","Routes","PagesList","PageEditor","PagesWidget","RedirectsList","IntegrationsMenuItem","PagesListConfig","RedirectsListConfig","CreatePageConfig","TranslatePageConfig","showIntegrationsDialog","useIntegrationsDialog"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Extension.js","sources":["../src/Extension.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig, RegisterFeature, useRouter } from \"@webiny/app-admin\";\nimport {\n ReactComponent as PagesIcon,\n ReactComponent as PermissionsIcon\n} from \"@webiny/icons/table_chart.svg\";\nimport { PageEditor } from \"~/presentation/pages/PageEditor/PageEditor.js\";\nimport { PagesList } from \"~/presentation/pages/PageList/components/PagesList.js\";\nimport { useIntegrationsDialog } from \"./modules/integrations/useIntegrationsDialog.js\";\nimport { PagesListConfig } from \"~/presentation/pages/PageList/components/PagesListConfig.js\";\nimport { RedirectsList } from \"~/presentation/redirects/RedirectList/components/RedirectsList.js\";\nimport { RedirectsListConfig } from \"~/presentation/redirects/RedirectList/components/RedirectsListConfig.js\";\nimport { Routes } from \"~/routes.js\";\nimport { PagesWidget } from \"~/modules/widgets/PagesWidget.js\";\nimport { WB_PERMISSIONS_SCHEMA } from \"~/constants.js\";\nimport { WbPermissionsFeature } from \"~/features/permissions/feature.js\";\nimport { HasPermission } from \"~/presentation/security/HasPermission.js\";\nimport { TranslatePageFeature } from \"~/features/pages/translatePage/index.js\";\nimport { DeletePageFeature } from \"~/features/pages/deletePage/index.js\";\nimport { MovePageFeature } from \"~/features/pages/movePage/index.js\";\nimport { PublishPageFeature } from \"~/features/pages/publishPage/index.js\";\nimport { UnpublishPageFeature } from \"~/features/pages/unpublishPage/index.js\";\nimport { DuplicatePageFeature } from \"~/features/pages/duplicatePage/index.js\";\nimport { CreatePageRevisionFromFeature } from \"~/features/pages/createPageRevisionFrom/index.js\";\nimport { UpdatePageFeature } from \"~/features/pages/updatePage/index.js\";\nimport { UpdatePageRevisionDescriptionFeature } from \"~/features/pages/updatePageRevisionDescription/index.js\";\nimport { CreatePageFeature as CreatePageHeadlessFeature } from \"~/features/pages/createPage/index.js\";\nimport { GetPageFeature } from \"~/features/pages/getPage/index.js\";\nimport { GetPageRevisionsFeature } from \"~/features/pages/getPageRevisions/index.js\";\nimport { RevisionListFeature } from \"~/presentation/pages/RevisionList/feature.js\";\nimport { SharedPageInfrastructureFeature } from \"~/features/pages/shared/feature.js\";\nimport { CreatePageConfig } from \"./presentation/pages/CreatePage/CreatePageConfig.js\";\nimport { TranslatePageConfig } from \"./presentation/pages/TranslatePage/TranslatePageConfig.js\";\nimport { CreatePageFeature } from \"~/presentation/pages/CreatePage/feature.js\";\nimport { PageSettingsFeature } from \"~/presentation/pages/PageEditor/PageSettings/feature.js\";\nimport { DeletePageRevisionFeature } from \"~/features/pages/deletePageRevision/index.js\";\nimport { GetSettingsFeature } from \"~/features/settings/getSettings/index.js\";\nimport { GetEcommerceSettingsFeature } from \"~/features/ecommerce/settings/getSettings/index.js\";\nimport { UpdateEcommerceSettingsFeature } from \"~/features/ecommerce/settings/updateSettings/index.js\";\n\nconst { Security, Menu, Route, Dashboard } = AdminConfig;\n\nexport const Extension = () => {\n const router = useRouter();\n\n return (\n <>\n <RegisterFeature feature={SharedPageInfrastructureFeature} />\n <RegisterFeature feature={WbPermissionsFeature} />\n <RegisterFeature feature={TranslatePageFeature} />\n <RegisterFeature feature={DeletePageFeature} />\n <RegisterFeature feature={DeletePageRevisionFeature} />\n <RegisterFeature feature={MovePageFeature} />\n <RegisterFeature feature={PublishPageFeature} />\n <RegisterFeature feature={UnpublishPageFeature} />\n <RegisterFeature feature={DuplicatePageFeature} />\n <RegisterFeature feature={CreatePageRevisionFromFeature} />\n <RegisterFeature feature={UpdatePageFeature} />\n <RegisterFeature feature={UpdatePageRevisionDescriptionFeature} />\n <RegisterFeature feature={CreatePageHeadlessFeature} />\n <RegisterFeature feature={GetPageFeature} />\n <RegisterFeature feature={GetPageRevisionsFeature} />\n <RegisterFeature feature={RevisionListFeature} />\n <RegisterFeature feature={CreatePageFeature} />\n <RegisterFeature feature={PageSettingsFeature} />\n <RegisterFeature feature={GetSettingsFeature} />\n <RegisterFeature feature={GetEcommerceSettingsFeature} />\n <RegisterFeature feature={UpdateEcommerceSettingsFeature} />\n <AdminConfig>\n <Security.Permissions\n name=\"website-builder\"\n title=\"Website Builder\"\n description=\"Manage Website Builder permissions.\"\n icon={<PermissionsIcon />}\n schema={WB_PERMISSIONS_SCHEMA}\n />\n <HasPermission any={[\"page\", \"redirect\"]}>\n <Menu\n name=\"wb\"\n element={\n <Menu.Item\n text={\"Website Builder\"}\n icon={\n <Menu.Link.Icon\n label={\"Website Builder\"}\n element={<PagesIcon />}\n />\n }\n />\n }\n />\n </HasPermission>\n\n <HasPermission entity={\"page\"}>\n <Route route={Routes.Pages.List} element={<PagesList />} />\n <Route route={Routes.Pages.Editor} element={<PageEditor />} />\n <Menu\n name=\"wb.pages\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Pages\"}\n to={router.getLink(Routes.Pages.List)}\n pinnable={true}\n />\n }\n />\n <Dashboard.Widget name=\"wb.pages\" column={\"left\"} element={<PagesWidget />} />\n </HasPermission>\n\n <HasPermission entity={\"redirect\"}>\n <Route route={Routes.Redirects.List} element={<RedirectsList />} />\n <Menu\n name=\"wb.redirects\"\n parent={\"wb\"}\n element={\n <Menu.Link\n text={\"Redirects\"}\n to={router.getLink(Routes.Redirects.List)}\n pinnable={true}\n />\n }\n />\n </HasPermission>\n <HasPermission entity={\"integrations\"}>\n <Menu name=\"wb.integrations\" parent=\"wb\" element={<IntegrationsMenuItem />} />\n </HasPermission>\n </AdminConfig>\n <PagesListConfig />\n <RedirectsListConfig />\n <CreatePageConfig />\n <TranslatePageConfig />\n </>\n );\n};\n\nExtension.displayName = \"WbExtension\";\n\nconst IntegrationsMenuItem = () => {\n const { showIntegrationsDialog } = useIntegrationsDialog();\n return <Menu.Item text={\"Integrations\"} onClick={showIntegrationsDialog} pinnable={true} />;\n};\n"],"names":["Security","Menu","Route","Dashboard","AdminConfig","Extension","router","useRouter","RegisterFeature","SharedPageInfrastructureFeature","WbPermissionsFeature","TranslatePageFeature","DeletePageFeature","DeletePageRevisionFeature","MovePageFeature","PublishPageFeature","UnpublishPageFeature","DuplicatePageFeature","CreatePageRevisionFromFeature","UpdatePageFeature","UpdatePageRevisionDescriptionFeature","CreatePageHeadlessFeature","GetPageFeature","GetPageRevisionsFeature","RevisionListFeature","CreatePageFeature","PageSettingsFeature","GetSettingsFeature","GetEcommerceSettingsFeature","UpdateEcommerceSettingsFeature","PermissionsIcon","WB_PERMISSIONS_SCHEMA","HasPermission","PagesIcon","Routes","PagesList","PageEditor","PagesWidget","RedirectsList","IntegrationsMenuItem","PagesListConfig","RedirectsListConfig","CreatePageConfig","TranslatePageConfig","showIntegrationsDialog","useIntegrationsDialog"],"mappings":"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"}
|
package/domain/Page/Page.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export interface PageData {
|
|
|
5
5
|
entryId?: string;
|
|
6
6
|
status?: WbStatus;
|
|
7
7
|
version?: number;
|
|
8
|
+
locked?: boolean;
|
|
8
9
|
location?: WbLocation;
|
|
9
10
|
properties?: Record<string, any>;
|
|
10
11
|
metadata?: Record<string, any>;
|
|
@@ -26,6 +27,7 @@ export declare class Page {
|
|
|
26
27
|
entryId: string;
|
|
27
28
|
status: WbStatus;
|
|
28
29
|
version: number;
|
|
30
|
+
locked: boolean;
|
|
29
31
|
location: WbLocation;
|
|
30
32
|
properties: Record<string, any>;
|
|
31
33
|
metadata: Record<string, any>;
|
package/domain/Page/Page.js
CHANGED
|
@@ -6,6 +6,7 @@ class Page {
|
|
|
6
6
|
this.entryId = data.entryId ?? "";
|
|
7
7
|
this.status = data.status ?? WbPageStatus.Draft;
|
|
8
8
|
this.version = data.version ?? 1;
|
|
9
|
+
this.locked = data.locked ?? false;
|
|
9
10
|
this.location = this.createLocation(data);
|
|
10
11
|
this.properties = data.properties ?? {};
|
|
11
12
|
this.metadata = data.metadata ?? {};
|
package/domain/Page/Page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/Page/Page.js","sources":["../../../src/domain/Page/Page.ts"],"sourcesContent":["import type { WbIdentity, WbLive, WbLocation, WbPageSystem } from \"~/types.js\";\nimport { ROOT_FOLDER, WbPageStatus, type WbStatus } from \"~/constants.js\";\n\nexport interface PageData {\n id?: string;\n entryId?: string;\n status?: WbStatus;\n version?: number;\n location?: WbLocation;\n properties?: Record<string, any>;\n metadata?: Record<string, any>;\n bindings?: Record<string, any>;\n elements?: Record<string, any>;\n extensions?: Record<string, any>;\n createdBy?: WbIdentity;\n createdOn?: string;\n savedBy?: WbIdentity;\n savedOn?: string;\n modifiedBy?: WbIdentity | null;\n modifiedOn?: string | null;\n system?: WbPageSystem | null;\n live?: WbLive | null;\n revisionDescription?: string;\n}\n\nexport class Page {\n public id: string;\n public entryId: string;\n public status: WbStatus;\n public version: number;\n public location: WbLocation;\n public properties: Record<string, any>;\n public metadata: Record<string, any>;\n public bindings: Record<string, any>;\n public elements: Record<string, any>;\n public extensions: Record<string, any>;\n public createdBy: WbIdentity;\n public createdOn: string;\n public savedBy: WbIdentity;\n public savedOn: string;\n public modifiedBy: WbIdentity;\n public modifiedOn: string;\n public system: WbPageSystem | null;\n public live: WbLive | null = null;\n public revisionDescription?: string | undefined;\n\n protected constructor(data: PageData) {\n this.id = data.id ?? \"\";\n this.entryId = data.entryId ?? \"\";\n this.status = data.status ?? WbPageStatus.Draft;\n this.version = data.version ?? 1;\n this.location = this.createLocation(data);\n this.properties = data.properties ?? {};\n this.metadata = data.metadata ?? {};\n this.bindings = data.bindings ?? {};\n this.elements = data.elements ?? {};\n this.extensions = data.extensions ?? {};\n this.createdBy = this.createIdentity(data.createdBy);\n this.createdOn = data.createdOn ?? \"\";\n this.savedBy = this.createIdentity(data.savedBy);\n this.savedOn = data.savedOn ?? \"\";\n this.modifiedBy = this.createIdentity(data.modifiedBy);\n this.modifiedOn = data.modifiedOn ?? \"\";\n this.system = data.system || null;\n this.live = data.live || null;\n this.revisionDescription = data.revisionDescription;\n }\n\n static create(data: PageData) {\n return new Page(data);\n }\n\n private createLocation(data: PageData): WbLocation {\n if (data.location) {\n return {\n folderId: data.location.folderId\n };\n }\n\n return {\n folderId: ROOT_FOLDER\n };\n }\n\n private createIdentity(identity?: WbIdentity | null): WbIdentity {\n return {\n id: identity?.id || \"\",\n displayName: identity?.displayName || \"\",\n type: identity?.type || \"\"\n };\n }\n}\n"],"names":["Page","data","WbPageStatus","ROOT_FOLDER","identity"],"mappings":";
|
|
1
|
+
{"version":3,"file":"domain/Page/Page.js","sources":["../../../src/domain/Page/Page.ts"],"sourcesContent":["import type { WbIdentity, WbLive, WbLocation, WbPageSystem } from \"~/types.js\";\nimport { ROOT_FOLDER, WbPageStatus, type WbStatus } from \"~/constants.js\";\n\nexport interface PageData {\n id?: string;\n entryId?: string;\n status?: WbStatus;\n version?: number;\n locked?: boolean;\n location?: WbLocation;\n properties?: Record<string, any>;\n metadata?: Record<string, any>;\n bindings?: Record<string, any>;\n elements?: Record<string, any>;\n extensions?: Record<string, any>;\n createdBy?: WbIdentity;\n createdOn?: string;\n savedBy?: WbIdentity;\n savedOn?: string;\n modifiedBy?: WbIdentity | null;\n modifiedOn?: string | null;\n system?: WbPageSystem | null;\n live?: WbLive | null;\n revisionDescription?: string;\n}\n\nexport class Page {\n public id: string;\n public entryId: string;\n public status: WbStatus;\n public version: number;\n public locked: boolean;\n public location: WbLocation;\n public properties: Record<string, any>;\n public metadata: Record<string, any>;\n public bindings: Record<string, any>;\n public elements: Record<string, any>;\n public extensions: Record<string, any>;\n public createdBy: WbIdentity;\n public createdOn: string;\n public savedBy: WbIdentity;\n public savedOn: string;\n public modifiedBy: WbIdentity;\n public modifiedOn: string;\n public system: WbPageSystem | null;\n public live: WbLive | null = null;\n public revisionDescription?: string | undefined;\n\n protected constructor(data: PageData) {\n this.id = data.id ?? \"\";\n this.entryId = data.entryId ?? \"\";\n this.status = data.status ?? WbPageStatus.Draft;\n this.version = data.version ?? 1;\n this.locked = data.locked ?? false;\n this.location = this.createLocation(data);\n this.properties = data.properties ?? {};\n this.metadata = data.metadata ?? {};\n this.bindings = data.bindings ?? {};\n this.elements = data.elements ?? {};\n this.extensions = data.extensions ?? {};\n this.createdBy = this.createIdentity(data.createdBy);\n this.createdOn = data.createdOn ?? \"\";\n this.savedBy = this.createIdentity(data.savedBy);\n this.savedOn = data.savedOn ?? \"\";\n this.modifiedBy = this.createIdentity(data.modifiedBy);\n this.modifiedOn = data.modifiedOn ?? \"\";\n this.system = data.system || null;\n this.live = data.live || null;\n this.revisionDescription = data.revisionDescription;\n }\n\n static create(data: PageData) {\n return new Page(data);\n }\n\n private createLocation(data: PageData): WbLocation {\n if (data.location) {\n return {\n folderId: data.location.folderId\n };\n }\n\n return {\n folderId: ROOT_FOLDER\n };\n }\n\n private createIdentity(identity?: WbIdentity | null): WbIdentity {\n return {\n id: identity?.id || \"\",\n displayName: identity?.displayName || \"\",\n type: identity?.type || \"\"\n };\n }\n}\n"],"names":["Page","data","WbPageStatus","ROOT_FOLDER","identity"],"mappings":";AA0BO,MAAMA;IAsBT,YAAsBC,IAAc,CAAE;aAH/B,IAAI,GAAkB;QAIzB,IAAI,CAAC,EAAE,GAAGA,KAAK,EAAE,IAAI;QACrB,IAAI,CAAC,OAAO,GAAGA,KAAK,OAAO,IAAI;QAC/B,IAAI,CAAC,MAAM,GAAGA,KAAK,MAAM,IAAIC,aAAa,KAAK;QAC/C,IAAI,CAAC,OAAO,GAAGD,KAAK,OAAO,IAAI;QAC/B,IAAI,CAAC,MAAM,GAAGA,KAAK,MAAM,IAAI;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAACA;QACpC,IAAI,CAAC,UAAU,GAAGA,KAAK,UAAU,IAAI,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAGA,KAAK,QAAQ,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAGA,KAAK,QAAQ,IAAI,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAGA,KAAK,QAAQ,IAAI,CAAC;QAClC,IAAI,CAAC,UAAU,GAAGA,KAAK,UAAU,IAAI,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAACA,KAAK,SAAS;QACnD,IAAI,CAAC,SAAS,GAAGA,KAAK,SAAS,IAAI;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAACA,KAAK,OAAO;QAC/C,IAAI,CAAC,OAAO,GAAGA,KAAK,OAAO,IAAI;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,CAACA,KAAK,UAAU;QACrD,IAAI,CAAC,UAAU,GAAGA,KAAK,UAAU,IAAI;QACrC,IAAI,CAAC,MAAM,GAAGA,KAAK,MAAM,IAAI;QAC7B,IAAI,CAAC,IAAI,GAAGA,KAAK,IAAI,IAAI;QACzB,IAAI,CAAC,mBAAmB,GAAGA,KAAK,mBAAmB;IACvD;IAEA,OAAO,OAAOA,IAAc,EAAE;QAC1B,OAAO,IAAID,KAAKC;IACpB;IAEQ,eAAeA,IAAc,EAAc;QAC/C,IAAIA,KAAK,QAAQ,EACb,OAAO;YACH,UAAUA,KAAK,QAAQ,CAAC,QAAQ;QACpC;QAGJ,OAAO;YACH,UAAUE;QACd;IACJ;IAEQ,eAAeC,QAA4B,EAAc;QAC7D,OAAO;YACH,IAAIA,UAAU,MAAM;YACpB,aAAaA,UAAU,eAAe;YACtC,MAAMA,UAAU,QAAQ;QAC5B;IACJ;AACJ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type WbStatus } from "../../constants.js";
|
|
2
|
+
import type { Page } from "../../domain/Page/Page.js";
|
|
2
3
|
import type { WbIdentity } from "../../types.js";
|
|
3
4
|
export interface PageRevisionData {
|
|
4
5
|
id: string;
|
|
@@ -25,5 +26,15 @@ export declare class PageRevision {
|
|
|
25
26
|
readonly revisionDescription: string | undefined;
|
|
26
27
|
protected constructor(data: PageRevisionData);
|
|
27
28
|
getLabel(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Publishing a revision unpublishes the one that was published before it, so the list needs
|
|
31
|
+
* to reflect the new status without refetching.
|
|
32
|
+
*/
|
|
33
|
+
withStatus(status: WbStatus): PageRevision;
|
|
28
34
|
static create(data: PageRevisionData): PageRevision;
|
|
35
|
+
/**
|
|
36
|
+
* A page revision is a projection of a page, so mutations that return a `Page` (for example,
|
|
37
|
+
* creating a new revision) can be reflected in the revisions cache without an extra round trip.
|
|
38
|
+
*/
|
|
39
|
+
static createFromPage(page: Page): PageRevision;
|
|
29
40
|
}
|
|
@@ -15,9 +15,29 @@ class PageRevision {
|
|
|
15
15
|
getLabel() {
|
|
16
16
|
return `v${this.version} (${toTitleCaseLabel(this.status)})`;
|
|
17
17
|
}
|
|
18
|
+
withStatus(status) {
|
|
19
|
+
return new PageRevision({
|
|
20
|
+
...this,
|
|
21
|
+
status
|
|
22
|
+
});
|
|
23
|
+
}
|
|
18
24
|
static create(data) {
|
|
19
25
|
return new PageRevision(data);
|
|
20
26
|
}
|
|
27
|
+
static createFromPage(page) {
|
|
28
|
+
return new PageRevision({
|
|
29
|
+
id: page.id,
|
|
30
|
+
entryId: page.entryId,
|
|
31
|
+
status: page.status,
|
|
32
|
+
version: page.version,
|
|
33
|
+
savedOn: page.savedOn,
|
|
34
|
+
title: page.properties.title,
|
|
35
|
+
locked: page.locked,
|
|
36
|
+
createdBy: page.createdBy,
|
|
37
|
+
createdOn: page.createdOn,
|
|
38
|
+
revisionDescription: page.revisionDescription
|
|
39
|
+
});
|
|
40
|
+
}
|
|
21
41
|
}
|
|
22
42
|
export { PageRevision };
|
|
23
43
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domain/PageRevision/PageRevision.js","sources":["../../../src/domain/PageRevision/PageRevision.ts"],"sourcesContent":["import { type WbStatus } from \"~/constants.js\";\nimport { toTitleCaseLabel } from \"~/shared/toTitleCaseLabel.js\";\nimport type { WbIdentity } from \"~/types.js\";\n\nexport interface PageRevisionData {\n id: string;\n entryId: string;\n status: WbStatus;\n version: number;\n savedOn: string;\n title: string;\n locked: boolean;\n createdBy: WbIdentity;\n createdOn: string;\n revisionDescription: string | undefined;\n}\n\nexport class PageRevision {\n public readonly id: string;\n public readonly entryId: string;\n public readonly status: WbStatus;\n public readonly version: number;\n public readonly savedOn: string;\n public readonly title: string;\n public readonly locked: boolean;\n public readonly createdBy: WbIdentity;\n public readonly createdOn: string;\n public readonly revisionDescription: string | undefined;\n\n protected constructor(data: PageRevisionData) {\n this.id = data.id;\n this.entryId = data.entryId;\n this.status = data.status;\n this.version = data.version;\n this.savedOn = data.savedOn;\n this.title = data.title;\n this.locked = data.locked;\n this.createdBy = data.createdBy;\n this.createdOn = data.createdOn;\n this.revisionDescription = data.revisionDescription;\n }\n\n getLabel() {\n return `v${this.version} (${toTitleCaseLabel(this.status)})`;\n }\n\n static create(data: PageRevisionData) {\n return new PageRevision(data);\n }\n}\n"],"names":["PageRevision","data","toTitleCaseLabel"],"mappings":";
|
|
1
|
+
{"version":3,"file":"domain/PageRevision/PageRevision.js","sources":["../../../src/domain/PageRevision/PageRevision.ts"],"sourcesContent":["import { type WbStatus } from \"~/constants.js\";\nimport { toTitleCaseLabel } from \"~/shared/toTitleCaseLabel.js\";\nimport type { Page } from \"~/domain/Page/Page.js\";\nimport type { WbIdentity } from \"~/types.js\";\n\nexport interface PageRevisionData {\n id: string;\n entryId: string;\n status: WbStatus;\n version: number;\n savedOn: string;\n title: string;\n locked: boolean;\n createdBy: WbIdentity;\n createdOn: string;\n revisionDescription: string | undefined;\n}\n\nexport class PageRevision {\n public readonly id: string;\n public readonly entryId: string;\n public readonly status: WbStatus;\n public readonly version: number;\n public readonly savedOn: string;\n public readonly title: string;\n public readonly locked: boolean;\n public readonly createdBy: WbIdentity;\n public readonly createdOn: string;\n public readonly revisionDescription: string | undefined;\n\n protected constructor(data: PageRevisionData) {\n this.id = data.id;\n this.entryId = data.entryId;\n this.status = data.status;\n this.version = data.version;\n this.savedOn = data.savedOn;\n this.title = data.title;\n this.locked = data.locked;\n this.createdBy = data.createdBy;\n this.createdOn = data.createdOn;\n this.revisionDescription = data.revisionDescription;\n }\n\n getLabel() {\n return `v${this.version} (${toTitleCaseLabel(this.status)})`;\n }\n\n /**\n * Publishing a revision unpublishes the one that was published before it, so the list needs\n * to reflect the new status without refetching.\n */\n withStatus(status: WbStatus) {\n return new PageRevision({ ...this, status });\n }\n\n static create(data: PageRevisionData) {\n return new PageRevision(data);\n }\n\n /**\n * A page revision is a projection of a page, so mutations that return a `Page` (for example,\n * creating a new revision) can be reflected in the revisions cache without an extra round trip.\n */\n static createFromPage(page: Page) {\n return new PageRevision({\n id: page.id,\n entryId: page.entryId,\n status: page.status,\n version: page.version,\n savedOn: page.savedOn,\n title: page.properties.title,\n locked: page.locked,\n createdBy: page.createdBy,\n createdOn: page.createdOn,\n revisionDescription: page.revisionDescription\n });\n }\n}\n"],"names":["PageRevision","data","toTitleCaseLabel","status","page"],"mappings":";AAkBO,MAAMA;IAYT,YAAsBC,IAAsB,CAAE;QAC1C,IAAI,CAAC,EAAE,GAAGA,KAAK,EAAE;QACjB,IAAI,CAAC,OAAO,GAAGA,KAAK,OAAO;QAC3B,IAAI,CAAC,MAAM,GAAGA,KAAK,MAAM;QACzB,IAAI,CAAC,OAAO,GAAGA,KAAK,OAAO;QAC3B,IAAI,CAAC,OAAO,GAAGA,KAAK,OAAO;QAC3B,IAAI,CAAC,KAAK,GAAGA,KAAK,KAAK;QACvB,IAAI,CAAC,MAAM,GAAGA,KAAK,MAAM;QACzB,IAAI,CAAC,SAAS,GAAGA,KAAK,SAAS;QAC/B,IAAI,CAAC,SAAS,GAAGA,KAAK,SAAS;QAC/B,IAAI,CAAC,mBAAmB,GAAGA,KAAK,mBAAmB;IACvD;IAEA,WAAW;QACP,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAEC,iBAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE;IAMA,WAAWC,MAAgB,EAAE;QACzB,OAAO,IAAIH,aAAa;YAAE,GAAG,IAAI;YAAEG;QAAO;IAC9C;IAEA,OAAO,OAAOF,IAAsB,EAAE;QAClC,OAAO,IAAID,aAAaC;IAC5B;IAMA,OAAO,eAAeG,IAAU,EAAE;QAC9B,OAAO,IAAIJ,aAAa;YACpB,IAAII,KAAK,EAAE;YACX,SAASA,KAAK,OAAO;YACrB,QAAQA,KAAK,MAAM;YACnB,SAASA,KAAK,OAAO;YACrB,SAASA,KAAK,OAAO;YACrB,OAAOA,KAAK,UAAU,CAAC,KAAK;YAC5B,QAAQA,KAAK,MAAM;YACnB,WAAWA,KAAK,SAAS;YACzB,WAAWA,KAAK,SAAS;YACzB,qBAAqBA,KAAK,mBAAmB;QACjD;IACJ;AACJ"}
|