@pie-element/ebsr 14.2.1 → 14.2.2-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/defaults.d.ts +348 -0
  4. package/dist/author/defaults.js +161 -0
  5. package/dist/author/index.d.ts +34 -0
  6. package/dist/author/index.js +78 -0
  7. package/dist/author/main.d.ts +22 -0
  8. package/dist/author/main.js +121 -0
  9. package/dist/browser/author/index.js +13940 -0
  10. package/dist/browser/author/index.js.map +1 -0
  11. package/dist/browser/browser-CdX8WGiZ.js +207 -0
  12. package/dist/browser/browser-CdX8WGiZ.js.map +1 -0
  13. package/dist/browser/controller/index.js +257 -0
  14. package/dist/browser/controller/index.js.map +1 -0
  15. package/dist/browser/delivery/index.js +133 -0
  16. package/dist/browser/delivery/index.js.map +1 -0
  17. package/dist/browser/dist-CaWRqnXk.js +62 -0
  18. package/dist/browser/dist-CaWRqnXk.js.map +1 -0
  19. package/dist/browser/dist-D9ARZhQk.js +1426 -0
  20. package/dist/browser/dist-D9ARZhQk.js.map +1 -0
  21. package/dist/browser/dist-DQkngCcw.js +36 -0
  22. package/dist/browser/dist-DQkngCcw.js.map +1 -0
  23. package/dist/browser/print/index.js +107 -0
  24. package/dist/browser/print/index.js.map +1 -0
  25. package/dist/controller/defaults.d.ts +15 -0
  26. package/dist/controller/defaults.js +26 -0
  27. package/dist/controller/index.d.ts +42 -0
  28. package/dist/controller/index.js +185 -0
  29. package/dist/controller/utils.d.ts +10 -0
  30. package/dist/controller/utils.js +8 -0
  31. package/dist/delivery/index.d.ts +26 -0
  32. package/dist/delivery/index.js +132 -0
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.iife.d.ts +8 -0
  35. package/dist/index.iife.js +165 -0
  36. package/dist/index.js +2 -0
  37. package/dist/print/index.d.ts +25 -0
  38. package/dist/print/index.js +106 -0
  39. package/dist/runtime-support.d.ts +12 -0
  40. package/dist/runtime-support.js +12 -0
  41. package/package.json +88 -19
  42. package/CHANGELOG.json +0 -1547
  43. package/CHANGELOG.md +0 -2285
  44. package/LICENSE.md +0 -5
  45. package/README.md +0 -62
  46. package/configure/CHANGELOG.json +0 -992
  47. package/configure/CHANGELOG.md +0 -2148
  48. package/configure/lib/defaults.js +0 -229
  49. package/configure/lib/defaults.js.map +0 -1
  50. package/configure/lib/index.js +0 -154
  51. package/configure/lib/index.js.map +0 -1
  52. package/configure/lib/main.js +0 -222
  53. package/configure/lib/main.js.map +0 -1
  54. package/configure/package.json +0 -23
  55. package/configure/src/__tests__/index.test.js +0 -492
  56. package/configure/src/defaults.js +0 -173
  57. package/configure/src/index.js +0 -174
  58. package/configure/src/main.jsx +0 -235
  59. package/controller/CHANGELOG.json +0 -552
  60. package/controller/CHANGELOG.md +0 -1286
  61. package/controller/lib/defaults.js +0 -31
  62. package/controller/lib/defaults.js.map +0 -1
  63. package/controller/lib/index.js +0 -448
  64. package/controller/lib/index.js.map +0 -1
  65. package/controller/lib/utils.js +0 -18
  66. package/controller/lib/utils.js.map +0 -1
  67. package/controller/package.json +0 -18
  68. package/controller/src/__tests__/index.test.js +0 -591
  69. package/controller/src/__tests__/utils.test.js +0 -48
  70. package/controller/src/defaults.js +0 -25
  71. package/controller/src/index.js +0 -442
  72. package/controller/src/utils.js +0 -18
  73. package/docs/config-schema.json +0 -5787
  74. package/docs/config-schema.json.md +0 -4278
  75. package/docs/demo/config.js +0 -8
  76. package/docs/demo/generate.js +0 -52
  77. package/docs/demo/index.html +0 -2
  78. package/docs/demo/session.js +0 -14
  79. package/docs/pie-schema.json +0 -2911
  80. package/docs/pie-schema.json.md +0 -2142
  81. package/ebsr.png +0 -0
  82. package/lib/index.js +0 -207
  83. package/lib/index.js.map +0 -1
  84. package/lib/print.js +0 -186
  85. package/lib/print.js.map +0 -1
  86. package/module/configure.js +0 -1
  87. package/module/controller.js +0 -5664
  88. package/module/demo.js +0 -77
  89. package/module/element.js +0 -1
  90. package/module/index.html +0 -21
  91. package/module/manifest.json +0 -14
  92. package/module/print-demo.js +0 -115
  93. package/module/print.html +0 -18
  94. package/module/print.js +0 -1
  95. package/src/__tests__/index.test.js +0 -129
  96. package/src/index.js +0 -222
  97. package/src/print.js +0 -207
package/ebsr.png DELETED
Binary file
package/lib/index.js DELETED
@@ -1,207 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.isSessionComplete = exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _piePlayerEvents = require("@pie-framework/pie-player-events");
10
- var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
11
- var _lodashEs = require("lodash-es");
12
- var _debug = _interopRequireDefault(require("debug"));
13
- const SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
14
- const MC_TAG_NAME = 'ebsr-multiple-choice';
15
- const log = (0, _debug.default)('pie-elements:ebsr');
16
- class EbsrMC extends _multipleChoice.default {}
17
- const defineMultipleChoice = () => {
18
- if (!customElements.get(MC_TAG_NAME)) {
19
- customElements.define(MC_TAG_NAME, EbsrMC);
20
- }
21
- };
22
- defineMultipleChoice();
23
- const isNonEmptyArray = a => Array.isArray(a) && a.length > 0;
24
- const isSessionComplete = session => {
25
- const a = (0, _lodashEs.get)(session, 'value.partA.value');
26
- const b = (0, _lodashEs.get)(session, 'value.partB.value');
27
- return isNonEmptyArray(a) && isNonEmptyArray(b);
28
- };
29
- exports.isSessionComplete = isSessionComplete;
30
- function getPlayerAttributes(element) {
31
- const player = element.closest('pie-player') || element.closest('pie-item-player');
32
- if (!player) {
33
- return {
34
- baseHeadingLevel: undefined,
35
- includeSrHeading: true
36
- };
37
- }
38
- const getRaw = (camelCaseName, hyphenatedName, allLowerName) => {
39
- let raw = player[camelCaseName];
40
-
41
- // fallback in case someone sets via HTML attribute manually
42
- if (raw == null) {
43
- raw = player.getAttribute(hyphenatedName) ?? player.getAttribute(allLowerName);
44
- }
45
- return raw;
46
- };
47
- const levelRaw = getRaw('baseHeadingLevel', 'base-heading-level', 'baseheadinglevel');
48
- const level = parseInt(levelRaw, 10);
49
- const baseHeadingLevel = Number.isFinite(level) && level >= 1 && level <= 6 ? level : undefined;
50
- const srRaw = getRaw('includeSrHeading', 'include-sr-heading', 'includesrheading');
51
- const includeSrHeading = srRaw == null ? true : srRaw !== false && srRaw !== 'false';
52
- return {
53
- baseHeadingLevel,
54
- includeSrHeading
55
- };
56
- }
57
- class Ebsr extends HTMLElement {
58
- constructor() {
59
- super();
60
- (0, _defineProperty2.default)(this, "onSessionUpdated", e => {
61
- if (e.target === this) {
62
- return;
63
- }
64
- e.preventDefault();
65
- e.stopImmediatePropagation();
66
- const id = e.target.getAttribute('id');
67
- if (id) {
68
- const key = `part${id.toUpperCase()}`;
69
- if (e.update) {
70
- this._model[key] = e.update;
71
- }
72
- //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
73
- this.dispatchSessionChanged(e.srcElement._session, key);
74
- }
75
- });
76
- this._model = {};
77
- this._session = {};
78
- }
79
- set model(m) {
80
- this._model = m;
81
- customElements.whenDefined(MC_TAG_NAME).then(() => {
82
- this.setPartModel(this.partA, 'partA');
83
- this.setPartModel(this.partB, 'partB');
84
- });
85
- }
86
- set session(s) {
87
- this._session = s;
88
- customElements.whenDefined(MC_TAG_NAME).then(() => {
89
- this.setPartSession(this.partA, 'partA');
90
- this.setPartSession(this.partB, 'partB');
91
- });
92
- }
93
- get session() {
94
- return this._session;
95
- }
96
- setPartModel(part, key) {
97
- if (this._model && this._model[key] && part) {
98
- const {
99
- mode
100
- } = this._model;
101
- part.model = {
102
- ...this._model[key],
103
- mode,
104
- keyMode: this._model[key].choicePrefix
105
- };
106
-
107
- // Parts of an EBSR item should not render their own SR headings —
108
- // the EBSR element itself provides the item-level heading.
109
- const {
110
- includeSrHeading,
111
- baseHeadingLevel
112
- } = getPlayerAttributes(this);
113
- part.includeSrHeading = includeSrHeading;
114
- part.baseHeadingLevel = baseHeadingLevel;
115
- }
116
- }
117
- setPartSession(part, key) {
118
- if (this._session && this._model && part) {
119
- const {
120
- value
121
- } = this._session;
122
- part.session = value && value[key] ? value[key] : {
123
- id: key
124
- };
125
- }
126
- }
127
- dispatchSessionChanged(partSession, key) {
128
- this._session.value = {
129
- ...this._session.value,
130
- [key]: partSession
131
- };
132
- log('[onSessionChanged] session: ', this._session);
133
- const complete = isSessionComplete(this._session);
134
- this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
135
- }
136
- get partA() {
137
- return this.querySelector(`${MC_TAG_NAME}#a`);
138
- }
139
- get partB() {
140
- return this.querySelector(`${MC_TAG_NAME}#b`);
141
- }
142
- connectedCallback() {
143
- this._render();
144
- this._initPlayerObserver();
145
- this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
146
- }
147
- disconnectedCallback() {
148
- this._disconnectPlayerObserver();
149
- this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);
150
- }
151
- _initPlayerObserver() {
152
- const player = this.closest('pie-player') || this.closest('pie-item-player');
153
- if (!player) return;
154
- this._playerObserver = new MutationObserver(() => {
155
- this._render();
156
- });
157
- this._playerObserver.observe(player, {
158
- attributes: true,
159
- attributeFilter: ['base-heading-level', 'baseheadinglevel', 'include-sr-heading', 'includesrheading']
160
- });
161
- }
162
- _disconnectPlayerObserver() {
163
- if (this._playerObserver) {
164
- this._playerObserver.disconnect();
165
- this._playerObserver = null;
166
- }
167
- }
168
- _render() {
169
- this.ariaLabel = 'Two-Part Question';
170
- this.role = 'region';
171
- const {
172
- baseHeadingLevel: ebsrLevel,
173
- includeSrHeading
174
- } = getPlayerAttributes(this);
175
- const headingTag = ebsrLevel ? `h${Math.min(6, ebsrLevel)}` : 'h2';
176
- const srHeading = includeSrHeading ? `<${headingTag} class="srOnly">Two-Part Question</${headingTag}>` : '';
177
- this.innerHTML = `
178
- <style>
179
- .srOnly {
180
- position: absolute;
181
- width: 1px;
182
- height: 1px;
183
- padding: 0;
184
- margin: -1px;
185
- overflow: hidden;
186
- left: -10000px;
187
- top: auto;
188
- }
189
- ${this._model?.extraCSSRules?.rules}
190
- </style>
191
- ${srHeading}
192
- <${MC_TAG_NAME} id="a"></${MC_TAG_NAME}>
193
- <${MC_TAG_NAME} id="b"></${MC_TAG_NAME}>
194
- `;
195
-
196
- // when item is re-rendered (due to connectedCallback), if the custom element is already defined,
197
- // we need to set the model and session, otherwise the setters are not reached again
198
- if (customElements.get(MC_TAG_NAME)) {
199
- this.setPartModel(this.partA, 'partA');
200
- this.setPartModel(this.partB, 'partB');
201
- this.setPartSession(this.partA, 'partA');
202
- this.setPartSession(this.partB, 'partB');
203
- }
204
- }
205
- }
206
- exports.default = Ebsr;
207
- //# sourceMappingURL=index.js.map
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_piePlayerEvents","require","_multipleChoice","_interopRequireDefault","_lodashEs","_debug","SESSION_CHANGED","SessionChangedEvent","TYPE","MC_TAG_NAME","log","debug","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","exports","getPlayerAttributes","element","player","closest","baseHeadingLevel","undefined","includeSrHeading","getRaw","camelCaseName","hyphenatedName","allLowerName","raw","getAttribute","levelRaw","level","parseInt","Number","isFinite","srRaw","Ebsr","HTMLElement","constructor","_defineProperty2","default","e","target","preventDefault","stopImmediatePropagation","id","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","model","m","whenDefined","then","setPartModel","partA","partB","s","setPartSession","part","mode","keyMode","choicePrefix","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","connectedCallback","_render","_initPlayerObserver","addEventListener","onSessionUpdated","disconnectedCallback","_disconnectPlayerObserver","removeEventListener","_playerObserver","MutationObserver","observe","attributes","attributeFilter","disconnect","ariaLabel","role","ebsrLevel","headingTag","Math","min","srHeading","innerHTML","extraCSSRules","rules"],"sources":["../src/index.js"],"sourcesContent":["import { SessionChangedEvent } from '@pie-framework/pie-player-events';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport { get } from 'lodash-es';\nimport debug from 'debug';\n\nconst SESSION_CHANGED = SessionChangedEvent.TYPE;\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\nconst log = debug('pie-elements:ebsr');\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\nfunction getPlayerAttributes(element) {\n const player =\n element.closest('pie-player') ||\n element.closest('pie-item-player');\n\n if (!player) {\n return { baseHeadingLevel: undefined, includeSrHeading: true };\n }\n\n const getRaw = (camelCaseName, hyphenatedName, allLowerName) => {\n let raw = player[camelCaseName];\n\n // fallback in case someone sets via HTML attribute manually\n if (raw == null) {\n raw =\n player.getAttribute(hyphenatedName) ??\n player.getAttribute(allLowerName);\n }\n\n return raw;\n };\n\n const levelRaw = getRaw('baseHeadingLevel', 'base-heading-level', 'baseheadinglevel');\n const level = parseInt(levelRaw, 10);\n const baseHeadingLevel = Number.isFinite(level) && level >= 1 && level <= 6 ? level : undefined;\n\n const srRaw = getRaw('includeSrHeading', 'include-sr-heading', 'includesrheading');\n const includeSrHeading = srRaw == null ? true : srRaw !== false && srRaw !== 'false';\n\n return { baseHeadingLevel, includeSrHeading };\n}\n\nexport default class Ebsr extends HTMLElement {\n constructor() {\n super();\n this._model = {};\n this._session = {};\n }\n\n onSessionUpdated = (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\n customElements.whenDefined(MC_TAG_NAME).then(() => {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n });\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 get session() {\n return this._session;\n }\n\n setPartModel(part, key) {\n if (this._model && this._model[key] && part) {\n const { mode } = this._model;\n\n part.model = {\n ...this._model[key],\n mode,\n keyMode: this._model[key].choicePrefix,\n };\n\n // Parts of an EBSR item should not render their own SR headings —\n // the EBSR element itself provides the item-level heading.\n const { includeSrHeading, baseHeadingLevel } = getPlayerAttributes(this);\n part.includeSrHeading = includeSrHeading;\n part.baseHeadingLevel = baseHeadingLevel;\n }\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._initPlayerObserver();\n this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);\n }\n\n disconnectedCallback() {\n this._disconnectPlayerObserver();\n this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);\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, {\n attributes: true,\n attributeFilter: ['base-heading-level', 'baseheadinglevel', 'include-sr-heading', 'includesrheading'],\n });\n }\n\n _disconnectPlayerObserver() {\n if (this._playerObserver) {\n this._playerObserver.disconnect();\n this._playerObserver = null;\n }\n }\n\n _render() {\n this.ariaLabel = 'Two-Part Question';\n this.role = 'region';\n\n const { baseHeadingLevel: ebsrLevel, includeSrHeading } = getPlayerAttributes(this);\n const headingTag = ebsrLevel ? `h${Math.min(6, ebsrLevel)}` : 'h2';\n const srHeading = includeSrHeading ? `<${headingTag} class=\"srOnly\">Two-Part Question</${headingTag}>` : '';\n\n this.innerHTML = `\n <style>\n .srOnly {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n left: -10000px;\n top: auto;\n }\n ${this._model?.extraCSSRules?.rules}\n </style>\n ${srHeading}\n <${MC_TAG_NAME} id=\"a\"></${MC_TAG_NAME}>\n <${MC_TAG_NAME} id=\"b\"></${MC_TAG_NAME}>\n `;\n\n // when item is re-rendered (due to connectedCallback), if the custom element is already defined,\n // we need to set the model and session, otherwise the setters are not reached again\n if (customElements.get(MC_TAG_NAME)) {\n this.setPartModel(this.partA, 'partA');\n this.setPartModel(this.partB, 'partB');\n this.setPartSession(this.partA, 'partA');\n this.setPartSession(this.partB, 'partB');\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/print.js DELETED
@@ -1,186 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.isSessionComplete = exports.default = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _lodashEs = require("lodash-es");
10
- var _multipleChoice = _interopRequireDefault(require("@pie-element/multiple-choice"));
11
- var _debug = _interopRequireDefault(require("debug"));
12
- var _piePlayerEvents = require("@pie-framework/pie-player-events");
13
- var _translator = _interopRequireDefault(require("@pie-lib/translator"));
14
- const MC_TAG_NAME = 'ebsr-multiple-choice';
15
- const SESSION_CHANGED = _piePlayerEvents.SessionChangedEvent.TYPE;
16
- const {
17
- translator
18
- } = _translator.default;
19
- const log = (0, _debug.default)('pie-element:ebsr:print');
20
-
21
- /**
22
- * Live in same package as main element - so we can access some of the shared comps!
23
- *
24
- * - update pslb to build print if src/print.js is there
25
- * - update demo el
26
- * - get configure/controller building
27
- */
28
-
29
- const preparePrintModel = (model, opts) => {
30
- const instr = opts.role === 'instructor';
31
- const printModel = (0, _lodashEs.cloneDeep)(model);
32
- printModel.prompt = printModel.promptEnabled !== false ? printModel.prompt : undefined;
33
- printModel.teacherInstructions = instr && printModel.teacherInstructionsEnabled !== false ? printModel.teacherInstructions : undefined;
34
- printModel.showTeacherInstructions = instr;
35
- printModel.alwaysShowCorrect = instr;
36
- printModel.mode = instr ? 'evaluate' : 'gather';
37
- printModel.disabled = true;
38
- printModel.animationsDisabled = true;
39
- printModel.lockChoiceOrder = true;
40
- printModel.choicesLayout = printModel.choicesLayout || 'vertical';
41
- printModel.choices = (printModel.choices || []).map(c => {
42
- c.rationale = instr && printModel.rationaleEnabled !== false ? c.rationale : undefined;
43
- c.hideTick = instr;
44
- c.feedback = undefined;
45
- return c;
46
- });
47
- printModel.keyMode = printModel.choicePrefix || 'letters';
48
- return printModel;
49
- };
50
- class EbsrMC extends _multipleChoice.default {}
51
- const defineMultipleChoice = () => {
52
- if (!customElements.get(MC_TAG_NAME)) {
53
- customElements.define(MC_TAG_NAME, EbsrMC);
54
- }
55
- };
56
- defineMultipleChoice();
57
- const isNonEmptyArray = a => Array.isArray(a) && a.length > 0;
58
- const isSessionComplete = session => {
59
- const a = (0, _lodashEs.get)(session, 'value.partA.value');
60
- const b = (0, _lodashEs.get)(session, 'value.partB.value');
61
- return isNonEmptyArray(a) && isNonEmptyArray(b);
62
- };
63
- exports.isSessionComplete = isSessionComplete;
64
- class Ebsr extends HTMLElement {
65
- constructor() {
66
- super();
67
- (0, _defineProperty2.default)(this, "onSessionUpdated", e => {
68
- if (e.target === this) {
69
- return;
70
- }
71
- e.preventDefault();
72
- e.stopImmediatePropagation();
73
- const id = e.target.getAttribute('id');
74
- if (id) {
75
- const key = `part${id.toUpperCase()}`;
76
- if (e.update) {
77
- this._model[key] = e.update;
78
- }
79
- //TODO: accessing a private property here. The session event should contain the update in future to prevent this.
80
- this.dispatchSessionChanged(e.srcElement._session, key);
81
- }
82
- });
83
- this._model = {};
84
- this._session = {};
85
- this._options = null;
86
- }
87
- set model(m) {
88
- this._model = m;
89
- this._updateParts();
90
- }
91
- set session(s) {
92
- this._session = s;
93
- customElements.whenDefined(MC_TAG_NAME).then(() => {
94
- this.setPartSession(this.partA, 'partA');
95
- this.setPartSession(this.partB, 'partB');
96
- });
97
- }
98
- _updateParts() {
99
- customElements.whenDefined(MC_TAG_NAME).then(() => {
100
- this.setPartModel(this.partA, 'partA');
101
- this.setPartModel(this.partB, 'partB');
102
- });
103
- }
104
- setPartModel(part, key) {
105
- if (this._model && this._model[key] && part && this._options) {
106
- let labels = {
107
- partA: undefined,
108
- partB: undefined
109
- };
110
- if (this._model.partLabels) {
111
- const language = this._model.language;
112
- labels = {
113
- partA: translator.t('ebsr.part', {
114
- lng: language,
115
- index: this._model.partLabelType === 'Letters' ? 'A' : '1'
116
- }),
117
- partB: translator.t('ebsr.part', {
118
- lng: language,
119
- index: this._model.partLabelType === 'Letters' ? 'B' : '2'
120
- })
121
- };
122
- }
123
- part.model = {
124
- ...preparePrintModel(this._model[key], this._options),
125
- keyMode: this._model[key].choicePrefix,
126
- partLabel: labels[key]
127
- };
128
-
129
- // pass options to enable print mode detection in multiple-choice component
130
- part.options = this._options;
131
- if (!part._session) {
132
- // for print, "set session" is not called,
133
- // but ebsr needs sessions in order to render the elements,
134
- // so we set it here it was not set already
135
- part.session = {};
136
- }
137
- }
138
- }
139
- set options(o) {
140
- this._options = o;
141
- // re-render parts so role changes (student/instructor) propagate to each part
142
- this._updateParts();
143
- }
144
- setPartSession(part, key) {
145
- if (this._session && this._model && part) {
146
- const {
147
- value
148
- } = this._session;
149
- part.session = value && value[key] ? value[key] : {
150
- id: key
151
- };
152
- }
153
- }
154
- dispatchSessionChanged(partSession, key) {
155
- this._session.value = {
156
- ...this._session.value,
157
- [key]: partSession
158
- };
159
- log('[onSessionChanged] session: ', this._session);
160
- const complete = isSessionComplete(this._session);
161
- this.dispatchEvent(new _piePlayerEvents.SessionChangedEvent(this.tagName.toLowerCase(), complete));
162
- }
163
- get partA() {
164
- return this.querySelector(`${MC_TAG_NAME}#a`);
165
- }
166
- get partB() {
167
- return this.querySelector(`${MC_TAG_NAME}#b`);
168
- }
169
- connectedCallback() {
170
- this._render();
171
- this.addEventListener(SESSION_CHANGED, this.onSessionUpdated);
172
- }
173
- disconnectedCallback() {
174
- this.removeEventListener(SESSION_CHANGED, this.onSessionUpdated);
175
- }
176
- _render() {
177
- this.innerHTML = `
178
- <div>
179
- <${MC_TAG_NAME} id="a"></${MC_TAG_NAME}>
180
- <${MC_TAG_NAME} id="b"></${MC_TAG_NAME}>
181
- </div>
182
- `;
183
- }
184
- }
185
- exports.default = Ebsr;
186
- //# sourceMappingURL=print.js.map
package/lib/print.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"print.js","names":["_lodashEs","require","_multipleChoice","_interopRequireDefault","_debug","_piePlayerEvents","_translator","MC_TAG_NAME","SESSION_CHANGED","SessionChangedEvent","TYPE","translator","Translator","log","debug","preparePrintModel","model","opts","instr","role","printModel","cloneDeep","prompt","promptEnabled","undefined","teacherInstructions","teacherInstructionsEnabled","showTeacherInstructions","alwaysShowCorrect","mode","disabled","animationsDisabled","lockChoiceOrder","choicesLayout","choices","map","c","rationale","rationaleEnabled","hideTick","feedback","keyMode","choicePrefix","EbsrMC","MultipleChoice","defineMultipleChoice","customElements","get","define","isNonEmptyArray","a","Array","isArray","length","isSessionComplete","session","b","exports","Ebsr","HTMLElement","constructor","_defineProperty2","default","e","target","preventDefault","stopImmediatePropagation","id","getAttribute","key","toUpperCase","update","_model","dispatchSessionChanged","srcElement","_session","_options","m","_updateParts","s","whenDefined","then","setPartSession","partA","partB","setPartModel","part","labels","partLabels","language","t","lng","index","partLabelType","partLabel","options","o","value","partSession","complete","dispatchEvent","tagName","toLowerCase","querySelector","connectedCallback","_render","addEventListener","onSessionUpdated","disconnectedCallback","removeEventListener","innerHTML"],"sources":["../src/print.js"],"sourcesContent":["import { cloneDeep, get } from 'lodash-es';\nimport MultipleChoice from '@pie-element/multiple-choice';\nimport debug from 'debug';\nimport { SessionChangedEvent } from '@pie-framework/pie-player-events';\nconst MC_TAG_NAME = 'ebsr-multiple-choice';\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 = (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":"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","ignoreList":[]}