@doenet/doenetml-iframe 0.7.0-beta15 → 0.7.0-beta16
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/index.js +11 -34
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,35 +1,6 @@
|
|
|
1
1
|
import * as React__default from "react";
|
|
2
2
|
import React__default__default, { createContext, useLayoutEffect, useEffect, useMemo, useCallback, useRef, useState, useContext, isValidElement } from "react";
|
|
3
3
|
import require$$2, { createPortal } from "react-dom";
|
|
4
|
-
function watchForResize(ref, getHeight, setHeight) {
|
|
5
|
-
const iframe = ref.current?.contentWindow?.document?.body?.parentElement;
|
|
6
|
-
if (iframe) {
|
|
7
|
-
setHeight(iframe.scrollHeight + "px");
|
|
8
|
-
}
|
|
9
|
-
const updateHeight = () => {
|
|
10
|
-
const iframe2 = ref.current?.contentWindow?.document?.body?.parentElement;
|
|
11
|
-
if (!iframe2) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
const newHeight = iframe2.scrollHeight + "px";
|
|
15
|
-
if (newHeight !== getHeight()) {
|
|
16
|
-
setHeight(newHeight);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
const observer = new MutationObserver(updateHeight);
|
|
20
|
-
if (iframe) {
|
|
21
|
-
observer.observe(iframe, {
|
|
22
|
-
attributes: true,
|
|
23
|
-
childList: true,
|
|
24
|
-
subtree: true
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
const interval = setInterval(updateHeight, 200);
|
|
28
|
-
return () => {
|
|
29
|
-
observer.disconnect();
|
|
30
|
-
clearInterval(interval);
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
4
|
const proxyMarker = Symbol("Comlink.proxy");
|
|
34
5
|
const createEndpoint = Symbol("Comlink.endpoint");
|
|
35
6
|
const releaseProxy = Symbol("Comlink.releaseProxy");
|
|
@@ -23925,7 +23896,7 @@ function createHtmlForDoenetViewer(id2, doenetML, doenetViewerProps, standaloneU
|
|
|
23925
23896
|
// It assumes that viewerId, doenetViewerProps, doenetViewerPropsSpecified, and ComlinkViewer are defined in the global scope.
|
|
23926
23897
|
${viewerIframeJsSource}
|
|
23927
23898
|
<\/script>
|
|
23928
|
-
<div id="root" data-doenet-message-parent="true">
|
|
23899
|
+
<div id="root" data-doenet-message-parent="true" data-doenet-send-resize-events="true">
|
|
23929
23900
|
<div class="doenet-loading" style="text-align:center">
|
|
23930
23901
|
<p><img src="https://www.doenet.org/Doenet_Logo_Frontpage.png"/></p>
|
|
23931
23902
|
<p>Waiting on the page to load...</p>
|
|
@@ -47317,7 +47288,7 @@ function ExternalVirtualKeyboard() {
|
|
|
47317
47288
|
}
|
|
47318
47289
|
);
|
|
47319
47290
|
}
|
|
47320
|
-
const version = "0.7.0-
|
|
47291
|
+
const version = "0.7.0-beta16";
|
|
47321
47292
|
const latestDoenetmlVersion = version;
|
|
47322
47293
|
function DoenetViewer({
|
|
47323
47294
|
doenetML,
|
|
@@ -47329,7 +47300,7 @@ function DoenetViewer({
|
|
|
47329
47300
|
}) {
|
|
47330
47301
|
const [id2, _2] = React__default__default.useState(() => Math.random().toString(36).slice(2));
|
|
47331
47302
|
const ref = React__default__default.useRef(null);
|
|
47332
|
-
const [height, setHeight] = React__default__default.useState("
|
|
47303
|
+
const [height, setHeight] = React__default__default.useState("500px");
|
|
47333
47304
|
const [inErrorState, setInErrorState] = React__default__default.useState(null);
|
|
47334
47305
|
const [ignoreDetectedVersion, setIgnoreDetectedVersion] = React__default__default.useState(false);
|
|
47335
47306
|
let standaloneUrl, cssUrl;
|
|
@@ -47363,6 +47334,14 @@ function DoenetViewer({
|
|
|
47363
47334
|
ref.current?.contentWindow?.postMessage(event.data);
|
|
47364
47335
|
return;
|
|
47365
47336
|
}
|
|
47337
|
+
if (event.source !== ref.current?.contentWindow) {
|
|
47338
|
+
return;
|
|
47339
|
+
}
|
|
47340
|
+
if (event.data.subject === "lti.frameResize") {
|
|
47341
|
+
if (event.data.height !== void 0) {
|
|
47342
|
+
setHeight(event.data.height + "px");
|
|
47343
|
+
}
|
|
47344
|
+
}
|
|
47366
47345
|
if (event.data?.origin !== id2) {
|
|
47367
47346
|
return;
|
|
47368
47347
|
}
|
|
@@ -47400,10 +47379,8 @@ function DoenetViewer({
|
|
|
47400
47379
|
if (ref.current) {
|
|
47401
47380
|
window.addEventListener("message", listener);
|
|
47402
47381
|
}
|
|
47403
|
-
const clearResize = watchForResize(ref, () => height, setHeight);
|
|
47404
47382
|
return () => {
|
|
47405
47383
|
window.removeEventListener("message", listener);
|
|
47406
|
-
clearResize();
|
|
47407
47384
|
};
|
|
47408
47385
|
}, []);
|
|
47409
47386
|
if (inErrorState) {
|