@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.
Files changed (3) hide show
  1. package/index.js +11 -34
  2. package/index.js.map +1 -1
  3. 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-beta15";
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("0px");
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) {