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.
@@ -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(),