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.
@@ -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: function () {
142
+ getInstance () {
141
143
  return this.instance;
142
144
  },
143
145
 
144
- setInstance: function (instance) {
146
+ setInstance (instance) {
145
147
  this.instance = instance;
146
148
  },
147
149
 
148
- getTypeIdentifier: function () {
150
+ getTypeIdentifier () {
149
151
  return this.typeIdentifier;
150
152
  },
151
153
 
152
- setTypeIdentifier: function (typeIdentifier) {
154
+ setTypeIdentifier (typeIdentifier) {
153
155
  this.typeIdentifier = typeIdentifier;
154
156
  },
155
157
 
156
- getResponseIdentifier: function () {
158
+ getResponseIdentifier () {
157
159
  return this.responseIdentifier;
158
160
  },
159
161
 
160
- setResponseIdentifier: function (responseIdentifier) {
162
+ setResponseIdentifier (responseIdentifier) {
161
163
  this.responseIdentifier = responseIdentifier;
162
164
  },
163
165
 
164
- getPci: function () {
166
+ getPci () {
165
167
  return this.pci;
166
168
  },
167
169
 
168
- setPci: function (pci) {
170
+ setPci (pci) {
169
171
  this.pci = pci;
170
172
  },
171
173
 
172
- getDom: function () {
174
+ getDom () {
173
175
  return this.dom;
174
176
  },
175
177
 
176
- setDom: function (dom) {
178
+ setDom (dom) {
177
179
  this.dom = dom;
178
180
  },
179
181
 
180
- getProperties: function () {
182
+ getProperties () {
181
183
  return this.properties;
182
184
  },
183
185
 
184
- setProperties: function (properties) {
186
+ setProperties (properties) {
185
187
  this.properties = properties;
186
188
  },
187
189
 
188
- getContextVariables: function () {
190
+ getContextVariables () {
189
191
  return this.contextVariables;
190
192
  },
191
193
 
192
- setContextVariables: function (contextVariables) {
194
+ setContextVariables (contextVariables) {
193
195
  this.contextVariables = contextVariables;
194
196
  },
195
197
 
196
- getTemplateVariables: function () {
198
+ getTemplateVariables () {
197
199
  return this.templateVariables;
198
200
  },
199
201
 
200
- setTemplateVariables: function (templateVariables) {
202
+ setTemplateVariables (templateVariables) {
201
203
  this.templateVariables = templateVariables;
202
204
  },
203
205
 
204
- getBoundTo: function () {
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: function (boundTo) {
228
+ setBoundTo (boundTo) {
209
229
  this.boundTo = boundTo;
210
230
  },
211
231
 
212
- getStatus: function () {
232
+ getStatus () {
213
233
  return this.status;
214
234
  },
215
235
 
216
- setStatus: function (status) {
236
+ setStatus (status) {
217
237
  this.status = status;
218
238
  },
219
239
 
220
- getModuleResolution: function () {
240
+ getModuleResolution () {
221
241
  return this.moduleResolution;
222
242
  },
223
243
 
224
- setModuleResolution: function (moduleResolution) {
244
+ setModuleResolution (moduleResolution) {
225
245
  this.moduleResolution = moduleResolution;
226
246
  },
227
247
 
228
- getState: function () {
248
+ getState () {
229
249
  return this.state;
230
250
  },
231
251
 
232
- setState: function (state) {
252
+ setState (state) {
233
253
  this.state = (typeof state === 'undefined') ? null : JSON.parse(state);
234
254
  },
235
255
 
236
- getStateFromState: function () {
256
+ getStateFromState () {
237
257
  return (this.state === null) ? null : this.state.state;
238
258
  },
239
259
 
240
- getResponseFromState: function () {
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: function () {
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: function (pci) {
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
- this.injectMarkup();
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: function () {
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: function () {
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
- getModuleDependencies: function () {
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: function (
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: function () {
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: function (instance, state) {
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: function (instance, response, state, status) {
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: function(stringifiedStateObject) {
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: function(valid, value) {
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: function (name) {
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: function (element, eventName, eventHandler) {
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: function (element) {
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: function (domElement) {
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: function(event) {
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
- showGlossaryHandler(t) {
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") + "configuration Fetch error:", n), null;
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((r) => {
28971
- if (ah.isValidSlot(r)) {
28972
- if (r.type.name === "QtiPrompt") {
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 (r.type.name === "QtiInteractionModules") {
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 (r.type.name === "QtiInteractionMarkup") {
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 (r.type.name === "QtiTemplateVariable") {
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
- if (!n) return n = !0;
28994
- throw new l("Maximum of 1 qti-interaction-markup element permitted");
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 (r.type.name === "QtiContextVariable") return s = !0;
28997
- if (r.type.name === "QtiStylesheet") return !0;
28998
- throw new l('Node is not permitted inside QtiPortableCustomInteraction: "' + r.type.name + '"');
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(),