@media-quest/engine 0.0.39 → 0.0.41

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.
@@ -40,53 +40,39 @@ type MqEventEngineStart = _MqEvent<"engine-start", {
40
40
  }>;
41
41
  interface MqEventPageEnter extends _MqEvent<"page-enter", {
42
42
  readonly pageId: string;
43
- readonly pageNumber: number;
44
43
  readonly pagePrefix: string;
45
44
  }> {
46
45
  }
47
46
  interface MqEventPageLeave extends _MqEvent<"page-leave", {
48
47
  readonly pageId: string;
49
- readonly pageNumber: number;
50
48
  readonly pagePrefix: string;
51
49
  }> {
52
50
  }
53
51
  type MqEventUserClicked = _MqEvent<"user-clicked", {
54
52
  readonly pageId: string;
55
- readonly pagePrefix: string;
56
- readonly pageNumber: number;
53
+ pagePrefix: string;
57
54
  action: string;
58
55
  descriptions: string;
59
56
  }>;
60
57
  type MqEvent = MqEventPageEnter | MqEventPageLeave | MqEventEngineStart | MqEventUserClicked;
61
58
  declare const MqEvent: {
62
59
  readonly engineStart: (schemaId: string, schemaPrefix: string) => MqEventEngineStart;
63
- readonly pageEnter: (pageId: string, pagePrefix: string, pageNumber: number) => MqEventPageEnter;
64
- readonly pageLeave: (pageId: string, pagePrefix: string, pageNumber: number) => MqEventPageLeave;
60
+ readonly pageEnter: (pageId: string, pagePrefix: string) => MqEventPageEnter;
61
+ readonly pageLeave: (pageId: string, pagePrefix: string) => MqEventPageLeave;
65
62
  readonly userClicked: (data: {
66
63
  pageId: string;
67
64
  pagePrefix: string;
68
- pageNumber: number;
69
65
  action: string;
70
66
  descriptions: string;
71
67
  }) => MqEventUserClicked;
72
68
  };
73
69
 
74
- interface PageResult {
75
- readonly pageId: string;
76
- readonly pagePrefix: string;
77
- readonly pageNumber: number;
78
- readonly eventLog: ReadonlyArray<MqEvent>;
79
- readonly pageTime: DTimestamp.Diff;
80
- readonly collectedFacts: Fact[];
81
- }
82
-
83
70
  interface SchemaResult {
84
71
  readonly schemaId: string;
85
72
  readonly pagesLeft: number;
86
73
  readonly predefinedFacts: ReadonlyArray<Fact>;
87
74
  readonly eventLog: ReadonlyArray<MqEvent>;
88
75
  readonly answers: ReadonlyArray<Fact>;
89
- readonly pageResults?: ReadonlyArray<PageResult>;
90
76
  }
91
77
 
92
78
  type Condition = Condition.String | Condition.Numeric | Condition.Complex;
@@ -194,6 +180,8 @@ declare namespace DCss {
194
180
  readonly value: number;
195
181
  }
196
182
  type LengthString = `${number}px` | `${number}%`;
183
+ const isPx: (unit?: LengthUnit | false | undefined | null) => unit is Px;
184
+ const isPercent: (unit?: LengthUnit | false | undefined | null) => unit is Percent;
197
185
  interface Percent {
198
186
  readonly _unit: "percent";
199
187
  readonly value: number;
@@ -261,6 +249,7 @@ interface DStyle {
261
249
  declare namespace DStyle {
262
250
  const normalize: <T extends HTMLElement>(el: T) => T;
263
251
  const applyStyles: <T extends HTMLElement>(el: T, style: Partial<DStyle>, scale: number) => T;
252
+ const clone: <T extends Partial<DStyle>>(style: T) => T;
264
253
  }
265
254
 
266
255
  declare class ScaleService {
@@ -384,6 +373,7 @@ declare abstract class DElement<T extends HTMLElement> {
384
373
  updateState(state: TaskStateDiff): void;
385
374
  setState(state: TaskState): void;
386
375
  private handleStateChanges;
376
+ getComputedStyle(): CSSStyleDeclaration;
387
377
  abstract registerClickHandler(clickHandler: (action: ButtonClickAction) => void): void;
388
378
  protected updateStyles(style: Partial<DStyle>): void;
389
379
  }
@@ -452,10 +442,6 @@ interface VideoPlayerDto {
452
442
  interface PageDto {
453
443
  readonly id: string;
454
444
  readonly prefix: string;
455
- /**
456
- * Page number in the sequence (starts at 1)
457
- */
458
- readonly pageNumber: number;
459
445
  readonly tags: string[];
460
446
  background: string;
461
447
  elements: Array<DElementDto>;
@@ -521,6 +507,7 @@ declare class SchemaEngine implements ISchemaEngine {
521
507
  message: string;
522
508
  }) => void): void;
523
509
  setLogger(logger: EngineLogger): void;
510
+ getComputedStylesOfCurrentPage(): false | CSSStyleDeclaration[];
524
511
  }
525
512
 
526
513
  interface SolveResult<S, F> {
@@ -46,9 +46,6 @@ var HistoryQue = class {
46
46
  const answers = this.history.map((h) => h.collectedFacts).flat(1);
47
47
  return answers;
48
48
  }
49
- getPageResults() {
50
- return [...this.history];
51
- }
52
49
  addToHistory(result) {
53
50
  this.history.push(result);
54
51
  }
@@ -103,9 +100,6 @@ var DUtil;
103
100
  if (typeof obj !== "object") {
104
101
  return false;
105
102
  }
106
- if (obj === null) {
107
- return false;
108
- }
109
103
  return true;
110
104
  };
111
105
  DUtil2.isBool = (obj) => typeof obj === "boolean";
@@ -435,9 +429,9 @@ var DPlayer = class {
435
429
  saveEvent(event) {
436
430
  this.eventLog.push(event);
437
431
  }
438
- saveHistory(pageResult) {
439
- this.history.addToHistory(pageResult);
440
- this.eventLog.push(...pageResult.eventLog);
432
+ saveHistory(pageHistory) {
433
+ this.history.addToHistory(pageHistory);
434
+ this.eventLog.push(...pageHistory.eventLog);
441
435
  const userGeneratedFact = this.history.getFacts();
442
436
  const predefinedFacts = this.predefinedFacts;
443
437
  const facts = [...userGeneratedFact, ...predefinedFacts];
@@ -466,8 +460,7 @@ var DPlayer = class {
466
460
  const answerFacts = this.history.getFacts();
467
461
  const predefinedFacts = this.predefinedFacts;
468
462
  const eventLog = [...this.eventLog];
469
- const pageResults = this.history.getPageResults();
470
- return { answerFacts, predefinedFacts, eventLog, pagesLeft, pageResults };
463
+ return { answerFacts, predefinedFacts, eventLog, pagesLeft };
471
464
  }
472
465
  insertSequence(sequenceId) {
473
466
  this.insertSequenceById(sequenceId);
@@ -562,6 +555,20 @@ var Scale;
562
555
  // src/Delement/css.ts
563
556
  var DCss;
564
557
  ((DCss2) => {
558
+ DCss2.isPx = (unit) => {
559
+ if (typeof unit === "number")
560
+ return false;
561
+ if (!unit)
562
+ return false;
563
+ return unit._unit === "px";
564
+ };
565
+ DCss2.isPercent = (unit) => {
566
+ if (typeof unit === "number")
567
+ return false;
568
+ if (!unit)
569
+ return false;
570
+ return unit._unit === "percent";
571
+ };
565
572
  DCss2.toString = (unit, scale) => {
566
573
  const _mapped = typeof unit === "number" ? { _unit: "percent", value: unit } : unit;
567
574
  return _toString(_mapped, scale);
@@ -611,6 +618,7 @@ var DStyle;
611
618
  s.right = "";
612
619
  s.flex = "none";
613
620
  s.boxShadow = "";
621
+ s.fontFamily = "'Inter', sans-serif";
614
622
  s.fontSize = "12px";
615
623
  s.lineHeight = "1";
616
624
  s.textAlign = "center";
@@ -687,9 +695,6 @@ var DStyle;
687
695
  if (isNumber(zIndex)) {
688
696
  el.style.zIndex = "" + zIndex;
689
697
  }
690
- if (isString(translate)) {
691
- el.style.transform = translate;
692
- }
693
698
  if (isString(flex)) {
694
699
  el.style.flex = flex;
695
700
  }
@@ -827,6 +832,9 @@ var DStyle;
827
832
  }
828
833
  return el;
829
834
  };
835
+ DStyle2.clone = (style) => {
836
+ return JSON.parse(JSON.stringify(style));
837
+ };
830
838
  })(DStyle || (DStyle = {}));
831
839
 
832
840
  // src/common/DTimestamp.ts
@@ -997,6 +1005,17 @@ var DElement = class {
997
1005
  this.setStyle(whenVideoEndedAndMuted);
998
1006
  }
999
1007
  }
1008
+ // private normalize() {
1009
+ // this.el.style.padding = "0";
1010
+ // this.el.style.margin = "0";
1011
+ // this.el.style.position = "absolute";
1012
+ // this.el.style.boxSizing = "border-box";
1013
+ // }
1014
+ getComputedStyle() {
1015
+ const el = this.el;
1016
+ const isConnected = this.el.isConnected;
1017
+ return window.getComputedStyle(this.el);
1018
+ }
1000
1019
  updateStyles(style) {
1001
1020
  this.currStyle = Object.assign(this.currStyle, style);
1002
1021
  DStyle.applyStyles(this.el, this.currStyle, this.scale.scale);
@@ -1185,26 +1204,26 @@ var MqEvent = {
1185
1204
  payload: { schemaId, schemaPrefix }
1186
1205
  };
1187
1206
  },
1188
- pageEnter(pageId, pagePrefix, pageNumber) {
1207
+ pageEnter(pageId, pagePrefix) {
1189
1208
  return {
1190
1209
  kind: "page-enter",
1191
1210
  timestamp: DTimestamp.now(),
1192
- payload: { pageId, pagePrefix, pageNumber }
1211
+ payload: { pageId, pagePrefix }
1193
1212
  };
1194
1213
  },
1195
- pageLeave(pageId, pagePrefix, pageNumber) {
1214
+ pageLeave(pageId, pagePrefix) {
1196
1215
  return {
1197
1216
  kind: "page-leave",
1198
1217
  timestamp: DTimestamp.now(),
1199
- payload: { pageId, pagePrefix, pageNumber }
1218
+ payload: { pageId, pagePrefix }
1200
1219
  };
1201
1220
  },
1202
1221
  userClicked(data) {
1203
- const { pageId, pageNumber, pagePrefix, action, descriptions } = data;
1222
+ const { pageId, pagePrefix, action, descriptions } = data;
1204
1223
  return {
1205
1224
  kind: "user-clicked",
1206
1225
  timestamp: DTimestamp.now(),
1207
- payload: { pageId, pagePrefix, action, descriptions, pageNumber }
1226
+ payload: { pageId, pagePrefix, action, descriptions }
1208
1227
  };
1209
1228
  }
1210
1229
  };
@@ -1214,7 +1233,6 @@ var PageDto = {
1214
1233
  createDummy: (id) => {
1215
1234
  return {
1216
1235
  id: "id" + id,
1217
- pageNumber: id,
1218
1236
  prefix: "prefix" + id,
1219
1237
  tags: [],
1220
1238
  background: "white",
@@ -1236,7 +1254,6 @@ var Page = class {
1236
1254
  this.taskManager = taskManager;
1237
1255
  this.scaleService = scaleService;
1238
1256
  this.onCompleted = onCompleted;
1239
- this.pageNumber = dto.pageNumber;
1240
1257
  dto.elements.forEach((el) => {
1241
1258
  const element = createDElement(el, scaleService);
1242
1259
  element.registerClickHandler((action) => {
@@ -1256,20 +1273,20 @@ var Page = class {
1256
1273
  }
1257
1274
  TAG = "[ DPage ]: ";
1258
1275
  elements = [];
1259
- pageNumber;
1276
+ // private elements: PageComponent[] = [];
1277
+ // private layoutComponents: PageLayoutComponent[] = [];
1260
1278
  pageEntered = DTimestamp.now();
1261
1279
  previousState = false;
1262
1280
  eventLog = new Array();
1263
1281
  createPageResult(facts) {
1264
1282
  const pageExited = DTimestamp.now();
1265
1283
  const pageTime = DTimestamp.diff(this.pageEntered, pageExited);
1266
- const pageExit = MqEvent.pageLeave(this.dto.id, this.dto.prefix, this.pageNumber);
1284
+ const pageExit = MqEvent.pageLeave(this.dto.id, this.dto.prefix);
1267
1285
  this.eventLog.push(pageExit);
1268
1286
  const eventLog = [...this.eventLog];
1269
1287
  return {
1270
1288
  pagePrefix: this.dto.prefix,
1271
1289
  pageId: this.dto.id,
1272
- pageNumber: this.pageNumber,
1273
1290
  eventLog,
1274
1291
  pageTime,
1275
1292
  collectedFacts: facts
@@ -1279,13 +1296,13 @@ var Page = class {
1279
1296
  const event = MqEvent.userClicked({
1280
1297
  pageId: this.dto.id,
1281
1298
  pagePrefix: this.dto.prefix,
1282
- pageNumber: this.pageNumber,
1283
1299
  action: a.kind,
1284
1300
  descriptions: ButtonClickAction.describe(a)
1285
1301
  });
1286
1302
  this.eventLog.push(event);
1303
+ navigator.vibrate(200);
1287
1304
  const { vibrateMs } = a;
1288
- if (typeof vibrateMs === "number" && navigator.vibrate) {
1305
+ if (vibrateMs) {
1289
1306
  navigator.vibrate(vibrateMs);
1290
1307
  }
1291
1308
  switch (a.kind) {
@@ -1325,7 +1342,7 @@ var Page = class {
1325
1342
  }
1326
1343
  }
1327
1344
  appendYourself(parent) {
1328
- const pageEnterEvent = MqEvent.pageEnter(this.dto.id, this.dto.prefix, this.pageNumber);
1345
+ const pageEnterEvent = MqEvent.pageEnter(this.dto.id, this.dto.prefix);
1329
1346
  this.pageEntered = DTimestamp.now();
1330
1347
  this.eventLog.push(pageEnterEvent);
1331
1348
  this.elements.forEach((el) => {
@@ -1343,6 +1360,11 @@ var Page = class {
1343
1360
  element.updateState(diff);
1344
1361
  });
1345
1362
  }
1363
+ getComputedStyles() {
1364
+ return this.elements.map((e) => {
1365
+ return e.getComputedStyle();
1366
+ });
1367
+ }
1346
1368
  };
1347
1369
 
1348
1370
  // src/page/task.ts
@@ -1661,7 +1683,6 @@ var SchemaEngine = class {
1661
1683
  const currentResults = this.player.getResults();
1662
1684
  const a = {
1663
1685
  schemaId: this.schema.id,
1664
- pageResults: currentResults.pageResults,
1665
1686
  pagesLeft: currentResults.pagesLeft,
1666
1687
  predefinedFacts: currentResults.predefinedFacts,
1667
1688
  eventLog: currentResults.eventLog,
@@ -1715,9 +1736,6 @@ var SchemaEngine = class {
1715
1736
  this.currentPage.destroy();
1716
1737
  this.uiLayer.innerHTML = "";
1717
1738
  }
1718
- if (this.tickerRef) {
1719
- window.clearInterval(this.tickerRef);
1720
- }
1721
1739
  }
1722
1740
  _onProgress = false;
1723
1741
  onProgress(handler) {
@@ -1730,6 +1748,9 @@ var SchemaEngine = class {
1730
1748
  setLogger(logger) {
1731
1749
  this.logger = logger;
1732
1750
  }
1751
+ getComputedStylesOfCurrentPage() {
1752
+ return this.currentPage ? this.currentPage.getComputedStyles() : false;
1753
+ }
1733
1754
  };
1734
1755
  // Annotate the CommonJS export names for ESM import in node:
1735
1756
  0 && (module.exports = {