@makeswift/runtime 0.0.11 → 0.0.15

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 (50) hide show
  1. package/dist/actions.cjs.js +6 -1
  2. package/dist/actions.cjs.js.map +1 -1
  3. package/dist/actions.es.js +6 -2
  4. package/dist/actions.es.js.map +1 -1
  5. package/dist/components.cjs.js +5 -5
  6. package/dist/components.es.js +3 -5
  7. package/dist/components.es.js.map +1 -1
  8. package/dist/constants.cjs.js +128 -1
  9. package/dist/constants.cjs.js.map +1 -1
  10. package/dist/constants.es.js +128 -1
  11. package/dist/constants.es.js.map +1 -1
  12. package/dist/index.cjs.js +383 -47
  13. package/dist/index.cjs.js.map +1 -1
  14. package/dist/index.es.js +376 -48
  15. package/dist/index.es.js.map +1 -1
  16. package/dist/next.cjs.js +30 -19
  17. package/dist/next.cjs.js.map +1 -1
  18. package/dist/next.es.js +31 -20
  19. package/dist/next.es.js.map +1 -1
  20. package/dist/react-builder-preview.cjs.js +44 -45
  21. package/dist/react-builder-preview.cjs.js.map +1 -1
  22. package/dist/react-builder-preview.es.js +43 -44
  23. package/dist/react-builder-preview.es.js.map +1 -1
  24. package/dist/react.cjs.js +2 -3
  25. package/dist/react.cjs.js.map +1 -1
  26. package/dist/react.es.js +2 -3
  27. package/dist/react.es.js.map +1 -1
  28. package/dist/types/api/constants.d.ts.map +1 -1
  29. package/dist/types/api/generated/graphql.d.ts +55 -0
  30. package/dist/types/api/generated/graphql.d.ts.map +1 -1
  31. package/dist/types/api/react.d.ts +2 -3
  32. package/dist/types/api/react.d.ts.map +1 -1
  33. package/dist/types/api/types.d.ts +2 -2
  34. package/dist/types/api/types.d.ts.map +1 -1
  35. package/dist/types/components/builtin/Image/Image.d.ts.map +1 -1
  36. package/dist/types/components/builtin/Navigation/components/DropDownButton/index.d.ts.map +1 -1
  37. package/dist/types/components/page/Page.d.ts +23 -0
  38. package/dist/types/components/page/Page.d.ts.map +1 -1
  39. package/dist/types/components/shared/BackgroundsContainer/components/Backgrounds/index.d.ts.map +1 -1
  40. package/dist/types/next.d.ts +10 -5
  41. package/dist/types/next.d.ts.map +1 -1
  42. package/dist/types/runtimes/react/controls/style.d.ts.map +1 -1
  43. package/dist/types/state/actions.d.ts +13 -1
  44. package/dist/types/state/actions.d.ts.map +1 -1
  45. package/dist/types/state/react-builder-preview.d.ts.map +1 -1
  46. package/package.json +2 -1
  47. package/dist/Page.cjs.js +0 -222
  48. package/dist/Page.cjs.js.map +0 -1
  49. package/dist/Page.es.js +0 -216
  50. package/dist/Page.es.js.map +0 -1
package/dist/Page.es.js DELETED
@@ -1,216 +0,0 @@
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 "./index.es.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
- const favicon = (_a = page.meta.favicon) != null ? _a : defaultFavicon;
94
- const {
95
- title,
96
- description,
97
- keywords,
98
- socialImage
99
- } = page.meta;
100
- const {
101
- canonicalUrl,
102
- isIndexingBlocked
103
- } = page.seo;
104
- const fontFamilyParamValue = page.fonts.map(({
105
- family,
106
- variants
107
- }) => {
108
- return `${family.replace(/ /g, "+")}:${variants.join()}`;
109
- }).join("|");
110
- const snippets = useMemo(() => page.snippets.filter((snippet) => preview ? snippet.builderEnabled : snippet.liveEnabled), [page, preview]);
111
- const headSnippets = useMemo(() => snippets.filter((snippet) => snippet.location === "HEAD"), [snippets]);
112
- const previousHeadSnippets = useRef(null);
113
- useEffect(() => {
114
- var _a2;
115
- const headSnippetsToCleanUp = ((_a2 = previousHeadSnippets.current) != null ? _a2 : []).filter((previousSnippet) => previousSnippet.cleanup != null).filter((previousSnippet) => !headSnippets.some((snippet) => previousSnippet.id === snippet.id));
116
- headSnippetsToCleanUp.forEach((snippetToCleanUp) => {
117
- if (snippetToCleanUp.cleanup == null)
118
- return;
119
- const cleanUp = new Function(snippetToCleanUp.cleanup);
120
- try {
121
- cleanUp();
122
- } catch {
123
- }
124
- });
125
- previousHeadSnippets.current = headSnippets;
126
- }, [headSnippets]);
127
- return /* @__PURE__ */ jsxs(Fragment, {
128
- children: [/* @__PURE__ */ jsxs(Head, {
129
- children: [/* @__PURE__ */ jsx("style", {
130
- children: `
131
- html {
132
- font-family: sans-serif;
133
- }
134
- div#__next {
135
- overflow: hidden;
136
- }
137
- `
138
- }), /* @__PURE__ */ jsx("link", {
139
- rel: "icon",
140
- type: favicon.mimetype,
141
- href: favicon.publicUrl
142
- }), canonicalUrl && /* @__PURE__ */ jsx("link", {
143
- rel: "canonical",
144
- href: canonicalUrl
145
- }), isIndexingBlocked && /* @__PURE__ */ jsx("meta", {
146
- name: "robots",
147
- content: "noindex"
148
- }), title && /* @__PURE__ */ jsxs(Fragment, {
149
- children: [/* @__PURE__ */ jsx("title", {
150
- children: title
151
- }), /* @__PURE__ */ jsx("meta", {
152
- property: "og:title",
153
- content: title
154
- }), /* @__PURE__ */ jsx("meta", {
155
- name: "twitter:title",
156
- content: title
157
- }), /* @__PURE__ */ jsx("meta", {
158
- itemProp: "name",
159
- content: title
160
- })]
161
- }), description && /* @__PURE__ */ jsxs(Fragment, {
162
- children: [/* @__PURE__ */ jsx("meta", {
163
- name: "description",
164
- content: description
165
- }), /* @__PURE__ */ jsx("meta", {
166
- property: "og:description",
167
- content: description
168
- }), /* @__PURE__ */ jsx("meta", {
169
- name: "twitter:description",
170
- content: description
171
- }), /* @__PURE__ */ jsx("meta", {
172
- itemProp: "description",
173
- content: description
174
- })]
175
- }), keywords && /* @__PURE__ */ jsx("meta", {
176
- name: "keywords",
177
- content: keywords
178
- }), socialImage && /* @__PURE__ */ jsxs(Fragment, {
179
- children: [/* @__PURE__ */ jsx("meta", {
180
- property: "og:image",
181
- content: socialImage.publicUrl
182
- }), /* @__PURE__ */ jsx("meta", {
183
- property: "og:image:type",
184
- content: socialImage.publicUrl
185
- }), /* @__PURE__ */ jsx("meta", {
186
- name: "twitter:image",
187
- content: socialImage.publicUrl
188
- }), /* @__PURE__ */ jsx("meta", {
189
- name: "twitter:card",
190
- content: socialImage.publicUrl
191
- }), /* @__PURE__ */ jsx("meta", {
192
- itemProp: "image",
193
- content: socialImage.publicUrl
194
- })]
195
- }), fontFamilyParamValue !== "" && /* @__PURE__ */ jsx(Fragment, {
196
- children: /* @__PURE__ */ jsx("link", {
197
- rel: "stylesheet",
198
- href: `https://fonts.googleapis.com/css?family=${fontFamilyParamValue}&display=swap`
199
- })
200
- }), headSnippets.map(snippetToElement).map((children) => Children.map(children, (child) => {
201
- if (typeof child === "string")
202
- return child;
203
- if (VALID_HEAD_ELEMENT_TYPES.includes(child.type))
204
- return child;
205
- return null;
206
- }))]
207
- }), /* @__PURE__ */ jsx(DocumentReference, {
208
- documentReference: createDocumentReference(page.id)
209
- }), snippets.filter((snippet) => snippet.location === "BODY").map((snippet) => /* @__PURE__ */ jsx(BodySnippet, {
210
- code: snippet.code,
211
- cleanup: snippet.cleanup
212
- }, snippet.id))]
213
- });
214
- }
215
- export { Page as P };
216
- //# sourceMappingURL=Page.es.js.map
@@ -1 +0,0 @@
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}\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 seo: {\n canonicalUrl?: string | null | undefined\n isIndexingBlocked?: boolean | null | undefined\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 const favicon = page.meta.favicon ?? defaultFavicon\n const { title, description, keywords, socialImage } = page.meta\n const { canonicalUrl, isIndexingBlocked } = page.seo\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 {canonicalUrl && <link rel=\"canonical\" href={canonicalUrl} />}\n\n {isIndexingBlocked && <meta name=\"robots\" content=\"noindex\" />}\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","favicon","meta","title","description","keywords","socialImage","canonicalUrl","isIndexingBlocked","seo","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;ACbD,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;;AAC5DC,QAAAA,UAAUF,WAAKG,KAAKD,YAAVF,YAAqBf;AAC/B,QAAA;AAAA,IAAEmB;AAAAA,IAAOC;AAAAA,IAAaC;AAAAA,IAAUC;AAAAA,MAAgBP,KAAKG;AACrD,QAAA;AAAA,IAAEK;AAAAA,IAAcC;AAAAA,MAAsBT,KAAKU;AAC3CC,QAAAA,uBAAuBX,KAAKY,MAC/BpB,IAAI,CAAC;AAAA,IAAEqB;AAAAA,IAAQC;AAAAA,QAAe;AAC7B,WAAQ,GAAED,OAAOE,QAAQ,MAAM,GAArB,KAA6BD,SAASE;GAFvB,EAI1BA,KAAK,GAJqB;AAK7B,QAAMC,WAAWC,QACf,MAAMlB,KAAKiB,SAASE,OAAO7B,CAAYW,YAAAA,UAAUX,QAAQ8B,iBAAiB9B,QAAQ+B,WAA5E,GACN,CAACrB,MAAMC,OAAP,CAFsB;AAIlBqB,QAAAA,eAAeJ,QACnB,MAAMD,SAASE,OAAO7B,CAAAA,YAAWA,QAAQiC,aAAaC,MAAhD,GACN,CAACP,QAAD,CAF0B;AAKtBQ,QAAAA,uBAAuBC,OAAoC,IAA9B;AACnC3E,YAAU,MAAM;;AACR4E,UAAAA,qDAA8CC,yBAAW,IAC5DT,OAAOU,CAAAA,oBAAmBA,gBAAgB/E,WAAW,IAD1B,EAE3BqE,OAAOU,CAAAA,oBAAmB,CAACP,aAAaQ,KAAKxC,aAAWuC,gBAAgB/B,OAAOR,QAAQQ,EAA5D,CAFA;AAI9B6B,0BAAsB9D,QAAQkE,CAAoB,qBAAA;AAChD,UAAIA,iBAAiBjF,WAAW;AAAM;AAEhCiC,YAAAA,UAAU,IAAIC,SAAS+C,iBAAiBjF,OAA9B;AAEZ,UAAA;AACK;MAAA,QACP;AAAA,MAED;AAAA,IAAA,CATH;AAYA2E,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,MAAMhC,QAAQhB;AAAAA,QAAU,MAAMgB,QAAQf;AAAAA,MAAAA,CAZzD,GAcGqB,gBAAgB0B,oBAAA,QAAA;AAAA,QAAM,KAAI;AAAA,QAAY,MAAM1B;AAAAA,MAAAA,CAd/C,GAgBGC,qBAAqByB,oBAAA,QAAA;AAAA,QAAM,MAAK;AAAA,QAAS,SAAQ;AAAA,MAAA,CAhBpD,GAkBG9B,SACC6B,qBAAAD,UAAA;AAAA,QACE,UAAA,CAAAE,oBAAA,SAAA;AAAA,UAAQ9B,UAAAA;AAAAA,QAAAA,CAAR,GACA8B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAW,SAAS9B;AAAAA,QAAAA,CAAnC,GACA8B,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAgB,SAAS9B;AAAAA,QAAAA,CAApC,GACA8B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAO,SAAS9B;AAAAA,QAAAA,CAJjC,CAAA;AAAA,MAAA,CAnBJ,GA2BGC,eACC4B,qBAAAD,UAAA;AAAA,QACE,UAAA,CAAAE,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAc,SAAS7B;AAAAA,QAAAA,CAAlC,GACA6B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAiB,SAAS7B;AAAAA,QAAAA,CAAzC,GACA6B,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAsB,SAAS7B;AAAAA,QAAAA,CAA1C,GACA6B,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAc,SAAS7B;AAAAA,QAAAA,CAJxC,CAAA;AAAA,MAAA,CA5BJ,GAoCGC,YAAY4B,oBAAA,QAAA;AAAA,QAAM,MAAK;AAAA,QAAW,SAAS5B;AAAAA,MAAAA,CApC9C,GAsCGC,eACC0B,qBAAAD,UAAA;AAAA,QACE,UAAA,CAAAE,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAW,SAAS3B,YAAYpB;AAAAA,QAAAA,CAA/C,GACA+C,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAgB,SAAS3B,YAAYpB;AAAAA,QAAAA,CAApD,GACA+C,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAgB,SAAS3B,YAAYpB;AAAAA,QAAAA,CAAhD,GACA+C,oBAAA,QAAA;AAAA,UAAM,MAAK;AAAA,UAAe,SAAS3B,YAAYpB;AAAAA,QAAAA,CAA/C,GACA+C,oBAAA,QAAA;AAAA,UAAM,UAAS;AAAA,UAAQ,SAAS3B,YAAYpB;AAAAA,QAAAA,CAL9C,CAAA;AAAA,MAAA,CAAA,GASDwB,yBAAyB,0BACxBqB,UAAA;AAAA,QACE,8BAAA,QAAA;AAAA,UACE,KAAI;AAAA,UACJ,MAAO,2CAA0CrB;AAAAA,QAAAA,CAFnD;AAAA,MADF,CAAA,GAQDW,aAAa9B,IAAI2C,gBAAjB,EAAmC3C,IAAI4C,CACtC7C,aAAAA,SAASC,IAAI4C,UAAUC,CAAS,UAAA;AAC9B,YAAI,OAAOA,UAAU;AAAiBA,iBAAAA;AAElChD,YAAAA,yBAAyBiD,SAASD,MAAMzC,IAAxC;AAAgEyC,iBAAAA;AAE7D,eAAA;AAAA,MALT,CAAA,CADD,CAzDH;AAAA,IAAA,CADF,GAqEEH,oBAAC,mBAAD;AAAA,MAAmB,mBAAmBK,wBAAwBvC,KAAKF,EAAN;AAAA,IArE/D,CAAA,GAuEGmB,SACEE,OAAO7B,CAAWA,YAAAA,QAAQiC,aAAaC,MAAAA,EACvChC,IAAIF,CACH,YAAA4C,oBAAC,aAAD;AAAA,MAA8B,MAAM5C,QAAQzC;AAAAA,MAAM,SAASyC,QAAQxC;AAAAA,IAAAA,GAAjDwC,QAAQQ,EAA1B,CAHH,CAvEH;AAAA,EAAA,CADF;AA+ED;;"}