@pie-element/ebsr 14.2.2-next.5 → 14.2.3
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 +1547 -0
- package/CHANGELOG.md +2297 -0
- package/LICENSE.md +5 -0
- package/README.md +62 -0
- package/configure/CHANGELOG.json +992 -0
- package/configure/CHANGELOG.md +2160 -0
- package/configure/lib/defaults.js +229 -0
- package/configure/lib/defaults.js.map +1 -0
- package/configure/lib/index.js +154 -0
- package/configure/lib/index.js.map +1 -0
- package/configure/lib/main.js +222 -0
- package/configure/lib/main.js.map +1 -0
- package/configure/package.json +23 -0
- package/configure/src/__tests__/index.test.js +492 -0
- package/configure/src/defaults.js +173 -0
- package/configure/src/index.js +174 -0
- package/configure/src/main.jsx +235 -0
- package/controller/CHANGELOG.json +552 -0
- package/controller/CHANGELOG.md +1286 -0
- package/controller/lib/defaults.js +31 -0
- package/controller/lib/defaults.js.map +1 -0
- package/controller/lib/index.js +448 -0
- package/controller/lib/index.js.map +1 -0
- package/controller/lib/utils.js +18 -0
- package/controller/lib/utils.js.map +1 -0
- package/controller/package.json +18 -0
- package/controller/src/__tests__/index.test.js +591 -0
- package/controller/src/__tests__/utils.test.js +48 -0
- package/controller/src/defaults.js +25 -0
- package/controller/src/index.js +442 -0
- package/controller/src/utils.js +18 -0
- package/docs/config-schema.json +5787 -0
- package/docs/config-schema.json.md +4278 -0
- package/docs/demo/config.js +8 -0
- package/docs/demo/generate.js +52 -0
- package/docs/demo/index.html +2 -0
- package/docs/demo/session.js +14 -0
- package/docs/pie-schema.json +2911 -0
- package/docs/pie-schema.json.md +2142 -0
- package/ebsr.png +0 -0
- package/lib/index.js +207 -0
- package/lib/index.js.map +1 -0
- package/lib/print.js +186 -0
- package/lib/print.js.map +1 -0
- package/module/configure.js +1 -0
- package/module/controller.js +5664 -0
- package/module/demo.js +77 -0
- package/module/element.js +1 -0
- package/module/index.html +21 -0
- package/module/manifest.json +14 -0
- package/module/print-demo.js +115 -0
- package/module/print.html +18 -0
- package/module/print.js +1 -0
- package/package.json +19 -88
- package/src/__tests__/index.test.js +129 -0
- package/src/index.js +222 -0
- package/src/print.js +207 -0
- package/configure.js +0 -2
- package/controller.js +0 -1
- package/dist/author/defaults.d.ts +0 -348
- package/dist/author/defaults.js +0 -161
- package/dist/author/index.d.ts +0 -34
- package/dist/author/index.js +0 -80
- package/dist/author/main.d.ts +0 -23
- package/dist/author/main.js +0 -123
- package/dist/browser/author/index.js +0 -45985
- package/dist/browser/author/index.js.map +0 -1
- package/dist/browser/controller/index.js +0 -257
- package/dist/browser/controller/index.js.map +0 -1
- package/dist/browser/delivery/index.js +0 -133
- package/dist/browser/delivery/index.js.map +0 -1
- package/dist/browser/delivery-BVQ60bNy.js +0 -1282
- package/dist/browser/delivery-BVQ60bNy.js.map +0 -1
- package/dist/browser/dist-BcIm7NXG.js +0 -111
- package/dist/browser/dist-BcIm7NXG.js.map +0 -1
- package/dist/browser/dist-D9ARZhQk.js +0 -1426
- package/dist/browser/dist-D9ARZhQk.js.map +0 -1
- package/dist/browser/ebsr.css +0 -2
- package/dist/browser/print/index.js +0 -107
- package/dist/browser/print/index.js.map +0 -1
- package/dist/browser/private-tags-DHmoD865.js +0 -9579
- package/dist/browser/private-tags-DHmoD865.js.map +0 -1
- package/dist/controller/defaults.d.ts +0 -15
- package/dist/controller/defaults.js +0 -26
- package/dist/controller/index.d.ts +0 -42
- package/dist/controller/index.js +0 -185
- package/dist/controller/utils.d.ts +0 -10
- package/dist/controller/utils.js +0 -8
- package/dist/delivery/index.d.ts +0 -26
- package/dist/delivery/index.js +0 -133
- package/dist/index.d.ts +0 -1
- package/dist/index.iife.d.ts +0 -8
- package/dist/index.iife.js +0 -165
- package/dist/index.js +0 -2
- package/dist/print/index.d.ts +0 -25
- package/dist/print/index.js +0 -107
- package/dist/private-tags.d.ts +0 -2
- package/dist/private-tags.js +0 -3
- package/dist/runtime-support.d.ts +0 -12
- package/dist/runtime-support.js +0 -12
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { L as e, Ut as t, n } from "../private-tags-DHmoD865.js";
|
|
2
|
-
import { n as r, t as i } from "../delivery-BVQ60bNy.js";
|
|
3
|
-
import { t as a } from "../dist-D9ARZhQk.js";
|
|
4
|
-
import { l as o, m as s } from "../dist-BcIm7NXG.js";
|
|
5
|
-
//#region src/print/index.tsx
|
|
6
|
-
var c = /* @__PURE__ */ t(e(), 1), l = n, u = r.TYPE, { translator: d } = a, f = (0, c.default)("pie-element:ebsr:print"), p = (e, t) => {
|
|
7
|
-
let n = t.role === "instructor", r = o(e);
|
|
8
|
-
return r.prompt = r.promptEnabled === !1 ? void 0 : r.prompt, r.teacherInstructions = n && r.teacherInstructionsEnabled !== !1 ? r.teacherInstructions : void 0, r.showTeacherInstructions = n, r.alwaysShowCorrect = n, r.mode = n ? "evaluate" : "gather", r.disabled = !0, r.animationsDisabled = !0, r.lockChoiceOrder = !0, r.choicesLayout = r.choicesLayout || "vertical", r.choices = (r.choices || []).map((e) => (e.rationale = n && r.rationaleEnabled !== !1 ? e.rationale : void 0, e.hideTick = n, e.feedback = void 0, e)), r.keyMode = r.choicePrefix || "letters", r;
|
|
9
|
-
}, m = class extends i {};
|
|
10
|
-
customElements.get(l) || customElements.define(l, m);
|
|
11
|
-
var h = (e) => Array.isArray(e) && e.length > 0, g = (e) => {
|
|
12
|
-
let t = s(e, "value.partA.value"), n = s(e, "value.partB.value");
|
|
13
|
-
return h(t) && h(n);
|
|
14
|
-
}, _ = class extends HTMLElement {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(), this._model = {}, this._session = {}, this._options = null;
|
|
17
|
-
}
|
|
18
|
-
onSessionUpdated = (e) => {
|
|
19
|
-
if (e.target === this) return;
|
|
20
|
-
e.preventDefault(), e.stopImmediatePropagation();
|
|
21
|
-
let t = e.target.getAttribute("id");
|
|
22
|
-
if (t) {
|
|
23
|
-
let n = `part${t.toUpperCase()}`;
|
|
24
|
-
e.update && (this._model[n] = e.update), this.dispatchSessionChanged(e.srcElement._session, n);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
set model(e) {
|
|
28
|
-
this._model = e, this._updateParts();
|
|
29
|
-
}
|
|
30
|
-
set session(e) {
|
|
31
|
-
this._session = e, customElements.whenDefined(l).then(() => {
|
|
32
|
-
this.setPartSession(this.partA, "partA"), this.setPartSession(this.partB, "partB");
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
_updateParts() {
|
|
36
|
-
customElements.whenDefined(l).then(() => {
|
|
37
|
-
this.setPartModel(this.partA, "partA"), this.setPartModel(this.partB, "partB");
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
setPartModel(e, t) {
|
|
41
|
-
if (this._model && this._model[t] && e && this._options) {
|
|
42
|
-
let n = {
|
|
43
|
-
partA: void 0,
|
|
44
|
-
partB: void 0
|
|
45
|
-
};
|
|
46
|
-
if (this._model.partLabels) {
|
|
47
|
-
let e = this._model.language;
|
|
48
|
-
n = {
|
|
49
|
-
partA: d.t("ebsr.part", {
|
|
50
|
-
lng: e,
|
|
51
|
-
index: this._model.partLabelType === "Letters" ? "A" : "1"
|
|
52
|
-
}),
|
|
53
|
-
partB: d.t("ebsr.part", {
|
|
54
|
-
lng: e,
|
|
55
|
-
index: this._model.partLabelType === "Letters" ? "B" : "2"
|
|
56
|
-
})
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
e.model = {
|
|
60
|
-
...p(this._model[t], this._options),
|
|
61
|
-
keyMode: this._model[t].choicePrefix,
|
|
62
|
-
partLabel: n[t]
|
|
63
|
-
}, e.options = this._options, e._session || (e.session = {});
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
set options(e) {
|
|
67
|
-
this._options = e, this._updateParts();
|
|
68
|
-
}
|
|
69
|
-
setPartSession(e, t) {
|
|
70
|
-
if (this._session && this._model && e) {
|
|
71
|
-
let { value: n } = this._session;
|
|
72
|
-
e.session = n && n[t] ? n[t] : { id: t };
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
dispatchSessionChanged(e, t) {
|
|
76
|
-
this._session.value = {
|
|
77
|
-
...this._session.value,
|
|
78
|
-
[t]: e
|
|
79
|
-
}, f("[onSessionChanged] session: ", this._session);
|
|
80
|
-
let n = g(this._session);
|
|
81
|
-
this.dispatchEvent(new r(this.tagName.toLowerCase(), n));
|
|
82
|
-
}
|
|
83
|
-
get partA() {
|
|
84
|
-
return this.querySelector(`${l}#a`);
|
|
85
|
-
}
|
|
86
|
-
get partB() {
|
|
87
|
-
return this.querySelector(`${l}#b`);
|
|
88
|
-
}
|
|
89
|
-
connectedCallback() {
|
|
90
|
-
this._render(), this.addEventListener(u, this.onSessionUpdated);
|
|
91
|
-
}
|
|
92
|
-
disconnectedCallback() {
|
|
93
|
-
this.removeEventListener(u, this.onSessionUpdated);
|
|
94
|
-
}
|
|
95
|
-
_render() {
|
|
96
|
-
this.innerHTML = `
|
|
97
|
-
<div>
|
|
98
|
-
<${l} id="a"></${l}>
|
|
99
|
-
<${l} id="b"></${l}>
|
|
100
|
-
</div>
|
|
101
|
-
`;
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
//#endregion
|
|
105
|
-
export { _ as default, g as isSessionComplete };
|
|
106
|
-
|
|
107
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/print/index.tsx"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/ebsr/src/print.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 { cloneDeep, get } from '@pie-element/shared-lodash';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport { SessionChangedEvent } from '@pie-element/shared-player-events';\nimport { EBSR_MULTIPLE_CHOICE_TAG } from '../private-tags.js';\nconst MC_TAG_NAME = EBSR_MULTIPLE_CHOICE_TAG;\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst log = debug('pie-element:ebsr:print');\n\n/**\n * Live in same package as main element - so we can access some of the shared comps!\n *\n * - update pslb to build print if src/print.js is there\n * - update demo el\n * - get configure/controller building\n */\n\nconst preparePrintModel = (model, opts) => {\n const instr = opts.role === 'instructor';\n const printModel = cloneDeep(model);\n\n printModel.prompt = printModel.promptEnabled !== false ? printModel.prompt : undefined;\n printModel.teacherInstructions =\n instr && printModel.teacherInstructionsEnabled !== false ? printModel.teacherInstructions : undefined;\n printModel.showTeacherInstructions = instr;\n printModel.alwaysShowCorrect = instr;\n printModel.mode = instr ? 'evaluate' : 'gather';\n\n printModel.disabled = true;\n printModel.animationsDisabled = true;\n printModel.lockChoiceOrder = true;\n printModel.choicesLayout = printModel.choicesLayout || 'vertical';\n\n printModel.choices = (printModel.choices || []).map((c) => {\n c.rationale = instr && printModel.rationaleEnabled !== false ? c.rationale : undefined;\n c.hideTick = instr;\n c.feedback = undefined;\n return c;\n });\n\n printModel.keyMode = printModel.choicePrefix || 'letters';\n\n return printModel;\n};\n\nclass EbsrMC extends MultipleChoice {}\n\nconst defineMultipleChoice = () => {\n if (!customElements.get(MC_TAG_NAME)) {\n customElements.define(MC_TAG_NAME, EbsrMC);\n }\n};\n\ndefineMultipleChoice();\n\nconst isNonEmptyArray = (a) => Array.isArray(a) && a.length > 0;\n\nexport const isSessionComplete = (session) => {\n const a = get(session, 'value.partA.value');\n const b = get(session, 'value.partB.value');\n\n return isNonEmptyArray(a) && isNonEmptyArray(b);\n};\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n this._options = null;\n }\n\n onSessionUpdated: any = (e) => {\n if (e.target === this) {\n return;\n }\n\n e.preventDefault();\n e.stopImmediatePropagation();\n\n const id = e.target.getAttribute('id');\n\n if (id) {\n const key = `part${id.toUpperCase()}`;\n\n if (e.update) {\n this._model[key] = e.update;\n }\n //TODO: accessing a private property here. The session event should contain the update in future to prevent this.\n this.dispatchSessionChanged(e.srcElement._session, key);\n }\n };\n\n set model(m) {\n this._model = m;\n this._updateParts();\n }\n\n set session(s) {\n this._session = s;\n\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n });\n }\n\n _updateParts() {\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part && this._options) {\n let labels = {\n partA: undefined,\n partB: undefined,\n };\n\n if (this._model.partLabels) {\n const language = this._model.language;\n\n labels = {\n partA: translator.t('ebsr.part', {\n lng: language,\n index: this._model.partLabelType === 'Letters' ? 'A' : '1',\n }),\n partB: translator.t('ebsr.part', {\n lng: language,\n index: this._model.partLabelType === 'Letters' ? 'B' : '2',\n }),\n };\n }\n\n part.model = {\n ...preparePrintModel(this._model[key], this._options),\n keyMode: this._model[key].choicePrefix,\n partLabel: labels[key],\n };\n\n // pass options to enable print mode detection in multiple-choice component\n part.options = this._options;\n\n if (!part._session) {\n // for print, \"set session\" is not called,\n // but ebsr needs sessions in order to render the elements,\n // so we set it here it was not set already\n part.session = {};\n }\n }\n }\n\n set options(o) {\n this._options = o;\n // re-render parts so role changes (student/instructor) propagate to each part\n this._updateParts();\n }\n\n setPartSession(part, key) {\n if (this._session && this._model && part) {\n const { value } = this._session;\n part.session = value && value[key] ? value[key] : { id: key };\n }\n }\n\n dispatchSessionChanged(partSession, key) {\n this._session.value = {\n ...this._session.value,\n [key]: partSession,\n };\n\n log('[onSessionChanged] session: ', this._session);\n const complete = isSessionComplete(this._session);\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n }\n\n get partA() {\n return this.querySelector(`${MC_TAG_NAME}#a`);\n }\n\n get partB() {\n return this.querySelector(`${MC_TAG_NAME}#b`);\n }\n\n connectedCallback() {\n this._render();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n _render() {\n this.innerHTML = `\n <div>\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n </div>\n `;\n }\n}\n"],"mappings":";;;;;mCAeM,IAAc,GACd,IAAkB,EAAoB,MAGtC,EAAE,kBAAe,GAEjB,KAAA,GAAA,EAAA,SAAY,wBAAwB,GAUpC,KAAqB,GAAO,MAAS;CACzC,IAAM,IAAQ,EAAK,SAAS,cACtB,IAAa,EAAU,CAAK;CAuBlC,OArBA,EAAW,SAAS,EAAW,kBAAkB,KAA4B,KAAA,IAApB,EAAW,QACpE,EAAW,sBACT,KAAS,EAAW,+BAA+B,KAAQ,EAAW,sBAAsB,KAAA,GAC9F,EAAW,0BAA0B,GACrC,EAAW,oBAAoB,GAC/B,EAAW,OAAO,IAAQ,aAAa,UAEvC,EAAW,WAAW,IACtB,EAAW,qBAAqB,IAChC,EAAW,kBAAkB,IAC7B,EAAW,gBAAgB,EAAW,iBAAiB,YAEvD,EAAW,WAAW,EAAW,WAAW,CAAC,GAAG,KAAK,OACnD,EAAE,YAAY,KAAS,EAAW,qBAAqB,KAAQ,EAAE,YAAY,KAAA,GAC7E,EAAE,WAAW,GACb,EAAE,WAAW,KAAA,GACN,EACR,GAED,EAAW,UAAU,EAAW,gBAAgB,WAEzC;AACT,GAEM,IAAN,cAAqB,EAAe,CAAC;AAG9B,eAAe,IAAI,CAAW,KACjC,eAAe,OAAO,GAAa,CAAM;AAM7C,IAAM,KAAmB,MAAM,MAAM,QAAQ,CAAC,KAAK,EAAE,SAAS,GAEjD,KAAqB,MAAY;CAC5C,IAAM,IAAI,EAAI,GAAS,mBAAmB,GACpC,IAAI,EAAI,GAAS,mBAAmB;CAE1C,OAAO,EAAgB,CAAC,KAAK,EAAgB,CAAC;AAChD,GAEqB,IAArB,cAAkC,YAAY;CAC5C,cAAc;EAIZ,AAHA,MAAM,GACN,KAAK,SAAS,CAAC,GACf,KAAK,WAAW,CAAC,GACjB,KAAK,WAAW;CAClB;CAEA,oBAAyB,MAAM;EAC7B,IAAI,EAAE,WAAW,MACf;EAIF,AADA,EAAE,eAAe,GACjB,EAAE,yBAAyB;EAE3B,IAAM,IAAK,EAAE,OAAO,aAAa,IAAI;EAErC,IAAI,GAAI;GACN,IAAM,IAAM,OAAO,EAAG,YAAY;GAMlC,AAJI,EAAE,WACJ,KAAK,OAAO,KAAO,EAAE,SAGvB,KAAK,uBAAuB,EAAE,WAAW,UAAU,CAAG;EACxD;CACF;CAEA,IAAI,MAAM,GAAG;EAEX,AADA,KAAK,SAAS,GACd,KAAK,aAAa;CACpB;CAEA,IAAI,QAAQ,GAAG;EAGb,AAFA,KAAK,WAAW,GAEhB,eAAe,YAAY,CAAW,EAAE,WAAW;GAEjD,AADA,KAAK,eAAe,KAAK,OAAO,OAAO,GACvC,KAAK,eAAe,KAAK,OAAO,OAAO;EACzC,CAAC;CACH;CAEA,eAAe;EACb,eAAe,YAAY,CAAW,EAAE,WAAW;GAEjD,AADA,KAAK,aAAa,KAAK,OAAO,OAAO,GACrC,KAAK,aAAa,KAAK,OAAO,OAAO;EACvC,CAAC;CACH;CAEA,aAAa,GAAM,GAAK;EACtB,IAAI,KAAK,UAAU,KAAK,OAAO,MAAQ,KAAQ,KAAK,UAAU;GAC5D,IAAI,IAAS;IACX,OAAO,KAAA;IACP,OAAO,KAAA;GACT;GAEA,IAAI,KAAK,OAAO,YAAY;IAC1B,IAAM,IAAW,KAAK,OAAO;IAE7B,IAAS;KACP,OAAO,EAAW,EAAE,aAAa;MAC/B,KAAK;MACL,OAAO,KAAK,OAAO,kBAAkB,YAAY,MAAM;KACzD,CAAC;KACD,OAAO,EAAW,EAAE,aAAa;MAC/B,KAAK;MACL,OAAO,KAAK,OAAO,kBAAkB,YAAY,MAAM;KACzD,CAAC;IACH;GACF;GAWA,AATA,EAAK,QAAQ;IACX,GAAG,EAAkB,KAAK,OAAO,IAAM,KAAK,QAAQ;IACpD,SAAS,KAAK,OAAO,GAAK;IAC1B,WAAW,EAAO;GACpB,GAGA,EAAK,UAAU,KAAK,UAEf,EAAK,aAIR,EAAK,UAAU,CAAC;EAEpB;CACF;CAEA,IAAI,QAAQ,GAAG;EAGb,AAFA,KAAK,WAAW,GAEhB,KAAK,aAAa;CACpB;CAEA,eAAe,GAAM,GAAK;EACxB,IAAI,KAAK,YAAY,KAAK,UAAU,GAAM;GACxC,IAAM,EAAE,aAAU,KAAK;GACvB,EAAK,UAAU,KAAS,EAAM,KAAO,EAAM,KAAO,EAAE,IAAI,EAAI;EAC9D;CACF;CAEA,uBAAuB,GAAa,GAAK;EAMvC,AALA,KAAK,SAAS,QAAQ;GACpB,GAAG,KAAK,SAAS;IAChB,IAAM;EACT,GAEA,EAAI,gCAAgC,KAAK,QAAQ;EACjD,IAAM,IAAW,EAAkB,KAAK,QAAQ;EAChD,KAAK,cAAc,IAAI,EAAoB,KAAK,QAAQ,YAAY,GAAG,CAAQ,CAAC;CAClF;CAEA,IAAI,QAAQ;EACV,OAAO,KAAK,cAAc,GAAG,EAAY,GAAG;CAC9C;CAEA,IAAI,QAAQ;EACV,OAAO,KAAK,cAAc,GAAG,EAAY,GAAG;CAC9C;CAEA,oBAAoB;EAElB,AADA,KAAK,QAAQ,GACb,KAAK,iBAAiB,GAAiB,KAAK,gBAAgB;CAC9D;CAEA,uBAAuB;EACrB,KAAK,oBAAoB,GAAiB,KAAK,gBAAgB;CACjE;CAEA,UAAU;EACR,KAAK,YAAY;;WAEV,EAAY,YAAY,EAAY;WACpC,EAAY,YAAY,EAAY;;;CAG7C;AACF"}
|