@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.
- package/dist/public-api.d.ts +8 -21
- package/dist/public-api.js +53 -32
- package/dist/public-api.js.map +1 -1
- package/package.json +26 -26
- package/src/Delement/DButton.ts +25 -25
- package/src/Delement/DElement.dto.ts +6 -6
- package/src/Delement/DElement.ts +198 -190
- package/src/Delement/DImg.ts +48 -48
- package/src/Delement/DStyle.ts +382 -391
- package/src/Delement/DText.ts +23 -23
- package/src/Delement/Ddiv.ts +44 -44
- package/src/Delement/button-click-action.ts +42 -42
- package/src/Delement/css.spec.ts +40 -40
- package/src/Delement/css.ts +70 -56
- package/src/Delement/element-factory.ts +49 -49
- package/src/engine/SchemaEngine.ts +159 -160
- package/src/engine/SchemaResult.ts +10 -12
- package/src/engine/dplayer.spec.ts +91 -92
- package/src/engine/dplayer.ts +104 -106
- package/src/engine/history-que.spec.ts +67 -69
- package/src/engine/history-que.ts +17 -21
- package/src/engine/next-que.spec.ts +121 -122
- package/src/engine/next-que.ts +101 -101
- package/src/events/mq-events.ts +63 -76
- package/src/page/Page.ts +197 -180
- package/src/page/page-result.ts +11 -12
- package/src/page/task-manager.ts +263 -263
- package/src/page/task-state.ts +65 -65
- package/src/public-api.ts +25 -26
- package/src/utils/DUtil.ts +2 -3
- package/tsconfig.json +19 -19
package/dist/public-api.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
|
64
|
-
readonly pageLeave: (pageId: string, pagePrefix: string
|
|
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> {
|
package/dist/public-api.js
CHANGED
|
@@ -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(
|
|
439
|
-
this.history.addToHistory(
|
|
440
|
-
this.eventLog.push(...
|
|
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
|
-
|
|
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
|
|
1207
|
+
pageEnter(pageId, pagePrefix) {
|
|
1189
1208
|
return {
|
|
1190
1209
|
kind: "page-enter",
|
|
1191
1210
|
timestamp: DTimestamp.now(),
|
|
1192
|
-
payload: { pageId, pagePrefix
|
|
1211
|
+
payload: { pageId, pagePrefix }
|
|
1193
1212
|
};
|
|
1194
1213
|
},
|
|
1195
|
-
pageLeave(pageId, pagePrefix
|
|
1214
|
+
pageLeave(pageId, pagePrefix) {
|
|
1196
1215
|
return {
|
|
1197
1216
|
kind: "page-leave",
|
|
1198
1217
|
timestamp: DTimestamp.now(),
|
|
1199
|
-
payload: { pageId, pagePrefix
|
|
1218
|
+
payload: { pageId, pagePrefix }
|
|
1200
1219
|
};
|
|
1201
1220
|
},
|
|
1202
1221
|
userClicked(data) {
|
|
1203
|
-
const { pageId,
|
|
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
|
|
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
|
-
|
|
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
|
|
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 (
|
|
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
|
|
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 = {
|