qti3-item-player-vue3 0.2.3 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
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(),
|