qureal-editor 1.0.43 → 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
@@ -8,6 +8,8 @@ function useIframeMessenger(_ref) {
8
8
 
9
9
  useEffect(function () {
10
10
 
11
+ if (!iframeRef) return;
12
+
11
13
  if (!iframeRef.current) {
12
14
  return;
13
15
  }
@@ -1 +1 @@
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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"}
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
@@ -15,6 +15,8 @@ function useIframeMessenger(_ref) {
15
15
 
16
16
  React.useEffect(function () {
17
17
 
18
+ if (!iframeRef) return;
19
+
18
20
  if (!iframeRef.current) {
19
21
  return;
20
22
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
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":"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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.43",
3
+ "version": "1.0.44",
4
4
  "description": "Official Qureal React components",
5
5
  "author": "shivampip",
6
6
  "license": "MIT",