@pie-element/passage 7.1.2-next.5 → 7.2.0-beta.0
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/CHANGELOG.json +227 -0
- package/CHANGELOG.md +1473 -0
- package/LICENSE.md +5 -0
- package/README.md +3 -0
- package/configure/CHANGELOG.md +685 -0
- package/configure/lib/common.js +74 -0
- package/configure/lib/common.js.map +1 -0
- package/configure/lib/defaults.js +174 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/design.js +185 -0
- package/configure/lib/design.js.map +1 -0
- package/configure/lib/index.js +87 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/passage.js +194 -0
- package/configure/lib/passage.js.map +1 -0
- package/configure/package.json +23 -0
- package/controller/CHANGELOG.json +1 -0
- package/controller/CHANGELOG.md +113 -0
- package/controller/lib/defaults.js +23 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +80 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/package.json +13 -0
- package/docs/config-schema.json +1325 -0
- package/docs/config-schema.json.md +974 -0
- package/docs/demo/config.js +8 -0
- package/docs/demo/generate.js +32 -0
- package/docs/demo/index.html +1 -0
- package/docs/pie-schema.json +775 -0
- package/docs/pie-schema.json.md +561 -0
- package/lib/index.js +144 -0
- package/lib/index.js.map +1 -0
- package/lib/print.js +78 -0
- package/lib/print.js.map +1 -0
- package/lib/stimulus-tabs.js +427 -0
- package/lib/stimulus-tabs.js.map +1 -0
- package/module/configure.js +1 -0
- package/module/controller.js +920 -0
- package/module/demo.js +57 -0
- package/module/element.js +1 -0
- package/module/index.html +21 -0
- package/module/manifest.json +10 -0
- package/module/print-demo.js +95 -0
- package/module/print.html +18 -0
- package/module/print.js +1 -0
- package/package.json +19 -86
- package/configure.js +0 -2
- package/controller.js +0 -1
- package/dist/author/common.d.ts +0 -36
- package/dist/author/common.js +0 -56
- package/dist/author/defaults.d.ts +0 -175
- package/dist/author/defaults.js +0 -113
- package/dist/author/design.d.ts +0 -28
- package/dist/author/design.js +0 -120
- package/dist/author/index.d.ts +0 -36
- package/dist/author/index.js +0 -66
- package/dist/author/passage.d.ts +0 -27
- package/dist/author/passage.js +0 -127
- package/dist/browser/author/index.js +0 -44688
- package/dist/browser/author/index.js.map +0 -1
- package/dist/browser/controller/index.js +0 -64
- package/dist/browser/controller/index.js.map +0 -1
- package/dist/browser/delivery/index.js +0 -117
- package/dist/browser/delivery/index.js.map +0 -1
- package/dist/browser/dist-ByX3voUB.js +0 -9618
- package/dist/browser/dist-ByX3voUB.js.map +0 -1
- package/dist/browser/dist-CeIdmqCq.js +0 -92
- package/dist/browser/dist-CeIdmqCq.js.map +0 -1
- package/dist/browser/passage.css +0 -2
- package/dist/browser/print/index.js +0 -48
- package/dist/browser/print/index.js.map +0 -1
- package/dist/browser/stimulus-tabs-CxiQ79gz.js +0 -218
- package/dist/browser/stimulus-tabs-CxiQ79gz.js.map +0 -1
- package/dist/controller/defaults.d.ts +0 -23
- package/dist/controller/defaults.js +0 -17
- package/dist/controller/index.d.ts +0 -18
- package/dist/controller/index.js +0 -50
- package/dist/delivery/index.d.ts +0 -22
- package/dist/delivery/index.js +0 -83
- package/dist/delivery/stimulus-tabs.d.ts +0 -21
- package/dist/delivery/stimulus-tabs.js +0 -220
- package/dist/index.d.ts +0 -1
- package/dist/index.iife.d.ts +0 -8
- package/dist/index.iife.js +0 -145
- package/dist/index.js +0 -2
- package/dist/print/index.d.ts +0 -15
- package/dist/print/index.js +0 -47
- package/dist/runtime-support.d.ts +0 -12
- package/dist/runtime-support.js +0 -12
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { i as e } from "../dist-CeIdmqCq.js";
|
|
2
|
-
//#region src/controller/defaults.ts
|
|
3
|
-
var t = {
|
|
4
|
-
authorEnabled: !1,
|
|
5
|
-
passages: [{
|
|
6
|
-
teacherInstructions: "",
|
|
7
|
-
title: "",
|
|
8
|
-
subtitle: "",
|
|
9
|
-
author: "",
|
|
10
|
-
text: ""
|
|
11
|
-
}],
|
|
12
|
-
subtitleEnabled: !0,
|
|
13
|
-
teacherInstructionsEnabled: !0,
|
|
14
|
-
textEnabled: !0,
|
|
15
|
-
titleEnabled: !0
|
|
16
|
-
}, n = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), r = (e) => e != null, i = (e, t) => r(e) ? e : t;
|
|
17
|
-
function a(e = {}) {
|
|
18
|
-
return new Promise((n) => {
|
|
19
|
-
n({
|
|
20
|
-
...t,
|
|
21
|
-
...e
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
var o = (e) => ({
|
|
26
|
-
...t,
|
|
27
|
-
...e
|
|
28
|
-
}), s = (e, t) => {
|
|
29
|
-
let { role: n, mode: r } = t;
|
|
30
|
-
return n === "instructor" && (r === "view" || r === "evaluate") && e || "";
|
|
31
|
-
};
|
|
32
|
-
async function c(e, t, r) {
|
|
33
|
-
let a = o(e), c = a.passages.map((e, t) => ({
|
|
34
|
-
teacherInstructions: i(e.teacherInstructionsEnabled, a.teacherInstructionsEnabled) ? s(e.teacherInstructions, r) : "",
|
|
35
|
-
label: n(e.title) ? e.title : `Passage ${t + 1}`,
|
|
36
|
-
title: i(e.titleEnabled, a.titleEnabled) && e.title || "",
|
|
37
|
-
subtitle: i(e.subtitleEnabled, a.subtitleEnabled) && e.subtitle || "",
|
|
38
|
-
author: i(e.authorEnabled, a.authorEnabled) && e.author || "",
|
|
39
|
-
text: i(e.textEnabled, a.textEnabled) && e.text || ""
|
|
40
|
-
}));
|
|
41
|
-
return {
|
|
42
|
-
...a,
|
|
43
|
-
passages: c
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
var l = (t = {}, r = {}) => {
|
|
47
|
-
let i = {}, a = {};
|
|
48
|
-
return (t.passages || []).forEach((t, i) => {
|
|
49
|
-
let o = {};
|
|
50
|
-
[
|
|
51
|
-
"teacherInstructions",
|
|
52
|
-
"title",
|
|
53
|
-
"subtitle",
|
|
54
|
-
"author",
|
|
55
|
-
"text"
|
|
56
|
-
].forEach((e) => {
|
|
57
|
-
r[e]?.required && !n(t[e]) && (o[e] = "This field is required.");
|
|
58
|
-
}), e(o) || (a[i] = o);
|
|
59
|
-
}), e(a) || (i.passages = a), i;
|
|
60
|
-
};
|
|
61
|
-
//#endregion
|
|
62
|
-
export { a as createDefaultModel, c as model, o as normalize, l as validate };
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/controller/defaults.ts","../../../src/controller/index.ts"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/passage/controller/src/defaults.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\n// TODO: also update '../../configure/src/defaults.js' and '../../src/print.js' when updating defaults\nexport default {\n authorEnabled: false, // TODO: should be set to true when all Studio content is updated\n passages: [\n {\n teacherInstructions: '',\n title: '',\n subtitle: '',\n author: '',\n text: '',\n },\n ],\n subtitleEnabled: true,\n teacherInstructionsEnabled: true,\n textEnabled: true,\n titleEnabled: true,\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/passage/controller/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport { isEmpty } from '@pie-element/shared-lodash';\n\nimport defaults from './defaults.js';\n\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nconst checkNullish = (value) => value !== null && value !== undefined;\n\nconst isEnabled = (value, defaultValue) => (checkNullish(value) ? value : defaultValue);\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => {\n resolve({ ...defaults, ...model });\n });\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\nconst normalizeTeacherInstructions = (instructions, env) => {\n const { role, mode } = env;\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n return instructions || '';\n }\n\n return '';\n};\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n\n const normalizedPassages = normalizedQuestion.passages.map((passage, index) => ({\n teacherInstructions: isEnabled(passage.teacherInstructionsEnabled, normalizedQuestion.teacherInstructionsEnabled)\n ? normalizeTeacherInstructions(passage.teacherInstructions, env)\n : '',\n label: getContent(passage.title) ? passage.title : `Passage ${index + 1}`,\n title: isEnabled(passage.titleEnabled, normalizedQuestion.titleEnabled) ? passage.title || '' : '',\n subtitle: isEnabled(passage.subtitleEnabled, normalizedQuestion.subtitleEnabled) ? passage.subtitle || '' : '',\n author: isEnabled(passage.authorEnabled, normalizedQuestion.authorEnabled) ? passage.author || '' : '',\n text: isEnabled(passage.textEnabled, normalizedQuestion.textEnabled) ? passage.text || '' : '',\n }));\n\n return {\n ...normalizedQuestion,\n passages: normalizedPassages,\n };\n}\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n const passagesErrors = {};\n\n (model.passages || []).forEach((passage, index) => {\n const err = {};\n\n ['teacherInstructions', 'title', 'subtitle', 'author', 'text'].forEach((field) => {\n if (config[field]?.required && !getContent(passage[field])) {\n err[field] = 'This field is required.';\n }\n });\n\n if (!isEmpty(err)) {\n passagesErrors[index] = err;\n }\n });\n\n if (!isEmpty(passagesErrors)) {\n errors.passages = passagesErrors;\n }\n\n return errors;\n};\n"],"mappings":";;AAWA,IAAA,IAAe;CACb,eAAe;CACf,UAAU,CACR;EACE,qBAAqB;EACrB,OAAO;EACP,UAAU;EACV,QAAQ;EACR,MAAM;CACR,CACF;CACA,iBAAiB;CACjB,4BAA4B;CAC5B,aAAa;CACb,cAAc;AAChB,GCZM,KAAc,OAAU,KAAQ,IAAI,QAAQ,sCAAsC,EAAE,GAEpF,KAAgB,MAAU,KAAU,MAEpC,KAAa,GAAO,MAAkB,EAAa,CAAK,IAAI,IAAQ;AAE1E,SAAgB,EAAmB,IAAQ,CAAC,GAAG;CAC7C,OAAO,IAAI,SAAS,MAAY;EAC9B,EAAQ;GAAE,GAAG;GAAU,GAAG;EAAM,CAAC;CACnC,CAAC;AACH;AAEA,IAAa,KAAa,OAAc;CAAE,GAAG;CAAU,GAAG;AAAS,IAE7D,KAAgC,GAAc,MAAQ;CAC1D,IAAM,EAAE,SAAM,YAAS;CAMvB,OAJI,MAAS,iBAAiB,MAAS,UAAU,MAAS,eACjD,KAGF;AACT;AAQA,eAAsB,EAAM,GAAU,GAAS,GAAK;CAClD,IAAM,IAAqB,EAAU,CAAQ,GAEvC,IAAqB,EAAmB,SAAS,KAAK,GAAS,OAAW;EAC9E,qBAAqB,EAAU,EAAQ,4BAA4B,EAAmB,0BAA0B,IAC5G,EAA6B,EAAQ,qBAAqB,CAAG,IAC7D;EACJ,OAAO,EAAW,EAAQ,KAAK,IAAI,EAAQ,QAAQ,WAAW,IAAQ;EACtE,OAAO,EAAU,EAAQ,cAAc,EAAmB,YAAY,KAAI,EAAQ,SAAc;EAChG,UAAU,EAAU,EAAQ,iBAAiB,EAAmB,eAAe,KAAI,EAAQ,YAAiB;EAC5G,QAAQ,EAAU,EAAQ,eAAe,EAAmB,aAAa,KAAI,EAAQ,UAAe;EACpG,MAAM,EAAU,EAAQ,aAAa,EAAmB,WAAW,KAAI,EAAQ,QAAa;CAC9F,EAAE;CAEF,OAAO;EACL,GAAG;EACH,UAAU;CACZ;AACF;AAEA,IAAa,KAAY,IAAQ,CAAC,GAAG,IAAS,CAAC,MAAM;CACnD,IAAM,IAAS,CAAC,GACV,IAAiB,CAAC;CAoBxB,QAlBC,EAAM,YAAY,CAAC,GAAG,SAAS,GAAS,MAAU;EACjD,IAAM,IAAM,CAAC;EAQb,AANA;GAAC;GAAuB;GAAS;GAAY;GAAU;EAAM,EAAE,SAAS,MAAU;GAChF,AAAI,EAAO,IAAQ,YAAY,CAAC,EAAW,EAAQ,EAAM,MACvD,EAAI,KAAS;EAEjB,CAAC,GAEI,EAAQ,CAAG,MACd,EAAe,KAAS;CAE5B,CAAC,GAEI,EAAQ,CAAc,MACzB,EAAO,WAAW,IAGb;AACT"}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { Ct as e } from "../dist-ByX3voUB.js";
|
|
2
|
-
import { t } from "../stimulus-tabs-CxiQ79gz.js";
|
|
3
|
-
import n from "react";
|
|
4
|
-
import { createRoot as r } from "react-dom/client";
|
|
5
|
-
//#region ../../shared/player-events/dist/index.js
|
|
6
|
-
var i = class e extends CustomEvent {
|
|
7
|
-
static {
|
|
8
|
-
this.TYPE = "model-set";
|
|
9
|
-
}
|
|
10
|
-
constructor(t, n, r) {
|
|
11
|
-
super(e.TYPE, {
|
|
12
|
-
bubbles: !0,
|
|
13
|
-
composed: !0,
|
|
14
|
-
detail: {
|
|
15
|
-
complete: n,
|
|
16
|
-
component: t,
|
|
17
|
-
hasModel: r
|
|
18
|
-
}
|
|
19
|
-
}), this.component = t, this.complete = n;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
(class e extends CustomEvent {
|
|
23
|
-
static {
|
|
24
|
-
this.TYPE = "session-changed";
|
|
25
|
-
}
|
|
26
|
-
constructor(t, n) {
|
|
27
|
-
super(e.TYPE, {
|
|
28
|
-
bubbles: !0,
|
|
29
|
-
composed: !0,
|
|
30
|
-
detail: {
|
|
31
|
-
complete: n,
|
|
32
|
-
component: t
|
|
33
|
-
}
|
|
34
|
-
}), this.component = t, this.complete = n;
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
//#endregion
|
|
38
|
-
//#region src/delivery/index.ts
|
|
39
|
-
function a(e) {
|
|
40
|
-
let t = e.closest("pie-player") || e.closest("pie-item-player");
|
|
41
|
-
if (t) {
|
|
42
|
-
let e = t.baseHeadingLevel;
|
|
43
|
-
e ??= t.getAttribute("base-heading-level") ?? t.getAttribute("baseheadinglevel");
|
|
44
|
-
let n = parseInt(e, 10);
|
|
45
|
-
if (Number.isFinite(n) && n >= 1 && n <= 6) return n;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
var o = class extends HTMLElement {
|
|
49
|
-
constructor() {
|
|
50
|
-
super(), this._model = { passages: [] }, this._session = null, this._root = null, this._mathObserver = null, this._mathRenderPending = !1, this._playerObserver = null;
|
|
51
|
-
}
|
|
52
|
-
setLangAttribute() {
|
|
53
|
-
let e = this._model && typeof this._model.language ? this._model.language : "", t = e ? e.slice(0, 2) : "en";
|
|
54
|
-
this.setAttribute("lang", t);
|
|
55
|
-
}
|
|
56
|
-
_scheduleMathRender = () => {
|
|
57
|
-
this._mathRenderPending || (this._mathRenderPending = !0, requestAnimationFrame(() => {
|
|
58
|
-
this._mathObserver && this._mathObserver.disconnect(), e(this), this._mathRenderPending = !1, setTimeout(() => {
|
|
59
|
-
this._mathObserver && this._mathObserver.observe(this, {
|
|
60
|
-
childList: !0,
|
|
61
|
-
subtree: !0
|
|
62
|
-
});
|
|
63
|
-
}, 50);
|
|
64
|
-
}));
|
|
65
|
-
};
|
|
66
|
-
_initMathObserver() {
|
|
67
|
-
this._mathObserver || (this._mathObserver = new MutationObserver(this._scheduleMathRender), this._mathObserver.observe(this, {
|
|
68
|
-
childList: !0,
|
|
69
|
-
subtree: !0
|
|
70
|
-
}));
|
|
71
|
-
}
|
|
72
|
-
_disconnectMathObserver() {
|
|
73
|
-
this._mathObserver &&= (this._mathObserver.disconnect(), null);
|
|
74
|
-
}
|
|
75
|
-
set model(e) {
|
|
76
|
-
this._model = e, this.dispatchEvent(new i(this.tagName.toLowerCase(), this._session, !!this._model)), this.setLangAttribute(), this._render();
|
|
77
|
-
}
|
|
78
|
-
set session(e) {
|
|
79
|
-
this._session = e;
|
|
80
|
-
}
|
|
81
|
-
connectedCallback() {
|
|
82
|
-
this.setAttribute("aria-label", "Passage"), this.setAttribute("role", "region"), this._initMathObserver(), this._initPlayerObserver(), this._render();
|
|
83
|
-
}
|
|
84
|
-
_render() {
|
|
85
|
-
let { passages: e = [] } = this._model;
|
|
86
|
-
if (this._model.passages.length > 0) {
|
|
87
|
-
let i = e.map((e, t) => ({
|
|
88
|
-
id: t,
|
|
89
|
-
...e
|
|
90
|
-
})), o = n.createElement(t, {
|
|
91
|
-
tabs: i,
|
|
92
|
-
model: this._model,
|
|
93
|
-
baseHeadingLevel: a(this)
|
|
94
|
-
});
|
|
95
|
-
this._root ||= r(this), this._root.render(o), this._initMathObserver();
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
_initPlayerObserver() {
|
|
99
|
-
let e = this.closest("pie-player") || this.closest("pie-item-player");
|
|
100
|
-
e && (this._playerObserver = new MutationObserver(() => {
|
|
101
|
-
this._render();
|
|
102
|
-
}), this._playerObserver.observe(e, {
|
|
103
|
-
attributes: !0,
|
|
104
|
-
attributeFilter: ["base-heading-level"]
|
|
105
|
-
}));
|
|
106
|
-
}
|
|
107
|
-
_disconnectPlayerObserver() {
|
|
108
|
-
this._playerObserver &&= (this._playerObserver.disconnect(), null);
|
|
109
|
-
}
|
|
110
|
-
disconnectedCallback() {
|
|
111
|
-
this._disconnectMathObserver(), this._disconnectPlayerObserver(), this._root && this._root.unmount();
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
//#endregion
|
|
115
|
-
export { o as default };
|
|
116
|
-
|
|
117
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../shared/player-events/dist/index.js","../../../src/delivery/index.ts"],"sourcesContent":["//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { e as ModelSetEvent, t as SessionChangedEvent };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/passage/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport { ModelSetEvent } from '@pie-element/shared-player-events';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\n\nimport StimulusTabs from './stimulus-tabs.js';\n\nfunction getBaseHeadingLevel(element) {\n const player =\n element.closest('pie-player') ||\n element.closest('pie-item-player');\n\n if (player) {\n let raw = player.baseHeadingLevel;\n\n // fallback in case someone sets via HTML attribute manually\n if (raw == null) {\n raw =\n player.getAttribute('base-heading-level') ??\n player.getAttribute('baseheadinglevel');\n }\n\n const playerLevel = parseInt(raw, 10);\n\n if (Number.isFinite(playerLevel) && playerLevel >= 1 && playerLevel <= 6) {\n return playerLevel;\n }\n }\n\n return undefined;\n}\n\nexport default class PiePassage extends HTMLElement {\n constructor() {\n super();\n this._model = {\n passages: [],\n };\n this._session = null;\n this._root = null;\n this._mathObserver = null;\n this._mathRenderPending = false;\n this._playerObserver = null;\n }\n\n setLangAttribute() {\n const language = this._model && typeof this._model.language ? this._model.language : '';\n const lang = language ? language.slice(0, 2) : 'en';\n this.setAttribute('lang', lang);\n }\n\n _scheduleMathRender: any = () => {\n if (this._mathRenderPending) return;\n this._mathRenderPending = true;\n\n requestAnimationFrame(() => {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n }\n renderMath(this);\n this._mathRenderPending = false;\n setTimeout(() => {\n if (this._mathObserver) {\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n }, 50);\n });\n };\n\n _initMathObserver() {\n if (this._mathObserver) return;\n this._mathObserver = new MutationObserver(this._scheduleMathRender);\n this._mathObserver.observe(this, { childList: true, subtree: true });\n }\n\n _disconnectMathObserver() {\n if (this._mathObserver) {\n this._mathObserver.disconnect();\n this._mathObserver = null;\n }\n }\n\n set model(s) {\n this._model = s;\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this._session, !!this._model));\n this.setLangAttribute();\n\n this._render();\n }\n\n set session(s) {\n this._session = s;\n }\n\n connectedCallback() {\n this.setAttribute('aria-label', 'Passage');\n this.setAttribute('role', 'region');\n this._initMathObserver();\n this._initPlayerObserver();\n this._render();\n }\n\n _render() {\n const { passages = [] } = this._model;\n\n if (this._model.passages.length > 0) {\n const passagesTabs = passages.map((passage, index) => ({\n id: index,\n ...passage,\n }));\n\n const elem = React.createElement(StimulusTabs, {\n tabs: passagesTabs,\n model: this._model,\n baseHeadingLevel: getBaseHeadingLevel(this),\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(elem);\n\n this._initMathObserver();\n }\n }\n\n _initPlayerObserver() {\n const player = this.closest('pie-player') || this.closest('pie-item-player');\n if (!player) return;\n\n this._playerObserver = new MutationObserver(() => {\n this._render();\n });\n this._playerObserver.observe(player, { attributes: true, attributeFilter: ['base-heading-level'] });\n }\n\n _disconnectPlayerObserver() {\n if (this._playerObserver) {\n this._playerObserver.disconnect();\n this._playerObserver = null;\n }\n }\n\n disconnectedCallback() {\n this._disconnectMathObserver();\n this._disconnectPlayerObserver();\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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"}
|