@gravity-ui/page-constructor 8.5.0-alpha.1 → 8.5.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/build/cjs/containers/PageConstructor/PageConstructor.d.ts +0 -1
- package/build/cjs/containers/PageConstructor/PageConstructor.js +0 -1
- package/build/cjs/containers/PageConstructor/PageConstructor.js.map +1 -1
- package/build/cjs/hooks/usePCEditorInitializeEvents.js +2 -2
- package/build/cjs/hooks/usePCEditorInitializeEvents.js.map +1 -1
- package/build/esm/containers/PageConstructor/PageConstructor.d.ts +0 -1
- package/build/esm/containers/PageConstructor/PageConstructor.js +0 -1
- package/build/esm/containers/PageConstructor/PageConstructor.js.map +1 -1
- package/build/esm/hooks/usePCEditorInitializeEvents.js +2 -2
- package/build/esm/hooks/usePCEditorInitializeEvents.js.map +1 -1
- package/package.json +1 -1
- package/widget/index.js +1 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import '@diplodoc/transform/dist/js/yfm';
|
|
3
2
|
import type { PageConstructorWrapper } from "../../common/types/index.js";
|
|
4
3
|
import { BlockData, blockMap, navItemMap, subBlockMap } from "../../constructor-items.js";
|
|
5
4
|
import { Fields } from "../../form-generator-v2/types.js";
|
|
@@ -4,7 +4,6 @@ exports.PageConstructor = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
6
|
const React = tslib_1.__importStar(require("react"));
|
|
7
|
-
require("@diplodoc/transform/dist/js/yfm");
|
|
8
7
|
const RootCn_1 = tslib_1.__importDefault(require("../../components/RootCn/index.js"));
|
|
9
8
|
const constructor_items_1 = require("../../constructor-items.js");
|
|
10
9
|
const blockRegistryContext_1 = require("../../context/blockRegistryContext/index.js");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageConstructor.js","sourceRoot":"../../../../src","sources":["containers/PageConstructor/PageConstructor.tsx"],"names":[],"mappings":";;;;;AAAA,qDAA+B;
|
|
1
|
+
{"version":3,"file":"PageConstructor.js","sourceRoot":"../../../../src","sources":["containers/PageConstructor/PageConstructor.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport type {PageConstructorWrapper} from '../../common/types';\nimport RootCn from '../../components/RootCn';\nimport {BlockData, blockMap, navItemMap, subBlockMap} from '../../constructor-items';\nimport {BlockRegistryContext, useBlockRegistryProvider} from '../../context/blockRegistryContext';\nimport {BlocksContext} from '../../context/blocksContext';\nimport {InnerContext} from '../../context/innerContext';\nimport {Fields} from '../../form-generator-v2/types';\nimport {usePCEditorInitializeEvents} from '../../hooks/usePCEditorInitializeEvents';\nimport {usePCEditorStore} from '../../hooks/usePCEditorStore';\nimport {\n BlockWrapperDataProps,\n CustomConfig,\n CustomItems,\n PageContent,\n ShouldRenderBlock,\n} from '../../models';\nimport {block as cnBlock, getCustomItems} from '../../utils';\n\nimport {ConstructorBlocks} from './components';\nimport {ConstructorRow} from './components/ConstructorRow';\n\nimport './PageConstructor.scss';\n\nexport interface PageConstructorExtension<\n GlobalConfig extends Object = {},\n WrapperProps extends Object = {},\n BlockWrapperProps extends Object = {},\n> {\n name: string;\n id: string;\n settings: {\n ContentWrapper?: PageConstructorWrapper<WrapperProps>;\n contentWrapperProps?: WrapperProps;\n globalInputs?: Fields;\n globalDefaults?: GlobalConfig;\n blockWrapper?: React.ComponentType<\n BlockWrapperDataProps<BlockWrapperProps> & React.PropsWithChildren\n >;\n blockWrapperProps?: BlockWrapperProps;\n blockInputs?: Fields;\n };\n}\n\nconst b = cnBlock('page-constructor');\n\nexport type ItemMap = typeof blockMap & typeof subBlockMap & CustomItems;\n\nexport type NavItemMap = typeof navItemMap & CustomItems;\n\nexport interface PageConstructorProps {\n content?: PageContent;\n shouldRenderBlock?: ShouldRenderBlock;\n custom?: CustomConfig;\n blocks?: Array<BlockData>;\n extensions?: Array<PageConstructorExtension>;\n}\n\nexport const PageConstructor = (props: PageConstructorProps) => {\n const {\n content: initialContent = {blocks: []},\n shouldRenderBlock,\n custom,\n blocks: availableLocalBlocks = [],\n extensions: extensionsProp,\n } = props;\n\n const extensions = React.useMemo(() => extensionsProp ?? [], [extensionsProp]);\n\n const {blocks: availableGlobalBlocks} = React.useContext(BlocksContext);\n\n const availableBlocks = React.useMemo(\n () => [...availableGlobalBlocks, ...availableLocalBlocks],\n [availableGlobalBlocks, availableLocalBlocks],\n );\n\n const globalDefaults = extensions.reduce(\n (acc, extension) => ({\n ...acc,\n ...(extension.settings.globalDefaults || {}),\n }),\n {},\n );\n\n const [content, setContent] = React.useState<PageContent>({\n ...globalDefaults,\n ...initialContent,\n });\n\n const store = usePCEditorStore();\n const {initialized} = store;\n\n const blockRegistry = useBlockRegistryProvider();\n\n const blockWrappers = React.useMemo(\n () =>\n extensions.flatMap((ext) =>\n ext.settings.blockWrapper\n ? [\n {\n wrapper: ext.settings.blockWrapper,\n props: ext.settings.blockWrapperProps ?? {},\n },\n ]\n : [],\n ),\n [extensions],\n );\n\n const blockInputs = React.useMemo(\n () =>\n extensions.reduce<Fields>(\n (acc, ext) => [...acc, ...((ext.settings.blockInputs || []) as Fields)],\n [],\n ),\n [extensions],\n );\n\n usePCEditorInitializeEvents({\n initialContent: content,\n setContent,\n blocks: availableBlocks,\n global: extensions.reduce<Fields>(\n (acc, extension) => [...acc, ...((extension.settings.globalInputs || []) as Fields)],\n [],\n ),\n blockInputs,\n registry: blockRegistry,\n });\n\n const context = React.useMemo(\n () => ({\n blocks: availableBlocks,\n navItemMap: {\n ...navItemMap,\n ...getCustomItems(['navigation'], custom),\n },\n loadables: custom?.loadable,\n shouldRenderBlock,\n blockWrappers,\n content,\n setContent,\n }),\n [custom, shouldRenderBlock, availableBlocks, content, setContent, blockWrappers],\n );\n\n const restBlocks = content.blocks;\n\n const blocksContent = restBlocks && (\n <ConstructorRow>\n <ConstructorBlocks items={restBlocks} />\n </ConstructorRow>\n );\n\n // Apply extensions (wrappers) from outermost to innermost\n const wrappedContent = extensions.reduceRight<React.ReactNode>(\n (children, extension) =>\n extension.settings.ContentWrapper ? (\n <extension.settings.ContentWrapper\n {...(extension.settings.contentWrapperProps || {})}\n >\n {children}\n </extension.settings.ContentWrapper>\n ) : (\n children\n ),\n blocksContent || null,\n );\n\n return (\n <BlockRegistryContext.Provider value={blockRegistry}>\n <InnerContext.Provider value={context}>\n <RootCn className={b('', {['with-editor']: initialized})}>{wrappedContent}</RootCn>\n </InnerContext.Provider>\n </BlockRegistryContext.Provider>\n );\n};\n"]}
|
|
@@ -39,7 +39,7 @@ const usePCEditorInitializeEvents = ({ initialContent, setContent, blocks, globa
|
|
|
39
39
|
});
|
|
40
40
|
});
|
|
41
41
|
const onResize = React.useCallback(() => {
|
|
42
|
-
const height = document.
|
|
42
|
+
const height = document.body.scrollHeight;
|
|
43
43
|
(0, usePostMessageAPI_1.sendEventPostMessage)('ON_RESIZE', { height });
|
|
44
44
|
}, []);
|
|
45
45
|
React.useEffect(() => {
|
|
@@ -83,7 +83,7 @@ const usePCEditorInitializeEvents = ({ initialContent, setContent, blocks, globa
|
|
|
83
83
|
};
|
|
84
84
|
}, [onResize]);
|
|
85
85
|
React.useEffect(() => {
|
|
86
|
-
const height = document.
|
|
86
|
+
const height = document.body.scrollHeight;
|
|
87
87
|
(0, usePostMessageAPI_1.sendEventPostMessage)('ON_INIT', { height });
|
|
88
88
|
}, []);
|
|
89
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePCEditorInitializeEvents.js","sourceRoot":"../../../src","sources":["hooks/usePCEditorInitializeEvents.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAE/B,4DAAuB;AAEvB,kDAAwD;AAMxD,4DAAoD;AACpD,8DAA4F;AAW5F,SAAS,cAAc,CAAC,QAAuB;IAC3C,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE;QAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACjF,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,IAAA,yBAAkB,EAAC,IAAI,CAAC,EAAE,QAAQ,EAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC;AAEM,MAAM,2BAA2B,GAAG,CAAC,EACxC,cAAc,EACd,UAAU,EACV,MAAM,EACN,MAAM,EACN,WAAW,EACX,QAAQ,GACe,EAAE,EAAE;IAC3B,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,GAAG,IAAA,mCAAgB,GAAE,CAAC;IAElD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,WAAW,EAAE,CAAC;YACd,UAAU,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvC,IAAA,qDAAiC,EAAC,qBAAqB,EAAE,GAAG,EAAE;QAC1D,IAAA,wCAAoB,EAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAA,qDAAiC,EAAC,sBAAsB,EAAE,GAAG,EAAE;QAC3D,IAAA,wCAAoB,EAAC,qBAAqB,EAAE;YACxC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,WAAW,EAAE,MAAM;oBACvB,CAAC,CAAC;wBACI,GAAG,KAAK,CAAC,MAAM;wBACf,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;qBAC5D;oBACH,CAAC,CAAC,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,MAAM,IAAI,EAAE;SACvB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"usePCEditorInitializeEvents.js","sourceRoot":"../../../src","sources":["hooks/usePCEditorInitializeEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport _ from 'lodash';\n\nimport {toSerializableRect} from '../common/types/rect';\nimport {BlockData} from '../constructor-items';\nimport {BlockRegistry} from '../context/blockRegistryContext';\nimport {Fields} from '../form-generator-v2/types';\nimport {PageContent} from '../models';\n\nimport {usePCEditorStore} from './usePCEditorStore';\nimport {sendEventPostMessage, useInternalPostMessageAPIListener} from './usePostMessageAPI';\n\ninterface UseEditorInitializeProps {\n initialContent: PageContent;\n setContent: (content: PageContent) => void;\n blocks: Array<BlockData>;\n global?: Fields;\n blockInputs?: Fields;\n registry: BlockRegistry | null;\n}\n\nfunction collectRectMap(registry: BlockRegistry) {\n return registry.getEntries().map(({path, element, dropZone}) => {\n const rect = element.getClientRects().item(0) ?? element.getBoundingClientRect();\n return {path, rect: toSerializableRect(rect), dropZone};\n });\n}\n\nexport const usePCEditorInitializeEvents = ({\n initialContent,\n setContent,\n blocks,\n global,\n blockInputs,\n registry,\n}: UseEditorInitializeProps) => {\n const {initialized, content} = usePCEditorStore();\n\n React.useEffect(() => {\n if (initialized) {\n setContent(content);\n }\n }, [content, initialized, setContent]);\n\n useInternalPostMessageAPIListener('GET_INITIAL_CONTENT', () => {\n sendEventPostMessage('ON_INITIAL_CONTENT', initialContent);\n });\n\n useInternalPostMessageAPIListener('GET_SUPPORTED_BLOCKS', () => {\n sendEventPostMessage('ON_SUPPORTED_BLOCKS', {\n blocks: blocks.map((block) => ({\n type: block.type,\n schema: blockInputs?.length\n ? {\n ...block.schema,\n inputs: [...blockInputs, ...(block.schema?.inputs || [])],\n }\n : block.schema,\n })),\n subBlocks: [],\n global: global || [],\n });\n });\n\n const onResize = React.useCallback(() => {\n const height = document.body.scrollHeight;\n sendEventPostMessage('ON_RESIZE', {height});\n }, []);\n\n React.useEffect(() => {\n if (!registry) {\n return undefined;\n }\n\n let frame: number | null = null;\n\n const sendRectMap = () => {\n frame = null;\n sendEventPostMessage('ON_UPDATE_RECT_MAP', {rects: collectRectMap(registry)});\n };\n\n const scheduleSend = () => {\n if (frame !== null) {\n return;\n }\n frame = requestAnimationFrame(sendRectMap);\n };\n\n const throttledSchedule = _.throttle(scheduleSend, 100, {leading: true, trailing: true});\n\n const unsubscribe = registry.subscribe(throttledSchedule);\n const observer = new ResizeObserver(throttledSchedule);\n observer.observe(document.body);\n\n // Initial push once registry is ready.\n throttledSchedule();\n\n return () => {\n throttledSchedule.cancel();\n unsubscribe();\n observer.disconnect();\n if (frame !== null) {\n cancelAnimationFrame(frame);\n }\n };\n }, [registry]);\n\n React.useEffect(() => {\n window.addEventListener('resize', onResize);\n const observer = new ResizeObserver(onResize);\n observer.observe(document.documentElement);\n observer.observe(document.body);\n\n return () => {\n window.removeEventListener('resize', onResize);\n observer.disconnect();\n };\n }, [onResize]);\n\n React.useEffect(() => {\n const height = document.body.scrollHeight;\n sendEventPostMessage('ON_INIT', {height});\n }, []);\n};\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import '@diplodoc/transform/dist/js/yfm';
|
|
3
2
|
import type { PageConstructorWrapper } from "../../common/types/index.js";
|
|
4
3
|
import { BlockData, blockMap, navItemMap, subBlockMap } from "../../constructor-items.js";
|
|
5
4
|
import { Fields } from "../../form-generator-v2/types.js";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import '@diplodoc/transform/dist/js/yfm';
|
|
4
3
|
import RootCn from "../../components/RootCn/index.js";
|
|
5
4
|
import { navItemMap } from "../../constructor-items.js";
|
|
6
5
|
import { BlockRegistryContext, useBlockRegistryProvider } from "../../context/blockRegistryContext/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageConstructor.js","sourceRoot":"../../../../src","sources":["containers/PageConstructor/PageConstructor.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PageConstructor.js","sourceRoot":"../../../../src","sources":["containers/PageConstructor/PageConstructor.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport type {PageConstructorWrapper} from '../../common/types';\nimport RootCn from '../../components/RootCn';\nimport {BlockData, blockMap, navItemMap, subBlockMap} from '../../constructor-items';\nimport {BlockRegistryContext, useBlockRegistryProvider} from '../../context/blockRegistryContext';\nimport {BlocksContext} from '../../context/blocksContext';\nimport {InnerContext} from '../../context/innerContext';\nimport {Fields} from '../../form-generator-v2/types';\nimport {usePCEditorInitializeEvents} from '../../hooks/usePCEditorInitializeEvents';\nimport {usePCEditorStore} from '../../hooks/usePCEditorStore';\nimport {\n BlockWrapperDataProps,\n CustomConfig,\n CustomItems,\n PageContent,\n ShouldRenderBlock,\n} from '../../models';\nimport {block as cnBlock, getCustomItems} from '../../utils';\n\nimport {ConstructorBlocks} from './components';\nimport {ConstructorRow} from './components/ConstructorRow';\n\nimport './PageConstructor.scss';\n\nexport interface PageConstructorExtension<\n GlobalConfig extends Object = {},\n WrapperProps extends Object = {},\n BlockWrapperProps extends Object = {},\n> {\n name: string;\n id: string;\n settings: {\n ContentWrapper?: PageConstructorWrapper<WrapperProps>;\n contentWrapperProps?: WrapperProps;\n globalInputs?: Fields;\n globalDefaults?: GlobalConfig;\n blockWrapper?: React.ComponentType<\n BlockWrapperDataProps<BlockWrapperProps> & React.PropsWithChildren\n >;\n blockWrapperProps?: BlockWrapperProps;\n blockInputs?: Fields;\n };\n}\n\nconst b = cnBlock('page-constructor');\n\nexport type ItemMap = typeof blockMap & typeof subBlockMap & CustomItems;\n\nexport type NavItemMap = typeof navItemMap & CustomItems;\n\nexport interface PageConstructorProps {\n content?: PageContent;\n shouldRenderBlock?: ShouldRenderBlock;\n custom?: CustomConfig;\n blocks?: Array<BlockData>;\n extensions?: Array<PageConstructorExtension>;\n}\n\nexport const PageConstructor = (props: PageConstructorProps) => {\n const {\n content: initialContent = {blocks: []},\n shouldRenderBlock,\n custom,\n blocks: availableLocalBlocks = [],\n extensions: extensionsProp,\n } = props;\n\n const extensions = React.useMemo(() => extensionsProp ?? [], [extensionsProp]);\n\n const {blocks: availableGlobalBlocks} = React.useContext(BlocksContext);\n\n const availableBlocks = React.useMemo(\n () => [...availableGlobalBlocks, ...availableLocalBlocks],\n [availableGlobalBlocks, availableLocalBlocks],\n );\n\n const globalDefaults = extensions.reduce(\n (acc, extension) => ({\n ...acc,\n ...(extension.settings.globalDefaults || {}),\n }),\n {},\n );\n\n const [content, setContent] = React.useState<PageContent>({\n ...globalDefaults,\n ...initialContent,\n });\n\n const store = usePCEditorStore();\n const {initialized} = store;\n\n const blockRegistry = useBlockRegistryProvider();\n\n const blockWrappers = React.useMemo(\n () =>\n extensions.flatMap((ext) =>\n ext.settings.blockWrapper\n ? [\n {\n wrapper: ext.settings.blockWrapper,\n props: ext.settings.blockWrapperProps ?? {},\n },\n ]\n : [],\n ),\n [extensions],\n );\n\n const blockInputs = React.useMemo(\n () =>\n extensions.reduce<Fields>(\n (acc, ext) => [...acc, ...((ext.settings.blockInputs || []) as Fields)],\n [],\n ),\n [extensions],\n );\n\n usePCEditorInitializeEvents({\n initialContent: content,\n setContent,\n blocks: availableBlocks,\n global: extensions.reduce<Fields>(\n (acc, extension) => [...acc, ...((extension.settings.globalInputs || []) as Fields)],\n [],\n ),\n blockInputs,\n registry: blockRegistry,\n });\n\n const context = React.useMemo(\n () => ({\n blocks: availableBlocks,\n navItemMap: {\n ...navItemMap,\n ...getCustomItems(['navigation'], custom),\n },\n loadables: custom?.loadable,\n shouldRenderBlock,\n blockWrappers,\n content,\n setContent,\n }),\n [custom, shouldRenderBlock, availableBlocks, content, setContent, blockWrappers],\n );\n\n const restBlocks = content.blocks;\n\n const blocksContent = restBlocks && (\n <ConstructorRow>\n <ConstructorBlocks items={restBlocks} />\n </ConstructorRow>\n );\n\n // Apply extensions (wrappers) from outermost to innermost\n const wrappedContent = extensions.reduceRight<React.ReactNode>(\n (children, extension) =>\n extension.settings.ContentWrapper ? (\n <extension.settings.ContentWrapper\n {...(extension.settings.contentWrapperProps || {})}\n >\n {children}\n </extension.settings.ContentWrapper>\n ) : (\n children\n ),\n blocksContent || null,\n );\n\n return (\n <BlockRegistryContext.Provider value={blockRegistry}>\n <InnerContext.Provider value={context}>\n <RootCn className={b('', {['with-editor']: initialized})}>{wrappedContent}</RootCn>\n </InnerContext.Provider>\n </BlockRegistryContext.Provider>\n );\n};\n"]}
|
|
@@ -35,7 +35,7 @@ export const usePCEditorInitializeEvents = ({ initialContent, setContent, blocks
|
|
|
35
35
|
});
|
|
36
36
|
});
|
|
37
37
|
const onResize = React.useCallback(() => {
|
|
38
|
-
const height = document.
|
|
38
|
+
const height = document.body.scrollHeight;
|
|
39
39
|
sendEventPostMessage('ON_RESIZE', { height });
|
|
40
40
|
}, []);
|
|
41
41
|
React.useEffect(() => {
|
|
@@ -79,7 +79,7 @@ export const usePCEditorInitializeEvents = ({ initialContent, setContent, blocks
|
|
|
79
79
|
};
|
|
80
80
|
}, [onResize]);
|
|
81
81
|
React.useEffect(() => {
|
|
82
|
-
const height = document.
|
|
82
|
+
const height = document.body.scrollHeight;
|
|
83
83
|
sendEventPostMessage('ON_INIT', { height });
|
|
84
84
|
}, []);
|
|
85
85
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePCEditorInitializeEvents.js","sourceRoot":"../../../src","sources":["hooks/usePCEditorInitializeEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,CAAC,MAAM,QAAQ,CAAC;AAEvB,OAAO,EAAC,kBAAkB,EAAC,gCAA6B;AAMxD,OAAO,EAAC,gBAAgB,EAAC,8BAA2B;AACpD,OAAO,EAAC,oBAAoB,EAAE,iCAAiC,EAAC,+BAA4B;AAW5F,SAAS,cAAc,CAAC,QAAuB;IAC3C,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE;QAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACjF,OAAO,EAAC,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,EACxC,cAAc,EACd,UAAU,EACV,MAAM,EACN,MAAM,EACN,WAAW,EACX,QAAQ,GACe,EAAE,EAAE;IAC3B,MAAM,EAAC,WAAW,EAAE,OAAO,EAAC,GAAG,gBAAgB,EAAE,CAAC;IAElD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,WAAW,EAAE,CAAC;YACd,UAAU,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAEvC,iCAAiC,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC1D,oBAAoB,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,iCAAiC,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC3D,oBAAoB,CAAC,qBAAqB,EAAE;YACxC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,WAAW,EAAE,MAAM;oBACvB,CAAC,CAAC;wBACI,GAAG,KAAK,CAAC,MAAM;wBACf,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC;qBAC5D;oBACH,CAAC,CAAC,KAAK,CAAC,MAAM;aACrB,CAAC,CAAC;YACH,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,MAAM,IAAI,EAAE;SACvB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"usePCEditorInitializeEvents.js","sourceRoot":"../../../src","sources":["hooks/usePCEditorInitializeEvents.ts"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\n\nimport _ from 'lodash';\n\nimport {toSerializableRect} from '../common/types/rect';\nimport {BlockData} from '../constructor-items';\nimport {BlockRegistry} from '../context/blockRegistryContext';\nimport {Fields} from '../form-generator-v2/types';\nimport {PageContent} from '../models';\n\nimport {usePCEditorStore} from './usePCEditorStore';\nimport {sendEventPostMessage, useInternalPostMessageAPIListener} from './usePostMessageAPI';\n\ninterface UseEditorInitializeProps {\n initialContent: PageContent;\n setContent: (content: PageContent) => void;\n blocks: Array<BlockData>;\n global?: Fields;\n blockInputs?: Fields;\n registry: BlockRegistry | null;\n}\n\nfunction collectRectMap(registry: BlockRegistry) {\n return registry.getEntries().map(({path, element, dropZone}) => {\n const rect = element.getClientRects().item(0) ?? element.getBoundingClientRect();\n return {path, rect: toSerializableRect(rect), dropZone};\n });\n}\n\nexport const usePCEditorInitializeEvents = ({\n initialContent,\n setContent,\n blocks,\n global,\n blockInputs,\n registry,\n}: UseEditorInitializeProps) => {\n const {initialized, content} = usePCEditorStore();\n\n React.useEffect(() => {\n if (initialized) {\n setContent(content);\n }\n }, [content, initialized, setContent]);\n\n useInternalPostMessageAPIListener('GET_INITIAL_CONTENT', () => {\n sendEventPostMessage('ON_INITIAL_CONTENT', initialContent);\n });\n\n useInternalPostMessageAPIListener('GET_SUPPORTED_BLOCKS', () => {\n sendEventPostMessage('ON_SUPPORTED_BLOCKS', {\n blocks: blocks.map((block) => ({\n type: block.type,\n schema: blockInputs?.length\n ? {\n ...block.schema,\n inputs: [...blockInputs, ...(block.schema?.inputs || [])],\n }\n : block.schema,\n })),\n subBlocks: [],\n global: global || [],\n });\n });\n\n const onResize = React.useCallback(() => {\n const height = document.body.scrollHeight;\n sendEventPostMessage('ON_RESIZE', {height});\n }, []);\n\n React.useEffect(() => {\n if (!registry) {\n return undefined;\n }\n\n let frame: number | null = null;\n\n const sendRectMap = () => {\n frame = null;\n sendEventPostMessage('ON_UPDATE_RECT_MAP', {rects: collectRectMap(registry)});\n };\n\n const scheduleSend = () => {\n if (frame !== null) {\n return;\n }\n frame = requestAnimationFrame(sendRectMap);\n };\n\n const throttledSchedule = _.throttle(scheduleSend, 100, {leading: true, trailing: true});\n\n const unsubscribe = registry.subscribe(throttledSchedule);\n const observer = new ResizeObserver(throttledSchedule);\n observer.observe(document.body);\n\n // Initial push once registry is ready.\n throttledSchedule();\n\n return () => {\n throttledSchedule.cancel();\n unsubscribe();\n observer.disconnect();\n if (frame !== null) {\n cancelAnimationFrame(frame);\n }\n };\n }, [registry]);\n\n React.useEffect(() => {\n window.addEventListener('resize', onResize);\n const observer = new ResizeObserver(onResize);\n observer.observe(document.documentElement);\n observer.observe(document.body);\n\n return () => {\n window.removeEventListener('resize', onResize);\n observer.disconnect();\n };\n }, [onResize]);\n\n React.useEffect(() => {\n const height = document.body.scrollHeight;\n sendEventPostMessage('ON_INIT', {height});\n }, []);\n};\n"]}
|