qureal-editor 1.0.42 → 1.0.44

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,49 @@
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) return;
12
+
13
+ if (!iframeRef.current) {
14
+ return;
15
+ }
16
+
17
+ if (!iframeRef.current.contentWindow) {
18
+ return;
19
+ }
20
+
21
+ var iframeWindow = iframeRef.current.contentWindow;
22
+
23
+ if (!iframeWindow) {
24
+ return;
25
+ }
26
+
27
+ var sendMessage = function sendMessage() {
28
+ iframeWindow.postMessage(data, targetOrigin);
29
+ };
30
+
31
+ // If iframe is already loaded
32
+ if (iframeRef.current.contentDocument) {
33
+ if (iframeRef.current.contentDocument.readyState === 'complete') {
34
+ sendMessage();
35
+ }
36
+ } else {
37
+ // Wait for iframe to load
38
+ iframeRef.current.addEventListener('load', sendMessage);
39
+ }
40
+
41
+ return function () {
42
+ if (!iframeRef.current) return;
43
+ iframeRef.current.removeEventListener('load', sendMessage);
44
+ };
45
+ }, [iframeRef, data, targetOrigin]);
46
+ }
2
47
 
3
48
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
4
49
  return typeof obj;
@@ -98,8 +143,18 @@ function QurealiFrame(_ref) {
98
143
  _ref$style = _ref.style,
99
144
  style = _ref$style === undefined ? {} : _ref$style,
100
145
  _ref$is_local = _ref.is_local,
101
- is_local = _ref$is_local === undefined ? false : _ref$is_local;
146
+ is_local = _ref$is_local === undefined ? false : _ref$is_local,
147
+ _ref$section_list = _ref.section_list,
148
+ section_list = _ref$section_list === undefined ? [] : _ref$section_list;
102
149
 
150
+ var iframeRef = useRef(null);
151
+
152
+ useIframeMessenger(iframeRef, {
153
+ message_type: "SET_SECTION_LIST",
154
+ data: {
155
+ section_list: section_list
156
+ }
157
+ });
103
158
 
104
159
  var prefix = "ts";
105
160
  if (creation_type === "document") {
@@ -120,6 +175,7 @@ function QurealiFrame(_ref) {
120
175
  Fragment,
121
176
  null,
122
177
  React.createElement("iframe", {
178
+ ref: iframeRef,
123
179
  id: "qureal_iframe",
124
180
  title: "Qureal"
125
181
  // src={`http://localhost:3201/embed/${creation_slug}`}
@@ -323,7 +379,8 @@ function QurealViewer(_ref) {
323
379
  type: type,
324
380
  creation_type: creation_type,
325
381
  style: style,
326
- is_local: is_local
382
+ is_local: is_local,
383
+ section_list: section_list
327
384
  });
328
385
  }
329
386
 
@@ -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 = {}, is_local = false }) {\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 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={`${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 />\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","is_local","prefix","base_url","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) return;\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,51 @@ 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) return;
19
+
20
+ if (!iframeRef.current) {
21
+ return;
22
+ }
23
+
24
+ if (!iframeRef.current.contentWindow) {
25
+ return;
26
+ }
27
+
28
+ var iframeWindow = iframeRef.current.contentWindow;
29
+
30
+ if (!iframeWindow) {
31
+ return;
32
+ }
33
+
34
+ var sendMessage = function sendMessage() {
35
+ iframeWindow.postMessage(data, targetOrigin);
36
+ };
37
+
38
+ // If iframe is already loaded
39
+ if (iframeRef.current.contentDocument) {
40
+ if (iframeRef.current.contentDocument.readyState === 'complete') {
41
+ sendMessage();
42
+ }
43
+ } else {
44
+ // Wait for iframe to load
45
+ iframeRef.current.addEventListener('load', sendMessage);
46
+ }
47
+
48
+ return function () {
49
+ if (!iframeRef.current) return;
50
+ iframeRef.current.removeEventListener('load', sendMessage);
51
+ };
52
+ }, [iframeRef, data, targetOrigin]);
53
+ }
54
+
10
55
  var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
11
56
  return typeof obj;
12
57
  } : function (obj) {
@@ -105,8 +150,18 @@ function QurealiFrame(_ref) {
105
150
  _ref$style = _ref.style,
106
151
  style = _ref$style === undefined ? {} : _ref$style,
107
152
  _ref$is_local = _ref.is_local,
108
- is_local = _ref$is_local === undefined ? false : _ref$is_local;
153
+ is_local = _ref$is_local === undefined ? false : _ref$is_local,
154
+ _ref$section_list = _ref.section_list,
155
+ section_list = _ref$section_list === undefined ? [] : _ref$section_list;
109
156
 
157
+ var iframeRef = React.useRef(null);
158
+
159
+ useIframeMessenger(iframeRef, {
160
+ message_type: "SET_SECTION_LIST",
161
+ data: {
162
+ section_list: section_list
163
+ }
164
+ });
110
165
 
111
166
  var prefix = "ts";
112
167
  if (creation_type === "document") {
@@ -127,6 +182,7 @@ function QurealiFrame(_ref) {
127
182
  React.Fragment,
128
183
  null,
129
184
  React__default.createElement("iframe", {
185
+ ref: iframeRef,
130
186
  id: "qureal_iframe",
131
187
  title: "Qureal"
132
188
  // src={`http://localhost:3201/embed/${creation_slug}`}
@@ -330,7 +386,8 @@ function QurealViewer(_ref) {
330
386
  type: type,
331
387
  creation_type: creation_type,
332
388
  style: style,
333
- is_local: is_local
389
+ is_local: is_local,
390
+ section_list: section_list
334
391
  });
335
392
  }
336
393
 
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 = {}, is_local = false }) {\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 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={`${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 />\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","is_local","prefix","base_url","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) return;\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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qureal-editor",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "description": "Official Qureal React components",
5
5
  "author": "shivampip",
6
6
  "license": "MIT",