qureal-editor 1.0.44 → 1.0.46
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 +22 -56
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +21 -55
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1,49 +1,4 @@
|
|
|
1
|
-
import 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
|
-
}
|
|
1
|
+
import React, { Fragment, useEffect, useRef, useState } from 'react';
|
|
47
2
|
|
|
48
3
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
|
|
49
4
|
return typeof obj;
|
|
@@ -132,6 +87,9 @@ var slicedToArray = function () {
|
|
|
132
87
|
};
|
|
133
88
|
}();
|
|
134
89
|
|
|
90
|
+
// import { useIframeMessenger } from "./useIFrameMessanger";
|
|
91
|
+
|
|
92
|
+
|
|
135
93
|
function QurealiFrame(_ref) {
|
|
136
94
|
var slug = _ref.slug,
|
|
137
95
|
preview = _ref.preview,
|
|
@@ -145,16 +103,17 @@ function QurealiFrame(_ref) {
|
|
|
145
103
|
_ref$is_local = _ref.is_local,
|
|
146
104
|
is_local = _ref$is_local === undefined ? false : _ref$is_local,
|
|
147
105
|
_ref$section_list = _ref.section_list,
|
|
148
|
-
|
|
106
|
+
_ref$onIFrameLoad = _ref.onIFrameLoad,
|
|
107
|
+
onIFrameLoad = _ref$onIFrameLoad === undefined ? function () {} : _ref$onIFrameLoad;
|
|
149
108
|
|
|
150
109
|
var iframeRef = useRef(null);
|
|
151
110
|
|
|
152
|
-
useIframeMessenger(iframeRef, {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
});
|
|
111
|
+
// useIframeMessenger(iframeRef, {
|
|
112
|
+
// message_type: "SET_SECTION_LIST",
|
|
113
|
+
// data: {
|
|
114
|
+
// section_list: section_list
|
|
115
|
+
// }
|
|
116
|
+
// });
|
|
158
117
|
|
|
159
118
|
var prefix = "ts";
|
|
160
119
|
if (creation_type === "document") {
|
|
@@ -188,7 +147,8 @@ function QurealiFrame(_ref) {
|
|
|
188
147
|
outline: "none",
|
|
189
148
|
border: "1px solid #777"
|
|
190
149
|
}, style),
|
|
191
|
-
allow: "web-share"
|
|
150
|
+
allow: "web-share",
|
|
151
|
+
onLoad: onIFrameLoad
|
|
192
152
|
})
|
|
193
153
|
);
|
|
194
154
|
}
|
|
@@ -348,7 +308,10 @@ function QurealViewer(_ref) {
|
|
|
348
308
|
// if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === "object") {
|
|
349
309
|
switch (ev.data.event_type) {
|
|
350
310
|
case "WHOAMI":
|
|
351
|
-
onInit(
|
|
311
|
+
onInit({
|
|
312
|
+
success: true,
|
|
313
|
+
data: ev.data.data
|
|
314
|
+
});
|
|
352
315
|
break;
|
|
353
316
|
case "STATUS_UPDATE":
|
|
354
317
|
onStatusUpdate(ev.data.data);
|
|
@@ -380,7 +343,10 @@ function QurealViewer(_ref) {
|
|
|
380
343
|
creation_type: creation_type,
|
|
381
344
|
style: style,
|
|
382
345
|
is_local: is_local,
|
|
383
|
-
section_list: section_list
|
|
346
|
+
section_list: section_list,
|
|
347
|
+
onIFrameLoad: function onIFrameLoad() {
|
|
348
|
+
return onInit({ success: true });
|
|
349
|
+
}
|
|
384
350
|
});
|
|
385
351
|
}
|
|
386
352
|
|
package/dist/index.es.js.map
CHANGED
|
@@ -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) 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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"}
|
|
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// import { useIframeMessenger } from \"./useIFrameMessanger\";\n\n\nfunction QurealiFrame({ slug, preview, query, type = \"creation\", creation_type = \"singlepage\", style = {}, is_local = false, section_list = [], onIFrameLoad = () => { } }) {\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 onLoad={onIFrameLoad}\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({\n success: true,\n data: ev.data.data\n });\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 onIFrameLoad={() => onInit({ success: true })}\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","section_list","onIFrameLoad","iframeRef","useRef","prefix","base_url","React","memo","data","navigator","share","canShare","error","QurealViewer","prefill","onFormSubmit","actionRef","organization","person","background","fit","onInit","onStatusUpdate","sendToIFrame","msg","log","qureal_element","document","getElementById","qureal_window","contentWindow","postMessage","includes","handler","ev","event_type","addEventListener","window","removeEventListener","queryfy","success","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,51 +7,6 @@ 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
|
-
|
|
55
10
|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
|
|
56
11
|
return typeof obj;
|
|
57
12
|
} : function (obj) {
|
|
@@ -139,6 +94,9 @@ var slicedToArray = function () {
|
|
|
139
94
|
};
|
|
140
95
|
}();
|
|
141
96
|
|
|
97
|
+
// import { useIframeMessenger } from "./useIFrameMessanger";
|
|
98
|
+
|
|
99
|
+
|
|
142
100
|
function QurealiFrame(_ref) {
|
|
143
101
|
var slug = _ref.slug,
|
|
144
102
|
preview = _ref.preview,
|
|
@@ -152,16 +110,17 @@ function QurealiFrame(_ref) {
|
|
|
152
110
|
_ref$is_local = _ref.is_local,
|
|
153
111
|
is_local = _ref$is_local === undefined ? false : _ref$is_local,
|
|
154
112
|
_ref$section_list = _ref.section_list,
|
|
155
|
-
|
|
113
|
+
_ref$onIFrameLoad = _ref.onIFrameLoad,
|
|
114
|
+
onIFrameLoad = _ref$onIFrameLoad === undefined ? function () {} : _ref$onIFrameLoad;
|
|
156
115
|
|
|
157
116
|
var iframeRef = React.useRef(null);
|
|
158
117
|
|
|
159
|
-
useIframeMessenger(iframeRef, {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
});
|
|
118
|
+
// useIframeMessenger(iframeRef, {
|
|
119
|
+
// message_type: "SET_SECTION_LIST",
|
|
120
|
+
// data: {
|
|
121
|
+
// section_list: section_list
|
|
122
|
+
// }
|
|
123
|
+
// });
|
|
165
124
|
|
|
166
125
|
var prefix = "ts";
|
|
167
126
|
if (creation_type === "document") {
|
|
@@ -195,7 +154,8 @@ function QurealiFrame(_ref) {
|
|
|
195
154
|
outline: "none",
|
|
196
155
|
border: "1px solid #777"
|
|
197
156
|
}, style),
|
|
198
|
-
allow: "web-share"
|
|
157
|
+
allow: "web-share",
|
|
158
|
+
onLoad: onIFrameLoad
|
|
199
159
|
})
|
|
200
160
|
);
|
|
201
161
|
}
|
|
@@ -355,7 +315,10 @@ function QurealViewer(_ref) {
|
|
|
355
315
|
// if (ALLOWED_ORIGINS.includes(ev.origin) && typeof ev.data === "object") {
|
|
356
316
|
switch (ev.data.event_type) {
|
|
357
317
|
case "WHOAMI":
|
|
358
|
-
onInit(
|
|
318
|
+
onInit({
|
|
319
|
+
success: true,
|
|
320
|
+
data: ev.data.data
|
|
321
|
+
});
|
|
359
322
|
break;
|
|
360
323
|
case "STATUS_UPDATE":
|
|
361
324
|
onStatusUpdate(ev.data.data);
|
|
@@ -387,7 +350,10 @@ function QurealViewer(_ref) {
|
|
|
387
350
|
creation_type: creation_type,
|
|
388
351
|
style: style,
|
|
389
352
|
is_local: is_local,
|
|
390
|
-
section_list: section_list
|
|
353
|
+
section_list: section_list,
|
|
354
|
+
onIFrameLoad: function onIFrameLoad() {
|
|
355
|
+
return onInit({ success: true });
|
|
356
|
+
}
|
|
391
357
|
});
|
|
392
358
|
}
|
|
393
359
|
|
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) 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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"}
|
|
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// import { useIframeMessenger } from \"./useIFrameMessanger\";\n\n\nfunction QurealiFrame({ slug, preview, query, type = \"creation\", creation_type = \"singlepage\", style = {}, is_local = false, section_list = [], onIFrameLoad = () => { } }) {\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 onLoad={onIFrameLoad}\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({\n success: true,\n data: ev.data.data\n });\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 onIFrameLoad={() => onInit({ success: true })}\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","section_list","onIFrameLoad","iframeRef","useRef","prefix","base_url","React","memo","data","navigator","share","canShare","error","QurealViewer","prefill","onFormSubmit","actionRef","organization","person","background","fit","onInit","onStatusUpdate","sendToIFrame","msg","log","qureal_element","document","getElementById","qureal_window","contentWindow","postMessage","includes","handler","ev","event_type","addEventListener","window","removeEventListener","queryfy","success","obj","buildQuery","Object","keys","map","value","key","prefixedKey","join","useQurealActions","useState","setActionRef","download","QurealCollection","collection_id","query_string"],"mappings":"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"}
|