qureal-editor 1.0.41 → 1.0.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,4 +1,47 @@
1
- import React, { Fragment, useEffect, useState } from 'react';
1
+ import React, { useEffect, Fragment, useRef, useState } from 'react';
2
+
3
+ function useIframeMessenger(_ref) {
4
+ var iframeRef = _ref.iframeRef,
5
+ data = _ref.data,
6
+ _ref$targetOrigin = _ref.targetOrigin,
7
+ targetOrigin = _ref$targetOrigin === undefined ? '*' : _ref$targetOrigin;
8
+
9
+ useEffect(function () {
10
+
11
+ if (!iframeRef.current) {
12
+ return;
13
+ }
14
+
15
+ if (!iframeRef.current.contentWindow) {
16
+ return;
17
+ }
18
+
19
+ var iframeWindow = iframeRef.current.contentWindow;
20
+
21
+ if (!iframeWindow) {
22
+ return;
23
+ }
24
+
25
+ var sendMessage = function sendMessage() {
26
+ iframeWindow.postMessage(data, targetOrigin);
27
+ };
28
+
29
+ // If iframe is already loaded
30
+ if (iframeRef.current.contentDocument) {
31
+ if (iframeRef.current.contentDocument.readyState === 'complete') {
32
+ sendMessage();
33
+ }
34
+ } else {
35
+ // Wait for iframe to load
36
+ iframeRef.current.addEventListener('load', sendMessage);
37
+ }
38
+
39
+ return function () {
40
+ if (!iframeRef.current) return;
41
+ iframeRef.current.removeEventListener('load', sendMessage);
42
+ };
43
+ }, [iframeRef, data, targetOrigin]);
44
+ }
2
45
 
3
46
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
4
47
  return typeof obj;
@@ -96,8 +139,20 @@ function QurealiFrame(_ref) {
96
139
  _ref$creation_type = _ref.creation_type,
97
140
  creation_type = _ref$creation_type === undefined ? "singlepage" : _ref$creation_type,
98
141
  _ref$style = _ref.style,
99
- style = _ref$style === undefined ? {} : _ref$style;
142
+ style = _ref$style === undefined ? {} : _ref$style,
143
+ _ref$is_local = _ref.is_local,
144
+ is_local = _ref$is_local === undefined ? false : _ref$is_local,
145
+ _ref$section_list = _ref.section_list,
146
+ section_list = _ref$section_list === undefined ? [] : _ref$section_list;
100
147
 
148
+ var iframeRef = useRef(null);
149
+
150
+ useIframeMessenger(iframeRef, {
151
+ message_type: "SET_SECTION_LIST",
152
+ data: {
153
+ section_list: section_list
154
+ }
155
+ });
101
156
 
102
157
  var prefix = "ts";
103
158
  if (creation_type === "document") {
@@ -112,16 +167,19 @@ function QurealiFrame(_ref) {
112
167
  }
113
168
  }
114
169
 
170
+ var base_url = is_local ? "http://localhost:3201" : "https://show.qureal.com";
171
+
115
172
  return React.createElement(
116
173
  Fragment,
117
174
  null,
118
175
  React.createElement("iframe", {
176
+ ref: iframeRef,
119
177
  id: "qureal_iframe",
120
178
  title: "Qureal"
121
179
  // src={`http://localhost:3201/embed/${creation_slug}`}
122
180
  // src={type === "creation" ? `https://show.qureal.com/embed/${slug}?${preview ? "preview&" : ""}${query}` : `https://show.qureal.com/ts/${slug}?${preview ? "preview&" : ""}${query}`}
123
181
  // src={`https://show.qureal.com/${type === "creation" ? "embed" : "ts"}/${slug}?${preview ? "preview&" : ""}${query}`}
124
- , src: "https://show.qureal.com/" + prefix + "/" + slug + "?" + (preview ? "preview&" : "") + query,
182
+ , src: base_url + "/" + prefix + "/" + slug + "?" + (preview ? "preview&" : "") + query,
125
183
  style: _extends({
126
184
  width: "100%",
127
185
  height: "100vh",
@@ -215,7 +273,9 @@ function QurealViewer(_ref) {
215
273
  _ref$onStatusUpdate = _ref.onStatusUpdate,
216
274
  onStatusUpdate = _ref$onStatusUpdate === undefined ? function () {} : _ref$onStatusUpdate,
217
275
  _ref$section_list = _ref.section_list,
218
- section_list = _ref$section_list === undefined ? [] : _ref$section_list;
276
+ section_list = _ref$section_list === undefined ? [] : _ref$section_list,
277
+ _ref$is_local = _ref.is_local,
278
+ is_local = _ref$is_local === undefined ? false : _ref$is_local;
219
279
 
220
280
 
221
281
  var sendToIFrame = function sendToIFrame(msg) {
@@ -316,7 +376,9 @@ function QurealViewer(_ref) {
316
376
  query: "" + queryfy(prefill) + (organization ? "&qi_organization=" + organization : "") + (person ? "&qi_person=" + person : "") + (background ? "&qi_background=" + background : "") + (fit ? "&qi_fit" : ""),
317
377
  type: type,
318
378
  creation_type: creation_type,
319
- style: style
379
+ style: style,
380
+ is_local: is_local,
381
+ section_list: section_list
320
382
  });
321
383
  }
322
384
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/QurealiFrame.js","../src/utils.js","../src/QurealViewer.js","../src/use-action.js","../src/QurealCollection.js"],"sourcesContent":["import React, { Fragment, useEffect, useRef } from \"react\";\n\n\nfunction QurealiFrame({ slug, preview, query, type = \"creation\", creation_type = \"singlepage\", style = {} }) {\n\n let prefix = \"ts\";\n if (creation_type === \"document\") {\n if (type === \"creation\") {\n prefix = \"d\";\n } else {\n prefix = \"td\";\n }\n } else {\n if (type === \"creation\") {\n prefix = \"embed\";\n }\n }\n\n return (\n <Fragment>\n <iframe\n id=\"qureal_iframe\"\n title=\"Qureal\"\n // src={`http://localhost:3201/embed/${creation_slug}`}\n // src={type === \"creation\" ? `https://show.qureal.com/embed/${slug}?${preview ? \"preview&\" : \"\"}${query}` : `https://show.qureal.com/ts/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n // src={`https://show.qureal.com/${type === \"creation\" ? \"embed\" : \"ts\"}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n src={`https://show.qureal.com/${prefix}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n </Fragment>\n );\n}\n\n// export default QurealiFrame;\nexport default React.memo(QurealiFrame, () => true)\n","export async function share(data) {\n try {\n if (navigator.share && navigator.canShare(data)) {\n await navigator.share(data);\n } else {\n console.error(\"Can't share\");\n alert(\"Share only available for mobile devices\")\n }\n } catch (err) {\n console.error(err);\n }\n}","import React, { Fragment, useEffect, useRef } from \"react\";\nimport QurealiFrame from \"./QurealiFrame\";\nimport { share } from \"./utils\";\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\nfunction QurealViewer({\n slug = \"qi_sample\",\n preview = false,\n prefill = {},\n type = \"creation\", // creation or template \n creation_type = \"singlepage\",\n onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n section_list = []\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"OPEN_CREATION\",\n data: {\n slug: slug,\n preview: preview,\n prefill: prefill,\n ictx: {\n organization: organization,\n person: person\n }\n }\n })\n }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_SECTION_LIST\",\n data: {\n section_list: section_list\n }\n })\n }, [section_list])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n return (\n <QurealiFrame\n slug={slug}\n preview={preview}\n query={`${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}`}\n type={type}\n creation_type={creation_type}\n style={style}\n />\n );\n}\n\n// export default QurealiFrame;\nexport default QurealViewer\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n\n return buildQuery(\"\", obj);\n}","import { useState } from \"react\"\n\nfunction useQurealActions() {\n const [actionRef, setActionRef] = useState({});\n\n function download() {\n setActionRef({\n type: \"DOWNLOAD\",\n data: {}\n })\n }\n\n\n function share() {\n setActionRef({\n type: \"SHARE\",\n data: {}\n })\n }\n\n function setPreset() {\n\n }\n\n return { actionRef, download, share }\n}\n\nexport default useQurealActions;","import React, { useEffect } from \"react\";\nimport { share } from \"./utils\";\n\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\n\nfunction QurealCollection({\n collection_id = \"934ffe42-1d0a-4fa0-ad23-60b066c0b9ab\",\n preview = false,\n prefill = {},\n // onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n // useEffect(() => {\n // sendToIFrame({\n // message_type: \"OPEN_CREATION\",\n // data: {\n // slug: slug,\n // preview: preview,\n // prefill: prefill,\n // ictx: {\n // organization: organization,\n // person: person\n // }\n // }\n // })\n // }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n\n const query_string = `${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}${preview ? \"&preview\" : \"\"}`\n\n\n return <iframe\n id=\"qureal_iframe\"\n title=\"Qureal\"\n src={`https://show.qureal.com/embedlist/${collection_id}?${query_string}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n}\n\nexport default QurealCollection;\n\n\n// function queryfy(obj) {\n// const buildQueryInternal = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// // return buildQuery(prefixedKey, value);\n// return `${prefixedKey}=${JSON.stringify(value)}`\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// const buildQuery = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// return buildQueryInternal(prefixedKey, value);\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// return buildQuery(\"\", obj);\n// }\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n return buildQuery(\"\", obj);\n}"],"names":["QurealiFrame","slug","preview","query","type","creation_type","style","prefix","React","memo","data","navigator","share","canShare","error","QurealViewer","prefill","onFormSubmit","actionRef","organization","person","background","fit","onInit","onStatusUpdate","section_list","sendToIFrame","msg","log","qureal_element","document","getElementById","qureal_window","contentWindow","postMessage","includes","handler","ev","event_type","addEventListener","window","removeEventListener","queryfy","obj","buildQuery","Object","keys","map","value","key","prefixedKey","join","useQurealActions","useState","setActionRef","download","QurealCollection","collection_id","query_string"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/useIFrameMessanger.js","../src/QurealiFrame.js","../src/utils.js","../src/QurealViewer.js","../src/use-action.js","../src/QurealCollection.js"],"sourcesContent":["import React, { useEffect } from 'react';\n\nexport function useIframeMessenger({ iframeRef, data, targetOrigin = '*' }) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n useEffect(() => {\n\n if (!iframeRef.current) {\n return;\n }\n\n if (!iframeRef.current.contentWindow) {\n return;\n }\n\n const iframeWindow = iframeRef.current.contentWindow;\n\n if (!iframeWindow) {\n return;\n }\n\n const sendMessage = () => {\n iframeWindow.postMessage(data, targetOrigin);\n };\n\n // If iframe is already loaded\n if (iframeRef.current.contentDocument) {\n if (iframeRef.current.contentDocument.readyState === 'complete') {\n sendMessage();\n }\n } else {\n // Wait for iframe to load\n iframeRef.current.addEventListener('load', sendMessage);\n }\n\n\n return () => {\n if (!iframeRef.current) return;\n iframeRef.current.removeEventListener('load', sendMessage);\n };\n }, [iframeRef, data, targetOrigin]);\n}\n","import React, { Fragment, useEffect, useRef } from \"react\";\nimport { useIframeMessenger } from \"./useIFrameMessanger\";\n\n\nfunction QurealiFrame({ slug, preview, query, type = \"creation\", creation_type = \"singlepage\", style = {}, is_local = false, section_list = [] }) {\n const iframeRef = useRef(null);\n\n useIframeMessenger(iframeRef, {\n message_type: \"SET_SECTION_LIST\",\n data: {\n section_list: section_list\n }\n });\n\n let prefix = \"ts\";\n if (creation_type === \"document\") {\n if (type === \"creation\") {\n prefix = \"d\";\n } else {\n prefix = \"td\";\n }\n } else {\n if (type === \"creation\") {\n prefix = \"embed\";\n }\n }\n\n const base_url = is_local ? \"http://localhost:3201\" : \"https://show.qureal.com\";\n\n\n\n\n return (\n <Fragment>\n <iframe\n ref={iframeRef}\n id=\"qureal_iframe\"\n title=\"Qureal\"\n // src={`http://localhost:3201/embed/${creation_slug}`}\n // src={type === \"creation\" ? `https://show.qureal.com/embed/${slug}?${preview ? \"preview&\" : \"\"}${query}` : `https://show.qureal.com/ts/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n // src={`https://show.qureal.com/${type === \"creation\" ? \"embed\" : \"ts\"}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n src={`${base_url}/${prefix}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n </Fragment>\n );\n}\n\n// export default QurealiFrame;\nexport default React.memo(QurealiFrame, () => true)\n","export async function share(data) {\n try {\n if (navigator.share && navigator.canShare(data)) {\n await navigator.share(data);\n } else {\n console.error(\"Can't share\");\n alert(\"Share only available for mobile devices\")\n }\n } catch (err) {\n console.error(err);\n }\n}","import React, { Fragment, useEffect, useRef } from \"react\";\nimport QurealiFrame from \"./QurealiFrame\";\nimport { share } from \"./utils\";\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\nfunction QurealViewer({\n slug = \"qi_sample\",\n preview = false,\n prefill = {},\n type = \"creation\", // creation or template \n creation_type = \"singlepage\",\n onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n section_list = [],\n is_local = false\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"OPEN_CREATION\",\n data: {\n slug: slug,\n preview: preview,\n prefill: prefill,\n ictx: {\n organization: organization,\n person: person\n }\n }\n })\n }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_SECTION_LIST\",\n data: {\n section_list: section_list\n }\n })\n }, [section_list])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n return (\n <QurealiFrame\n slug={slug}\n preview={preview}\n query={`${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}`}\n type={type}\n creation_type={creation_type}\n style={style}\n is_local={is_local}\n section_list={section_list}\n />\n );\n}\n\n// export default QurealiFrame;\nexport default QurealViewer\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n\n return buildQuery(\"\", obj);\n}","import { useState } from \"react\"\n\nfunction useQurealActions() {\n const [actionRef, setActionRef] = useState({});\n\n function download() {\n setActionRef({\n type: \"DOWNLOAD\",\n data: {}\n })\n }\n\n\n function share() {\n setActionRef({\n type: \"SHARE\",\n data: {}\n })\n }\n\n function setPreset() {\n\n }\n\n return { actionRef, download, share }\n}\n\nexport default useQurealActions;","import React, { useEffect } from \"react\";\nimport { share } from \"./utils\";\n\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\n\nfunction QurealCollection({\n collection_id = \"934ffe42-1d0a-4fa0-ad23-60b066c0b9ab\",\n preview = false,\n prefill = {},\n // onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n // useEffect(() => {\n // sendToIFrame({\n // message_type: \"OPEN_CREATION\",\n // data: {\n // slug: slug,\n // preview: preview,\n // prefill: prefill,\n // ictx: {\n // organization: organization,\n // person: person\n // }\n // }\n // })\n // }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n\n const query_string = `${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}${preview ? \"&preview\" : \"\"}`\n\n\n return <iframe\n id=\"qureal_iframe\"\n title=\"Qureal\"\n src={`https://show.qureal.com/embedlist/${collection_id}?${query_string}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n}\n\nexport default QurealCollection;\n\n\n// function queryfy(obj) {\n// const buildQueryInternal = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// // return buildQuery(prefixedKey, value);\n// return `${prefixedKey}=${JSON.stringify(value)}`\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// const buildQuery = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// return buildQueryInternal(prefixedKey, value);\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// return buildQuery(\"\", obj);\n// }\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n return buildQuery(\"\", obj);\n}"],"names":["useIframeMessenger","iframeRef","data","targetOrigin","current","contentWindow","iframeWindow","sendMessage","postMessage","contentDocument","readyState","addEventListener","removeEventListener","QurealiFrame","slug","preview","query","type","creation_type","style","is_local","section_list","useRef","prefix","base_url","React","memo","navigator","share","canShare","error","QurealViewer","prefill","onFormSubmit","actionRef","organization","person","background","fit","onInit","onStatusUpdate","sendToIFrame","msg","log","qureal_element","document","getElementById","qureal_window","includes","handler","ev","event_type","window","queryfy","obj","buildQuery","Object","keys","map","value","key","prefixedKey","join","useQurealActions","useState","setActionRef","download","QurealCollection","collection_id","query_string"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,6 +7,49 @@ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'defau
7
7
  var React = require('react');
8
8
  var React__default = _interopDefault(React);
9
9
 
10
+ function useIframeMessenger(_ref) {
11
+ var iframeRef = _ref.iframeRef,
12
+ data = _ref.data,
13
+ _ref$targetOrigin = _ref.targetOrigin,
14
+ targetOrigin = _ref$targetOrigin === undefined ? '*' : _ref$targetOrigin;
15
+
16
+ React.useEffect(function () {
17
+
18
+ if (!iframeRef.current) {
19
+ return;
20
+ }
21
+
22
+ if (!iframeRef.current.contentWindow) {
23
+ return;
24
+ }
25
+
26
+ var iframeWindow = iframeRef.current.contentWindow;
27
+
28
+ if (!iframeWindow) {
29
+ return;
30
+ }
31
+
32
+ var sendMessage = function sendMessage() {
33
+ iframeWindow.postMessage(data, targetOrigin);
34
+ };
35
+
36
+ // If iframe is already loaded
37
+ if (iframeRef.current.contentDocument) {
38
+ if (iframeRef.current.contentDocument.readyState === 'complete') {
39
+ sendMessage();
40
+ }
41
+ } else {
42
+ // Wait for iframe to load
43
+ iframeRef.current.addEventListener('load', sendMessage);
44
+ }
45
+
46
+ return function () {
47
+ if (!iframeRef.current) return;
48
+ iframeRef.current.removeEventListener('load', sendMessage);
49
+ };
50
+ }, [iframeRef, data, targetOrigin]);
51
+ }
52
+
10
53
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
11
54
  return typeof obj;
12
55
  } : function (obj) {
@@ -103,8 +146,20 @@ function QurealiFrame(_ref) {
103
146
  _ref$creation_type = _ref.creation_type,
104
147
  creation_type = _ref$creation_type === undefined ? "singlepage" : _ref$creation_type,
105
148
  _ref$style = _ref.style,
106
- style = _ref$style === undefined ? {} : _ref$style;
149
+ style = _ref$style === undefined ? {} : _ref$style,
150
+ _ref$is_local = _ref.is_local,
151
+ is_local = _ref$is_local === undefined ? false : _ref$is_local,
152
+ _ref$section_list = _ref.section_list,
153
+ section_list = _ref$section_list === undefined ? [] : _ref$section_list;
107
154
 
155
+ var iframeRef = React.useRef(null);
156
+
157
+ useIframeMessenger(iframeRef, {
158
+ message_type: "SET_SECTION_LIST",
159
+ data: {
160
+ section_list: section_list
161
+ }
162
+ });
108
163
 
109
164
  var prefix = "ts";
110
165
  if (creation_type === "document") {
@@ -119,16 +174,19 @@ function QurealiFrame(_ref) {
119
174
  }
120
175
  }
121
176
 
177
+ var base_url = is_local ? "http://localhost:3201" : "https://show.qureal.com";
178
+
122
179
  return React__default.createElement(
123
180
  React.Fragment,
124
181
  null,
125
182
  React__default.createElement("iframe", {
183
+ ref: iframeRef,
126
184
  id: "qureal_iframe",
127
185
  title: "Qureal"
128
186
  // src={`http://localhost:3201/embed/${creation_slug}`}
129
187
  // src={type === "creation" ? `https://show.qureal.com/embed/${slug}?${preview ? "preview&" : ""}${query}` : `https://show.qureal.com/ts/${slug}?${preview ? "preview&" : ""}${query}`}
130
188
  // src={`https://show.qureal.com/${type === "creation" ? "embed" : "ts"}/${slug}?${preview ? "preview&" : ""}${query}`}
131
- , src: "https://show.qureal.com/" + prefix + "/" + slug + "?" + (preview ? "preview&" : "") + query,
189
+ , src: base_url + "/" + prefix + "/" + slug + "?" + (preview ? "preview&" : "") + query,
132
190
  style: _extends({
133
191
  width: "100%",
134
192
  height: "100vh",
@@ -222,7 +280,9 @@ function QurealViewer(_ref) {
222
280
  _ref$onStatusUpdate = _ref.onStatusUpdate,
223
281
  onStatusUpdate = _ref$onStatusUpdate === undefined ? function () {} : _ref$onStatusUpdate,
224
282
  _ref$section_list = _ref.section_list,
225
- section_list = _ref$section_list === undefined ? [] : _ref$section_list;
283
+ section_list = _ref$section_list === undefined ? [] : _ref$section_list,
284
+ _ref$is_local = _ref.is_local,
285
+ is_local = _ref$is_local === undefined ? false : _ref$is_local;
226
286
 
227
287
 
228
288
  var sendToIFrame = function sendToIFrame(msg) {
@@ -323,7 +383,9 @@ function QurealViewer(_ref) {
323
383
  query: "" + queryfy(prefill) + (organization ? "&qi_organization=" + organization : "") + (person ? "&qi_person=" + person : "") + (background ? "&qi_background=" + background : "") + (fit ? "&qi_fit" : ""),
324
384
  type: type,
325
385
  creation_type: creation_type,
326
- style: style
386
+ style: style,
387
+ is_local: is_local,
388
+ section_list: section_list
327
389
  });
328
390
  }
329
391
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/QurealiFrame.js","../src/utils.js","../src/QurealViewer.js","../src/use-action.js","../src/QurealCollection.js"],"sourcesContent":["import React, { Fragment, useEffect, useRef } from \"react\";\n\n\nfunction QurealiFrame({ slug, preview, query, type = \"creation\", creation_type = \"singlepage\", style = {} }) {\n\n let prefix = \"ts\";\n if (creation_type === \"document\") {\n if (type === \"creation\") {\n prefix = \"d\";\n } else {\n prefix = \"td\";\n }\n } else {\n if (type === \"creation\") {\n prefix = \"embed\";\n }\n }\n\n return (\n <Fragment>\n <iframe\n id=\"qureal_iframe\"\n title=\"Qureal\"\n // src={`http://localhost:3201/embed/${creation_slug}`}\n // src={type === \"creation\" ? `https://show.qureal.com/embed/${slug}?${preview ? \"preview&\" : \"\"}${query}` : `https://show.qureal.com/ts/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n // src={`https://show.qureal.com/${type === \"creation\" ? \"embed\" : \"ts\"}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n src={`https://show.qureal.com/${prefix}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n </Fragment>\n );\n}\n\n// export default QurealiFrame;\nexport default React.memo(QurealiFrame, () => true)\n","export async function share(data) {\n try {\n if (navigator.share && navigator.canShare(data)) {\n await navigator.share(data);\n } else {\n console.error(\"Can't share\");\n alert(\"Share only available for mobile devices\")\n }\n } catch (err) {\n console.error(err);\n }\n}","import React, { Fragment, useEffect, useRef } from \"react\";\nimport QurealiFrame from \"./QurealiFrame\";\nimport { share } from \"./utils\";\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\nfunction QurealViewer({\n slug = \"qi_sample\",\n preview = false,\n prefill = {},\n type = \"creation\", // creation or template \n creation_type = \"singlepage\",\n onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n section_list = []\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"OPEN_CREATION\",\n data: {\n slug: slug,\n preview: preview,\n prefill: prefill,\n ictx: {\n organization: organization,\n person: person\n }\n }\n })\n }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_SECTION_LIST\",\n data: {\n section_list: section_list\n }\n })\n }, [section_list])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n return (\n <QurealiFrame\n slug={slug}\n preview={preview}\n query={`${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}`}\n type={type}\n creation_type={creation_type}\n style={style}\n />\n );\n}\n\n// export default QurealiFrame;\nexport default QurealViewer\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n\n return buildQuery(\"\", obj);\n}","import { useState } from \"react\"\n\nfunction useQurealActions() {\n const [actionRef, setActionRef] = useState({});\n\n function download() {\n setActionRef({\n type: \"DOWNLOAD\",\n data: {}\n })\n }\n\n\n function share() {\n setActionRef({\n type: \"SHARE\",\n data: {}\n })\n }\n\n function setPreset() {\n\n }\n\n return { actionRef, download, share }\n}\n\nexport default useQurealActions;","import React, { useEffect } from \"react\";\nimport { share } from \"./utils\";\n\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\n\nfunction QurealCollection({\n collection_id = \"934ffe42-1d0a-4fa0-ad23-60b066c0b9ab\",\n preview = false,\n prefill = {},\n // onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n // useEffect(() => {\n // sendToIFrame({\n // message_type: \"OPEN_CREATION\",\n // data: {\n // slug: slug,\n // preview: preview,\n // prefill: prefill,\n // ictx: {\n // organization: organization,\n // person: person\n // }\n // }\n // })\n // }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n\n const query_string = `${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}${preview ? \"&preview\" : \"\"}`\n\n\n return <iframe\n id=\"qureal_iframe\"\n title=\"Qureal\"\n src={`https://show.qureal.com/embedlist/${collection_id}?${query_string}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n}\n\nexport default QurealCollection;\n\n\n// function queryfy(obj) {\n// const buildQueryInternal = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// // return buildQuery(prefixedKey, value);\n// return `${prefixedKey}=${JSON.stringify(value)}`\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// const buildQuery = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// return buildQueryInternal(prefixedKey, value);\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// return buildQuery(\"\", obj);\n// }\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n return buildQuery(\"\", obj);\n}"],"names":["QurealiFrame","slug","preview","query","type","creation_type","style","prefix","React","memo","data","navigator","share","canShare","error","QurealViewer","prefill","onFormSubmit","actionRef","organization","person","background","fit","onInit","onStatusUpdate","section_list","sendToIFrame","msg","log","qureal_element","document","getElementById","qureal_window","contentWindow","postMessage","includes","handler","ev","event_type","addEventListener","window","removeEventListener","queryfy","obj","buildQuery","Object","keys","map","value","key","prefixedKey","join","useQurealActions","useState","setActionRef","download","QurealCollection","collection_id","query_string"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/useIFrameMessanger.js","../src/QurealiFrame.js","../src/utils.js","../src/QurealViewer.js","../src/use-action.js","../src/QurealCollection.js"],"sourcesContent":["import React, { useEffect } from 'react';\n\nexport function useIframeMessenger({ iframeRef, data, targetOrigin = '*' }) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n useEffect(() => {\n\n if (!iframeRef.current) {\n return;\n }\n\n if (!iframeRef.current.contentWindow) {\n return;\n }\n\n const iframeWindow = iframeRef.current.contentWindow;\n\n if (!iframeWindow) {\n return;\n }\n\n const sendMessage = () => {\n iframeWindow.postMessage(data, targetOrigin);\n };\n\n // If iframe is already loaded\n if (iframeRef.current.contentDocument) {\n if (iframeRef.current.contentDocument.readyState === 'complete') {\n sendMessage();\n }\n } else {\n // Wait for iframe to load\n iframeRef.current.addEventListener('load', sendMessage);\n }\n\n\n return () => {\n if (!iframeRef.current) return;\n iframeRef.current.removeEventListener('load', sendMessage);\n };\n }, [iframeRef, data, targetOrigin]);\n}\n","import React, { Fragment, useEffect, useRef } from \"react\";\nimport { useIframeMessenger } from \"./useIFrameMessanger\";\n\n\nfunction QurealiFrame({ slug, preview, query, type = \"creation\", creation_type = \"singlepage\", style = {}, is_local = false, section_list = [] }) {\n const iframeRef = useRef(null);\n\n useIframeMessenger(iframeRef, {\n message_type: \"SET_SECTION_LIST\",\n data: {\n section_list: section_list\n }\n });\n\n let prefix = \"ts\";\n if (creation_type === \"document\") {\n if (type === \"creation\") {\n prefix = \"d\";\n } else {\n prefix = \"td\";\n }\n } else {\n if (type === \"creation\") {\n prefix = \"embed\";\n }\n }\n\n const base_url = is_local ? \"http://localhost:3201\" : \"https://show.qureal.com\";\n\n\n\n\n return (\n <Fragment>\n <iframe\n ref={iframeRef}\n id=\"qureal_iframe\"\n title=\"Qureal\"\n // src={`http://localhost:3201/embed/${creation_slug}`}\n // src={type === \"creation\" ? `https://show.qureal.com/embed/${slug}?${preview ? \"preview&\" : \"\"}${query}` : `https://show.qureal.com/ts/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n // src={`https://show.qureal.com/${type === \"creation\" ? \"embed\" : \"ts\"}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n src={`${base_url}/${prefix}/${slug}?${preview ? \"preview&\" : \"\"}${query}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n </Fragment>\n );\n}\n\n// export default QurealiFrame;\nexport default React.memo(QurealiFrame, () => true)\n","export async function share(data) {\n try {\n if (navigator.share && navigator.canShare(data)) {\n await navigator.share(data);\n } else {\n console.error(\"Can't share\");\n alert(\"Share only available for mobile devices\")\n }\n } catch (err) {\n console.error(err);\n }\n}","import React, { Fragment, useEffect, useRef } from \"react\";\nimport QurealiFrame from \"./QurealiFrame\";\nimport { share } from \"./utils\";\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\nfunction QurealViewer({\n slug = \"qi_sample\",\n preview = false,\n prefill = {},\n type = \"creation\", // creation or template \n creation_type = \"singlepage\",\n onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n section_list = [],\n is_local = false\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"OPEN_CREATION\",\n data: {\n slug: slug,\n preview: preview,\n prefill: prefill,\n ictx: {\n organization: organization,\n person: person\n }\n }\n })\n }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_SECTION_LIST\",\n data: {\n section_list: section_list\n }\n })\n }, [section_list])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n return (\n <QurealiFrame\n slug={slug}\n preview={preview}\n query={`${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}`}\n type={type}\n creation_type={creation_type}\n style={style}\n is_local={is_local}\n section_list={section_list}\n />\n );\n}\n\n// export default QurealiFrame;\nexport default QurealViewer\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n\n return buildQuery(\"\", obj);\n}","import { useState } from \"react\"\n\nfunction useQurealActions() {\n const [actionRef, setActionRef] = useState({});\n\n function download() {\n setActionRef({\n type: \"DOWNLOAD\",\n data: {}\n })\n }\n\n\n function share() {\n setActionRef({\n type: \"SHARE\",\n data: {}\n })\n }\n\n function setPreset() {\n\n }\n\n return { actionRef, download, share }\n}\n\nexport default useQurealActions;","import React, { useEffect } from \"react\";\nimport { share } from \"./utils\";\n\n\nconst ALLOWED_ORIGINS = [\"https://show.qureal.com\", \"http://localhost:3201\"];\n\n\nfunction QurealCollection({\n collection_id = \"934ffe42-1d0a-4fa0-ad23-60b066c0b9ab\",\n preview = false,\n prefill = {},\n // onFormSubmit = () => { },\n style = {},\n actionRef = {},\n organization = null,\n person = null,\n background = null,\n fit = false,\n onInit = () => { },\n onStatusUpdate = () => { },\n}) {\n\n const sendToIFrame = (msg) => {\n console.log(\"Sending data to iFrame\")\n const qureal_element = document.getElementById(\"qureal_iframe\");\n const qureal_window = qureal_element ? qureal_element.contentWindow : null;\n if (qureal_window) {\n qureal_window.postMessage(msg, \"*\");\n console.log(\"Data sent to iframe\")\n }\n }\n\n // useEffect(() => {\n // sendToIFrame({\n // message_type: \"OPEN_CREATION\",\n // data: {\n // slug: slug,\n // preview: preview,\n // prefill: prefill,\n // ictx: {\n // organization: organization,\n // person: person\n // }\n // }\n // })\n // }, [slug, preview])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"PREFILL\",\n data: {\n prefill: prefill\n }\n })\n }, [prefill])\n\n useEffect(() => {\n if ([\"DOWNLOAD\", \"SHARE\"].includes(actionRef.type)) {\n sendToIFrame({\n message_type: actionRef.type,\n data: actionRef.data || {}\n })\n }\n }, [actionRef])\n\n useEffect(() => {\n sendToIFrame({\n message_type: \"SET_ICTX\",\n data: {\n organization: organization,\n person: person\n }\n })\n }, [organization, person])\n\n useEffect(() => {\n const handler = (ev) => {\n // if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === \"object\") {\n switch (ev.data.event_type) {\n case \"WHOAMI\":\n onInit(ev.data.data);\n break;\n case \"STATUS_UPDATE\":\n onStatusUpdate(ev.data.data);\n break;\n case \"FORM_SUBMIT\":\n onFormSubmit(ev.data.data);\n break;\n case \"SHARE\":\n share(ev.data.data);\n break;\n default:\n console.log(\"No event type found\");\n console.log(ev.data);\n }\n // }\n };\n\n window.addEventListener(\"message\", handler);\n return () => window.removeEventListener(\"message\", handler);\n }, []);\n\n\n const query_string = `${queryfy(prefill)}${organization ? `&qi_organization=${organization}` : \"\"}${person ? `&qi_person=${person}` : \"\"}${background ? `&qi_background=${background}` : \"\"}${fit ? \"&qi_fit\" : \"\"}${preview ? \"&preview\" : \"\"}`\n\n\n return <iframe\n id=\"qureal_iframe\"\n title=\"Qureal\"\n src={`https://show.qureal.com/embedlist/${collection_id}?${query_string}`}\n style={{\n width: \"100%\",\n height: \"100vh\",\n outline: \"none\",\n border: \"1px solid #777\",\n ...style\n }}\n allow=\"web-share\"\n />\n}\n\nexport default QurealCollection;\n\n\n// function queryfy(obj) {\n// const buildQueryInternal = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// // return buildQuery(prefixedKey, value);\n// return `${prefixedKey}=${JSON.stringify(value)}`\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// const buildQuery = (prefix, obj) => {\n// return Object.keys(obj)\n// .map(key => {\n// const value = obj[key];\n// const prefixedKey = prefix ? `${prefix}.${key}` : key;\n// if (typeof value === 'object' && value !== null) {\n// return buildQueryInternal(prefixedKey, value);\n// } else {\n// return `${prefixedKey}=${value}`;\n// }\n// })\n// .join(\"&\");\n// };\n// return buildQuery(\"\", obj);\n// }\n\n\nfunction queryfy(obj) {\n const buildQuery = (prefix, obj) => {\n return Object.keys(obj)\n .map(key => {\n const value = obj[key];\n const prefixedKey = prefix ? `${prefix}.${key}` : key;\n if (typeof value === 'object' && value !== null) {\n return buildQuery(prefixedKey, value);\n } else {\n return `${prefixedKey}=${value}`;\n }\n })\n .join(\"&\");\n };\n return buildQuery(\"\", obj);\n}"],"names":["useIframeMessenger","iframeRef","data","targetOrigin","current","contentWindow","iframeWindow","sendMessage","postMessage","contentDocument","readyState","addEventListener","removeEventListener","QurealiFrame","slug","preview","query","type","creation_type","style","is_local","section_list","useRef","prefix","base_url","React","memo","navigator","share","canShare","error","QurealViewer","prefill","onFormSubmit","actionRef","organization","person","background","fit","onInit","onStatusUpdate","sendToIFrame","msg","log","qureal_element","document","getElementById","qureal_window","includes","handler","ev","event_type","window","queryfy","obj","buildQuery","Object","keys","map","value","key","prefixedKey","join","useQurealActions","useState","setActionRef","download","QurealCollection","collection_id","query_string"],"mappings":";;;;;;;;;AAEO,SAASA,kBAAT,OAAqE;QAAvCC,SAAuC,QAAvCA,SAAuC;QAA5BC,IAA4B,QAA5BA,IAA4B;iCAAtBC,YAAsB;QAAtBA,YAAsB,qCAAP,GAAO;;oBAa9D,YAAM;;YAER,CAACF,UAAUG,OAAf,EAAwB;;;;YAIpB,CAACH,UAAUG,OAAV,CAAkBC,aAAvB,EAAsC;;;;YAIhCC,eAAeL,UAAUG,OAAV,CAAkBC,aAAvC;;YAEI,CAACC,YAAL,EAAmB;;;;YAIbC,cAAc,SAAdA,WAAc,GAAM;yBACTC,WAAb,CAAyBN,IAAzB,EAA+BC,YAA/B;SADJ;;;YAKIF,UAAUG,OAAV,CAAkBK,eAAtB,EAAuC;gBAC/BR,UAAUG,OAAV,CAAkBK,eAAlB,CAAkCC,UAAlC,KAAiD,UAArD,EAAiE;;;SADrE,MAIO;;sBAEON,OAAV,CAAkBO,gBAAlB,CAAmC,MAAnC,EAA2CJ,WAA3C;;;eAIG,YAAM;gBACL,CAACN,UAAUG,OAAf,EAAwB;sBACdA,OAAV,CAAkBQ,mBAAlB,CAAsC,MAAtC,EAA8CL,WAA9C;SAFJ;KA/BJ,EAmCG,CAACN,SAAD,EAAYC,IAAZ,EAAkBC,YAAlB,CAnCH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXJ,SAASU,YAAT,OAAkJ;QAA1HC,IAA0H,QAA1HA,IAA0H;QAApHC,OAAoH,QAApHA,OAAoH;QAA3GC,KAA2G,QAA3GA,KAA2G;yBAApGC,IAAoG;QAApGA,IAAoG,6BAA7F,UAA6F;kCAAjFC,aAAiF;QAAjFA,aAAiF,sCAAjE,YAAiE;0BAAnDC,KAAmD;QAAnDA,KAAmD,8BAA3C,EAA2C;6BAAvCC,QAAuC;QAAvCA,QAAuC,iCAA5B,KAA4B;iCAArBC,YAAqB;QAArBA,YAAqB,qCAAN,EAAM;;QACxIpB,YAAYqB,aAAO,IAAP,CAAlB;;uBAEmBrB,SAAnB,EAA8B;sBACZ,kBADY;cAEpB;0BACYoB;;KAHtB;;QAOIE,SAAS,IAAb;QACIL,kBAAkB,UAAtB,EAAkC;YAC1BD,SAAS,UAAb,EAAyB;qBACZ,GAAT;SADJ,MAEO;qBACM,IAAT;;KAJR,MAMO;YACCA,SAAS,UAAb,EAAyB;qBACZ,OAAT;;;;QAIFO,WAAWJ,WAAW,uBAAX,GAAqC,yBAAtD;;WAMIK;sBAAA;;;iBAEaxB,SADT;gBAEO,eAFP;mBAGU;;;;cAIN,KAAQuB,QAAR,SAAoBD,MAApB,SAA8BT,IAA9B,UAAsCC,UAAU,UAAV,GAAuB,EAA7D,IAAkEC,KAPtE;;uBASe,MADX;wBAEY,OAFZ;yBAGa,MAHb;wBAIY;eACLG,KALP,CARJ;mBAeU;;KAjBlB;;;;AAwBJ,qBAAeM,eAAMC,IAAN,CAAWb,YAAX,EAAyB;WAAM,IAAN;CAAzB,CAAf;;;sECxDO,iBAAqBX,IAArB;;;;;;;8BAEKyB,UAAUC,KAAV,IAAmBD,UAAUE,QAAV,CAAmB3B,IAAnB,CAFxB;;;;;;+BAGWyB,UAAUC,KAAV,CAAgB1B,IAAhB,CAHX;;;;;;;gCAKa4B,KAAR,CAAc,aAAd;8BACM,yCAAN;;;;;;;;;;gCAGIA,KAAR;;;;;;;;KATR;;oBAAsBF,KAAtB;;;;;ACMA,SAASG,YAAT,OAiBG;yBAhBCjB,IAgBD;QAhBCA,IAgBD,6BAhBQ,WAgBR;4BAfCC,OAeD;QAfCA,OAeD,gCAfW,KAeX;4BAdCiB,OAcD;QAdCA,OAcD,gCAdW,EAcX;yBAbCf,IAaD;QAbCA,IAaD,6BAbQ,UAaR;kCAZCC,aAYD;QAZCA,aAYD,sCAZiB,YAYjB;iCAXCe,YAWD;QAXCA,YAWD,qCAXgB,YAAM,EAWtB;0BAVCd,KAUD;QAVCA,KAUD,8BAVS,EAUT;8BATCe,SASD;QATCA,SASD,kCATa,EASb;iCARCC,YAQD;QARCA,YAQD,qCARgB,IAQhB;2BAPCC,MAOD;QAPCA,MAOD,+BAPU,IAOV;+BANCC,UAMD;QANCA,UAMD,mCANc,IAMd;wBALCC,GAKD;QALCA,GAKD,4BALO,KAKP;2BAJCC,MAID;QAJCA,MAID,+BAJU,YAAM,EAIhB;mCAHCC,cAGD;QAHCA,cAGD,uCAHkB,YAAM,EAGxB;iCAFCnB,YAED;QAFCA,YAED,qCAFgB,EAEhB;6BADCD,QACD;QADCA,QACD,iCADY,KACZ;;;QAEOqB,eAAe,SAAfA,YAAe,CAACC,GAAD,EAAS;gBAClBC,GAAR,CAAY,wBAAZ;YACMC,iBAAiBC,SAASC,cAAT,CAAwB,eAAxB,CAAvB;;YAEMC,gBAAgBH,iBAAiBA,eAAevC,aAAhC,GAAgD,IAAtE;YACI0C,aAAJ,EAAmB;0BACDvC,WAAd,CAA0BkC,GAA1B,EAA+B,GAA/B;oBACQC,GAAR,CAAY,qBAAZ;;KAPR;;oBAWU,YAAM;qBACC;0BACK,eADL;kBAEH;sBACI7B,IADJ;yBAEOC,OAFP;yBAGOiB,OAHP;sBAII;kCACYG,YADZ;4BAEMC;;;SARpB;KADJ,EAaG,CAACtB,IAAD,EAAOC,OAAP,CAbH;;oBAeU,YAAM;qBACC;0BACK,SADL;kBAEH;yBACOiB;;SAHjB;KADJ,EAOG,CAACA,OAAD,CAPH;;oBAUU,YAAM;qBACC;0BACK,kBADL;kBAEH;8BACYX;;SAHtB;KADJ,EAOG,CAACA,YAAD,CAPH;;oBASU,YAAM;YACR,CAAC,UAAD,EAAa,OAAb,EAAsB2B,QAAtB,CAA+Bd,UAAUjB,IAAzC,CAAJ,EAAoD;yBACnC;8BACKiB,UAAUjB,IADf;sBAEHiB,UAAUhC,IAAV,IAAkB;aAF5B;;KAFR,EAOG,CAACgC,SAAD,CAPH;;oBASU,YAAM;qBACC;0BACK,UADL;kBAEH;8BACYC,YADZ;wBAEMC;;SAJhB;KADJ,EAQG,CAACD,YAAD,EAAeC,MAAf,CARH;;oBAUU,YAAM;YACNa,UAAU,SAAVA,OAAU,CAACC,EAAD,EAAQ;;oBAEZA,GAAGhD,IAAH,CAAQiD,UAAhB;qBACS,QAAL;2BACWD,GAAGhD,IAAH,CAAQA,IAAf;;qBAEC,eAAL;mCACmBgD,GAAGhD,IAAH,CAAQA,IAAvB;;qBAEC,aAAL;iCACiBgD,GAAGhD,IAAH,CAAQA,IAArB;;qBAEC,OAAL;0BACUgD,GAAGhD,IAAH,CAAQA,IAAd;;;4BAGQyC,GAAR,CAAY,qBAAZ;4BACQA,GAAR,CAAYO,GAAGhD,IAAf;;;SAjBZ;;eAsBOS,gBAAP,CAAwB,SAAxB,EAAmCsC,OAAnC;eACO;mBAAMG,OAAOxC,mBAAP,CAA2B,SAA3B,EAAsCqC,OAAtC,CAAN;SAAP;KAxBJ,EAyBG,EAzBH;;WA4BIxB,6BAACZ,cAAD;cACUC,IADV;iBAEaC,OAFb;oBAGcsC,QAAQrB,OAAR,CAAV,IAA6BG,qCAAmCA,YAAnC,GAAoD,EAAjF,KAAsFC,yBAAuBA,MAAvB,GAAkC,EAAxH,KAA6HC,iCAA+BA,UAA/B,GAA8C,EAA3K,KAAgLC,MAAM,SAAN,GAAkB,EAAlM,CAHJ;cAIUrB,IAJV;uBAKmBC,aALnB;eAMWC,KANX;kBAOcC,QAPd;sBAQkBC;MATtB;;;AAkBJ,SAASgC,OAAT,CAAiBC,GAAjB,EAAsB;QACZC,aAAa,SAAbA,UAAa,CAAChC,MAAD,EAAS+B,GAAT,EAAiB;eACzBE,OAAOC,IAAP,CAAYH,GAAZ,EACFI,GADE,CACE,eAAO;gBACFC,QAAQL,IAAIM,GAAJ,CAAd;gBACMC,cAActC,SAAYA,MAAZ,SAAsBqC,GAAtB,GAA8BA,GAAlD;gBACI,QAAOD,KAAP,yCAAOA,KAAP,OAAiB,QAAjB,IAA6BA,UAAU,IAA3C,EAAiD;uBACtCJ,WAAWM,WAAX,EAAwBF,KAAxB,CAAP;aADJ,MAEO;uBACOE,WAAV,SAAyBF,KAAzB;;SAPL,EAUFG,IAVE,CAUG,GAVH,CAAP;KADJ;;WAcOP,WAAW,EAAX,EAAeD,GAAf,CAAP;;;ACnJJ,SAASS,gBAAT,GAA4B;oBACUC,eAAS,EAAT,CADV;;QACjB9B,SADiB;QACN+B,YADM;;aAGfC,QAAT,GAAoB;qBACH;kBACH,UADG;kBAEH;SAFV;;;aAOKtC,KAAT,GAAiB;qBACA;kBACH,OADG;kBAEH;SAFV;;;WAUG,EAAEM,oBAAF,EAAagC,kBAAb,EAAuBtC,YAAvB,EAAP;;;ACjBJ,SAASuC,gBAAT,OAaG;kCAZCC,aAYD;QAZCA,aAYD,sCAZiB,sCAYjB;4BAXCrD,OAWD;QAXCA,OAWD,gCAXW,KAWX;4BAVCiB,OAUD;QAVCA,OAUD,gCAVW,EAUX;0BARCb,KAQD;QARCA,KAQD,8BARS,EAQT;8BAPCe,SAOD;QAPCA,SAOD,kCAPa,EAOb;iCANCC,YAMD;QANCA,YAMD,qCANgB,IAMhB;2BALCC,MAKD;QALCA,MAKD,+BALU,IAKV;+BAJCC,UAID;QAJCA,UAID,mCAJc,IAId;wBAHCC,GAGD;QAHCA,GAGD,4BAHO,KAGP;2BAFCC,MAED;QAFCA,MAED,+BAFU,YAAM,EAEhB;mCADCC,cACD;QADCA,cACD,uCADkB,YAAM,EACxB;;;QAEOC,eAAe,SAAfA,YAAe,CAACC,GAAD,EAAS;gBAClBC,GAAR,CAAY,wBAAZ;YACMC,iBAAiBC,SAASC,cAAT,CAAwB,eAAxB,CAAvB;YACMC,gBAAgBH,iBAAiBA,eAAevC,aAAhC,GAAgD,IAAtE;YACI0C,aAAJ,EAAmB;0BACDvC,WAAd,CAA0BkC,GAA1B,EAA+B,GAA/B;oBACQC,GAAR,CAAY,qBAAZ;;KANR;;;;;;;;;;;;;;;;;oBAyBU,YAAM;qBACC;0BACK,SADL;kBAEH;yBACOX;;SAHjB;KADJ,EAOG,CAACA,OAAD,CAPH;;oBASU,YAAM;YACR,CAAC,UAAD,EAAa,OAAb,EAAsBgB,QAAtB,CAA+Bd,UAAUjB,IAAzC,CAAJ,EAAoD;yBACnC;8BACKiB,UAAUjB,IADf;sBAEHiB,UAAUhC,IAAV,IAAkB;aAF5B;;KAFR,EAOG,CAACgC,SAAD,CAPH;;oBASU,YAAM;qBACC;0BACK,UADL;kBAEH;8BACYC,YADZ;wBAEMC;;SAJhB;KADJ,EAQG,CAACD,YAAD,EAAeC,MAAf,CARH;;oBAUU,YAAM;YACNa,UAAU,SAAVA,OAAU,CAACC,EAAD,EAAQ;;oBAEZA,GAAGhD,IAAH,CAAQiD,UAAhB;qBACS,QAAL;2BACWD,GAAGhD,IAAH,CAAQA,IAAf;;qBAEC,eAAL;mCACmBgD,GAAGhD,IAAH,CAAQA,IAAvB;;qBAEC,aAAL;iCACiBgD,GAAGhD,IAAH,CAAQA,IAArB;;qBAEC,OAAL;0BACUgD,GAAGhD,IAAH,CAAQA,IAAd;;;4BAGQyC,GAAR,CAAY,qBAAZ;4BACQA,GAAR,CAAYO,GAAGhD,IAAf;;;SAjBZ;;eAsBOS,gBAAP,CAAwB,SAAxB,EAAmCsC,OAAnC;eACO;mBAAMG,OAAOxC,mBAAP,CAA2B,SAA3B,EAAsCqC,OAAtC,CAAN;SAAP;KAxBJ,EAyBG,EAzBH;;QA4BMoB,oBAAkBhB,UAAQrB,OAAR,CAAlB,IAAqCG,qCAAmCA,YAAnC,GAAoD,EAAzF,KAA8FC,yBAAuBA,MAAvB,GAAkC,EAAhI,KAAqIC,iCAA+BA,UAA/B,GAA8C,EAAnL,KAAwLC,MAAM,SAAN,GAAkB,EAA1M,KAA+MvB,UAAU,UAAV,GAAuB,EAAtO,CAAN;;WAGOU;YACA,eADA;eAEG,QAFH;oDAGuC2C,aAA1C,SAA2DC,YAHxD;;mBAKQ,MADX;oBAEY,OAFZ;qBAGa,MAHb;oBAIY;WACLlD,KALP,CAJG;eAWG;MAXV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDJ,SAASkC,SAAT,CAAiBC,GAAjB,EAAsB;QACZC,aAAa,SAAbA,UAAa,CAAChC,MAAD,EAAS+B,GAAT,EAAiB;eACzBE,OAAOC,IAAP,CAAYH,GAAZ,EACFI,GADE,CACE,eAAO;gBACFC,QAAQL,IAAIM,GAAJ,CAAd;gBACMC,cAActC,SAAYA,MAAZ,SAAsBqC,GAAtB,GAA8BA,GAAlD;gBACI,QAAOD,KAAP,yCAAOA,KAAP,OAAiB,QAAjB,IAA6BA,UAAU,IAA3C,EAAiD;uBACtCJ,WAAWM,WAAX,EAAwBF,KAAxB,CAAP;aADJ,MAEO;uBACOE,WAAV,SAAyBF,KAAzB;;SAPL,EAUFG,IAVE,CAUG,GAVH,CAAP;KADJ;WAaOP,WAAW,EAAX,EAAeD,GAAf,CAAP;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qureal-editor",
3
- "version": "1.0.41",
3
+ "version": "1.0.43",
4
4
  "description": "Official Qureal React components",
5
5
  "author": "shivampip",
6
6
  "license": "MIT",