qti3-item-player-vue3 0.2.3 → 0.2.5
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/dist/assets/pci/pci.html
CHANGED
@@ -127,6 +127,8 @@ const QTI_PCI_API = {
|
|
127
127
|
properties: null,
|
128
128
|
contextVariables: null,
|
129
129
|
templateVariables: null,
|
130
|
+
stylesheets: null,
|
131
|
+
catalogInfo: null,
|
130
132
|
moduleResolution: null,
|
131
133
|
instance: null,
|
132
134
|
response: null,
|
@@ -137,107 +139,125 @@ const QTI_PCI_API = {
|
|
137
139
|
height: 0,
|
138
140
|
onQtiInteractionChanged: null,
|
139
141
|
|
140
|
-
getInstance
|
142
|
+
getInstance () {
|
141
143
|
return this.instance;
|
142
144
|
},
|
143
145
|
|
144
|
-
setInstance
|
146
|
+
setInstance (instance) {
|
145
147
|
this.instance = instance;
|
146
148
|
},
|
147
149
|
|
148
|
-
getTypeIdentifier
|
150
|
+
getTypeIdentifier () {
|
149
151
|
return this.typeIdentifier;
|
150
152
|
},
|
151
153
|
|
152
|
-
setTypeIdentifier
|
154
|
+
setTypeIdentifier (typeIdentifier) {
|
153
155
|
this.typeIdentifier = typeIdentifier;
|
154
156
|
},
|
155
157
|
|
156
|
-
getResponseIdentifier
|
158
|
+
getResponseIdentifier () {
|
157
159
|
return this.responseIdentifier;
|
158
160
|
},
|
159
161
|
|
160
|
-
setResponseIdentifier
|
162
|
+
setResponseIdentifier (responseIdentifier) {
|
161
163
|
this.responseIdentifier = responseIdentifier;
|
162
164
|
},
|
163
165
|
|
164
|
-
getPci
|
166
|
+
getPci () {
|
165
167
|
return this.pci;
|
166
168
|
},
|
167
169
|
|
168
|
-
setPci
|
170
|
+
setPci (pci) {
|
169
171
|
this.pci = pci;
|
170
172
|
},
|
171
173
|
|
172
|
-
getDom
|
174
|
+
getDom () {
|
173
175
|
return this.dom;
|
174
176
|
},
|
175
177
|
|
176
|
-
setDom
|
178
|
+
setDom (dom) {
|
177
179
|
this.dom = dom;
|
178
180
|
},
|
179
181
|
|
180
|
-
getProperties
|
182
|
+
getProperties () {
|
181
183
|
return this.properties;
|
182
184
|
},
|
183
185
|
|
184
|
-
setProperties
|
186
|
+
setProperties (properties) {
|
185
187
|
this.properties = properties;
|
186
188
|
},
|
187
189
|
|
188
|
-
getContextVariables
|
190
|
+
getContextVariables () {
|
189
191
|
return this.contextVariables;
|
190
192
|
},
|
191
193
|
|
192
|
-
setContextVariables
|
194
|
+
setContextVariables (contextVariables) {
|
193
195
|
this.contextVariables = contextVariables;
|
194
196
|
},
|
195
197
|
|
196
|
-
getTemplateVariables
|
198
|
+
getTemplateVariables () {
|
197
199
|
return this.templateVariables;
|
198
200
|
},
|
199
201
|
|
200
|
-
setTemplateVariables
|
202
|
+
setTemplateVariables (templateVariables) {
|
201
203
|
this.templateVariables = templateVariables;
|
202
204
|
},
|
203
205
|
|
204
|
-
|
206
|
+
getStylesheets () {
|
207
|
+
return this.stylesheets;
|
208
|
+
},
|
209
|
+
|
210
|
+
setStylesheets (stylesheets) {
|
211
|
+
if (typeof stylesheets === 'undefined') return;
|
212
|
+
this.stylesheets = stylesheets;
|
213
|
+
},
|
214
|
+
|
215
|
+
getCatalogInfo () {
|
216
|
+
return this.catalogInfo;
|
217
|
+
},
|
218
|
+
|
219
|
+
setCatalogInfo (catalogInfo) {
|
220
|
+
if (typeof catalogInfo === 'undefined') return;
|
221
|
+
this.catalogInfo = catalogInfo;
|
222
|
+
},
|
223
|
+
|
224
|
+
getBoundTo () {
|
205
225
|
return this.boundTo;
|
206
226
|
},
|
207
227
|
|
208
|
-
setBoundTo
|
228
|
+
setBoundTo (boundTo) {
|
209
229
|
this.boundTo = boundTo;
|
210
230
|
},
|
211
231
|
|
212
|
-
getStatus
|
232
|
+
getStatus () {
|
213
233
|
return this.status;
|
214
234
|
},
|
215
235
|
|
216
|
-
setStatus
|
236
|
+
setStatus (status) {
|
217
237
|
this.status = status;
|
218
238
|
},
|
219
239
|
|
220
|
-
getModuleResolution
|
240
|
+
getModuleResolution () {
|
221
241
|
return this.moduleResolution;
|
222
242
|
},
|
223
243
|
|
224
|
-
setModuleResolution
|
244
|
+
setModuleResolution (moduleResolution) {
|
225
245
|
this.moduleResolution = moduleResolution;
|
226
246
|
},
|
227
247
|
|
228
|
-
getState
|
248
|
+
getState () {
|
229
249
|
return this.state;
|
230
250
|
},
|
231
251
|
|
232
|
-
setState
|
252
|
+
setState (state) {
|
233
253
|
this.state = (typeof state === 'undefined') ? null : JSON.parse(state);
|
234
254
|
},
|
235
255
|
|
236
|
-
getStateFromState
|
256
|
+
getStateFromState () {
|
237
257
|
return (this.state === null) ? null : this.state.state;
|
238
258
|
},
|
239
259
|
|
240
|
-
getResponseFromState
|
260
|
+
getResponseFromState () {
|
241
261
|
return (this.state === null) ? undefined : this.state.response;
|
242
262
|
},
|
243
263
|
|
@@ -246,7 +266,7 @@ const QTI_PCI_API = {
|
|
246
266
|
* Upon completion, call NotifyPciStateReady, passing the
|
247
267
|
* stringified response and state as parameters.
|
248
268
|
*/
|
249
|
-
getInteractionState
|
269
|
+
getInteractionState () {
|
250
270
|
const obj = {
|
251
271
|
response: null,
|
252
272
|
state: null
|
@@ -265,7 +285,7 @@ const QTI_PCI_API = {
|
|
265
285
|
this.NotifyPciStateReady(JSON.stringify(obj));
|
266
286
|
},
|
267
287
|
|
268
|
-
initialize
|
288
|
+
initialize (pci) {
|
269
289
|
this.setDom(document.getElementById('qti3-player-pci-element'));
|
270
290
|
this.setPci(pci);
|
271
291
|
this.setTypeIdentifier(pci.typeIdentifier);
|
@@ -273,13 +293,16 @@ const QTI_PCI_API = {
|
|
273
293
|
this.setModuleResolution(pci.moduleResolution);
|
274
294
|
this.setContextVariables(pci.contextVariables);
|
275
295
|
this.setTemplateVariables(pci.templateVariables);
|
296
|
+
this.setStylesheets(pci.stylesheets);
|
297
|
+
this.setCatalogInfo(pci.catalogInfo);
|
276
298
|
this.setBoundTo(pci.boundTo);
|
277
299
|
this.setStatus(pci.status)
|
278
300
|
|
279
301
|
this.trackResize(this.getDom());
|
280
302
|
this.trackQtiInteractionChanged(this.getDom());
|
303
|
+
this.injectStylesheets();
|
281
304
|
this.injectClassAttribute();
|
282
|
-
|
305
|
+
this.injectMarkup();
|
283
306
|
this.launchPci(
|
284
307
|
this.getTypeIdentifier(),
|
285
308
|
this.getDom(),
|
@@ -293,13 +316,13 @@ const QTI_PCI_API = {
|
|
293
316
|
);
|
294
317
|
},
|
295
318
|
|
296
|
-
injectClassAttribute
|
319
|
+
injectClassAttribute () {
|
297
320
|
if (this.getPci().classAttribute.length == 0) return
|
298
321
|
let wrapperEl = document.getElementById('qti3-player-pci-wrapper');
|
299
322
|
wrapperEl.classList.add(this.getPci().classAttribute);
|
300
323
|
},
|
301
324
|
|
302
|
-
injectMarkup
|
325
|
+
injectMarkup () {
|
303
326
|
this.getDom().innerHTML =
|
304
327
|
`<div
|
305
328
|
id="qti3-player-pci-markup"
|
@@ -307,7 +330,21 @@ const QTI_PCI_API = {
|
|
307
330
|
>${this.getPci().markup}</div>`;
|
308
331
|
},
|
309
332
|
|
310
|
-
|
333
|
+
injectStylesheets () {
|
334
|
+
const stylesheets = this.getStylesheets();
|
335
|
+
if (stylesheets === null) return;
|
336
|
+
stylesheets.forEach((stylesheet) => {
|
337
|
+
// Get the head element
|
338
|
+
const head = document.head;
|
339
|
+
const link = document.createElement('link');
|
340
|
+
link.rel = 'stylesheet';
|
341
|
+
link.href = stylesheet.href;
|
342
|
+
link.type = stylesheet.type;
|
343
|
+
head.appendChild(link);
|
344
|
+
});
|
345
|
+
},
|
346
|
+
|
347
|
+
getModuleDependencies () {
|
311
348
|
// Init qtiCustomInteractionContext as the first dependency
|
312
349
|
let dependencies = ['qtiCustomInteractionContext'];
|
313
350
|
|
@@ -333,7 +370,7 @@ const QTI_PCI_API = {
|
|
333
370
|
* @param {Object} boundTo The response variable this PCI is bound to and its value
|
334
371
|
* @param {String} status Item lifecycle status; e.g., 'interacting'
|
335
372
|
*/
|
336
|
-
launchPci
|
373
|
+
launchPci (
|
337
374
|
typeIdentifier,
|
338
375
|
dom,
|
339
376
|
responseIdentifier,
|
@@ -374,7 +411,7 @@ const QTI_PCI_API = {
|
|
374
411
|
});
|
375
412
|
},
|
376
413
|
|
377
|
-
NotifyPciChildLoaded
|
414
|
+
NotifyPciChildLoaded () {
|
378
415
|
if (self == top) return;
|
379
416
|
|
380
417
|
// Extract the identifier qs param
|
@@ -384,7 +421,7 @@ const QTI_PCI_API = {
|
|
384
421
|
window.parent.postMessage({ message: 'PciChildLoaded', identifier: this.getResponseIdentifier(), success: true },'*');
|
385
422
|
},
|
386
423
|
|
387
|
-
NotifyPciReady
|
424
|
+
NotifyPciReady (instance, state) {
|
388
425
|
this.setInstance(instance);
|
389
426
|
|
390
427
|
if (self == top) return;
|
@@ -397,7 +434,7 @@ const QTI_PCI_API = {
|
|
397
434
|
window.parent.postMessage({ message: 'PciReady', identifier: this.getResponseIdentifier(), width: computedWidth, height: computedHeight, success: true },'*');
|
398
435
|
},
|
399
436
|
|
400
|
-
NotifyPciDone
|
437
|
+
NotifyPciDone (instance, response, state, status) {
|
401
438
|
if (self == top) return;
|
402
439
|
|
403
440
|
const stringifiedState = JSON.stringify({
|
@@ -408,12 +445,12 @@ const QTI_PCI_API = {
|
|
408
445
|
window.parent.postMessage({ message: 'PciDone', identifier: this.getResponseIdentifier(), state: stringifiedStateObject, status: status, success: true },'*');
|
409
446
|
},
|
410
447
|
|
411
|
-
NotifyPciStateReady
|
448
|
+
NotifyPciStateReady (stringifiedStateObject) {
|
412
449
|
if (self == top) return;
|
413
450
|
window.parent.postMessage({ message: 'PciGetState_Reply', identifier: this.getResponseIdentifier(), state: stringifiedStateObject, success: true },'*');
|
414
451
|
},
|
415
452
|
|
416
|
-
NotifyPciInteractionChanged
|
453
|
+
NotifyPciInteractionChanged (valid, value) {
|
417
454
|
if (self == top) return;
|
418
455
|
|
419
456
|
const stringifiedState = JSON.stringify({
|
@@ -430,7 +467,7 @@ const QTI_PCI_API = {
|
|
430
467
|
* @method getQueryParameterByName
|
431
468
|
* @param {String} name The name of the paramter to get from the URL.
|
432
469
|
*/
|
433
|
-
getQueryParameterByName
|
470
|
+
getQueryParameterByName (name) {
|
434
471
|
let regex = new RegExp("[\\?&]" + name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]') + '=([^&#]*)');
|
435
472
|
let results = regex.exec(window.location.search);
|
436
473
|
|
@@ -439,7 +476,7 @@ const QTI_PCI_API = {
|
|
439
476
|
return decodeURIComponent(results[1].replace(/\+/g, " "));
|
440
477
|
},
|
441
478
|
|
442
|
-
bindWindowEventListener
|
479
|
+
bindWindowEventListener (element, eventName, eventHandler) {
|
443
480
|
if (element.addEventListener) {
|
444
481
|
element.addEventListener(eventName, eventHandler, false);
|
445
482
|
} else if (element.attachEvent) {
|
@@ -448,7 +485,7 @@ const QTI_PCI_API = {
|
|
448
485
|
}
|
449
486
|
},
|
450
487
|
|
451
|
-
trackResize
|
488
|
+
trackResize (element) {
|
452
489
|
// create a mutation observer instance
|
453
490
|
let observer = new MutationObserver(function(mutations) {
|
454
491
|
mutations.forEach(function(mutation) {
|
@@ -475,12 +512,12 @@ const QTI_PCI_API = {
|
|
475
512
|
});
|
476
513
|
},
|
477
514
|
|
478
|
-
trackQtiInteractionChanged
|
515
|
+
trackQtiInteractionChanged (domElement) {
|
479
516
|
this.onQtiInteractionChanged = this.onQtiInteractionChangedHandler.bind(this);
|
480
517
|
domElement.addEventListener('qti-interaction-changed', this.onQtiInteractionChanged);
|
481
518
|
},
|
482
519
|
|
483
|
-
onQtiInteractionChangedHandler
|
520
|
+
onQtiInteractionChangedHandler (event) {
|
484
521
|
event.preventDefault();
|
485
522
|
|
486
523
|
if (typeof event.detail === 'undefined') {
|
@@ -1426,9 +1426,9 @@ class re {
|
|
1426
1426
|
case "directedPair":
|
1427
1427
|
case "pair":
|
1428
1428
|
case "uri":
|
1429
|
+
case "file":
|
1429
1430
|
return s[i] = t, s;
|
1430
1431
|
case "intOrIdentifier":
|
1431
|
-
case "file":
|
1432
1432
|
return s[i] = null, s;
|
1433
1433
|
default:
|
1434
1434
|
return s[i] = null, s;
|
@@ -1557,6 +1557,34 @@ class re {
|
|
1557
1557
|
computeNodeContext(t) {
|
1558
1558
|
return t === null || t.$options.name === "QtiAssessmentItem" ? "ITEM" : t.$options.name === "QtiAssessmentTest" ? "TEST" : this.computeNodeContext(t.$parent);
|
1559
1559
|
}
|
1560
|
+
base64ToBytes(t) {
|
1561
|
+
const i = atob(t);
|
1562
|
+
return Uint8Array.from(i, (s) => s.codePointAt(0));
|
1563
|
+
}
|
1564
|
+
bytesToBase64(t) {
|
1565
|
+
const i = Array.from(
|
1566
|
+
t,
|
1567
|
+
(s) => String.fromCodePoint(s)
|
1568
|
+
).join("");
|
1569
|
+
return btoa(i);
|
1570
|
+
}
|
1571
|
+
/**
|
1572
|
+
* @description Utility method to base64-encode arbitrary bytes.
|
1573
|
+
* @param {*} bytes
|
1574
|
+
* @returns base64-encoded string
|
1575
|
+
*/
|
1576
|
+
encodeBytesToBase64(t) {
|
1577
|
+
const i = new TextEncoder();
|
1578
|
+
return this.bytesToBase64(i.encode(t));
|
1579
|
+
}
|
1580
|
+
/**
|
1581
|
+
* @description Utility method to decode base64 bytes.
|
1582
|
+
* @param {*} base64
|
1583
|
+
* @returns decoded string
|
1584
|
+
*/
|
1585
|
+
decodeBase64ToBytes(t) {
|
1586
|
+
return new TextDecoder().decode(this.base64ToBytes(t));
|
1587
|
+
}
|
1560
1588
|
}
|
1561
1589
|
const yv = new re(), S = {
|
1562
1590
|
player: null,
|
@@ -4915,8 +4943,11 @@ const D = (e, t) => {
|
|
4915
4943
|
createTabs(e) {
|
4916
4944
|
this.tabs.create(e);
|
4917
4945
|
},
|
4946
|
+
focusFirstTab() {
|
4947
|
+
this.tabs !== null && this.tabs.focusFirstTab();
|
4948
|
+
},
|
4918
4949
|
show() {
|
4919
|
-
this.state.hidden = !1, this.render(), this.state.isShown || (this.state.isShown = !0, this.center());
|
4950
|
+
this.state.hidden = !1, this.render(), this.focusFirstTab(), this.state.isShown || (this.state.isShown = !0, this.center());
|
4920
4951
|
},
|
4921
4952
|
hide() {
|
4922
4953
|
this.state.hidden = !0, this.render();
|
@@ -5757,9 +5788,13 @@ class ZT {
|
|
5757
5788
|
},
|
5758
5789
|
GLOSSARY_CLICKABLE_CLASS: "qti3-player-catalog-clickable-term",
|
5759
5790
|
// No language specified
|
5760
|
-
LANGUAGE_OFF: ""
|
5791
|
+
LANGUAGE_OFF: "",
|
5792
|
+
keys: {
|
5793
|
+
ENTER: 13,
|
5794
|
+
SPACE: 32
|
5795
|
+
}
|
5761
5796
|
});
|
5762
|
-
return this.item = t, this.itemElement = t.$refs.item, this.store = i, this.nodeList = null, this.showGlossary = this.showGlossaryHandler.bind(this), this;
|
5797
|
+
return this.item = t, this.itemElement = t.$refs.item, this.store = i, this.nodeList = null, this.showGlossary = this.showGlossaryHandler.bind(this), this.onKeyDown = this.keydownHandler.bind(this), this;
|
5763
5798
|
}
|
5764
5799
|
bindAll() {
|
5765
5800
|
this.store.getCatalogs().length !== 0 && (this.resetAll(), this.nodeList = this.itemElement.querySelectorAll("[data-catalog-idref]"), this.nodeList.length !== 0 && this.bindGlossary(this.nodeList));
|
@@ -5808,7 +5843,7 @@ class ZT {
|
|
5808
5843
|
* @param {DomElement} node
|
5809
5844
|
*/
|
5810
5845
|
bindGlossaryDOM(t) {
|
5811
|
-
t.classList.contains(this.constants.GLOSSARY_CLICKABLE_CLASS) || (t.classList.add(this.constants.GLOSSARY_CLICKABLE_CLASS), this.setGlossaryTerm(t), t.addEventListener("click", this.showGlossary), t.addEventListener("touchend", this.showGlossary));
|
5846
|
+
t.classList.contains(this.constants.GLOSSARY_CLICKABLE_CLASS) || (t.classList.add(this.constants.GLOSSARY_CLICKABLE_CLASS), t.setAttribute("tabindex", "0"), this.setGlossaryTerm(t), t.addEventListener("click", this.showGlossary), t.addEventListener("touchend", this.showGlossary), t.addEventListener("keydown", this.onKeyDown));
|
5812
5847
|
}
|
5813
5848
|
/**
|
5814
5849
|
* @description This unbinds a DOM element as a clickable
|
@@ -5816,7 +5851,7 @@ class ZT {
|
|
5816
5851
|
* @param {DomElement} node
|
5817
5852
|
*/
|
5818
5853
|
unbindGlossaryDOM(t) {
|
5819
|
-
t.classList.contains(this.constants.GLOSSARY_CLICKABLE_CLASS) && (t.classList.remove(this.constants.GLOSSARY_CLICKABLE_CLASS), t.removeEventListener("click", this.showGlossary), t.removeEventListener("touchend", this.showGlossary));
|
5854
|
+
t.classList.contains(this.constants.GLOSSARY_CLICKABLE_CLASS) && (t.classList.remove(this.constants.GLOSSARY_CLICKABLE_CLASS), t.setAttribute("tabindex", "-1"), t.removeEventListener("click", this.showGlossary), t.removeEventListener("touchend", this.showGlossary), t.removeEventListener("keydown", this.keyDownHandler));
|
5820
5855
|
}
|
5821
5856
|
/**
|
5822
5857
|
* @description Set a data-glossary-term on a node in the DOM.
|
@@ -5831,6 +5866,29 @@ class ZT {
|
|
5831
5866
|
t.setAttribute("data-glossary-term", t.innerText);
|
5832
5867
|
}
|
5833
5868
|
}
|
5869
|
+
/**
|
5870
|
+
* @description Handles a Show Glossary Click or Touch event.
|
5871
|
+
* @param {Event} event - contains the event target and
|
5872
|
+
* the data-catalog-idref
|
5873
|
+
*/
|
5874
|
+
showGlossaryHandler(t) {
|
5875
|
+
t.preventDefault(), t.stopPropagation(), this.emitShowGlossaryEvent(t);
|
5876
|
+
}
|
5877
|
+
/**
|
5878
|
+
* @description Handles a Show Glossary Keydown event.
|
5879
|
+
* @param {Event} event - contains the event target and
|
5880
|
+
* the data-catalog-idref
|
5881
|
+
*/
|
5882
|
+
keydownHandler(t) {
|
5883
|
+
let i = !1;
|
5884
|
+
switch (t.keyCode) {
|
5885
|
+
case this.constants.keys.SPACE:
|
5886
|
+
case this.constants.keys.ENTER:
|
5887
|
+
this.emitShowGlossaryEvent(t), i = !0;
|
5888
|
+
break;
|
5889
|
+
}
|
5890
|
+
i && (t.stopPropagation(), t.preventDefault());
|
5891
|
+
}
|
5834
5892
|
/**
|
5835
5893
|
* @description Does the heavy work of building a Glossary data payload.
|
5836
5894
|
* Sends an 'itemCatalogEvent' to the parent and passes the Glossary data
|
@@ -5838,8 +5896,7 @@ class ZT {
|
|
5838
5896
|
* @param {Event} event - contains the event target and
|
5839
5897
|
* the data-catalog-idref
|
5840
5898
|
*/
|
5841
|
-
|
5842
|
-
t.preventDefault(), t.stopPropagation();
|
5899
|
+
emitShowGlossaryEvent(t) {
|
5843
5900
|
const i = t.target.getAttribute("data-catalog-idref"), s = this.createGlossaryData(i);
|
5844
5901
|
this.item.$parent.$emit("itemCatalogEvent", {
|
5845
5902
|
type: "glossary",
|
@@ -8997,6 +9054,12 @@ const J1 = {
|
|
8997
9054
|
};
|
8998
9055
|
},
|
8999
9056
|
methods: {
|
9057
|
+
getHref() {
|
9058
|
+
return this.href;
|
9059
|
+
},
|
9060
|
+
getType() {
|
9061
|
+
return this.type;
|
9062
|
+
},
|
9000
9063
|
/**
|
9001
9064
|
* @description Pull the stylesheet from the Href URI.
|
9002
9065
|
* Wrap stylesheet contents in a style element, then inject into the
|
@@ -28672,7 +28735,7 @@ class RO {
|
|
28672
28735
|
a[o] !== null && !a[o].startsWith("http") && (s ? a[o] = `${this.getConfigurationRelativePath(t)}${a[o]}` : a[o] = `${this.getItemPathUri()}${a[o]}`);
|
28673
28736
|
return r;
|
28674
28737
|
} catch (n) {
|
28675
|
-
return console.log((i ? "Primary" : "Fallback") + "
|
28738
|
+
return console.log((i ? "Primary" : "Fallback") + " Configuration Fetch error:", n), null;
|
28676
28739
|
}
|
28677
28740
|
}
|
28678
28741
|
async fetchDefaultModuleResolution(t, i) {
|
@@ -28808,6 +28871,8 @@ const ah = new j(), Nm = new re(), NO = {
|
|
28808
28871
|
configuration: null,
|
28809
28872
|
templateVariables: [],
|
28810
28873
|
contextVariables: [],
|
28874
|
+
stylesheets: [],
|
28875
|
+
catalogInfoNode: null,
|
28811
28876
|
uniqueId: null,
|
28812
28877
|
pciIframe: null,
|
28813
28878
|
isReady: !1,
|
@@ -28966,36 +29031,47 @@ const ah = new j(), Nm = new re(), NO = {
|
|
28966
29031
|
*/
|
28967
29032
|
validateChildren() {
|
28968
29033
|
if (!this.$slots.default) return;
|
28969
|
-
let e = !1, t = !1, i = !1, s = !1, n = !1;
|
28970
|
-
this.$slots.default().forEach((
|
28971
|
-
if (ah.isValidSlot(
|
28972
|
-
if (
|
28973
|
-
if (t || i || s || n)
|
29034
|
+
let e = !1, t = !1, i = !1, s = !1, n = !1, r = !1, a = !1;
|
29035
|
+
this.$slots.default().forEach((o) => {
|
29036
|
+
if (ah.isValidSlot(o)) {
|
29037
|
+
if (o.type.name === "QtiPrompt") {
|
29038
|
+
if (t || i || s || n || r || a)
|
28974
29039
|
throw new l("Invalid element order. qti-prompt must be the first element");
|
28975
29040
|
if (!e) return e = !0;
|
28976
29041
|
throw new l("Maximum of 1 qti-prompt element permitted");
|
28977
29042
|
}
|
28978
|
-
if (
|
28979
|
-
if (t || s || n)
|
29043
|
+
if (o.type.name === "QtiInteractionModules") {
|
29044
|
+
if (t || s || n || r || a)
|
28980
29045
|
throw new l("Invalid element order: qti-interaction-modules");
|
28981
29046
|
if (!i) return i = !0;
|
28982
29047
|
throw new l("Maximum of 1 qti-interaction-modules element permitted");
|
28983
29048
|
}
|
28984
|
-
if (
|
28985
|
-
if (s || n)
|
29049
|
+
if (o.type.name === "QtiInteractionMarkup") {
|
29050
|
+
if (s || n || r || a)
|
28986
29051
|
throw new l("Invalid element order: qti-interaction-markup");
|
28987
29052
|
if (!t) return t = !0;
|
28988
29053
|
throw new l("Maximum of 1 qti-interaction-markup element permitted");
|
28989
29054
|
}
|
28990
|
-
if (
|
28991
|
-
if (s)
|
29055
|
+
if (o.type.name === "QtiTemplateVariable") {
|
29056
|
+
if (s || r || a)
|
28992
29057
|
throw new l("Invalid element order: qti-template-variable");
|
28993
|
-
|
28994
|
-
|
29058
|
+
return n = !0;
|
29059
|
+
}
|
29060
|
+
if (o.type.name === "QtiContextVariable") {
|
29061
|
+
if (r || a)
|
29062
|
+
throw new l("Invalid element order: qti-context-variable");
|
29063
|
+
return s = !0;
|
28995
29064
|
}
|
28996
|
-
if (
|
28997
|
-
|
28998
|
-
|
29065
|
+
if (o.type.name === "QtiStylesheet") {
|
29066
|
+
if (a)
|
29067
|
+
throw new l("Invalid element order: qti-stylesheet");
|
29068
|
+
return r = !0;
|
29069
|
+
}
|
29070
|
+
if (o.type.name === "QtiCatalogInfo") {
|
29071
|
+
if (!a) return a = !0;
|
29072
|
+
throw new l("Maximum of 1 qti-catalog-info element permitted");
|
29073
|
+
}
|
29074
|
+
throw new l('Node is not permitted inside QtiPortableCustomInteraction: "' + o.type.name + '"');
|
28999
29075
|
}
|
29000
29076
|
});
|
29001
29077
|
},
|
@@ -29017,6 +29093,12 @@ const ah = new j(), Nm = new re(), NO = {
|
|
29017
29093
|
case "QtiContextVariable":
|
29018
29094
|
this.contextVariables.push(i);
|
29019
29095
|
break;
|
29096
|
+
case "QtiStylesheet":
|
29097
|
+
this.stylesheets.push(i);
|
29098
|
+
break;
|
29099
|
+
case "QtiCatalogInfo":
|
29100
|
+
this.catalogInfoNode = i;
|
29101
|
+
break;
|
29020
29102
|
}
|
29021
29103
|
}), this.priorState !== null && this.restoreValue(this.priorState.value, this.priorState.state), this.initialWidth = this.$refs.root.clientWidth);
|
29022
29104
|
},
|
@@ -29087,6 +29169,17 @@ const ah = new j(), Nm = new re(), NO = {
|
|
29087
29169
|
e[this.templateVariables[t].getIdentifier()] = this.templateVariables[t].evaluate();
|
29088
29170
|
return e;
|
29089
29171
|
},
|
29172
|
+
getStylesheets() {
|
29173
|
+
let e = [];
|
29174
|
+
for (let t = 0; t < this.stylesheets.length; t++) {
|
29175
|
+
const i = this.stylesheets[t];
|
29176
|
+
e.push({ href: i.getHref(), type: i.getType() });
|
29177
|
+
}
|
29178
|
+
return e;
|
29179
|
+
},
|
29180
|
+
getCatalogInfo() {
|
29181
|
+
return this.catalogInfoNode;
|
29182
|
+
},
|
29090
29183
|
getModules() {
|
29091
29184
|
return this.modules;
|
29092
29185
|
},
|
@@ -29129,6 +29222,8 @@ const ah = new j(), Nm = new re(), NO = {
|
|
29129
29222
|
boundTo: this.getResponseVariable(),
|
29130
29223
|
templateVariables: this.getTemplateVariables(),
|
29131
29224
|
contextVariables: this.getContextVariables(),
|
29225
|
+
stylesheets: this.getStylesheets(),
|
29226
|
+
catalogInfo: this.getCatalogInfo(),
|
29132
29227
|
module: this.module,
|
29133
29228
|
modules: this.getModules(),
|
29134
29229
|
moduleResolution: this.getConfiguration(),
|