@pie-element/extended-text-entry 16.1.0 → 16.1.1-next.20261016161500

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.
@@ -2616,7 +2616,7 @@ var mr = class extends V.Component {
2616
2616
  }
2617
2617
  }, Br = Object.freeze({
2618
2618
  name: "@pie-element/extended-text-entry",
2619
- version: "16.1.0"
2619
+ version: "16.1.1-next.20261016161500"
2620
2620
  });
2621
2621
  //#endregion
2622
2622
  export { zr as default, Br as piePackage };
@@ -182,7 +182,7 @@ var u = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), d =
182
182
  }), n;
183
183
  }, f = Object.freeze({
184
184
  name: "@pie-element/extended-text-entry",
185
- version: "16.1.0"
185
+ version: "16.1.1-next.20261016161500"
186
186
  });
187
187
  //#endregion
188
188
  export { o as createDefaultModel, c as model, s as normalize, l as outcome, f as piePackage, d as validate };
@@ -1,7 +1,7 @@
1
1
  import { i as e } from "../rolldown-runtime-CWhphoD1.js";
2
2
  import { L as t, b as n, y as r } from "../dist-Bl70Zanm.js";
3
3
  import { t as i } from "../browser-CcvjX8VA.js";
4
- import { t as a } from "../main-CyfTLXxG.js";
4
+ import { t as a } from "../main-DUBwjJQH.js";
5
5
  import o from "react";
6
6
  import { createRoot as s } from "react-dom/client";
7
7
  //#region ../../shared/player-events/dist/index.js
@@ -291,7 +291,7 @@ var R = class extends HTMLElement {
291
291
  }
292
292
  }, z = Object.freeze({
293
293
  name: "@pie-element/extended-text-entry",
294
- version: "16.1.0"
294
+ version: "16.1.1-next.20261016161500"
295
295
  });
296
296
  //#endregion
297
297
  export { R as default, L as isComplete, z as piePackage, I as textContent };
@@ -2616,7 +2616,7 @@ var mr = class extends V.Component {
2616
2616
  }
2617
2617
  }, Br = Object.freeze({
2618
2618
  name: "@pie-element/extended-text-entry",
2619
- version: "16.1.0"
2619
+ version: "16.1.1-next.20261016161500"
2620
2620
  });
2621
2621
  //#endregion
2622
2622
  export { zr as default, Br as piePackage };
@@ -182,7 +182,7 @@ var u = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), d =
182
182
  }), n;
183
183
  }, f = Object.freeze({
184
184
  name: "@pie-element/extended-text-entry",
185
- version: "16.1.0"
185
+ version: "16.1.1-next.20261016161500"
186
186
  });
187
187
  //#endregion
188
188
  export { o as createDefaultModel, c as model, s as normalize, l as outcome, f as piePackage, d as validate };
@@ -1,7 +1,7 @@
1
1
  import { a as e } from "../rolldown-runtime-CHQKHQ89.js";
2
2
  import { L as t, b as n, y as r } from "../dist-DUB8o_9Z.js";
3
3
  import { t as i } from "../browser-BfhCkXup.js";
4
- import { t as a } from "../main-CaTO455C.js";
4
+ import { t as a } from "../main-CzUVBN7Z.js";
5
5
  import o from "react";
6
6
  import { createRoot as s } from "react-dom/client";
7
7
  //#region ../../shared/player-events/dist/index.js
@@ -291,7 +291,7 @@ var R = class extends HTMLElement {
291
291
  }
292
292
  }, z = Object.freeze({
293
293
  name: "@pie-element/extended-text-entry",
294
- version: "16.1.0"
294
+ version: "16.1.1-next.20261016161500"
295
295
  });
296
296
  //#endregion
297
297
  export { R as default, L as isComplete, z as piePackage, I as textContent };
@@ -134,7 +134,7 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
134
134
  backgroundColor: "rgb(255, 204, 238) !important",
135
135
  color: e.palette.text.primary
136
136
  } }
137
- })), L = class extends v.Component {
137
+ })), te = class extends v.Component {
138
138
  static propTypes = {
139
139
  anchorEl: x.default.object,
140
140
  open: x.default.bool,
@@ -220,7 +220,7 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
220
220
  })
221
221
  });
222
222
  }
223
- }, te = a(i)({ "& .MuiPaper-root": {
223
+ }, ne = a(i)({ "& .MuiPaper-root": {
224
224
  overflowX: "unset",
225
225
  overflowY: "unset",
226
226
  marginTop: "-16px",
@@ -235,21 +235,21 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
235
235
  borderWidth: "7px",
236
236
  borderTopColor: n.borderDark()
237
237
  }
238
- } }), ne = a("div")(({ theme: e }) => ({
238
+ } }), re = a("div")(({ theme: e }) => ({
239
239
  width: "300px",
240
240
  overflow: "hidden",
241
241
  borderRadius: "4px",
242
242
  backgroundColor: n.v("pie")("background", n.defaults.WHITE),
243
243
  color: n.v("pie")("text", e.palette.text.primary),
244
244
  border: `2px solid ${n.borderDark()}`
245
- })), re = a("div")({
245
+ })), ie = a("div")({
246
246
  display: "flex",
247
247
  flexWrap: "wrap"
248
- }), ie = a("div")(() => ({
248
+ }), ae = a("div")(() => ({
249
249
  display: "flex",
250
250
  flexWrap: "wrap",
251
251
  borderTop: `2px solid ${n.border()}`
252
- })), R = a("div")(({ theme: e, variant: t }) => ({
252
+ })), L = a("div")(({ theme: e, variant: t }) => ({
253
253
  width: "22%",
254
254
  textAlign: "center",
255
255
  padding: "4px",
@@ -268,7 +268,7 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
268
268
  color: e.palette.text.primary,
269
269
  "&:hover": { filter: "brightness(85%)" }
270
270
  }
271
- })), ae = class extends v.Component {
271
+ })), oe = class extends v.Component {
272
272
  static propTypes = {
273
273
  anchorEl: x.default.object,
274
274
  open: x.default.bool,
@@ -282,7 +282,7 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
282
282
  };
283
283
  render() {
284
284
  let { anchorEl: e, annotations: t, isNewAnnotation: n, onAnnotate: r, onClose: i, onEdit: a, onDelete: o, onWrite: s, open: c } = this.props;
285
- return /* @__PURE__ */ y(te, {
285
+ return /* @__PURE__ */ y(ne, {
286
286
  anchorEl: e,
287
287
  open: c,
288
288
  onClose: i,
@@ -299,35 +299,35 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
299
299
  vertical: "bottom",
300
300
  horizontal: "center"
301
301
  },
302
- children: /* @__PURE__ */ b(ne, { children: [/* @__PURE__ */ y(re, { children: t.map((e, t) => /* @__PURE__ */ y(R, {
302
+ children: /* @__PURE__ */ b(re, { children: [/* @__PURE__ */ y(ie, { children: t.map((e, t) => /* @__PURE__ */ y(L, {
303
303
  variant: e.type,
304
304
  onClick: () => r(e),
305
305
  children: e.label
306
- }, `annotation-${t}`)) }), /* @__PURE__ */ b(ie, { children: [
307
- /* @__PURE__ */ y(R, {
306
+ }, `annotation-${t}`)) }), /* @__PURE__ */ b(ae, { children: [
307
+ /* @__PURE__ */ y(L, {
308
308
  onClick: i,
309
309
  children: "Cancel"
310
310
  }),
311
- /* @__PURE__ */ y(R, { style: { pointerEvents: "none" } }),
312
- n ? /* @__PURE__ */ b(v.Fragment, { children: [/* @__PURE__ */ y(R, {
311
+ /* @__PURE__ */ y(L, { style: { pointerEvents: "none" } }),
312
+ n ? /* @__PURE__ */ b(v.Fragment, { children: [/* @__PURE__ */ y(L, {
313
313
  variant: "positive",
314
314
  onClick: () => s("positive"),
315
315
  children: "Write"
316
- }), /* @__PURE__ */ y(R, {
316
+ }), /* @__PURE__ */ y(L, {
317
317
  variant: "negative",
318
318
  onClick: () => s("negative"),
319
319
  children: "Write"
320
- })] }) : /* @__PURE__ */ b(v.Fragment, { children: [/* @__PURE__ */ y(R, {
320
+ })] }) : /* @__PURE__ */ b(v.Fragment, { children: [/* @__PURE__ */ y(L, {
321
321
  onClick: o,
322
322
  children: "Delete"
323
- }), /* @__PURE__ */ y(R, {
323
+ }), /* @__PURE__ */ y(L, {
324
324
  onClick: a,
325
325
  children: "Edit"
326
326
  })] })
327
327
  ] })] })
328
328
  });
329
329
  }
330
- }, { translator: z } = h, B = a("div")({
330
+ }, { translator: R } = h, z = a("div")({
331
331
  padding: "10px 120px 10px 16px",
332
332
  backgroundColor: "rgba(0, 0, 0, 0.06)",
333
333
  border: "1px solid #ccc",
@@ -343,21 +343,21 @@ var x = /* @__PURE__ */ e(t(), 1), S = /* @__PURE__ */ e(_(), 1), C = (e, t, n)
343
343
  "-moz-user-select": "none",
344
344
  "-ms-user-select": "none"
345
345
  }
346
- }), V = a("div")({ width: "230px" }), H = a("div")({
346
+ }), B = a("div")({ width: "230px" }), V = a("div")({
347
347
  position: "relative",
348
348
  overflowX: "hidden",
349
349
  display: "flex"
350
- }), U = a(d)(({ theme: e }) => ({
350
+ }), H = a(d)(({ theme: e }) => ({
351
351
  paddingTop: e.spacing(2),
352
352
  marginBottom: e.spacing(2),
353
353
  marginTop: e.spacing(2),
354
354
  width: "100%"
355
- })), W = "\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n";
355
+ })), U = "\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n";
356
356
  if (!document.getElementById("annotation-editor-styles")) {
357
357
  let e = document.createElement("style");
358
- e.id = "annotation-editor-styles", e.textContent = W, document.head.appendChild(e);
358
+ e.id = "annotation-editor-styles", e.textContent = U, document.head.appendChild(e);
359
359
  }
360
- var G = class extends v.Component {
360
+ var W = 300, G = class extends v.Component {
361
361
  static propTypes = {
362
362
  text: x.default.string,
363
363
  comment: x.default.string,
@@ -396,7 +396,7 @@ var G = class extends v.Component {
396
396
  let i = D(r);
397
397
  this.createDOMAnnotation(i, e);
398
398
  }
399
- }), this.textRef && (this.adjustAnnotationsPosition(), this.textRef.addEventListener("scroll", this.adjustAnnotationsPosition));
399
+ }), this.textRef && (this.adjustAnnotationsPosition(), this.textRef.addEventListener("scroll", this.adjustAnnotationsPosition)), document.addEventListener("selectionchange", this.handleSelectionChange);
400
400
  }
401
401
  adjustAnnotationsPosition = () => {
402
402
  if (this.textRef && this.labelsRef) {
@@ -466,6 +466,14 @@ var G = class extends v.Component {
466
466
  }
467
467
  }
468
468
  };
469
+ handleSelectionChange = () => {
470
+ this.props.disabled || this.pointerType === "mouse" || (clearTimeout(this.selectionTimer), this.selectionTimer = setTimeout(() => {
471
+ !this.state.openedMenu && !this.state.openedEditor && this.handleSelection({ detail: 0 });
472
+ }, W));
473
+ };
474
+ handlePointerDown = (e) => {
475
+ this.pointerType = e.pointerType;
476
+ };
469
477
  deleteAnnotation = () => {
470
478
  let { annotations: e, onChange: t } = this.props, { selectedElems: n, labelElem: r, annotationIndex: i, annotation: a } = this.state;
471
479
  (j(a.label) ? this.labelsRef : n[0]).removeChild(r), k(n, this.textRef), e.splice(i, 1), t(e), this.handleClose();
@@ -549,23 +557,24 @@ var G = class extends v.Component {
549
557
  this.updateLabel(e, a), n.splice(i, 1, a), r(n);
550
558
  };
551
559
  componentWillUnmount() {
552
- this.textRef.removeEventListener("scroll", this.adjustAnnotationsPosition);
560
+ this.textRef.removeEventListener("scroll", this.adjustAnnotationsPosition), document.removeEventListener("selectionchange", this.handleSelectionChange), clearTimeout(this.selectionTimer);
553
561
  }
554
562
  render() {
555
- let { comment: e, customKeys: t, disabled: n, disabledMath: r, keypadMode: i, height: a, language: o, width: s, maxHeight: l, onCommentChange: d, predefinedAnnotations: f, text: p } = this.props, { anchorEl: m, annotation: h, openedMenu: g, openedEditor: _, selectionDetails: v } = this.state, x = m && (m.offsetTop ? m.offsetTop : m.offsetParent.offsetTop), S = this.textRef && x ? x - this.textRef.scrollTop - 8 : 0, C = z.t("extendedTextEntry.comment", { lng: o });
563
+ let { comment: e, customKeys: t, disabled: n, disabledMath: r, keypadMode: i, height: a, language: o, width: s, maxHeight: l, onCommentChange: d, predefinedAnnotations: f, text: p } = this.props, { anchorEl: m, annotation: h, openedMenu: g, openedEditor: _, selectionDetails: v } = this.state, x = m && (m.offsetTop ? m.offsetTop : m.offsetParent.offsetTop), S = this.textRef && x ? x - this.textRef.scrollTop - 8 : 0, C = R.t("extendedTextEntry.comment", { lng: o });
556
564
  return /* @__PURE__ */ b("div", { children: [
557
- /* @__PURE__ */ b(H, { children: [/* @__PURE__ */ y(B, {
565
+ /* @__PURE__ */ b(V, { children: [/* @__PURE__ */ y(z, {
558
566
  style: {
559
567
  width: s - 34,
560
568
  minHeight: a,
561
569
  maxHeight: l
562
570
  },
563
571
  ref: (e) => this.textRef = e,
572
+ onPointerDown: this.handlePointerDown,
564
573
  onMouseDown: n ? () => {} : A,
565
574
  onMouseUp: n ? () => {} : this.handleSelection,
566
575
  dangerouslySetInnerHTML: { __html: c(p) }
567
- }), /* @__PURE__ */ y(V, { ref: (e) => this.labelsRef = e })] }),
568
- /* @__PURE__ */ y(U, {
576
+ }), /* @__PURE__ */ y(B, { ref: (e) => this.labelsRef = e })] }),
577
+ /* @__PURE__ */ y(H, {
569
578
  label: C,
570
579
  children: /* @__PURE__ */ y(u, {
571
580
  className: "prompt",
@@ -589,7 +598,7 @@ var G = class extends v.Component {
589
598
  }
590
599
  })
591
600
  }),
592
- /* @__PURE__ */ y(ae, {
601
+ /* @__PURE__ */ y(oe, {
593
602
  anchorEl: m,
594
603
  open: g && !n,
595
604
  annotations: f,
@@ -600,7 +609,7 @@ var G = class extends v.Component {
600
609
  onWrite: this.addAnnotation,
601
610
  onAnnotate: this.handleMenuClick
602
611
  }),
603
- /* @__PURE__ */ y(L, {
612
+ /* @__PURE__ */ y(te, {
604
613
  anchorEl: this.textRef,
605
614
  open: _ && !n,
606
615
  offset: S,
@@ -622,26 +631,26 @@ function K(e) {
622
631
  function q(e, t) {
623
632
  return !e || K(e) ? e : K(e.default) ? e.default : t && K(e[t]) ? e[t] : t && K(e[t]?.default) ? e[t].default : e;
624
633
  }
625
- var J = l, Y = J.default, X = Y && typeof Y == "object" ? Y : J, oe = q(s, "UiLayout") || q(X.UiLayout, "UiLayout"), Z = q(f, "PreviewPrompt") || q(X.PreviewPrompt, "PreviewPrompt"), se = q(p, "Collapsible") || q(X.Collapsible, "Collapsible"), ce = q(r, "Feedback") || q(X.Feedback, "Feedback"), { translator: Q } = h, le = (0, S.default)("@pie-ui:extended-text-entry"), $ = a(oe)({
634
+ var J = l, Y = J.default, X = Y && typeof Y == "object" ? Y : J, se = q(s, "UiLayout") || q(X.UiLayout, "UiLayout"), Z = q(f, "PreviewPrompt") || q(X.PreviewPrompt, "PreviewPrompt"), ce = q(p, "Collapsible") || q(X.Collapsible, "Collapsible"), le = q(r, "Feedback") || q(X.Feedback, "Feedback"), { translator: Q } = h, $ = (0, S.default)("@pie-ui:extended-text-entry"), ue = a(se)({
626
635
  backgroundColor: n.background(),
627
636
  color: n.text()
628
- }), ue = a(g)(({ theme: e }) => ({
637
+ }), de = a(g)(({ theme: e }) => ({
629
638
  width: "100%",
630
639
  color: n.text(),
631
640
  marginBottom: e.spacing(2),
632
641
  fontSize: "inherit",
633
642
  display: "block"
634
- })), de = a("div")(({ theme: e }) => ({ marginBottom: e.spacing(2) })), fe = a(u)(({ theme: e }) => ({
643
+ })), fe = a("div")(({ theme: e }) => ({ marginBottom: e.spacing(2) })), pe = a(u)(({ theme: e }) => ({
635
644
  marginBottom: e.spacing(2),
636
645
  borderRadius: "4px"
637
- })), pe = a("h2")({
646
+ })), me = a("h2")({
638
647
  position: "absolute",
639
648
  left: "-10000px",
640
649
  top: "auto",
641
650
  width: "1px",
642
651
  height: "1px",
643
652
  overflow: "hidden"
644
- }), me = class extends v.Component {
653
+ }), he = class extends v.Component {
645
654
  static propTypes = {
646
655
  onValueChange: x.default.func.isRequired,
647
656
  onAnnotationsChange: x.default.func.isRequired,
@@ -657,26 +666,26 @@ var J = l, Y = J.default, X = Y && typeof Y == "object" ? Y : J, oe = q(s, "UiLa
657
666
  promptId = `ete-prompt-${Math.random().toString(36).slice(2, 10)}`;
658
667
  render() {
659
668
  let { model: e, session: t, idleSaveDelay: n, onAnnotationsChange: r, onCommentChange: i, onValueChange: a } = this.props, { animationsDisabled: o, annotatorMode: s, customKeys: c, dimensions: l, disabled: u, disabledAnnotator: d, equationEditor: f, extraCSSRules: p, feedback: m, mathInput: h, pasteFormattingDisabled: g, playersToolbarPosition: _, predefinedAnnotations: v, prompt: x, spanishInput: S, specialInput: C, spellCheckEnabled: w, teacherInstructions: T } = e, { annotations: E, comment: D, value: O } = t, { width: k, height: A } = l || {}, j = "40vh", M = { position: _ === "top" ? "top" : "bottom" };
660
- le("[render] disabled? ", u);
669
+ $("[render] disabled? ", u);
661
670
  let N = /* @__PURE__ */ y(Z, {
662
671
  defaultClassName: "teacher-instructions",
663
672
  prompt: T
664
673
  }), P = [];
665
- return S && P.push({ language: "spanish" }), C && P.push({ language: "special" }), /* @__PURE__ */ b($, {
674
+ return S && P.push({ language: "spanish" }), C && P.push({ language: "special" }), /* @__PURE__ */ b(ue, {
666
675
  extraCSSRules: p,
667
676
  ref: (e) => {
668
677
  this.containerRef = e;
669
678
  },
670
679
  children: [
671
- /* @__PURE__ */ y(pe, { children: Q.t("extendedTextEntry.constructedResponseQuestion", { lng: e.language }) }),
672
- T && /* @__PURE__ */ y(de, { children: o ? N : /* @__PURE__ */ y(se, {
680
+ /* @__PURE__ */ y(me, { children: Q.t("extendedTextEntry.constructedResponseQuestion", { lng: e.language }) }),
681
+ T && /* @__PURE__ */ y(fe, { children: o ? N : /* @__PURE__ */ y(ce, {
673
682
  labels: {
674
683
  hidden: Q.t("common:showTeacherInstructions", { lng: e.language }),
675
684
  visible: Q.t("common:hideTeacherInstructions", { lng: e.language })
676
685
  },
677
686
  children: N
678
687
  }) }),
679
- x && /* @__PURE__ */ y(ue, {
688
+ x && /* @__PURE__ */ y(de, {
680
689
  component: "span",
681
690
  id: this.promptId,
682
691
  children: /* @__PURE__ */ y(Z, {
@@ -699,7 +708,7 @@ var J = l, Y = J.default, X = Y && typeof Y == "object" ? Y : J, oe = q(s, "UiLa
699
708
  customKeys: c,
700
709
  keypadMode: f,
701
710
  language: e.language
702
- }) : /* @__PURE__ */ y(fe, {
711
+ }) : /* @__PURE__ */ y(pe, {
703
712
  className: "response-area-editor",
704
713
  onChange: a,
705
714
  idleSaveDelay: n,
@@ -736,7 +745,7 @@ var J = l, Y = J.default, X = Y && typeof Y == "object" ? Y : J, oe = q(s, "UiLa
736
745
  ariaLabel: Q.t("extendedTextEntry.response", { lng: e.language }),
737
746
  language: e.language
738
747
  }),
739
- m && /* @__PURE__ */ y(ce, {
748
+ m && /* @__PURE__ */ y(le, {
740
749
  correctness: "correct",
741
750
  feedback: m
742
751
  })
@@ -745,6 +754,6 @@ var J = l, Y = J.default, X = Y && typeof Y == "object" ? Y : J, oe = q(s, "UiLa
745
754
  }
746
755
  };
747
756
  //#endregion
748
- export { me as t };
757
+ export { he as t };
749
758
 
750
- //# sourceMappingURL=main-CaTO455C.js.map
759
+ //# sourceMappingURL=main-CzUVBN7Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-CzUVBN7Z.js","names":[],"sources":["../../../src/delivery/annotation/annotation-utils.ts","../../../src/delivery/annotation/freeform-editor.tsx","../../../src/delivery/annotation/annotation-menu.tsx","../../../src/delivery/annotation/annotation-editor.tsx","../../../src/delivery/main.tsx"],"sourcesContent":["// @ts-nocheck\n\n// returns DOM Nodes before the stopOffset\nconst getAllTextNodesBeforePosition = (node, stopOffset, nodeArray) => {\n const nodes = nodeArray ? nodeArray : [];\n const offset = nodes.reduce((acc, node) => acc + node.textContent.length, 0);\n let keepWalking = true;\n\n if (offset > stopOffset) {\n return false;\n }\n\n if (node) {\n // 3 = HTML DOM node value for text nodes\n if (node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {\n nodes.push(node);\n }\n\n node = node.firstChild;\n }\n\n while (node && keepWalking) {\n keepWalking = getAllTextNodesBeforePosition(node, stopOffset, nodes);\n node = node.nextSibling;\n }\n\n return nodes;\n};\n\n// returns DOM Nodes that overlap the start or end position\nexport const getDOMNodes = (startOffset, endOffset, rootNode) => {\n const textNodesToEnd = getAllTextNodesBeforePosition(rootNode, endOffset);\n const domNodes = [];\n let start = 0;\n\n textNodesToEnd.forEach((node) => {\n const end = start + node.textContent.length;\n\n [startOffset, endOffset].forEach((offset) => {\n if (start <= offset && offset < end) {\n domNodes.push({\n node,\n offset: offset - start,\n });\n }\n });\n\n start = end;\n });\n\n return domNodes;\n};\n\n// returns [ textNodes, text ]\n// textNodes = DOM Text Nodes between start range and end range node\n// text = plain text in range\nconst getTextNodesBetween = (range) => {\n const {\n commonAncestorContainer: rootNode,\n startContainer: startNode,\n endContainer: endNode,\n startOffset,\n endOffset,\n } = range;\n const textNodes = [];\n let pastStartNode = false;\n let reachedEndNode = false;\n let text = '';\n\n const getTextNodes = (node) => {\n const { nodeValue: value, childNodes } = node;\n\n if (node === startNode && node === endNode) {\n if (value) {\n text += value.substring(startOffset, endOffset);\n }\n\n pastStartNode = reachedEndNode = true;\n } else if (node === startNode) {\n if (value) {\n text += value.substring(startOffset);\n }\n\n pastStartNode = true;\n } else if (node === endNode) {\n if (value) {\n text += value.substring(0, endOffset);\n }\n\n reachedEndNode = true;\n } else if (node && node.nodeType === 3 && node.parentNode && !node.parentNode.hasAttribute('data-ann-id')) {\n // 3 = HTML DOM node value for text nodes\n if (value && pastStartNode && !reachedEndNode) {\n text += value;\n textNodes.push(node);\n }\n }\n\n childNodes.forEach((childNode) => {\n if (!reachedEndNode) {\n getTextNodes(childNode);\n } else {\n return;\n }\n });\n };\n\n getTextNodes(rootNode);\n\n return [textNodes, text];\n};\n\nconst surroundContent = (range) => {\n const wrapper = document.createElement('SPAN');\n\n range.surroundContents(wrapper);\n\n return wrapper;\n};\n\n// wrap each DOM Text Node in range into a span\nexport const wrapRange = (range) => {\n if (range.startContainer === range.endContainer) {\n return [surroundContent(range)];\n }\n\n const [nodesBetween] = getTextNodesBetween(range);\n\n // wrap the start node\n const startRange = document.createRange();\n\n startRange.selectNodeContents(range.startContainer);\n startRange.setStart(range.startContainer, range.startOffset);\n\n const startWrapper = surroundContent(startRange);\n\n // wrap the end node\n const endRange = document.createRange();\n\n endRange.selectNode(range.endContainer);\n endRange.setEnd(range.endContainer, range.endOffset);\n\n const endWrapper = surroundContent(endRange);\n\n // wrap the nodes between start and end nodes, if any\n const centerWrappers = nodesBetween.map((node) => {\n const wrapper = document.createElement('SPAN');\n\n node.parentNode.insertBefore(wrapper, node);\n wrapper.appendChild(node);\n\n return wrapper;\n });\n\n return [startWrapper, ...centerWrappers, endWrapper];\n};\n\n// returns text in range with start and end position in rootNode\nexport const getRangeDetails = (range, rootNode) => {\n const rangeBefore = document.createRange();\n\n rangeBefore.setStart(rootNode, 0);\n rangeBefore.setEnd(range.startContainer, range.startOffset);\n\n const [, text] = getTextNodesBetween(rangeBefore);\n const [, textSelected] = getTextNodesBetween(range);\n const start = text.length;\n const end = start + textSelected.length;\n\n return {\n quote: textSelected,\n start,\n end,\n };\n};\n\n// removes the annotation spans without changing the content inside\nexport const removeElemsWrapping = (elems, container) => {\n (elems || []).forEach((elem) => {\n const parent = elem.parentNode;\n const childNodes = elem.childNodes;\n const childNodesLength = childNodes.length;\n\n if (childNodesLength > 0) {\n for (let i = 0; i < childNodesLength; i++) {\n parent.insertBefore(childNodes[0], elem);\n }\n } else {\n parent.insertBefore(document.createTextNode(elem.textContent), elem);\n }\n\n parent.removeChild(elem);\n });\n\n container.normalize();\n};\n\n// also used in select-text\nexport const clearSelection = () => {\n if (document.getSelection) {\n // for all new browsers (IE9+, Chrome, Firefox)\n document.getSelection().removeAllRanges();\n document.getSelection().addRange(document.createRange());\n } else if (window.getSelection) {\n // equals with the document.getSelection (MSDN info)\n if (window.getSelection().removeAllRanges) {\n // for all new browsers (IE9+, Chrome, Firefox)\n window.getSelection().removeAllRanges();\n window.getSelection().addRange(document.createRange());\n } else if (window.getSelection().empty) {\n // Chrome supports this as well\n window.getSelection().empty();\n }\n } else if (document.selection) {\n // IE8-\n document.selection.empty();\n }\n};\n\n// check if annotation label contains line breaks or its length >= 20 characters\nexport const isSideLabel = (text) => text.length >= 20 || text.search(/\\n|\\r|\\r\\n/) !== -1;\n\nexport const getAnnotationElements = (id) => Array.from(document.querySelectorAll(`[data-id='${id}']`));\n\nexport const getLabelElement = (id) => document.querySelector(`[data-ann-id='${id}']`);\n\n/*\n * The rings either side of the freeform editor's type band. The band's colour is the\n * annotation's type, information with no text label, so it needs 3:1 against what bounds it\n * (WCAG 1.4.11). The rings meet the fixed annotation fills as well as the themed surface, so they\n * are a literal: under the dark preset `--pie-border-dark` is #9E9E9E, 2.18:1 against the green.\n * #757575 clears 3:1 against both fills, white, and the dark preset's background. It stays fixed\n * until the annotation colours themselves follow the theme.\n */\nexport const ANNOTATION_STROKE = '#757575';\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Popover, TextField } from '@mui/material';\nimport { styled } from '@mui/material/styles';\nimport { color, createUniqueId } from '@pie-lib/render-ui';\nimport { ANNOTATION_STROKE } from './annotation-utils.js';\n\nconst StyledPopover: any = styled(Popover)(({ annotationType }) => ({\n '& .MuiPaper-root': {\n overflowX: 'unset',\n overflowY: 'unset',\n marginLeft: '16px',\n '&::before': {\n position: 'absolute',\n right: '100%',\n top: '13px',\n border: 'solid transparent',\n content: '\"\"',\n height: 0,\n width: 0,\n pointerEvents: 'none',\n borderWidth: '7px',\n borderRightColor: color.border(),\n },\n ...(annotationType === 'negative' && {\n '&::before': {\n borderRightColor: 'rgb(255, 204, 238) !important',\n },\n }),\n ...(annotationType === 'positive' && {\n '&::before': {\n borderRightColor: 'rgb(153, 255, 153) !important',\n },\n }),\n },\n}));\n\n// See annotation-menu: surface and text follow the theme together, and the text field takes\n// the same text colour as the buttons. The type colour is as light as the white fill, so a\n// 1px ANNOTATION_STROKE ring runs along both of its edges; the inner ring is drawn over the\n// content so a hovered button cannot cover it.\nconst Wrapper: any = styled('div')(({ theme, annotationType }) => ({\n width: '200px',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: color.v('pie')('background', color.defaults.WHITE),\n color: color.v('pie')('text', theme.palette.text.primary),\n border: `4px solid ${color.border()}`,\n '& .MuiInputBase-root': {\n color: 'inherit',\n },\n ...((annotationType === 'negative' || annotationType === 'positive') && {\n position: 'relative',\n boxShadow: `0 0 0 1px ${ANNOTATION_STROKE}`,\n '&::after': {\n content: '\"\"',\n position: 'absolute',\n inset: 0,\n border: `1px solid ${ANNOTATION_STROKE}`,\n pointerEvents: 'none',\n },\n }),\n ...(annotationType === 'negative' && {\n borderColor: 'rgb(255, 204, 238) !important',\n }),\n ...(annotationType === 'positive' && {\n borderColor: 'rgb(153, 255, 153) !important',\n }),\n}));\n\nconst Holder: any = styled('div')(() => ({\n display: 'flex',\n flexWrap: 'wrap',\n borderTop: `2px solid ${color.border()}`,\n}));\n\n// The annotation fills stay light in every scheme, so text on them keeps the paper's dark text.\nconst Button: any = styled('div')(({ theme, variant, annotationType }) => ({\n flexGrow: 1,\n width: '28%',\n textAlign: 'center',\n padding: '4px',\n cursor: 'pointer',\n '&:not(:nth-child(3n))': {\n borderRight: `1px solid ${color.border()}`,\n },\n '&:hover': {\n backgroundColor: color.backgroundDark(),\n },\n ...(variant === 'positive' && {\n backgroundColor: 'rgb(153, 255, 153) !important',\n color: theme.palette.text.primary,\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'negative' && {\n backgroundColor: 'rgb(255, 204, 238) !important',\n color: theme.palette.text.primary,\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'typeChange' && annotationType === 'negative' && {\n '&:hover': {\n backgroundColor: 'rgb(153, 255, 153) !important',\n color: theme.palette.text.primary,\n },\n }),\n ...(variant === 'typeChange' && annotationType === 'positive' && {\n '&:hover': {\n backgroundColor: 'rgb(255, 204, 238) !important',\n color: theme.palette.text.primary,\n },\n }),\n}));\n\nclass FreeformEditor extends React.Component {\n static propTypes = {\n anchorEl: PropTypes.object,\n open: PropTypes.bool,\n offset: PropTypes.number,\n value: PropTypes.string,\n type: PropTypes.string,\n onClose: PropTypes.func,\n onDelete: PropTypes.func,\n onSave: PropTypes.func,\n onTypeChange: PropTypes.func,\n };\n\n constructor(props) {\n super(props);\n this.state = { value: props.value };\n this.editorId = createUniqueId('annotation-editor');\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n const { value } = nextProps;\n const { value: propsValue } = this.props;\n\n if (value !== propsValue) {\n this.setState({ value });\n }\n }\n\n onValueChange = (event) => this.setState({ value: event.target.value });\n\n handleSave: any = () => {\n const { value: oldValue, onSave, onClose, onDelete } = this.props;\n const { value } = this.state;\n\n if (value === '') {\n onDelete();\n }\n\n if (oldValue !== value) {\n onSave(oldValue, value);\n }\n\n this.setState({ value: '' });\n onClose();\n };\n\n handleTypeChange: any = () => {\n const { onTypeChange, onDelete } = this.props;\n const { value } = this.state;\n\n if (value === '') {\n onDelete();\n } else {\n onTypeChange(value);\n }\n\n this.setState({ value: '' });\n };\n\n render() {\n const { anchorEl, offset, onDelete, open, type } = this.props;\n const { value } = this.state;\n\n return (\n <StyledPopover\n anchorEl={anchorEl}\n elevation={2}\n open={open}\n onClose={this.handleSave}\n annotationType={type}\n style={{ marginTop: `${offset}px`, transition: 'margin-top 2s ease-out' }}\n transitionDuration={{ enter: 225, exit: 195 }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left',\n }}\n >\n <Wrapper annotationType={type}>\n <TextField\n id={this.editorId}\n style={{\n padding: '2px 5px',\n width: '95%',\n }}\n autoFocus\n multiline\n rows={1}\n maxRows={4}\n value={value}\n onChange={this.onValueChange}\n InputProps={{ disableUnderline: true }}\n />\n <Holder>\n <Button onClick={onDelete}>\n Delete\n </Button>\n <Button variant=\"typeChange\" annotationType={type} onClick={this.handleTypeChange}>\n {type === 'negative' ? 'Green' : 'Pink'}\n </Button>\n <Button onClick={this.handleSave}>\n Save\n </Button>\n </Holder>\n </Wrapper>\n </StyledPopover>\n );\n }\n}\n\nexport default FreeformEditor;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\nimport { Popover } from '@mui/material';\nimport { color } from '@pie-lib/render-ui';\n\nconst StyledPopover: any = styled(Popover)({\n '& .MuiPaper-root': {\n overflowX: 'unset',\n overflowY: 'unset',\n marginTop: '-16px',\n '&::after': {\n position: 'absolute',\n left: 'calc(50% - 7px)',\n border: 'solid transparent',\n content: '\"\"',\n height: 0,\n width: 0,\n pointerEvents: 'none',\n borderWidth: '7px',\n borderTopColor: color.borderDark(),\n },\n },\n});\n\n/*\n * Surface and text move together. `--pie-background` and `--pie-text` follow both the colour\n * schemes and the dark theme; `--pie-white` stays white under the dark theme, and the popover\n * paper's own text stays near-black in every scheme. Without a theme the fallbacks are the\n * white and the paper text the menu has always had. The outline and pointer bound the menu\n * against its surface and the page, so they follow the theme's `--pie-border-dark`, which clears\n * 3:1 against both in every scheme. The cells are text-labelled buttons, so WCAG 1.4.11 needs no\n * contrasting boundary between the outline and the annotation fills.\n */\nconst MainWrapper: any = styled('div')(({ theme }) => ({\n width: '300px',\n overflow: 'hidden',\n borderRadius: '4px',\n backgroundColor: color.v('pie')('background', color.defaults.WHITE),\n color: color.v('pie')('text', theme.palette.text.primary),\n border: `2px solid ${color.borderDark()}`,\n}));\n\nconst AnnotationsWrapper: any = styled('div')({\n display: 'flex',\n flexWrap: 'wrap',\n});\n\nconst ControlsWrapper: any = styled('div')(() => ({\n display: 'flex',\n flexWrap: 'wrap',\n borderTop: `2px solid ${color.border()}`,\n}));\n\n// The annotation fills stay light in every scheme, so their labels keep the paper's dark text.\nconst Button: any = styled('div')(({ theme, variant }) => ({\n width: '22%',\n textAlign: 'center',\n padding: '4px',\n cursor: 'pointer',\n borderBottom: `1px solid ${color.border()}`,\n '&:not(:nth-child(4n))': {\n borderRight: `1px solid ${color.border()}`,\n },\n '&:nth-child(4n)': {\n flexGrow: 1,\n },\n '&:hover': {\n backgroundColor: color.backgroundDark(),\n },\n ...(variant === 'positive' && {\n backgroundColor: 'rgb(153, 255, 153) !important',\n color: theme.palette.text.primary,\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n ...(variant === 'negative' && {\n backgroundColor: 'rgb(255, 204, 238) !important',\n color: theme.palette.text.primary,\n '&:hover': {\n filter: 'brightness(85%)',\n },\n }),\n}));\n\nclass AnnotationMenu extends React.Component {\n static propTypes = {\n anchorEl: PropTypes.object,\n open: PropTypes.bool,\n annotations: PropTypes.array,\n isNewAnnotation: PropTypes.bool,\n onClose: PropTypes.func,\n onDelete: PropTypes.func,\n onEdit: PropTypes.func,\n onWrite: PropTypes.func,\n onAnnotate: PropTypes.func,\n };\n\n render() {\n const { anchorEl, annotations, isNewAnnotation, onAnnotate, onClose, onEdit, onDelete, onWrite, open } =\n this.props;\n\n return (\n <StyledPopover\n anchorEl={anchorEl}\n open={open}\n onClose={onClose}\n elevation={5}\n transitionDuration={{ enter: 225, exit: 195 }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'center',\n }}\n transformOrigin={{\n vertical: 'bottom',\n horizontal: 'center',\n }}\n >\n <MainWrapper>\n <AnnotationsWrapper>\n {annotations.map((annotation, index) => (\n <Button\n key={`annotation-${index}`}\n variant={annotation.type}\n onClick={() => onAnnotate(annotation)}\n >\n {annotation.label}\n </Button>\n ))}\n </AnnotationsWrapper>\n <ControlsWrapper>\n <Button onClick={onClose}>\n Cancel\n </Button>\n <Button style={{ pointerEvents: 'none' }} />\n {isNewAnnotation ? (\n <React.Fragment>\n <Button variant=\"positive\" onClick={() => onWrite('positive')}>\n Write\n </Button>\n <Button variant=\"negative\" onClick={() => onWrite('negative')}>\n Write\n </Button>\n </React.Fragment>\n ) : (\n <React.Fragment>\n <Button onClick={onDelete}>\n Delete\n </Button>\n <Button onClick={onEdit}>\n Edit\n </Button>\n </React.Fragment>\n )}\n </ControlsWrapper>\n </MainWrapper>\n </StyledPopover>\n );\n }\n}\n\nexport default AnnotationMenu;\n","// @ts-nocheck\n\nimport React from 'react';\nimport { styled } from '@mui/material/styles';\nimport PropTypes from 'prop-types';\n\nimport {\n clearSelection,\n isSideLabel,\n getAnnotationElements,\n getDOMNodes,\n getLabelElement,\n getRangeDetails,\n removeElemsWrapping,\n wrapRange,\n} from './annotation-utils.js';\nimport FreeformEditor from './freeform-editor.js';\nimport AnnotationMenu from './annotation-menu.js';\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { InputContainer } from '@pie-lib/config-ui';\nimport Translator from '@pie-lib/translator';\nimport { sanitizeModelHtml } from '@pie-element/shared-utils';\n\nconst { translator } = Translator;\n\nconst TextContainer: any = styled('div')({\n padding: '10px 120px 10px 16px',\n backgroundColor: 'rgba(0, 0, 0, 0.06)',\n border: '1px solid #ccc',\n borderRadius: '4px',\n overflowY: 'scroll',\n lineHeight: '36px',\n whiteSpace: 'pre-wrap',\n overflowWrap: 'break-word',\n '& p': {\n margin: 0,\n },\n '& span[data-latex]': {\n userSelect: 'none',\n '-webkit-user-select': 'none',\n '-moz-user-select': 'none',\n '-ms-user-select': 'none',\n },\n});\n\nconst LabelsContainer: any = styled('div')({\n width: '230px',\n});\n\nconst Wrapper: any = styled('div')({\n position: 'relative',\n overflowX: 'hidden',\n display: 'flex',\n});\n\nconst CommentContainer: any = styled(InputContainer)(({ theme }) => ({\n paddingTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n width: '100%',\n}));\n\n// Global styles for pseudo-elements that can't be applied inline\nconst globalStyles = `\n .sideAnnotation:before {\n position: absolute;\n right: var(--before-right, 100%);\n top: var(--before-top, 5px);\n border: solid transparent;\n content: \"\";\n height: 0;\n width: 0;\n pointer-events: none;\n border-width: var(--before-border-width, 7px);\n border-right-color: var(--before-border-color, rgb(153, 255, 153));\n }\n`;\n\n// Inject styles if not already injected\nif (!document.getElementById('annotation-editor-styles')) {\n const styleElement = document.createElement('style');\n styleElement.id = 'annotation-editor-styles';\n styleElement.textContent = globalStyles;\n document.head.appendChild(styleElement);\n}\n\nconst SELECTION_SETTLE_MS = 300;\n\nclass AnnotationEditor extends React.Component {\n static propTypes = {\n text: PropTypes.string,\n comment: PropTypes.string,\n annotations: PropTypes.array,\n predefinedAnnotations: PropTypes.array,\n onChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n width: PropTypes.number,\n height: PropTypes.number,\n maxHeight: PropTypes.string,\n disabled: PropTypes.bool,\n disabledMath: PropTypes.bool,\n customKeys: PropTypes.array,\n keypadMode: PropTypes.string,\n language: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.state = {\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotation: null,\n annotationIndex: null,\n };\n }\n\n componentDidMount() {\n const { annotations, text } = this.props;\n\n if (text) {\n annotations.forEach((annotation) => {\n const [domStart, domEnd] = getDOMNodes(annotation.start, annotation.end, this.textRef);\n\n if (domStart && domEnd) {\n const range = document.createRange();\n\n range.setStart(domStart.node, domStart.offset);\n range.setEnd(domEnd.node, domEnd.offset);\n\n const spans = wrapRange(range);\n\n this.createDOMAnnotation(spans, annotation);\n }\n });\n }\n\n if (this.textRef) {\n this.adjustAnnotationsPosition();\n this.textRef.addEventListener('scroll', this.adjustAnnotationsPosition);\n }\n\n document.addEventListener('selectionchange', this.handleSelectionChange);\n }\n\n adjustAnnotationsPosition: any = () => {\n if (this.textRef && this.labelsRef) {\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n Array.from(this.labelsRef.children).forEach((label) => {\n const spans = getAnnotationElements(label.dataset.annId);\n const spanOffset = spans[0].offsetTop ? spans[0].offsetTop : spans[0].offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop - 6;\n\n label.style.top = `${top}px`;\n label.style.left = `${left}px`;\n });\n }\n };\n\n handleClick: any = (event) => {\n const { annotations } = this.props;\n const { selectionDetails } = this.state;\n\n if (selectionDetails) {\n // new selection was made inside another annotation and should not update that annotation\n return;\n }\n\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const annotationIndex = annotations.findIndex((annotation) => annotation.id === annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n if (isSideLabel) {\n labelElem.style.zIndex = '10';\n }\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: !!id || (!!annId && !isSideLabel), // true if the annotation or the label was clicked\n openedEditor: !!annId && isSideLabel, // true if the side label was clicked\n selectedElems,\n labelElem,\n annotationIndex,\n annotation: annotations[annotationIndex],\n selectionDetails: null,\n });\n };\n\n handleHover: any = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '20';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.7)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.55)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(128, 255, 128)';\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 179, 230)';\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 179, 230)');\n }\n } else {\n labelElem.style.zIndex = '20';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 77, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(153, 0, 102)';\n }\n }\n };\n\n handleCancelHover: any = (event) => {\n const { id, annId } = event.target.dataset;\n const annotationId = id || annId;\n const selectedElems = getAnnotationElements(annotationId);\n const labelElem = getLabelElement(annotationId);\n const isSideLabel = labelElem.hasAttribute('data-freeform');\n\n selectedElems.forEach((elem) => {\n elem.style.zIndex = '';\n if (elem.classList.contains('positive')) {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (elem.classList.contains('negative')) {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n });\n\n if (isSideLabel) {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n labelElem.style.removeProperty('--before-border-color');\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n labelElem.style.removeProperty('--before-border-color');\n }\n } else {\n labelElem.style.zIndex = '';\n if (labelElem.classList.contains('positive')) {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (labelElem.classList.contains('negative')) {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n }\n };\n\n handleClose: any = (event) => {\n const { selectedElems, labelElem } = this.state;\n\n if (selectedElems.length && !selectedElems[0].hasAttribute('data-id')) {\n removeElemsWrapping(selectedElems, this.textRef);\n }\n\n if (labelElem) {\n labelElem.style.zIndex = '';\n }\n\n this.setState({\n anchorEl: null,\n openedMenu: false,\n openedEditor: false,\n selectedElems: [],\n labelElem: null,\n selectionDetails: null,\n annotationIndex: null,\n annotation: null,\n });\n\n clearSelection();\n };\n\n handleSelection: any = (event) => {\n const selection = window.getSelection();\n\n // prevent unwanted selections\n if (event.detail > 2) {\n clearSelection();\n return;\n }\n\n if (selection && selection.rangeCount > 0) {\n const selectedRange = selection.getRangeAt(0);\n const selectedText = selectedRange.toString();\n const isSelectionInside = this.textRef.contains(selectedRange.commonAncestorContainer);\n\n if (!selection.isCollapsed && selectedText !== '' && isSelectionInside) {\n const selectionDetails = getRangeDetails(selectedRange, this.textRef);\n const selectedElems = wrapRange(selectedRange);\n\n this.setState({\n anchorEl: selectedElems[0],\n openedMenu: true,\n selectedElems,\n selectionDetails,\n });\n }\n }\n };\n\n // A touch selection (long-press, then the selection handles) is a moved touch, which gets no\n // compatibility mouse events, so `onMouseUp` never runs. Read the selection once it settles instead.\n handleSelectionChange: any = () => {\n if (this.props.disabled || this.pointerType === 'mouse') {\n return;\n }\n\n clearTimeout(this.selectionTimer);\n this.selectionTimer = setTimeout(() => {\n if (!this.state.openedMenu && !this.state.openedEditor) {\n this.handleSelection({ detail: 0 });\n }\n }, SELECTION_SETTLE_MS);\n };\n\n handlePointerDown: any = (event) => {\n this.pointerType = event.pointerType;\n };\n\n deleteAnnotation: any = () => {\n const { annotations, onChange } = this.props;\n const { selectedElems, labelElem, annotationIndex, annotation } = this.state;\n const parentRef = isSideLabel(annotation.label) ? this.labelsRef : selectedElems[0];\n\n parentRef.removeChild(labelElem);\n removeElemsWrapping(selectedElems, this.textRef);\n annotations.splice(annotationIndex, 1);\n\n onChange(annotations);\n this.handleClose();\n };\n\n createDOMAnnotation: any = (elems, annotation) => {\n const { disabled } = this.props;\n const { id, label, type } = annotation;\n\n (elems || []).forEach((elem) => {\n elem.dataset.id = id;\n elem.className = `annotation ${type}`;\n // Apply annotation styles directly\n elem.style.position = 'relative';\n elem.style.cursor = 'pointer';\n if (type === 'positive') {\n elem.style.backgroundColor = 'rgb(51, 255, 51, 0.5)';\n } else if (type === 'negative') {\n elem.style.backgroundColor = 'rgba(255, 102, 204, 0.4)';\n }\n elem.onclick = !disabled && this.handleClick;\n elem.onmouseover = this.handleHover;\n elem.onmouseout = this.handleCancelHover;\n });\n\n const firstSpan = (elems && elems[0]) || {};\n const labelElem = document.createElement('SPAN');\n\n labelElem.dataset.annId = id;\n labelElem.innerHTML = sanitizeModelHtml(label);\n labelElem.onclick = !disabled && this.handleClick;\n labelElem.onmouseover = this.handleHover;\n labelElem.onmouseout = this.handleCancelHover;\n\n if (isSideLabel(label)) {\n const spanOffset = firstSpan.offsetTop ? firstSpan.offsetTop : firstSpan.offsetParent.offsetTop;\n const top = spanOffset - this.textRef.scrollTop;\n const left = this.textRef.offsetLeft + this.textRef.offsetWidth + 8;\n\n labelElem.dataset.freeform = true;\n labelElem.className = `sideAnnotation ${type}`;\n \n // Apply side annotation styles directly\n labelElem.style.position = 'absolute';\n labelElem.style.padding = '4px';\n labelElem.style.borderRadius = '4px';\n labelElem.style.marginLeft = '8px';\n labelElem.style.width = '180px';\n labelElem.style.whiteSpace = 'pre-wrap';\n labelElem.style.wordBreak = 'break-word';\n labelElem.style.border = '2px solid #ffffff';\n labelElem.style.fontSize = '14px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.top = `${top}px`;\n labelElem.style.left = `${left}px`;\n \n if (type === 'negative') {\n labelElem.style.backgroundColor = 'rgb(255, 204, 238)';\n } else if (type === 'positive') {\n labelElem.style.backgroundColor = 'rgb(153, 255, 153)';\n }\n \n // Add pseudo-element styles via CSS\n labelElem.style.setProperty('--before-border-width', '7px');\n labelElem.style.setProperty('--before-top', '5px');\n labelElem.style.setProperty('--before-right', '100%');\n if (type === 'negative') {\n labelElem.style.setProperty('--before-border-color', 'rgb(255, 204, 238)');\n } else if (type === 'positive') {\n labelElem.style.setProperty('--before-border-color', 'rgb(153, 255, 153)');\n }\n\n this.labelsRef.appendChild(labelElem);\n } else {\n labelElem.className = `annotationLabel ${type}`;\n \n // Apply annotation label styles directly\n labelElem.style.backgroundColor = 'rgb(242, 242, 242)';\n labelElem.style.padding = '2px';\n labelElem.style.position = 'absolute';\n labelElem.style.userSelect = 'none';\n labelElem.style.whiteSpace = 'nowrap';\n labelElem.style.top = '-10px';\n labelElem.style.left = '-2px';\n labelElem.style.fontSize = '12px';\n labelElem.style.fontStyle = 'normal';\n labelElem.style.fontWeight = 'normal';\n labelElem.style.lineHeight = '6px';\n labelElem.style.webkitUserSelect = 'none';\n labelElem.style.mozUserSelect = 'none';\n labelElem.style.msUserSelect = 'none';\n \n if (type === 'positive') {\n labelElem.style.color = 'rgb(0, 128, 0)';\n } else if (type === 'negative') {\n labelElem.style.color = 'rgb(204, 0, 136)';\n }\n \n firstSpan.appendChild(labelElem);\n }\n };\n\n createNewAnnotation: any = (label, type) => {\n const { selectedElems, selectionDetails } = this.state;\n const annotation = {\n id: [selectionDetails.start, selectionDetails.end, new Date().getTime()].join('-'),\n label,\n type,\n ...selectionDetails,\n };\n\n this.createDOMAnnotation(selectedElems, annotation);\n\n return annotation;\n };\n\n handleMenuClick: any = (newAnnotation) => {\n const { annotations, onChange } = this.props;\n const { annotation, annotationIndex } = this.state;\n const { type, text: label } = newAnnotation;\n\n if (annotation) {\n const updatedAnnotation = { ...annotation, label, type };\n const { type: oldType, label: oldLabel } = annotation;\n\n this.updateLabel(oldLabel, updatedAnnotation, type !== oldType && oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n } else {\n const newAnnotation = this.createNewAnnotation(label, type);\n\n annotations.push(newAnnotation);\n }\n\n onChange(annotations);\n this.handleClose();\n };\n\n editAnnotation: any = () => {\n this.setState({\n openedMenu: false,\n openedEditor: true,\n });\n };\n\n addAnnotation: any = (type) => {\n const { annotations, onChange } = this.props;\n const annotation = this.createNewAnnotation('', type);\n const labelElem = getLabelElement(annotation.id);\n\n annotations.push(annotation);\n\n this.setState({\n openedMenu: false,\n openedEditor: true,\n annotationIndex: annotations.length - 1,\n annotation,\n labelElem,\n });\n\n onChange(annotations);\n };\n\n updateLabel: any = (oldLabel, annotation, oldType) => {\n const { selectedElems, labelElem } = this.state;\n const { label, type } = annotation;\n\n if ((isSideLabel(label) && isSideLabel(oldLabel)) || (!isSideLabel(label) && !isSideLabel(oldLabel))) {\n labelElem.innerHTML = sanitizeModelHtml(label);\n\n if (oldType) {\n labelElem.classList.remove(oldType);\n labelElem.classList.add(type);\n\n selectedElems.forEach((elem) => {\n elem.classList.remove(oldType);\n elem.classList.add(type);\n });\n }\n } else if (isSideLabel(label) && !isSideLabel(oldLabel)) {\n selectedElems[0].removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n } else if (!isSideLabel(label) && isSideLabel(oldLabel)) {\n this.labelsRef.removeChild(labelElem);\n this.createDOMAnnotation(selectedElems, annotation);\n }\n };\n\n changeAnnotationType: any = (newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex, selectedElems } = this.state;\n const { type: oldType, label: oldLabel } = annotations[annotationIndex];\n const type = oldType === 'positive' ? 'negative' : 'positive';\n const updatedAnnotation = { ...annotations[annotationIndex], type, label: newLabel };\n\n selectedElems.forEach((span) => {\n span.classList.remove(oldType);\n span.classList.add(type);\n });\n\n this.updateLabel(oldLabel, updatedAnnotation, oldType);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n this.handleClose();\n };\n\n updateAnnotation: any = (oldLabel, newLabel) => {\n const { annotations, onChange } = this.props;\n const { annotationIndex } = this.state;\n const updatedAnnotation = { ...annotations[annotationIndex], label: newLabel };\n\n this.updateLabel(oldLabel, updatedAnnotation);\n annotations.splice(annotationIndex, 1, updatedAnnotation);\n\n onChange(annotations);\n };\n\n componentWillUnmount() {\n this.textRef.removeEventListener('scroll', this.adjustAnnotationsPosition);\n document.removeEventListener('selectionchange', this.handleSelectionChange);\n clearTimeout(this.selectionTimer);\n }\n\n render() {\n const {\n comment,\n customKeys,\n disabled,\n disabledMath,\n keypadMode,\n height,\n language,\n width,\n maxHeight,\n onCommentChange,\n predefinedAnnotations,\n text,\n } = this.props;\n const { anchorEl, annotation, openedMenu, openedEditor, selectionDetails } = this.state;\n\n const anchorOffset = anchorEl && (anchorEl.offsetTop ? anchorEl.offsetTop : anchorEl.offsetParent.offsetTop);\n const topOffset = this.textRef && anchorOffset ? anchorOffset - this.textRef.scrollTop - 8 : 0;\n const commentLabel = translator.t('extendedTextEntry.comment', { lng: language });\n\n return (\n <div>\n <Wrapper>\n <TextContainer\n style={{ width: width - 34, minHeight: height, maxHeight: maxHeight }}\n ref={(r) => (this.textRef = r)}\n onPointerDown={this.handlePointerDown}\n onMouseDown={!disabled ? clearSelection : () => {}}\n onMouseUp={!disabled ? this.handleSelection : () => {}}\n dangerouslySetInnerHTML={{ __html: sanitizeModelHtml(text) }}\n />\n <LabelsContainer ref={(r) => (this.labelsRef = r)} />\n </Wrapper>\n\n <CommentContainer label={commentLabel}>\n <EditableHtml\n className=\"prompt\"\n markup={comment || ''}\n onChange={onCommentChange}\n width={width && (width + 104).toString()}\n disabled={disabled}\n ariaLabel={commentLabel}\n language={language}\n pluginProps={{\n math: {\n disabled: disabledMath,\n customKeys: customKeys,\n keypadMode: keypadMode,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n h3: {\n disabled: true,\n },\n }}\n />\n </CommentContainer>\n\n <AnnotationMenu\n anchorEl={anchorEl}\n open={openedMenu && !disabled}\n annotations={predefinedAnnotations}\n isNewAnnotation={!!selectionDetails}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onEdit={this.editAnnotation}\n onWrite={this.addAnnotation}\n onAnnotate={this.handleMenuClick}\n />\n\n <FreeformEditor\n anchorEl={this.textRef}\n open={openedEditor && !disabled}\n offset={topOffset}\n value={(annotation && annotation.label) || ''}\n type={annotation && annotation.type}\n onClose={this.handleClose}\n onDelete={this.deleteAnnotation}\n onSave={this.updateAnnotation}\n onTypeChange={this.changeAnnotationType}\n />\n </div>\n );\n }\n}\n\nexport default AnnotationEditor;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\n\nimport Typography from '@mui/material/Typography';\nimport { styled } from '@mui/material/styles';\n\nimport EditableHtml from '@pie-lib/editable-html-tip-tap';\nimport { color, Feedback as FeedbackImport, Collapsible as CollapsibleImport, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nconst Feedback = unwrapReactInteropSymbol(FeedbackImport, 'Feedback') || unwrapReactInteropSymbol(renderUi.Feedback, 'Feedback');\nimport Translator from '@pie-lib/translator';\nimport AnnotationEditor from './annotation/annotation-editor.js';\n\nconst { translator } = Translator;\n\nconst log = debug('@pie-ui:extended-text-entry');\n\nconst MainContainer: any = styled(UiLayout)({\n backgroundColor: color.background(),\n color: color.text(),\n});\n\nconst StyledPrompt: any = styled(Typography)(({ theme }) => ({\n width: '100%',\n color: color.text(),\n marginBottom: theme.spacing(2),\n fontSize: 'inherit',\n display: 'block',\n}));\n\nconst TeacherInstructions: any = styled('div')(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nconst Editor: any = styled(EditableHtml)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n borderRadius: '4px',\n}));\n\nconst SrOnly: any = styled('h2')({\n position: 'absolute',\n left: '-10000px',\n top: 'auto',\n width: '1px',\n height: '1px',\n overflow: 'hidden',\n});\n\nexport class Main extends React.Component {\n static propTypes = {\n onValueChange: PropTypes.func.isRequired,\n onAnnotationsChange: PropTypes.func.isRequired,\n onCommentChange: PropTypes.func.isRequired,\n model: PropTypes.object,\n idleSaveDelay: PropTypes.number,\n session: PropTypes.shape({\n value: PropTypes.string,\n annotations: PropTypes.array,\n comment: PropTypes.string,\n }).isRequired,\n };\n\n // Random rather than a counter: two versions of this element on one page would each count from 1.\n promptId = `ete-prompt-${Math.random().toString(36).slice(2, 10)}`;\n\n // The editor calls back on commit points (blur, `done` transactions, an idle pause), and the\n // custom element writes the session synchronously and defers only its\n // `session-changed` dispatch. Coalescing belongs on that dispatch, where a\n // teardown can flush it; holding the value here instead left `.session` stale\n // and unreadable by any other layer, so the callbacks pass straight through.\n render() {\n const { model, session, idleSaveDelay, onAnnotationsChange, onCommentChange, onValueChange } = this.props;\n const {\n animationsDisabled,\n annotatorMode,\n customKeys,\n dimensions,\n disabled,\n disabledAnnotator,\n equationEditor,\n extraCSSRules,\n feedback,\n mathInput,\n pasteFormattingDisabled,\n playersToolbarPosition,\n predefinedAnnotations,\n prompt,\n spanishInput,\n specialInput,\n spellCheckEnabled,\n teacherInstructions,\n } = model;\n const { annotations, comment, value } = session;\n const { width, height } = dimensions || {};\n const maxHeight = '40vh';\n const toolbarOpts = { position: playersToolbarPosition === 'top' ? 'top' : 'bottom' };\n\n log('[render] disabled? ', disabled);\n\n const teacherInstructionsDiv = (\n <PreviewPrompt defaultClassName=\"teacher-instructions\" prompt={teacherInstructions} />\n );\n\n const languageCharactersProps = [];\n\n if (spanishInput) {\n languageCharactersProps.push({ language: 'spanish' });\n }\n\n if (specialInput) {\n languageCharactersProps.push({ language: 'special' });\n }\n\n return (\n <MainContainer\n extraCSSRules={extraCSSRules}\n ref={(ref) => {\n this.containerRef = ref;\n }}\n >\n <SrOnly>{translator.t('extendedTextEntry.constructedResponseQuestion', { lng: model.language })}</SrOnly>\n\n {teacherInstructions && (\n <TeacherInstructions>\n {!animationsDisabled ? (\n <Collapsible\n labels={{ hidden: translator.t('common:showTeacherInstructions', { lng: model.language }), visible: translator.t('common:hideTeacherInstructions', { lng: model.language }) }}\n >\n {teacherInstructionsDiv}\n </Collapsible>\n ) : (\n teacherInstructionsDiv\n )}\n </TeacherInstructions>\n )}\n\n {prompt && (\n <StyledPrompt component={'span'} id={this.promptId}>\n <PreviewPrompt defaultClassName=\"prompt\" prompt={model.prompt} />\n </StyledPrompt>\n )}\n\n {annotatorMode ? (\n <AnnotationEditor\n text={value || ''}\n annotations={annotations || []}\n comment={comment || ''}\n predefinedAnnotations={predefinedAnnotations || []}\n onChange={onAnnotationsChange}\n onCommentChange={onCommentChange}\n width={width}\n height={height}\n maxHeight={maxHeight}\n disabled={disabledAnnotator}\n disabledMath={!mathInput}\n customKeys={customKeys}\n keypadMode={equationEditor}\n language={model.language}\n />\n ) : (\n <Editor\n className=\"response-area-editor\"\n onChange={onValueChange}\n idleSaveDelay={idleSaveDelay}\n markup={value || ''}\n maxWidth={width && width.toString()}\n minWidth={'100px'}\n minHeight={height && height.toString()}\n maxHeight={maxHeight}\n disabled={disabled}\n highlightShape={true}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n charactersLimit={50000}\n autoWidthToolbar\n pluginProps={{\n math: {\n disabled: !mathInput,\n customKeys: this.props.model.customKeys,\n keypadMode: this.props.model.equationEditor,\n controlledKeypadMode: false,\n },\n video: {\n disabled: true,\n },\n audio: {\n disabled: true,\n },\n table: {\n disabled: true,\n },\n textAlign: {\n disabled: true,\n },\n h3: {\n disabled: true,\n },\n separateParagraphs: { disabled: false },\n ul_list: { disabled: true },\n ol_list: { disabled: true },\n pasteFormatting: { disabled: pasteFormattingDisabled === true },\n }}\n languageCharactersProps={languageCharactersProps}\n // The prompt names the response; the generic name covers no prompt, or one with no text.\n ariaLabelledBy={prompt ? this.promptId : undefined}\n ariaLabel={translator.t('extendedTextEntry.response', { lng: model.language })}\n language={model.language}\n />\n )}\n\n {feedback && <Feedback correctness=\"correct\" feedback={feedback} />}\n </MainContainer>\n );\n }\n}\n\nexport default Main;\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { a as e } from "../rolldown-runtime-CHQKHQ89.js";
2
2
  import { I as t, N as n, b as r } from "../dist-DUB8o_9Z.js";
3
3
  import { t as i } from "../browser-BfhCkXup.js";
4
- import { t as a } from "../main-CaTO455C.js";
4
+ import { t as a } from "../main-CzUVBN7Z.js";
5
5
  import o from "react";
6
6
  import { createRoot as s } from "react-dom/client";
7
7
  var c = (0, (/* @__PURE__ */ e(i(), 1)).default)("pie-element:extended-text-entry:print"), l = (e, n) => {
@@ -46,7 +46,7 @@ var c = (0, (/* @__PURE__ */ e(i(), 1)).default)("pie-element:extended-text-entr
46
46
  }
47
47
  }, d = Object.freeze({
48
48
  name: "@pie-element/extended-text-entry",
49
- version: "16.1.0"
49
+ version: "16.1.1-next.20261016161500"
50
50
  });
51
51
  //#endregion
52
52
  export { u as default, d as piePackage };