@makeswift/runtime 0.0.0-25251c0 → 0.0.0-2a7ab69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/Page.cjs.js +215 -0
  2. package/dist/Page.cjs.js.map +1 -0
  3. package/dist/Page.es.js +209 -0
  4. package/dist/Page.es.js.map +1 -0
  5. package/dist/actions.cjs.js +5 -0
  6. package/dist/actions.cjs.js.map +1 -1
  7. package/dist/actions.es.js +5 -1
  8. package/dist/actions.es.js.map +1 -1
  9. package/dist/components.cjs.js +14 -1
  10. package/dist/components.cjs.js.map +1 -1
  11. package/dist/components.es.js +6 -2
  12. package/dist/components.es.js.map +1 -1
  13. package/dist/control-serialization.cjs.js +4 -1
  14. package/dist/control-serialization.cjs.js.map +1 -1
  15. package/dist/control-serialization.es.js +4 -1
  16. package/dist/control-serialization.es.js.map +1 -1
  17. package/dist/descriptors.cjs.js +1 -0
  18. package/dist/descriptors.cjs.js.map +1 -1
  19. package/dist/descriptors.es.js +1 -1
  20. package/dist/descriptors.es.js.map +1 -1
  21. package/dist/main.cjs.js +1 -0
  22. package/dist/main.cjs.js.map +1 -1
  23. package/dist/main.es.js +1 -1
  24. package/dist/next.cjs.js +36 -17
  25. package/dist/next.cjs.js.map +1 -1
  26. package/dist/next.es.js +37 -18
  27. package/dist/next.es.js.map +1 -1
  28. package/dist/react-builder-preview.cjs.js +3 -0
  29. package/dist/react-builder-preview.cjs.js.map +1 -1
  30. package/dist/react-builder-preview.es.js +4 -1
  31. package/dist/react-builder-preview.es.js.map +1 -1
  32. package/dist/react-page.cjs.js +1 -1
  33. package/dist/react-page.cjs.js.map +1 -1
  34. package/dist/react-page.es.js +2 -2
  35. package/dist/react-page.es.js.map +1 -1
  36. package/dist/react.cjs.js +4 -1
  37. package/dist/react.cjs.js.map +1 -1
  38. package/dist/react.cjs2.js +457 -226
  39. package/dist/react.cjs2.js.map +1 -1
  40. package/dist/react.es.js +4 -1
  41. package/dist/react.es.js.map +1 -1
  42. package/dist/react.es2.js +447 -225
  43. package/dist/react.es2.js.map +1 -1
  44. package/dist/types/api/react.d.ts +23 -4
  45. package/dist/types/api/react.d.ts.map +1 -1
  46. package/dist/types/builder/serialization/control-serialization.d.ts +17 -11
  47. package/dist/types/builder/serialization/control-serialization.d.ts.map +1 -1
  48. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  49. package/dist/types/components/builtin/Video/Video.d.ts +15 -0
  50. package/dist/types/components/builtin/Video/Video.d.ts.map +1 -0
  51. package/dist/types/components/builtin/Video/index.d.ts +2 -0
  52. package/dist/types/components/builtin/Video/index.d.ts.map +1 -0
  53. package/dist/types/components/builtin/index.d.ts.map +1 -1
  54. package/dist/types/components/index.d.ts +2 -0
  55. package/dist/types/components/index.d.ts.map +1 -1
  56. package/dist/types/components/page/BodySnippet.d.ts +7 -0
  57. package/dist/types/components/page/BodySnippet.d.ts.map +1 -0
  58. package/dist/types/components/page/Page.d.ts +45 -0
  59. package/dist/types/components/page/Page.d.ts.map +1 -0
  60. package/dist/types/components/page/index.d.ts +2 -0
  61. package/dist/types/components/page/index.d.ts.map +1 -0
  62. package/dist/types/components/shared/FallbackComponent/FallbackComponent.d.ts +7 -0
  63. package/dist/types/components/shared/FallbackComponent/FallbackComponent.d.ts.map +1 -0
  64. package/dist/types/components/shared/FallbackComponent/index.d.ts +2 -0
  65. package/dist/types/components/shared/FallbackComponent/index.d.ts.map +1 -0
  66. package/dist/types/components/utils/placeholders.d.ts +7 -0
  67. package/dist/types/components/utils/placeholders.d.ts.map +1 -1
  68. package/dist/types/controls.d.ts +4 -0
  69. package/dist/types/controls.d.ts.map +1 -0
  70. package/dist/types/index.d.ts +1 -1
  71. package/dist/types/index.d.ts.map +1 -1
  72. package/dist/types/next.d.ts +5 -4
  73. package/dist/types/next.d.ts.map +1 -1
  74. package/dist/types/prop-controllers/descriptors.d.ts +5 -4
  75. package/dist/types/prop-controllers/descriptors.d.ts.map +1 -1
  76. package/dist/types/prop-controllers/index.d.ts +1 -1
  77. package/dist/types/prop-controllers/index.d.ts.map +1 -1
  78. package/dist/types/runtimes/react.d.ts +3 -3
  79. package/dist/types/runtimes/react.d.ts.map +1 -1
  80. package/dist/types/state/actions.d.ts +9 -1
  81. package/dist/types/state/actions.d.ts.map +1 -1
  82. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  83. package/package.json +2 -1
  84. package/dist/types/components/builtin/Form/prop-controllers.d.ts +0 -1
  85. package/dist/types/components/builtin/Form/prop-controllers.d.ts.map +0 -1
  86. package/dist/types/components/hooks/useTableWorkspace.d.ts +0 -14
  87. package/dist/types/components/hooks/useTableWorkspace.d.ts.map +0 -1
  88. package/dist/types/components/utils/layout.d.ts +0 -16
  89. package/dist/types/components/utils/layout.d.ts.map +0 -1
  90. package/dist/types/components/utils/pollAnimationFrame.d.ts +0 -2
  91. package/dist/types/components/utils/pollAnimationFrame.d.ts.map +0 -1
  92. package/dist/types/components/utils/pollElementLayout.d.ts +0 -8
  93. package/dist/types/components/utils/pollElementLayout.d.ts.map +0 -1
  94. package/dist/types/components/utils/requestBatchedAnimationFrame.d.ts +0 -4
  95. package/dist/types/components/utils/requestBatchedAnimationFrame.d.ts.map +0 -1
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
5
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
9
+ var __spreadValues = (a, b) => {
10
+ for (var prop in b || (b = {}))
11
+ if (__hasOwnProp.call(b, prop))
12
+ __defNormalProp(a, prop, b[prop]);
13
+ if (__getOwnPropSymbols)
14
+ for (var prop of __getOwnPropSymbols(b)) {
15
+ if (__propIsEnum.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ }
18
+ return a;
19
+ };
20
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
+ var React = require("react");
22
+ var parse = require("html-react-parser");
23
+ var Head = require("next/head");
24
+ var react = require("./react.cjs2.js");
25
+ var reactPage = require("./react-page.cjs.js");
26
+ var jsxRuntime = require("react/jsx-runtime");
27
+ function _interopDefaultLegacy(e) {
28
+ return e && typeof e === "object" && "default" in e ? e : { "default": e };
29
+ }
30
+ var parse__default = /* @__PURE__ */ _interopDefaultLegacy(parse);
31
+ var Head__default = /* @__PURE__ */ _interopDefaultLegacy(Head);
32
+ const SCRIPT_TAG = "script";
33
+ function BodySnippet({
34
+ code,
35
+ cleanup
36
+ }) {
37
+ React.useEffect(() => {
38
+ const container = document.createElement("div");
39
+ container.innerHTML = code;
40
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);
41
+ const scripts = [];
42
+ while (walker.nextNode()) {
43
+ if (walker.currentNode instanceof HTMLScriptElement)
44
+ scripts.push(walker.currentNode);
45
+ }
46
+ scripts.forEach((inlineScript) => {
47
+ var _a;
48
+ const executableScript = document.createElement(SCRIPT_TAG);
49
+ executableScript.textContent = inlineScript.textContent;
50
+ Array.from(inlineScript.attributes).forEach(({
51
+ name,
52
+ value
53
+ }) => {
54
+ executableScript.setAttribute(name, value);
55
+ });
56
+ (_a = inlineScript.parentNode) == null ? void 0 : _a.replaceChild(executableScript, inlineScript);
57
+ });
58
+ const nodes = Array.from(container.childNodes);
59
+ document.body.append(...nodes);
60
+ return () => {
61
+ nodes.forEach((node) => {
62
+ var _a;
63
+ (_a = node.parentNode) == null ? void 0 : _a.removeChild(node);
64
+ });
65
+ if (cleanup == null)
66
+ return;
67
+ const cleanUp = new Function(cleanup);
68
+ try {
69
+ cleanUp();
70
+ } catch {
71
+ }
72
+ };
73
+ }, [code, cleanup]);
74
+ return null;
75
+ }
76
+ const defaultFavicon = {
77
+ mimetype: "image/png",
78
+ publicUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC"
79
+ };
80
+ const VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\-\d]*$/;
81
+ const VALID_HEAD_ELEMENT_TYPES = ["title", "base", "link", "style", "meta", "script", "noscript", "template"];
82
+ function snippetToElement(snippet) {
83
+ return React.Children.map(parse__default["default"](snippet.code), (element) => {
84
+ if (typeof element === "string")
85
+ return element;
86
+ if (!VALID_TAG_REGEX.test(element.type))
87
+ return null;
88
+ const key = element.key ? `${snippet.id}:${element.key}` : snippet.id;
89
+ return React.createElement(element.type, __spreadProps(__spreadValues({}, element.props), {
90
+ key
91
+ }));
92
+ });
93
+ }
94
+ function Page({
95
+ page,
96
+ preview = false
97
+ }) {
98
+ var _a;
99
+ console.log({
100
+ page
101
+ });
102
+ const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
103
+ const {
104
+ title,
105
+ description,
106
+ keywords,
107
+ socialImage
108
+ } = page.meta;
109
+ const fontFamilyParamValue = page.fonts.map(({
110
+ family,
111
+ variants
112
+ }) => {
113
+ return `${family.replace(/ /g, "+")}:${variants.join()}`;
114
+ }).join("|");
115
+ const snippets = React.useMemo(() => page.snippets.filter((snippet) => preview ? snippet.builderEnabled : snippet.liveEnabled), [page, preview]);
116
+ const headSnippets = React.useMemo(() => snippets.filter((snippet) => snippet.location === "HEAD"), [snippets]);
117
+ const previousHeadSnippets = React.useRef(null);
118
+ React.useEffect(() => {
119
+ var _a2;
120
+ const headSnippetsToCleanUp = ((_a2 = previousHeadSnippets.current) != null ? _a2 : []).filter((previousSnippet) => previousSnippet.cleanup != null).filter((previousSnippet) => !headSnippets.some((snippet) => previousSnippet.id === snippet.id));
121
+ headSnippetsToCleanUp.forEach((snippetToCleanUp) => {
122
+ if (snippetToCleanUp.cleanup == null)
123
+ return;
124
+ const cleanUp = new Function(snippetToCleanUp.cleanup);
125
+ try {
126
+ cleanUp();
127
+ } catch {
128
+ }
129
+ });
130
+ previousHeadSnippets.current = headSnippets;
131
+ }, [headSnippets]);
132
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
133
+ children: [/* @__PURE__ */ jsxRuntime.jsxs(Head__default["default"], {
134
+ children: [/* @__PURE__ */ jsxRuntime.jsx("style", {
135
+ children: `
136
+ html {
137
+ font-family: sans-serif;
138
+ }
139
+ div#__next {
140
+ overflow: hidden;
141
+ }
142
+ `
143
+ }), /* @__PURE__ */ jsxRuntime.jsx("link", {
144
+ rel: "icon",
145
+ type: favicon.mimetype,
146
+ href: favicon.publicUrl
147
+ }), title && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
148
+ children: [/* @__PURE__ */ jsxRuntime.jsx("title", {
149
+ children: title
150
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
151
+ property: "og:title",
152
+ content: title
153
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
154
+ name: "twitter:title",
155
+ content: title
156
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
157
+ itemProp: "name",
158
+ content: title
159
+ })]
160
+ }), description && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
161
+ children: [/* @__PURE__ */ jsxRuntime.jsx("meta", {
162
+ name: "description",
163
+ content: description
164
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
165
+ property: "og:description",
166
+ content: description
167
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
168
+ name: "twitter:description",
169
+ content: description
170
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
171
+ itemProp: "description",
172
+ content: description
173
+ })]
174
+ }), keywords && /* @__PURE__ */ jsxRuntime.jsx("meta", {
175
+ name: "keywords",
176
+ content: keywords
177
+ }), socialImage && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
178
+ children: [/* @__PURE__ */ jsxRuntime.jsx("meta", {
179
+ property: "og:image",
180
+ content: socialImage.publicUrl
181
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
182
+ property: "og:image:type",
183
+ content: socialImage.publicUrl
184
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
185
+ name: "twitter:image",
186
+ content: socialImage.publicUrl
187
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
188
+ name: "twitter:card",
189
+ content: socialImage.publicUrl
190
+ }), /* @__PURE__ */ jsxRuntime.jsx("meta", {
191
+ itemProp: "image",
192
+ content: socialImage.publicUrl
193
+ })]
194
+ }), fontFamilyParamValue !== "" && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {
195
+ children: /* @__PURE__ */ jsxRuntime.jsx("link", {
196
+ rel: "stylesheet",
197
+ href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
198
+ })
199
+ }), headSnippets.map(snippetToElement).map((children) => React.Children.map(children, (child) => {
200
+ if (typeof child === "string")
201
+ return child;
202
+ if (VALID_HEAD_ELEMENT_TYPES.includes(child.type))
203
+ return child;
204
+ return null;
205
+ }))]
206
+ }), /* @__PURE__ */ jsxRuntime.jsx(react.DocumentReference, {
207
+ documentReference: reactPage.createDocumentReference(page.id)
208
+ }), snippets.filter((snippet) => snippet.location === "BODY").map((snippet) => /* @__PURE__ */ jsxRuntime.jsx(BodySnippet, {
209
+ code: snippet.code,
210
+ cleanup: snippet.cleanup
211
+ }, snippet.id))]
212
+ });
213
+ }
214
+ exports.Page = Page;
215
+ //# sourceMappingURL=Page.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.cjs.js","sources":["../src/components/page/BodySnippet.tsx","../src/components/page/Page.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import { ReactElement, Children, createElement, useMemo, useEffect, useRef } from 'react'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\n\nenum SnippetLocation {\n Body = 'BODY',\n Head = 'HEAD',\n}\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup?: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n name: string\n shouldAddToNewPages: boolean\n}\n\nexport type PageData = {\n id: string\n meta: {\n title?: string | null | undefined\n description?: string | null | undefined\n keywords?: string | null | undefined\n socialImage?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n favicon?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n }\n snippets: Snippet[]\n fonts: Array<{\n family: string\n variants: string[]\n }>\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\ntype Props = {\n page: PageData\n preview?: boolean\n}\n\nexport function Page({ page, preview = false }: Props): JSX.Element {\n console.log({ page })\n const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const fontFamilyParamValue = page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n const snippets = useMemo(\n () => page.snippets.filter(snippet => (preview ? snippet.builderEnabled : snippet.liveEnabled)),\n [page, preview],\n )\n const headSnippets = useMemo(\n () => snippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [snippets],\n )\n\n const previousHeadSnippets = useRef<PageData['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.publicUrl} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content={socialImage.publicUrl} />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(page.id)} />\n\n {snippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","element","test","type","key","id","props","page","preview","console","log","favicon","meta","title","description","keywords","socialImage","fontFamilyParamValue","fonts","family","variants","replace","join","snippets","useMemo","filter","builderEnabled","liveEnabled","headSnippets","location","SnippetLocation","previousHeadSnippets","useRef","headSnippetsToCleanUp","current","previousSnippet","some","snippetToCleanUp","_Fragment","_jsxs","Head","_jsx","snippetToElement","children","child","includes","DocumentReference","createDocumentReference"],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { useEffect, useMemo, useRef, Children, createElement } from "react";
21
+ import parse from "html-react-parser";
22
+ import Head from "next/head";
23
+ import { D as DocumentReference } from "./react.es2.js";
24
+ import { a as createDocumentReference } from "./react-page.es.js";
25
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
26
+ const SCRIPT_TAG = "script";
27
+ function BodySnippet({
28
+ code,
29
+ cleanup
30
+ }) {
31
+ useEffect(() => {
32
+ const container = document.createElement("div");
33
+ container.innerHTML = code;
34
+ const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);
35
+ const scripts = [];
36
+ while (walker.nextNode()) {
37
+ if (walker.currentNode instanceof HTMLScriptElement)
38
+ scripts.push(walker.currentNode);
39
+ }
40
+ scripts.forEach((inlineScript) => {
41
+ var _a;
42
+ const executableScript = document.createElement(SCRIPT_TAG);
43
+ executableScript.textContent = inlineScript.textContent;
44
+ Array.from(inlineScript.attributes).forEach(({
45
+ name,
46
+ value
47
+ }) => {
48
+ executableScript.setAttribute(name, value);
49
+ });
50
+ (_a = inlineScript.parentNode) == null ? void 0 : _a.replaceChild(executableScript, inlineScript);
51
+ });
52
+ const nodes = Array.from(container.childNodes);
53
+ document.body.append(...nodes);
54
+ return () => {
55
+ nodes.forEach((node) => {
56
+ var _a;
57
+ (_a = node.parentNode) == null ? void 0 : _a.removeChild(node);
58
+ });
59
+ if (cleanup == null)
60
+ return;
61
+ const cleanUp = new Function(cleanup);
62
+ try {
63
+ cleanUp();
64
+ } catch {
65
+ }
66
+ };
67
+ }, [code, cleanup]);
68
+ return null;
69
+ }
70
+ const defaultFavicon = {
71
+ mimetype: "image/png",
72
+ publicUrl: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC"
73
+ };
74
+ const VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\-\d]*$/;
75
+ const VALID_HEAD_ELEMENT_TYPES = ["title", "base", "link", "style", "meta", "script", "noscript", "template"];
76
+ function snippetToElement(snippet) {
77
+ return Children.map(parse(snippet.code), (element) => {
78
+ if (typeof element === "string")
79
+ return element;
80
+ if (!VALID_TAG_REGEX.test(element.type))
81
+ return null;
82
+ const key = element.key ? `${snippet.id}:${element.key}` : snippet.id;
83
+ return createElement(element.type, __spreadProps(__spreadValues({}, element.props), {
84
+ key
85
+ }));
86
+ });
87
+ }
88
+ function Page({
89
+ page,
90
+ preview = false
91
+ }) {
92
+ var _a;
93
+ console.log({
94
+ page
95
+ });
96
+ const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
97
+ const {
98
+ title,
99
+ description,
100
+ keywords,
101
+ socialImage
102
+ } = page.meta;
103
+ const fontFamilyParamValue = page.fonts.map(({
104
+ family,
105
+ variants
106
+ }) => {
107
+ return `${family.replace(/ /g, "+")}:${variants.join()}`;
108
+ }).join("|");
109
+ const snippets = useMemo(() => page.snippets.filter((snippet) => preview ? snippet.builderEnabled : snippet.liveEnabled), [page, preview]);
110
+ const headSnippets = useMemo(() => snippets.filter((snippet) => snippet.location === "HEAD"), [snippets]);
111
+ const previousHeadSnippets = useRef(null);
112
+ useEffect(() => {
113
+ var _a2;
114
+ const headSnippetsToCleanUp = ((_a2 = previousHeadSnippets.current) != null ? _a2 : []).filter((previousSnippet) => previousSnippet.cleanup != null).filter((previousSnippet) => !headSnippets.some((snippet) => previousSnippet.id === snippet.id));
115
+ headSnippetsToCleanUp.forEach((snippetToCleanUp) => {
116
+ if (snippetToCleanUp.cleanup == null)
117
+ return;
118
+ const cleanUp = new Function(snippetToCleanUp.cleanup);
119
+ try {
120
+ cleanUp();
121
+ } catch {
122
+ }
123
+ });
124
+ previousHeadSnippets.current = headSnippets;
125
+ }, [headSnippets]);
126
+ return /* @__PURE__ */ jsxs(Fragment, {
127
+ children: [/* @__PURE__ */ jsxs(Head, {
128
+ children: [/* @__PURE__ */ jsx("style", {
129
+ children: `
130
+ html {
131
+ font-family: sans-serif;
132
+ }
133
+ div#__next {
134
+ overflow: hidden;
135
+ }
136
+ `
137
+ }), /* @__PURE__ */ jsx("link", {
138
+ rel: "icon",
139
+ type: favicon.mimetype,
140
+ href: favicon.publicUrl
141
+ }), title && /* @__PURE__ */ jsxs(Fragment, {
142
+ children: [/* @__PURE__ */ jsx("title", {
143
+ children: title
144
+ }), /* @__PURE__ */ jsx("meta", {
145
+ property: "og:title",
146
+ content: title
147
+ }), /* @__PURE__ */ jsx("meta", {
148
+ name: "twitter:title",
149
+ content: title
150
+ }), /* @__PURE__ */ jsx("meta", {
151
+ itemProp: "name",
152
+ content: title
153
+ })]
154
+ }), description && /* @__PURE__ */ jsxs(Fragment, {
155
+ children: [/* @__PURE__ */ jsx("meta", {
156
+ name: "description",
157
+ content: description
158
+ }), /* @__PURE__ */ jsx("meta", {
159
+ property: "og:description",
160
+ content: description
161
+ }), /* @__PURE__ */ jsx("meta", {
162
+ name: "twitter:description",
163
+ content: description
164
+ }), /* @__PURE__ */ jsx("meta", {
165
+ itemProp: "description",
166
+ content: description
167
+ })]
168
+ }), keywords && /* @__PURE__ */ jsx("meta", {
169
+ name: "keywords",
170
+ content: keywords
171
+ }), socialImage && /* @__PURE__ */ jsxs(Fragment, {
172
+ children: [/* @__PURE__ */ jsx("meta", {
173
+ property: "og:image",
174
+ content: socialImage.publicUrl
175
+ }), /* @__PURE__ */ jsx("meta", {
176
+ property: "og:image:type",
177
+ content: socialImage.publicUrl
178
+ }), /* @__PURE__ */ jsx("meta", {
179
+ name: "twitter:image",
180
+ content: socialImage.publicUrl
181
+ }), /* @__PURE__ */ jsx("meta", {
182
+ name: "twitter:card",
183
+ content: socialImage.publicUrl
184
+ }), /* @__PURE__ */ jsx("meta", {
185
+ itemProp: "image",
186
+ content: socialImage.publicUrl
187
+ })]
188
+ }), fontFamilyParamValue !== "" && /* @__PURE__ */ jsx(Fragment, {
189
+ children: /* @__PURE__ */ jsx("link", {
190
+ rel: "stylesheet",
191
+ href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
192
+ })
193
+ }), headSnippets.map(snippetToElement).map((children) => Children.map(children, (child) => {
194
+ if (typeof child === "string")
195
+ return child;
196
+ if (VALID_HEAD_ELEMENT_TYPES.includes(child.type))
197
+ return child;
198
+ return null;
199
+ }))]
200
+ }), /* @__PURE__ */ jsx(DocumentReference, {
201
+ documentReference: createDocumentReference(page.id)
202
+ }), snippets.filter((snippet) => snippet.location === "BODY").map((snippet) => /* @__PURE__ */ jsx(BodySnippet, {
203
+ code: snippet.code,
204
+ cleanup: snippet.cleanup
205
+ }, snippet.id))]
206
+ });
207
+ }
208
+ export { Page as P };
209
+ //# sourceMappingURL=Page.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.es.js","sources":["../src/components/page/BodySnippet.tsx","../src/components/page/Page.tsx"],"sourcesContent":["import { useEffect } from 'react'\n\nconst SCRIPT_TAG = 'script'\n\ntype Props = {\n code: string\n cleanup: string | null | undefined\n}\n\nexport function BodySnippet({ code, cleanup }: Props): null {\n useEffect(() => {\n const container = document.createElement('div')\n\n container.innerHTML = code\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT)\n const scripts: HTMLScriptElement[] = []\n\n while (walker.nextNode()) {\n if (walker.currentNode instanceof HTMLScriptElement) scripts.push(walker.currentNode)\n }\n\n scripts.forEach(inlineScript => {\n const executableScript = document.createElement(SCRIPT_TAG)\n\n executableScript.textContent = inlineScript.textContent\n Array.from(inlineScript.attributes).forEach(({ name, value }) => {\n executableScript.setAttribute(name, value)\n })\n\n inlineScript.parentNode?.replaceChild(executableScript, inlineScript)\n })\n\n const nodes = Array.from(container.childNodes)\n\n document.body.append(...nodes)\n\n return () => {\n nodes.forEach(node => {\n node.parentNode?.removeChild(node)\n })\n\n if (cleanup == null) return\n\n const cleanUp = new Function(cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n }\n }, [code, cleanup])\n\n return null\n}\n","import { ReactElement, Children, createElement, useMemo, useEffect, useRef } from 'react'\nimport parse from 'html-react-parser'\nimport Head from 'next/head'\n\nimport { BodySnippet } from './BodySnippet'\nimport { DocumentReference } from '../../runtimes/react'\nimport { createDocumentReference } from '../../state/react-page'\n\nenum SnippetLocation {\n Body = 'BODY',\n Head = 'HEAD',\n}\n\ntype Snippet = {\n builderEnabled: boolean\n cleanup?: string | null\n code: string\n id: string\n liveEnabled: boolean\n location: SnippetLocation\n name: string\n shouldAddToNewPages: boolean\n}\n\nexport type PageData = {\n id: string\n meta: {\n title?: string | null | undefined\n description?: string | null | undefined\n keywords?: string | null | undefined\n socialImage?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n favicon?: { id: string; publicUrl: any; mimetype: any } | null | undefined\n }\n snippets: Snippet[]\n fonts: Array<{\n family: string\n variants: string[]\n }>\n}\n\nconst defaultFavicon = {\n mimetype: 'image/png',\n publicUrl:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAiCAYAAAA6RwvCAAAACXBIWXMAABcRAAAXEQHKJvM/AAABjElEQVRYhc2XzU3EMBCFB8TddAAXn6EE6GCpgNABZ1/IXnymBOgAOmA7YM8+ABVsXEHQQFaKQryeN3Yk3ilKJtEnv/nLUd/3pFG0riGi88yrnQn+UfJ5FUi0riWiB2H4nQn+KRd0DFP8agXEfkqCYJBoHdtxIQxfm+DfFgEhoith3NYE30o/qgGR2BJB+xY7kdYEL8oNFUi0jiFMJuxVWrJqEMFxsyUNCsE6AeNztvBp7aJ143vXksoRnwhYtmNdSoIQa6RlO9YXEWW7KgoCleOgxgTf1QZBT+RZ2lXFING6UxCCq+ceeUE8fYdknY599v9sJvzGBP+yCEgC7GPmETc0OJ+0awAlkhe2pAbIXAeFZ8xe2g2Nk3c3ub0xwWt6zY9qbmiqGVMbZK21ZC/YmhlbeBMTzZNDQqcvDb1kM1x32iqZSt1HaqukfKvq34BAOTLsrH+ETNmUkKHHA+428RgeclPVWozeSyAI2EdWB34jtqXNTAySOY3i/KgFIlqOa4GkFmBegorzg4joG07he/M7zl6jAAAAAElFTkSuQmCC',\n}\n\n// Taken from https://github.com/facebook/react/blob/14bac6193a334eda42e727336e8967419f08f5df/packages/react-dom/src/server/ReactPartialRenderer.js#L208\nconst VALID_TAG_REGEX = /^[a-zA-Z][a-zA-Z:_.\\-\\d]*$/\n\nconst VALID_HEAD_ELEMENT_TYPES = [\n 'title',\n 'base',\n 'link',\n 'style',\n 'meta',\n 'script',\n 'noscript',\n 'template',\n]\n\nfunction snippetToElement(snippet: Pick<Snippet, 'id' | 'code'>): (string | ReactElement)[] {\n return Children.map(parse(snippet.code), element => {\n if (typeof element === 'string') return element\n\n if (!VALID_TAG_REGEX.test(element.type)) return null\n\n const key = element.key ? `${snippet.id}:${element.key}` : snippet.id\n\n return createElement(element.type, { ...element.props, key })\n })\n}\n\ntype Props = {\n page: PageData\n preview?: boolean\n}\n\nexport function Page({ page, preview = false }: Props): JSX.Element {\n console.log({ page })\n const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const fontFamilyParamValue = page.fonts\n .map(({ family, variants }) => {\n return `${family.replace(/ /g, '+')}:${variants.join()}`\n })\n .join('|')\n const snippets = useMemo(\n () => page.snippets.filter(snippet => (preview ? snippet.builderEnabled : snippet.liveEnabled)),\n [page, preview],\n )\n const headSnippets = useMemo(\n () => snippets.filter(snippet => snippet.location === SnippetLocation.Head),\n [snippets],\n )\n\n const previousHeadSnippets = useRef<PageData['snippets'] | null>(null)\n useEffect(() => {\n const headSnippetsToCleanUp = (previousHeadSnippets.current ?? [])\n .filter(previousSnippet => previousSnippet.cleanup != null)\n .filter(previousSnippet => !headSnippets.some(snippet => previousSnippet.id === snippet.id))\n\n headSnippetsToCleanUp.forEach(snippetToCleanUp => {\n if (snippetToCleanUp.cleanup == null) return\n\n const cleanUp = new Function(snippetToCleanUp.cleanup)\n\n try {\n cleanUp()\n } catch {\n // Ignore errors from user input.\n }\n })\n\n previousHeadSnippets.current = headSnippets\n }, [headSnippets])\n\n return (\n <>\n <Head>\n <style>\n {`\n html {\n font-family: sans-serif;\n }\n div#__next {\n overflow: hidden;\n }\n `}\n </style>\n\n <link rel=\"icon\" type={favicon.mimetype} href={favicon.publicUrl} />\n\n {title && (\n <>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <meta name=\"twitter:title\" content={title} />\n <meta itemProp=\"name\" content={title} />\n </>\n )}\n\n {description && (\n <>\n <meta name=\"description\" content={description} />\n <meta property=\"og:description\" content={description} />\n <meta name=\"twitter:description\" content={description} />\n <meta itemProp=\"description\" content={description} />\n </>\n )}\n\n {keywords && <meta name=\"keywords\" content={keywords} />}\n\n {socialImage && (\n <>\n <meta property=\"og:image\" content={socialImage.publicUrl} />\n <meta property=\"og:image:type\" content={socialImage.publicUrl} />\n <meta name=\"twitter:image\" content={socialImage.publicUrl} />\n <meta name=\"twitter:card\" content={socialImage.publicUrl} />\n <meta itemProp=\"image\" content={socialImage.publicUrl} />\n </>\n )}\n\n {fontFamilyParamValue !== '' && (\n <>\n <link\n rel=\"stylesheet\"\n href={`https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`}\n />\n </>\n )}\n\n {headSnippets.map(snippetToElement).map(children =>\n Children.map(children, child => {\n if (typeof child === 'string') return child\n\n if (VALID_HEAD_ELEMENT_TYPES.includes(child.type as string)) return child\n\n return null\n }),\n )}\n </Head>\n\n <DocumentReference documentReference={createDocumentReference(page.id)} />\n\n {snippets\n .filter(snippet => snippet.location === SnippetLocation.Body)\n .map(snippet => (\n <BodySnippet key={snippet.id} code={snippet.code} cleanup={snippet.cleanup} />\n ))}\n </>\n )\n}\n"],"names":["SCRIPT_TAG","code","cleanup","useEffect","container","document","createElement","innerHTML","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","scripts","nextNode","currentNode","HTMLScriptElement","push","forEach","inlineScript","executableScript","textContent","Array","from","attributes","name","value","setAttribute","parentNode","replaceChild","nodes","childNodes","body","append","node","removeChild","cleanUp","Function","defaultFavicon","mimetype","publicUrl","VALID_TAG_REGEX","VALID_HEAD_ELEMENT_TYPES","snippet","Children","map","parse","element","test","type","key","id","props","page","preview","console","log","favicon","meta","title","description","keywords","socialImage","fontFamilyParamValue","fonts","family","variants","replace","join","snippets","useMemo","filter","builderEnabled","liveEnabled","headSnippets","location","SnippetLocation","previousHeadSnippets","useRef","headSnippetsToCleanUp","current","previousSnippet","some","snippetToCleanUp","_Fragment","_jsxs","_jsx","snippetToElement","children","child","includes","createDocumentReference"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAMA,aAAa;AAOS,qBAAA;AAAA,EAAEC;AAAAA,EAAMC;AAAAA,GAAwB;AAC1DC,YAAU,MAAM;AACRC,UAAAA,YAAYC,SAASC,cAAc,KAAvB;AAElBF,cAAUG,YAAYN;AAEhBO,UAAAA,SAASH,SAASI,iBAAiBL,WAAWM,WAAWC,YAAhD;AACf,UAAMC,UAA+B,CAAA;AAE9BJ,WAAAA,OAAOK,YAAY;AACxB,UAAIL,OAAOM,uBAAuBC;AAA2BC,gBAAAA,KAAKR,OAAOM,WAApB;AAAA,IACtD;AAEDF,YAAQK,QAAQC,CAAgB,iBAAA;;AACxBC,YAAAA,mBAAmBd,SAASC,cAAcN,UAAvB;AAEzBmB,uBAAiBC,cAAcF,aAAaE;AAC5CC,YAAMC,KAAKJ,aAAaK,UAAxB,EAAoCN,QAAQ,CAAC;AAAA,QAAEO;AAAAA,QAAMC;AAAAA,YAAY;AAC9CC,yBAAAA,aAAaF,MAAMC,KAApC;AAAA,MAAA,CADF;AAIaE,yBAAAA,eAAAA,mBAAYC,aAAaT,kBAAkBD;AAAAA,IAAxD,CARF;AAWMW,UAAAA,QAAQR,MAAMC,KAAKlB,UAAU0B,UAArB;AAELC,aAAAA,KAAKC,OAAO,GAAGH,KAAxB;AAEA,WAAO,MAAM;AACXA,YAAMZ,QAAQgB,CAAQ,SAAA;;AACfN,mBAAAA,eAAAA,mBAAYO,YAAYD;AAAAA,MAA7B,CADF;AAII/B,UAAAA,WAAW;AAAM;AAEfiC,YAAAA,UAAU,IAAIC,SAASlC,OAAb;AAEZ,UAAA;AACK;MAAA,QACP;AAAA,MAED;AAAA,IAAA;AAAA,EAbH,GAeC,CAACD,MAAMC,OAAP,CA1CM;AA4CF,SAAA;AACR;ACfD,MAAMmC,iBAAiB;AAAA,EACrBC,UAAU;AAAA,EACVC,WACE;AAHmB;AAOvB,MAAMC,kBAAkB;AAExB,MAAMC,2BAA2B,CAC/B,SACA,QACA,QACA,SACA,QACA,UACA,YACA,UAR+B;AAWjC,0BAA0BC,SAAkE;AAC1F,SAAOC,SAASC,IAAIC,MAAMH,QAAQzC,IAAT,GAAgB6C,CAAW,YAAA;AAClD,QAAI,OAAOA,YAAY;AAAiBA,aAAAA;AAEpC,QAAA,CAACN,gBAAgBO,KAAKD,QAAQE,IAA7B;AAA2C,aAAA;AAE1CC,UAAAA,MAAMH,QAAQG,MAAO,GAAEP,QAAQQ,MAAMJ,QAAQG,QAAQP,QAAQQ;AAE5D5C,WAAAA,cAAcwC,QAAQE,MAAM,iCAAKF,QAAQK,QAAb;AAAA,MAAoBF;AAAAA,IAAAA,EAAnC;AAAA,EAAA,CAPf;AASR;AAOoB,cAAA;AAAA,EAAEG;AAAAA,EAAMC,UAAU;AAAA,GAA6B;;AAClEC,UAAQC,IAAI;AAAA,IAAEH;AAAAA,EAAAA,CAAd;AACMI,QAAAA,UAAUJ,WAAKK,KAAKD,YAAVJ,YAAqBf;AAC/B,QAAA;AAAA,IAAEqB;AAAAA,IAAOC;AAAAA,IAAaC;AAAAA,IAAUC;AAAAA,MAAgBT,KAAKK;AACrDK,QAAAA,uBAAuBV,KAAKW,MAC/BnB,IAAI,CAAC;AAAA,IAAEoB;AAAAA,IAAQC;AAAAA,QAAe;AAC7B,WAAQ,GAAED,OAAOE,QAAQ,MAAM,GAArB,KAA6BD,SAASE;GAFvB,EAI1BA,KAAK,GAJqB;AAK7B,QAAMC,WAAWC,QACf,MAAMjB,KAAKgB,SAASE,OAAO5B,CAAYW,YAAAA,UAAUX,QAAQ6B,iBAAiB7B,QAAQ8B,WAA5E,GACN,CAACpB,MAAMC,OAAP,CAFsB;AAIlBoB,QAAAA,eAAeJ,QACnB,MAAMD,SAASE,OAAO5B,CAAAA,YAAWA,QAAQgC,aAAaC,MAAhD,GACN,CAACP,QAAD,CAF0B;AAKtBQ,QAAAA,uBAAuBC,OAAoC,IAA9B;AACnC1E,YAAU,MAAM;;AACR2E,UAAAA,qDAA8CC,yBAAW,IAC5DT,OAAOU,CAAAA,oBAAmBA,gBAAgB9E,WAAW,IAD1B,EAE3BoE,OAAOU,CAAAA,oBAAmB,CAACP,aAAaQ,KAAKvC,aAAWsC,gBAAgB9B,OAAOR,QAAQQ,EAA5D,CAFA;AAI9B4B,0BAAsB7D,QAAQiE,CAAoB,qBAAA;AAChD,UAAIA,iBAAiBhF,WAAW;AAAM;AAEhCiC,YAAAA,UAAU,IAAIC,SAAS8C,iBAAiBhF,OAA9B;AAEZ,UAAA;AACK;MAAA,QACP;AAAA,MAED;AAAA,IAAA,CATH;AAYA0E,yBAAqBG,UAAUN;AAAAA,EAAAA,GAC9B,CAACA,YAAD,CAlBM;AAqBP,8BAAAU,UAAA;AAAA,IAAA,UAAA,CACEC,qBAAC,MAAD;AAAA,MACE,UAAA,CAAAC,oBAAA,SAAA;AAAA,QACI,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAAA,CADJ,GAWAA,oBAAA,QAAA;AAAA,QAAM,KAAI;AAAA,QAAO,MAAM7B,QAAQlB;AAAAA,QAAU,MAAMkB,QAAQjB;AAAAA,MAAAA,CAZzD,GAcGmB,SACC0B,qBAAAD,UAAA;AAAA,QACE,UAAA,CAAAE,oBAAA,SAAA;AAAA,UAAQ3B,UAAAA;AAAAA,QAAAA,CAAR,GACA2B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAW,SAAS3B;AAAAA,QAAAA,CAAnC,GACA2B,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAgB,SAAS3B;AAAAA,QAAAA,CAApC,GACA2B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAO,SAAS3B;AAAAA,QAAAA,CAJjC,CAAA;AAAA,MAAA,CAfJ,GAuBGC,eACCyB,qBAAAD,UAAA;AAAA,QACE,UAAA,CAAAE,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAc,SAAS1B;AAAAA,QAAAA,CAAlC,GACA0B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAiB,SAAS1B;AAAAA,QAAAA,CAAzC,GACA0B,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAsB,SAAS1B;AAAAA,QAAAA,CAA1C,GACA0B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAc,SAAS1B;AAAAA,QAAAA,CAJxC,CAAA;AAAA,MAAA,CAxBJ,GAgCGC,YAAYyB,oBAAA,QAAA;AAAA,QAAM,MAAK;AAAA,QAAW,SAASzB;AAAAA,MAAAA,CAhC9C,GAkCGC,eACCuB,qBAAAD,UAAA;AAAA,QACE,UAAA,CAAAE,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAW,SAASxB,YAAYtB;AAAAA,QAAAA,CAA/C,GACA8C,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAgB,SAASxB,YAAYtB;AAAAA,QAAAA,CAApD,GACA8C,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAgB,SAASxB,YAAYtB;AAAAA,QAAAA,CAAhD,GACA8C,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAe,SAASxB,YAAYtB;AAAAA,QAAAA,CAA/C,GACA8C,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAQ,SAASxB,YAAYtB;AAAAA,QAAAA,CAL9C,CAAA;AAAA,MAAA,CAAA,GASDuB,yBAAyB,0BACxBqB,UAAA;AAAA,QACE,8BAAA,QAAA;AAAA,UACE,KAAI;AAAA,UACJ,MAAO,2CAA0CrB;AAAAA,QAAAA,CAFnD;AAAA,MADF,CAAA,GAQDW,aAAa7B,IAAI0C,gBAAjB,EAAmC1C,IAAI2C,CACtC5C,aAAAA,SAASC,IAAI2C,UAAUC,CAAS,UAAA;AAC9B,YAAI,OAAOA,UAAU;AAAiBA,iBAAAA;AAElC/C,YAAAA,yBAAyBgD,SAASD,MAAMxC,IAAxC;AAAgEwC,iBAAAA;AAE7D,eAAA;AAAA,MALT,CAAA,CADD,CArDH;AAAA,IAAA,CADF,GAiEEH,oBAAC,mBAAD;AAAA,MAAmB,mBAAmBK,wBAAwBtC,KAAKF,EAAN;AAAA,IAjE/D,CAAA,GAmEGkB,SACEE,OAAO5B,CAAWA,YAAAA,QAAQgC,aAAaC,MAAAA,EACvC/B,IAAIF,CACH,YAAA2C,oBAAC,aAAD;AAAA,MAA8B,MAAM3C,QAAQzC;AAAAA,MAAM,SAASyC,QAAQxC;AAAAA,IAAAA,GAAjDwC,QAAQQ,EAA1B,CAHH,CAnEH;AAAA,EAAA,CADF;AA2ED;;"}
@@ -20,6 +20,7 @@ const ActionTypes = {
20
20
  CHANGE_ELEMENT_BOX_MODELS: "CHANGE_ELEMENT_BOX_MODELS",
21
21
  CHANGE_DOCUMENT_ELEMENT_SIZE: "CHANGE_DOCUMENT_ELEMENT_SIZE",
22
22
  CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: "CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP",
23
+ SCROLL_DOCUMENT_ELEMENT: "SCROLL_DOCUMENT_ELEMENT",
23
24
  REGISTER_PROP_CONTROLLERS_HANDLE: "REGISTER_PROP_CONTROLLERS_HANDLE",
24
25
  UNREGISTER_PROP_CONTROLLERS_HANDLE: "UNREGISTER_PROP_CONTROLLERS_HANDLE",
25
26
  REGISTER_PROP_CONTROLLERS: "REGISTER_PROP_CONTROLLERS",
@@ -130,6 +131,9 @@ function changeDocumentElementSize(size) {
130
131
  function changeDocumentElementScrollTop(scrollTop) {
131
132
  return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP, payload: { scrollTop } };
132
133
  }
134
+ function scrollDocumentElement(scrollTopDelta) {
135
+ return { type: ActionTypes.SCROLL_DOCUMENT_ELEMENT, payload: { scrollTopDelta } };
136
+ }
133
137
  function registerPropControllersHandle(documentKey, elementKey, handle) {
134
138
  return {
135
139
  type: ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,
@@ -183,6 +187,7 @@ exports.registerMeasurable = registerMeasurable;
183
187
  exports.registerPropControllers = registerPropControllers;
184
188
  exports.registerPropControllersHandle = registerPropControllersHandle;
185
189
  exports.registerReactComponentEffect = registerReactComponentEffect;
190
+ exports.scrollDocumentElement = scrollDocumentElement;
186
191
  exports.unregisterBuilderComponent = unregisterBuilderComponent;
187
192
  exports.unregisterDocument = unregisterDocument;
188
193
  exports.unregisterMeasurable = unregisterMeasurable;
@@ -1 +1 @@
1
- {"version":3,"file":"actions.cjs.js","sources":["../src/state/actions.ts"],"sourcesContent":["import type { Operation } from 'ot-json0'\n\nimport type { Document } from './modules/read-only-documents'\nimport type { ComponentType } from './modules/react-components'\nimport type { Measurable, BoxModel } from './modules/box-models'\nimport type { ThunkAction } from 'redux-thunk'\nimport { ComponentMeta } from './modules/components-meta'\nimport { PropControllerDescriptor } from '../prop-controllers'\nimport type { Size } from './react-builder-preview'\nimport type { PropControllersHandle } from './modules/prop-controller-handles'\nimport type { PropController, PropControllerMessage } from '../prop-controllers/instances'\nimport type { APIResource } from '../api/types'\nimport type { SerializedControl } from '../builder'\n\nexport const ActionTypes = {\n INIT: 'INIT',\n CLEAN_UP: 'CLEAN_UP',\n\n REGISTER_DOCUMENT: 'REGISTER_DOCUMENT',\n UNREGISTER_DOCUMENT: 'UNREGISTER_DOCUMENT',\n\n CHANGE_DOCUMENT: 'CHANGE_DOCUMENT',\n\n REGISTER_COMPONENT: 'REGISTER_COMPONENT',\n UNREGISTER_COMPONENT: 'UNREGISTER_COMPONENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n REGISTER_REACT_COMPONENT: 'REGISTER_REACT_COMPONENT',\n UNREGISTER_REACT_COMPONENT: 'UNREGISTER_REACT_COMPONENT',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: 'CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP',\n\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n MESSAGE_HOST_PROP_CONTROLLER: 'MESSAGE_HOST_PROP_CONTROLLER',\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n CHANGE_API_RESOURCE: 'CHANGE_API_RESOURCE',\n EVICT_API_RESOURCE: 'EVICT_API_RESOURCE',\n} as const\n\ntype InitAction = { type: typeof ActionTypes.INIT }\n\ntype CleanUpAction = { type: typeof ActionTypes.CLEAN_UP }\n\ntype RegisterDocumentAction = {\n type: typeof ActionTypes.REGISTER_DOCUMENT\n payload: { documentKey: string; document: Document }\n}\n\ntype UnregisterDocumentAction = {\n type: typeof ActionTypes.UNREGISTER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype ChangeDocumentAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT\n payload: { documentKey: string; operation: Operation }\n}\n\ntype RegisterComponentAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n propControllerDescriptors: Record<string, PropControllerDescriptor>\n }\n}\n\ntype UnregisterComponentAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof ActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof ActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterReactComponentAction = {\n type: typeof ActionTypes.REGISTER_REACT_COMPONENT\n payload: { type: string; component: ComponentType }\n}\n\ntype UnregisterReactComponentAction = {\n type: typeof ActionTypes.UNREGISTER_REACT_COMPONENT\n payload: { type: string }\n}\n\ntype MountComponentAction = {\n type: typeof ActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof ActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: unknown }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof ActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof ActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof ActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: Size }\n}\n\ntype ChangeDocumentElementScrollTopAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP\n payload: { scrollTop: number }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, PropController>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype MessageHostPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_HOST_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype ChangeAPIResourceAction = {\n type: typeof ActionTypes.CHANGE_API_RESOURCE\n payload: { resource: APIResource }\n}\n\ntype EvictAPIResourceAction = {\n type: typeof ActionTypes.EVICT_API_RESOURCE\n payload: { id: string }\n}\n\nexport type Action =\n | InitAction\n | CleanUpAction\n | ChangeDocumentAction\n | RegisterDocumentAction\n | UnregisterDocumentAction\n | RegisterComponentAction\n | UnregisterComponentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | RegisterReactComponentAction\n | UnregisterReactComponentAction\n | MountComponentAction\n | UnmountComponentAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | ChangeElementBoxModelsAction\n | ChangeDocumentElementSizeAction\n | ChangeDocumentElementScrollTopAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | MessageHostPropControllerAction\n | MessageBuilderPropControllerAction\n | ChangeAPIResourceAction\n | EvictAPIResourceAction\n\nexport function init(): InitAction {\n return { type: ActionTypes.INIT }\n}\n\nexport function cleanUp(): CleanUpAction {\n return { type: ActionTypes.CLEAN_UP }\n}\n\nexport function registerDocument(document: Document): RegisterDocumentAction {\n return { type: ActionTypes.REGISTER_DOCUMENT, payload: { documentKey: document.key, document } }\n}\n\nexport function unregisterDocument(documentKey: string): UnregisterDocumentAction {\n return { type: ActionTypes.UNREGISTER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerDocumentEffect(\n document: Document,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerDocument(document))\n\n return () => {\n dispatch(unregisterDocument(document.key))\n }\n }\n}\n\nexport function changeDocument(documentKey: string, operation: Operation): ChangeDocumentAction {\n return { type: ActionTypes.CHANGE_DOCUMENT, payload: { documentKey, operation } }\n}\n\nexport function registerComponent(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): RegisterComponentAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT,\n payload: { type, meta, propControllerDescriptors },\n }\n}\n\nexport function unregisterComponent(type: string): UnregisterComponentAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT, payload: { type } }\n}\n\nexport function registerComponentEffect(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponent(type, meta, propControllerDescriptors))\n\n return () => {\n dispatch(unregisterComponent(type))\n }\n }\n}\n\nexport function registerBuilderComponent(\n type: string,\n meta: ComponentMeta,\n serializedControls: Record<string, SerializedControl>,\n): RegisterBuilderComponentAction {\n return {\n type: ActionTypes.REGISTER_BUILDER_COMPONENT,\n payload: { type, meta, serializedControls },\n }\n}\n\nexport function unregisterBuilderComponent(type: string): UnregisterBuilderComponentAction {\n return { type: ActionTypes.UNREGISTER_BUILDER_COMPONENT, payload: { type } }\n}\n\nfunction registerReactComponent(\n type: string,\n component: ComponentType,\n): RegisterReactComponentAction {\n return { type: ActionTypes.REGISTER_REACT_COMPONENT, payload: { type, component } }\n}\n\nfunction unregisterReactComponent(type: string): UnregisterReactComponentAction {\n return { type: ActionTypes.UNREGISTER_REACT_COMPONENT, payload: { type } }\n}\n\nexport function registerReactComponentEffect(\n type: string,\n component: ComponentType,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerReactComponent(type, component))\n\n return () => {\n dispatch(unregisterReactComponent(type))\n }\n }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: ActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: ActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nfunction registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: unknown,\n): RegisterComponentHandleAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nfunction unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT_HANDLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerComponentHandleEffect(\n documentKey: string,\n elementKey: string,\n componentHandle: unknown,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return { type: ActionTypes.REGISTER_MEASURABLE, payload: { documentKey, elementKey, measurable } }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: ActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return { type: ActionTypes.CHANGE_ELEMENT_BOX_MODELS, payload: { changedElementBoxModels } }\n}\n\nexport function changeDocumentElementSize(size: Size): ChangeDocumentElementSizeAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeDocumentElementScrollTop(\n scrollTop: number,\n): ChangeDocumentElementScrollTopAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP, payload: { scrollTop } }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey, handle },\n }\n}\n\nexport function unregisterPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersHandleAction {\n return {\n type: ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllers(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, PropController>,\n): RegisterPropControllersAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey, propControllers },\n }\n}\n\nexport function unregisterPropControllers(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersAction {\n return { type: ActionTypes.UNREGISTER_PROP_CONTROLLERS, payload: { documentKey, elementKey } }\n}\n\nexport function messageHostPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageHostPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_HOST_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function changeApiResource(resource: APIResource): ChangeAPIResourceAction {\n return { type: ActionTypes.CHANGE_API_RESOURCE, payload: { resource } }\n}\n\nexport function evictApiResource(id: string): EvictAPIResourceAction {\n return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id } }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.cjs.js","sources":["../src/state/actions.ts"],"sourcesContent":["import type { Operation } from 'ot-json0'\n\nimport type { Document } from './modules/read-only-documents'\nimport type { ComponentType } from './modules/react-components'\nimport type { Measurable, BoxModel } from './modules/box-models'\nimport type { ThunkAction } from 'redux-thunk'\nimport { ComponentMeta } from './modules/components-meta'\nimport { PropControllerDescriptor } from '../prop-controllers'\nimport type { Size } from './react-builder-preview'\nimport type { PropControllersHandle } from './modules/prop-controller-handles'\nimport type { PropController, PropControllerMessage } from '../prop-controllers/instances'\nimport type { APIResource } from '../api/types'\nimport type { SerializedControl } from '../builder'\n\nexport const ActionTypes = {\n INIT: 'INIT',\n CLEAN_UP: 'CLEAN_UP',\n\n REGISTER_DOCUMENT: 'REGISTER_DOCUMENT',\n UNREGISTER_DOCUMENT: 'UNREGISTER_DOCUMENT',\n\n CHANGE_DOCUMENT: 'CHANGE_DOCUMENT',\n\n REGISTER_COMPONENT: 'REGISTER_COMPONENT',\n UNREGISTER_COMPONENT: 'UNREGISTER_COMPONENT',\n\n REGISTER_BUILDER_COMPONENT: 'REGISTER_BUILDER_COMPONENT',\n UNREGISTER_BUILDER_COMPONENT: 'UNREGISTER_BUILDER_COMPONENT',\n\n REGISTER_REACT_COMPONENT: 'REGISTER_REACT_COMPONENT',\n UNREGISTER_REACT_COMPONENT: 'UNREGISTER_REACT_COMPONENT',\n\n MOUNT_COMPONENT: 'MOUNT_COMPONENT',\n UNMOUNT_COMPONENT: 'UNMOUNT_COMPONENT',\n\n REGISTER_COMPONENT_HANDLE: 'REGISTER_COMPONENT_HANDLE',\n UNREGISTER_COMPONENT_HANDLE: 'UNREGISTER_COMPONENT_HANDLE',\n\n REGISTER_MEASURABLE: 'REGISTER_MEASURABLE',\n UNREGISTER_MEASURABLE: 'UNREGISTER_MEASURABLE',\n\n CHANGE_ELEMENT_BOX_MODELS: 'CHANGE_ELEMENT_BOX_MODELS',\n\n CHANGE_DOCUMENT_ELEMENT_SIZE: 'CHANGE_DOCUMENT_ELEMENT_SIZE',\n CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: 'CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP',\n SCROLL_DOCUMENT_ELEMENT: 'SCROLL_DOCUMENT_ELEMENT',\n\n REGISTER_PROP_CONTROLLERS_HANDLE: 'REGISTER_PROP_CONTROLLERS_HANDLE',\n UNREGISTER_PROP_CONTROLLERS_HANDLE: 'UNREGISTER_PROP_CONTROLLERS_HANDLE',\n REGISTER_PROP_CONTROLLERS: 'REGISTER_PROP_CONTROLLERS',\n UNREGISTER_PROP_CONTROLLERS: 'UNREGISTER_PROP_CONTROLLERS',\n MESSAGE_HOST_PROP_CONTROLLER: 'MESSAGE_HOST_PROP_CONTROLLER',\n MESSAGE_BUILDER_PROP_CONTROLLER: 'MESSAGE_BUILDER_PROP_CONTROLLER',\n\n CHANGE_API_RESOURCE: 'CHANGE_API_RESOURCE',\n EVICT_API_RESOURCE: 'EVICT_API_RESOURCE',\n} as const\n\ntype InitAction = { type: typeof ActionTypes.INIT }\n\ntype CleanUpAction = { type: typeof ActionTypes.CLEAN_UP }\n\ntype RegisterDocumentAction = {\n type: typeof ActionTypes.REGISTER_DOCUMENT\n payload: { documentKey: string; document: Document }\n}\n\ntype UnregisterDocumentAction = {\n type: typeof ActionTypes.UNREGISTER_DOCUMENT\n payload: { documentKey: string }\n}\n\ntype ChangeDocumentAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT\n payload: { documentKey: string; operation: Operation }\n}\n\ntype RegisterComponentAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n propControllerDescriptors: Record<string, PropControllerDescriptor>\n }\n}\n\ntype UnregisterComponentAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterBuilderComponentAction = {\n type: typeof ActionTypes.REGISTER_BUILDER_COMPONENT\n payload: {\n type: string\n meta: ComponentMeta\n serializedControls: Record<string, SerializedControl>\n }\n}\n\ntype UnregisterBuilderComponentAction = {\n type: typeof ActionTypes.UNREGISTER_BUILDER_COMPONENT\n payload: { type: string }\n}\n\ntype RegisterReactComponentAction = {\n type: typeof ActionTypes.REGISTER_REACT_COMPONENT\n payload: { type: string; component: ComponentType }\n}\n\ntype UnregisterReactComponentAction = {\n type: typeof ActionTypes.UNREGISTER_REACT_COMPONENT\n payload: { type: string }\n}\n\ntype MountComponentAction = {\n type: typeof ActionTypes.MOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype UnmountComponentAction = {\n type: typeof ActionTypes.UNMOUNT_COMPONENT\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterComponentHandleAction = {\n type: typeof ActionTypes.REGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string; componentHandle: unknown }\n}\n\ntype UnregisterComponentHandleAction = {\n type: typeof ActionTypes.UNREGISTER_COMPONENT_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterMeasurableAction = {\n type: typeof ActionTypes.REGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string; measurable: Measurable }\n}\n\ntype UnregisterMeasurableAction = {\n type: typeof ActionTypes.UNREGISTER_MEASURABLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype ChangeElementBoxModelsAction = {\n type: typeof ActionTypes.CHANGE_ELEMENT_BOX_MODELS\n payload: { changedElementBoxModels: Map<string, Map<string, BoxModel | null>> }\n}\n\ntype ChangeDocumentElementSizeAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE\n payload: { size: Size }\n}\n\ntype ChangeDocumentElementScrollTopAction = {\n type: typeof ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP\n payload: { scrollTop: number }\n}\n\ntype ScrollDocumentElementAction = {\n type: typeof ActionTypes.SCROLL_DOCUMENT_ELEMENT\n payload: { scrollTopDelta: number }\n}\n\ntype RegisterPropControllersHandleAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string; handle: PropControllersHandle }\n}\n\ntype UnregisterPropControllersHandleAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE\n payload: { documentKey: string; elementKey: string }\n}\n\ntype RegisterPropControllersAction = {\n type: typeof ActionTypes.REGISTER_PROP_CONTROLLERS\n payload: {\n documentKey: string\n elementKey: string\n propControllers: Record<string, PropController>\n }\n}\n\ntype UnregisterPropControllersAction = {\n type: typeof ActionTypes.UNREGISTER_PROP_CONTROLLERS\n payload: { documentKey: string; elementKey: string }\n}\n\ntype MessageHostPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_HOST_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype MessageBuilderPropControllerAction<T = PropControllerMessage> = {\n type: typeof ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER\n payload: { documentKey: string; elementKey: string; propName: string; message: T }\n}\n\ntype ChangeAPIResourceAction = {\n type: typeof ActionTypes.CHANGE_API_RESOURCE\n payload: { resource: APIResource }\n}\n\ntype EvictAPIResourceAction = {\n type: typeof ActionTypes.EVICT_API_RESOURCE\n payload: { id: string }\n}\n\nexport type Action =\n | InitAction\n | CleanUpAction\n | ChangeDocumentAction\n | RegisterDocumentAction\n | UnregisterDocumentAction\n | RegisterComponentAction\n | UnregisterComponentAction\n | RegisterBuilderComponentAction\n | UnregisterBuilderComponentAction\n | RegisterReactComponentAction\n | UnregisterReactComponentAction\n | MountComponentAction\n | UnmountComponentAction\n | RegisterComponentHandleAction\n | UnregisterComponentHandleAction\n | RegisterMeasurableAction\n | UnregisterMeasurableAction\n | ChangeElementBoxModelsAction\n | ChangeDocumentElementSizeAction\n | ChangeDocumentElementScrollTopAction\n | ScrollDocumentElementAction\n | RegisterPropControllersHandleAction\n | UnregisterPropControllersHandleAction\n | RegisterPropControllersAction\n | UnregisterPropControllersAction\n | MessageHostPropControllerAction\n | MessageBuilderPropControllerAction\n | ChangeAPIResourceAction\n | EvictAPIResourceAction\n\nexport function init(): InitAction {\n return { type: ActionTypes.INIT }\n}\n\nexport function cleanUp(): CleanUpAction {\n return { type: ActionTypes.CLEAN_UP }\n}\n\nexport function registerDocument(document: Document): RegisterDocumentAction {\n return { type: ActionTypes.REGISTER_DOCUMENT, payload: { documentKey: document.key, document } }\n}\n\nexport function unregisterDocument(documentKey: string): UnregisterDocumentAction {\n return { type: ActionTypes.UNREGISTER_DOCUMENT, payload: { documentKey } }\n}\n\nexport function registerDocumentEffect(\n document: Document,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerDocument(document))\n\n return () => {\n dispatch(unregisterDocument(document.key))\n }\n }\n}\n\nexport function changeDocument(documentKey: string, operation: Operation): ChangeDocumentAction {\n return { type: ActionTypes.CHANGE_DOCUMENT, payload: { documentKey, operation } }\n}\n\nexport function registerComponent(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): RegisterComponentAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT,\n payload: { type, meta, propControllerDescriptors },\n }\n}\n\nexport function unregisterComponent(type: string): UnregisterComponentAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT, payload: { type } }\n}\n\nexport function registerComponentEffect(\n type: string,\n meta: ComponentMeta,\n propControllerDescriptors: Record<string, PropControllerDescriptor>,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponent(type, meta, propControllerDescriptors))\n\n return () => {\n dispatch(unregisterComponent(type))\n }\n }\n}\n\nexport function registerBuilderComponent(\n type: string,\n meta: ComponentMeta,\n serializedControls: Record<string, SerializedControl>,\n): RegisterBuilderComponentAction {\n return {\n type: ActionTypes.REGISTER_BUILDER_COMPONENT,\n payload: { type, meta, serializedControls },\n }\n}\n\nexport function unregisterBuilderComponent(type: string): UnregisterBuilderComponentAction {\n return { type: ActionTypes.UNREGISTER_BUILDER_COMPONENT, payload: { type } }\n}\n\nfunction registerReactComponent(\n type: string,\n component: ComponentType,\n): RegisterReactComponentAction {\n return { type: ActionTypes.REGISTER_REACT_COMPONENT, payload: { type, component } }\n}\n\nfunction unregisterReactComponent(type: string): UnregisterReactComponentAction {\n return { type: ActionTypes.UNREGISTER_REACT_COMPONENT, payload: { type } }\n}\n\nexport function registerReactComponentEffect(\n type: string,\n component: ComponentType,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerReactComponent(type, component))\n\n return () => {\n dispatch(unregisterReactComponent(type))\n }\n }\n}\n\nexport function mountComponent(documentKey: string, elementKey: string): MountComponentAction {\n return { type: ActionTypes.MOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function unmountComponent(documentKey: string, elementKey: string): UnmountComponentAction {\n return { type: ActionTypes.UNMOUNT_COMPONENT, payload: { documentKey, elementKey } }\n}\n\nexport function mountComponentEffect(\n documentKey: string,\n elementKey: string,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(mountComponent(documentKey, elementKey))\n\n return () => {\n dispatch(unmountComponent(documentKey, elementKey))\n }\n }\n}\n\nfunction registerComponentHandle(\n documentKey: string,\n elementKey: string,\n componentHandle: unknown,\n): RegisterComponentHandleAction {\n return {\n type: ActionTypes.REGISTER_COMPONENT_HANDLE,\n payload: { documentKey, elementKey, componentHandle },\n }\n}\n\nfunction unregisterComponentHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterComponentHandleAction {\n return { type: ActionTypes.UNREGISTER_COMPONENT_HANDLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerComponentHandleEffect(\n documentKey: string,\n elementKey: string,\n componentHandle: unknown,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerComponentHandle(documentKey, elementKey, componentHandle))\n\n return () => {\n dispatch(unregisterComponentHandle(documentKey, elementKey))\n }\n }\n}\n\nexport function registerMeasurable(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): RegisterMeasurableAction {\n return { type: ActionTypes.REGISTER_MEASURABLE, payload: { documentKey, elementKey, measurable } }\n}\n\nexport function unregisterMeasurable(\n documentKey: string,\n elementKey: string,\n): UnregisterMeasurableAction {\n return { type: ActionTypes.UNREGISTER_MEASURABLE, payload: { documentKey, elementKey } }\n}\n\nexport function registerMeasurableEffect(\n documentKey: string,\n elementKey: string,\n measurable: Measurable,\n): ThunkAction<() => void, unknown, unknown, Action> {\n return dispatch => {\n dispatch(registerMeasurable(documentKey, elementKey, measurable))\n\n return () => {\n dispatch(unregisterMeasurable(documentKey, elementKey))\n }\n }\n}\n\nexport function changeElementBoxModels(\n changedElementBoxModels: Map<string, Map<string, BoxModel | null>>,\n): ChangeElementBoxModelsAction {\n return { type: ActionTypes.CHANGE_ELEMENT_BOX_MODELS, payload: { changedElementBoxModels } }\n}\n\nexport function changeDocumentElementSize(size: Size): ChangeDocumentElementSizeAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SIZE, payload: { size } }\n}\n\nexport function changeDocumentElementScrollTop(\n scrollTop: number,\n): ChangeDocumentElementScrollTopAction {\n return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP, payload: { scrollTop } }\n}\n\nexport function scrollDocumentElement(scrollTopDelta: number): ScrollDocumentElementAction {\n return { type: ActionTypes.SCROLL_DOCUMENT_ELEMENT, payload: { scrollTopDelta } }\n}\n\nexport function registerPropControllersHandle(\n documentKey: string,\n elementKey: string,\n handle: PropControllersHandle,\n): RegisterPropControllersHandleAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey, handle },\n }\n}\n\nexport function unregisterPropControllersHandle(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersHandleAction {\n return {\n type: ActionTypes.UNREGISTER_PROP_CONTROLLERS_HANDLE,\n payload: { documentKey, elementKey },\n }\n}\n\nexport function registerPropControllers(\n documentKey: string,\n elementKey: string,\n propControllers: Record<string, PropController>,\n): RegisterPropControllersAction {\n return {\n type: ActionTypes.REGISTER_PROP_CONTROLLERS,\n payload: { documentKey, elementKey, propControllers },\n }\n}\n\nexport function unregisterPropControllers(\n documentKey: string,\n elementKey: string,\n): UnregisterPropControllersAction {\n return { type: ActionTypes.UNREGISTER_PROP_CONTROLLERS, payload: { documentKey, elementKey } }\n}\n\nexport function messageHostPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageHostPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_HOST_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function messageBuilderPropController<T>(\n documentKey: string,\n elementKey: string,\n propName: string,\n message: T,\n): MessageBuilderPropControllerAction<T> {\n return {\n type: ActionTypes.MESSAGE_BUILDER_PROP_CONTROLLER,\n payload: { documentKey, elementKey, propName, message },\n }\n}\n\nexport function changeApiResource(resource: APIResource): ChangeAPIResourceAction {\n return { type: ActionTypes.CHANGE_API_RESOURCE, payload: { resource } }\n}\n\nexport function evictApiResource(id: string): EvictAPIResourceAction {\n return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id } }\n}\n"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ const ActionTypes = {
19
19
  CHANGE_ELEMENT_BOX_MODELS: "CHANGE_ELEMENT_BOX_MODELS",
20
20
  CHANGE_DOCUMENT_ELEMENT_SIZE: "CHANGE_DOCUMENT_ELEMENT_SIZE",
21
21
  CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP: "CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP",
22
+ SCROLL_DOCUMENT_ELEMENT: "SCROLL_DOCUMENT_ELEMENT",
22
23
  REGISTER_PROP_CONTROLLERS_HANDLE: "REGISTER_PROP_CONTROLLERS_HANDLE",
23
24
  UNREGISTER_PROP_CONTROLLERS_HANDLE: "UNREGISTER_PROP_CONTROLLERS_HANDLE",
24
25
  REGISTER_PROP_CONTROLLERS: "REGISTER_PROP_CONTROLLERS",
@@ -129,6 +130,9 @@ function changeDocumentElementSize(size) {
129
130
  function changeDocumentElementScrollTop(scrollTop) {
130
131
  return { type: ActionTypes.CHANGE_DOCUMENT_ELEMENT_SCROLL_TOP, payload: { scrollTop } };
131
132
  }
133
+ function scrollDocumentElement(scrollTopDelta) {
134
+ return { type: ActionTypes.SCROLL_DOCUMENT_ELEMENT, payload: { scrollTopDelta } };
135
+ }
132
136
  function registerPropControllersHandle(documentKey, elementKey, handle) {
133
137
  return {
134
138
  type: ActionTypes.REGISTER_PROP_CONTROLLERS_HANDLE,
@@ -162,5 +166,5 @@ function changeApiResource(resource) {
162
166
  function evictApiResource(id) {
163
167
  return { type: ActionTypes.EVICT_API_RESOURCE, payload: { id } };
164
168
  }
165
- export { ActionTypes as A, changeDocumentElementScrollTop as a, cleanUp as b, changeDocument as c, changeApiResource as d, evictApiResource as e, registerComponentHandleEffect as f, mountComponentEffect as g, registerComponentEffect as h, init as i, registerReactComponentEffect as j, changeElementBoxModels as k, changeDocumentElementSize as l, messageHostPropController as m, registerBuilderComponent as n, unregisterBuilderComponent as o, unregisterMeasurable as p, registerMeasurable as q, registerDocument as r, unregisterPropControllers as s, registerPropControllersHandle as t, unregisterDocument as u, registerPropControllers as v, messageBuilderPropController as w };
169
+ export { ActionTypes as A, changeDocumentElementScrollTop as a, cleanUp as b, changeDocument as c, changeApiResource as d, evictApiResource as e, registerComponentHandleEffect as f, mountComponentEffect as g, registerComponentEffect as h, init as i, registerReactComponentEffect as j, changeElementBoxModels as k, changeDocumentElementSize as l, messageHostPropController as m, registerBuilderComponent as n, unregisterBuilderComponent as o, unregisterMeasurable as p, registerMeasurable as q, registerDocument as r, scrollDocumentElement as s, unregisterPropControllers as t, unregisterDocument as u, registerPropControllersHandle as v, registerPropControllers as w, messageBuilderPropController as x };
166
170
  //# sourceMappingURL=actions.es.js.map