@media-quest/builder 0.0.38 → 0.0.40

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.
Files changed (41) hide show
  1. package/dist/public-api.d.ts +82 -99
  2. package/dist/public-api.js +36 -101
  3. package/dist/public-api.js.map +1 -1
  4. package/package.json +29 -29
  5. package/src/{theme → ARKIV}/button-bar/button-text-utils.ts +233 -233
  6. package/src/{theme → ARKIV}/button-bar/text-utils.spec.ts +105 -105
  7. package/src/Builder-option.ts +78 -62
  8. package/src/Builder-question.ts +98 -98
  9. package/src/Builder-schema.spec.ts +348 -348
  10. package/src/Builder-schema.ts +308 -306
  11. package/src/builder-compiler.ts +14 -20
  12. package/src/code-book/codebook-variable.ts +27 -27
  13. package/src/code-book/codebook.ts +89 -89
  14. package/src/media-files.ts +28 -32
  15. package/src/page/Builder-page-collection.spec.ts +219 -219
  16. package/src/page/Builder-page-collection.ts +129 -129
  17. package/src/page/Builder-page.spec.ts +177 -177
  18. package/src/page/Builder-page.ts +250 -250
  19. package/src/primitives/ID.ts +135 -135
  20. package/src/public-api.ts +29 -30
  21. package/src/rulebuilder/RuleAction.ts +105 -105
  22. package/src/schema-config.ts +25 -26
  23. package/src/sum-score/sum-score-variable-collection.spec.ts +68 -68
  24. package/src/sum-score/sum-score-variable-collection.ts +101 -101
  25. package/src/sum-score/sum-score-variable.ts +0 -1
  26. package/src/sum-score/sum-score.ts +166 -167
  27. package/src/tag/BuilderTag.ts +45 -45
  28. package/src/tag/Tag-Collection.ts +53 -53
  29. package/src/theme/Default-theme.ts +173 -188
  30. package/src/theme/IDefault-theme.ts +125 -125
  31. package/src/theme/ThemeCompiler.ts +10 -11
  32. package/src/theme/default-theme-compiler.spec.ts +31 -31
  33. package/src/theme/default-theme-compiler.ts +655 -652
  34. package/src/theme/icon-urls.ts +29 -29
  35. package/src/theme/icons.ts +117 -117
  36. package/src/theme/theme-utils.spec.ts +52 -52
  37. package/src/theme/theme-utils.ts +56 -56
  38. package/src/theme/theme2.ts +388 -386
  39. package/tsconfig.json +19 -19
  40. package/src/Builder-schema-dto.spec.ts +0 -155
  41. package/src/Builder-schema-dto.ts +0 -86
@@ -1,188 +1,173 @@
1
- import { DCss, DStyle, PStyle } from "@media-quest/engine";
2
- import { IconUrls } from "./icon-urls";
3
- import { BuilderOptionTheme, IDefaultTheme } from "./IDefault-theme";
4
- import { CssTheme } from "./css-theme";
5
-
6
- namespace BuilderOptionTheme {
7
- const GREEN = "#70AD47";
8
- const YELLOW = "#FFC000";
9
- const ORANGE = "#F4902C";
10
- const RED = "#FF0000";
11
- const LIGHT_BLUE = "#42719C";
12
- const WHITE = "#ffffff";
13
- const BLUE = "#2F5597";
14
- const BTN_BORDER_WIDTH = 3;
15
- const BTN_BORDER_RADIUS = 10;
16
- const BTN_HEIGHT = 130;
17
- const BTN_WIDTH_LONG: DCss.Percent = { _unit: "percent", value: 19 };
18
- const BTN_WIDTH_SHORT: DCss.Percent = { _unit: "percent", value: 15 };
19
- const BTN_BORDER_STYLE: DStyle["borderStyle"] = "solid";
20
- const FONT_WEIGHT: DStyle["fontWeight"] = 500;
21
- const FONT_SIZE: DCss.Px["value"] = 36;
22
-
23
- const BTN_PADDING_LEFT = 10;
24
- const BTN_PADDING_TOP = 10;
25
-
26
- const buttonBaseCss = (): CssTheme => ({
27
- css: {
28
- fontWeight: FONT_WEIGHT,
29
-
30
- fontSize: { _unit: "px", value: FONT_SIZE },
31
- letterSpacing: { _unit: "px", value: 2 },
32
- paddingLeft: { _unit: "px", value: BTN_PADDING_LEFT },
33
- paddingTop: { _unit: "px", value: BTN_PADDING_TOP },
34
- paddingBottom: { _unit: "px", value: BTN_PADDING_TOP },
35
- paddingRight: { _unit: "px", value: BTN_PADDING_LEFT },
36
- borderRadius: { _unit: "px", value: BTN_BORDER_RADIUS },
37
- borderWidth: { _unit: "px", value: BTN_BORDER_WIDTH },
38
- width: BTN_WIDTH_LONG,
39
- height: { _unit: "px", value: BTN_HEIGHT },
40
- borderStyle: BTN_BORDER_STYLE,
41
- // boxShadow: "3px 3px gray",
42
- position: "relative",
43
- display: "block",
44
- },
45
- cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
46
- cssEnabled: { opacity: 1, cursor: "pointer" },
47
- });
48
-
49
- export const blueButton = (): BuilderOptionTheme => {
50
- const base = buttonBaseCss();
51
- const { css, cssEnabled, cssDisabled } = base;
52
- const optionTheme: BuilderOptionTheme = {
53
- name: "blue-button-theme",
54
- normal: {
55
- btn: {
56
- css: {
57
- ...css,
58
- backgroundColor: BLUE,
59
- borderColor: BLUE,
60
- textColor: WHITE,
61
- },
62
- cssDisabled,
63
- cssEnabled,
64
- },
65
- divider: {},
66
- text1: {},
67
- text2: {},
68
- },
69
-
70
- dontKnow: {
71
- btn: {
72
- css: {
73
- ...css,
74
- backgroundColor: WHITE,
75
- borderColor: LIGHT_BLUE,
76
- textColor: BLUE,
77
- width: BTN_WIDTH_SHORT,
78
- },
79
- cssDisabled,
80
- cssEnabled,
81
- },
82
- text1: {},
83
- text2: {},
84
- divider: {},
85
- },
86
- };
87
-
88
- return optionTheme;
89
- };
90
- }
91
-
92
- const MAIN_TEXT_FONT_SIZE: DCss.Px = { _unit: "px", value: 40 };
93
- const MAIN_TEXT_WIDTH: DCss.Percent = { _unit: "percent", value: 76 };
94
- const textHighTop = 30;
95
- const textLowTop = 72;
96
- const audioHighTop = 30;
97
- const audioLowTop = 72;
98
-
99
- const textBase: PStyle = {
100
- width: MAIN_TEXT_WIDTH,
101
- // backgroundColor: "red",
102
- top: textHighTop,
103
- left: 14,
104
- lineHeight: 1.2,
105
- textAlign: "left",
106
- textColor: "black",
107
- transform: "translate(0, -50%)",
108
- fontSize: MAIN_TEXT_FONT_SIZE,
109
- };
110
-
111
- const textHigh: PStyle = { ...textBase, top: textHighTop };
112
- const textLow: PStyle = { ...textHigh, top: textLowTop };
113
-
114
- const audioBase: PStyle = {
115
- height: 6,
116
- width: 6,
117
- left: 4,
118
- top: audioHighTop,
119
- cursor: "pointer",
120
- opacity: 0.8,
121
- transform: "translate(0, -50%)",
122
- visibility: "visible",
123
- };
124
- const audioHigh: PStyle = { ...audioBase, top: audioHighTop };
125
- const audioLow: PStyle = { ...audioBase, top: audioLowTop };
126
-
127
- export const DefaultTheme: IDefaultTheme = {
128
- name: "default-theme",
129
- schemaBackgroundColor: "white",
130
- dimensions: { baseHeight: 1300, baseWidth: 1024 },
131
- videoPlayer: {
132
- playButton: {
133
- iconUrl: IconUrls.playCircleRegular,
134
- css: { w: 5, h: 5, y: 48, x: 4 },
135
- cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
136
- cssEnabled: { opacity: 0.8, cursor: "pointer" },
137
- },
138
- pauseButton: {
139
- iconUrl: IconUrls.pauseSvg,
140
- css: { w: 5, h: 5, y: 48, x: 4 },
141
- cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
142
- cssEnabled: { opacity: 0.8, cursor: "pointer" },
143
- },
144
- videoElement: { css: { height: 41, top: 3, x: 0 } },
145
- },
146
- image: { style: { h: 50, w: 100, x: 0 } },
147
- mainText: {
148
- base: {
149
- text: { ...textBase },
150
- audio: {
151
- iconUrl: IconUrls.volumeUpSvg,
152
- css: { ...audioBase },
153
- cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
154
- cssEnabled: { opacity: 0.8, cursor: "pointer" },
155
- },
156
- },
157
- notMediaHasAudio: {
158
- text: { ...textHigh },
159
- audio: { ...audioHigh },
160
- },
161
- hasMediaNotAudio: {
162
- text: { ...textHigh },
163
- },
164
- notMediaNotAudio: { text: { ...textHigh } },
165
- hasMediaHasAudio: { text: { ...textLow }, audio: { ...audioLow } },
166
- },
167
-
168
- buttonBar: {
169
- vibrateMs: false,
170
- container: {
171
- base: {
172
- display: "flex",
173
- justifyContent: "space-evenly",
174
- position: "absolute",
175
- width: 100,
176
- height: 15,
177
- bottom: 0,
178
- left: 0, // h: 10,
179
- alignItems: "center",
180
- // backgroundColor: "yellow",
181
- },
182
- whenSingle: { justifyContent: "space-evenly" },
183
- whenMany: { justifyContent: "space-evenly" },
184
- },
185
- nextButtonTheme: BuilderOptionTheme.blueButton(),
186
- responseButtons: BuilderOptionTheme.blueButton(),
187
- },
188
- };
1
+ import { DCss, DStyle, PStyle } from "@media-quest/engine";
2
+ import { IconUrls } from "./icon-urls";
3
+ import { BuilderOptionTheme, IDefaultTheme } from "./IDefault-theme";
4
+ import { CssTheme } from "./css-theme";
5
+
6
+ namespace BuilderOptionTheme {
7
+ const GREEN = "#70AD47";
8
+ const YELLOW = "#FFC000";
9
+ const ORANGE = "#F4902C";
10
+ const RED = "#FF0000";
11
+ const LIGHT_BLUE = "#42719C";
12
+ const WHITE = "#ffffff";
13
+ const BLUE = "#2F5597";
14
+ const BTN_BORDER_WIDTH = 3;
15
+ const BTN_BORDER_RADIUS = 10;
16
+ const BTN_BORDER_STYLE: DStyle["borderStyle"] = "solid";
17
+ const FONT_WEIGHT: DStyle["fontWeight"] = 600;
18
+ const FONT_SIZE: DCss.Px["value"] = 50;
19
+ const BTN_PADDING_LEFT = 40;
20
+ const BTN_PADDING_TOP = 40;
21
+
22
+ const buttonBaseCss = (): CssTheme => ({
23
+ css: {
24
+ fontWeight: FONT_WEIGHT,
25
+ fontSize: { _unit: "px", value: FONT_SIZE },
26
+ letterSpacing: { _unit: "px", value: 2 },
27
+ paddingLeft: { _unit: "px", value: BTN_PADDING_LEFT },
28
+ paddingTop: { _unit: "px", value: BTN_PADDING_TOP },
29
+ paddingBottom: { _unit: "px", value: BTN_PADDING_TOP },
30
+ paddingRight: { _unit: "px", value: BTN_PADDING_LEFT },
31
+ borderRadius: { _unit: "px", value: BTN_BORDER_RADIUS },
32
+ borderWidth: { _unit: "px", value: BTN_BORDER_WIDTH },
33
+ borderStyle: BTN_BORDER_STYLE,
34
+ // boxShadow: "3px 3px gray",
35
+ position: "relative",
36
+ display: "block",
37
+ },
38
+ cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
39
+ cssEnabled: { opacity: 1, cursor: "pointer" },
40
+ });
41
+
42
+ export const blueButton = (): BuilderOptionTheme => {
43
+ const base = buttonBaseCss();
44
+ const { css, cssEnabled, cssDisabled } = base;
45
+ const optionTheme: BuilderOptionTheme = {
46
+ name: "blue-button-theme",
47
+ normal: {
48
+ btn: {
49
+ css: {
50
+ ...css,
51
+ backgroundColor: BLUE,
52
+ borderColor: BLUE,
53
+ textColor: WHITE,
54
+ },
55
+ cssDisabled,
56
+ cssEnabled,
57
+ },
58
+ divider: {},
59
+ text1: {},
60
+ text2: {},
61
+ },
62
+
63
+ dontKnow: {
64
+ btn: {
65
+ css: {
66
+ ...css,
67
+ backgroundColor: WHITE,
68
+ borderColor: LIGHT_BLUE,
69
+ textColor: BLUE,
70
+ },
71
+ cssDisabled,
72
+ cssEnabled,
73
+ },
74
+ text1: {},
75
+ text2: {},
76
+ divider: {},
77
+ },
78
+ };
79
+
80
+ return optionTheme;
81
+ };
82
+ }
83
+
84
+ const textHighTop = 25;
85
+ const textLowTop = 55;
86
+ const audioHighTop = 20;
87
+ const audioLowTop = 55;
88
+
89
+ const textBase: PStyle = {
90
+ width: 80,
91
+ top: textHighTop,
92
+ left: 10,
93
+ textAlign: "center",
94
+ textColor: "black",
95
+ fontSize: { _unit: "px", value: 40 },
96
+ };
97
+ const textHigh: PStyle = { ...textBase, top: textHighTop };
98
+ const textLow: PStyle = { ...textHigh, top: textLowTop };
99
+
100
+ const audioBase: PStyle = {
101
+ height: 6,
102
+ width: 6,
103
+ left: 4,
104
+ top: audioHighTop,
105
+ cursor: "pointer",
106
+ opacity: 0.8,
107
+ visibility: "visible",
108
+ };
109
+ const audioHigh: PStyle = { ...audioBase, top: audioHighTop };
110
+ const audioLow: PStyle = { ...audioBase, top: audioLowTop };
111
+
112
+ export const DefaultTheme: IDefaultTheme = {
113
+ name: "default-theme",
114
+ schemaBackgroundColor: "white",
115
+ dimensions: { baseHeight: 1300, baseWidth: 1024 },
116
+ videoPlayer: {
117
+ playButton: {
118
+ iconUrl: IconUrls.playCircleRegular,
119
+ css: { w: 5, h: 5, y: 48, x: 4 },
120
+ cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
121
+ cssEnabled: { opacity: 0.8, cursor: "pointer" },
122
+ },
123
+ pauseButton: {
124
+ iconUrl: IconUrls.pauseSvg,
125
+ css: { w: 5, h: 5, y: 48, x: 4 },
126
+ cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
127
+ cssEnabled: { opacity: 0.8, cursor: "pointer" },
128
+ },
129
+ videoElement: { css: { height: 41, top: 3, x: 0 } },
130
+ },
131
+ image: { style: { h: 50, w: 100, x: 0 } },
132
+ mainText: {
133
+ base: {
134
+ text: { ...textBase },
135
+ audio: {
136
+ iconUrl: IconUrls.volumeUpSvg,
137
+ css: { ...audioBase },
138
+ cssDisabled: { opacity: 0.3, cursor: "not-allowed" },
139
+ cssEnabled: { opacity: 0.8, cursor: "pointer" },
140
+ },
141
+ },
142
+ notMediaHasAudio: {
143
+ text: { ...textHigh },
144
+ audio: { ...audioHigh },
145
+ },
146
+ hasMediaNotAudio: {
147
+ text: { ...textHigh },
148
+ },
149
+ notMediaNotAudio: { text: { ...textHigh } },
150
+ hasMediaHasAudio: { text: { ...textLow }, audio: { ...audioLow } },
151
+ },
152
+
153
+ buttonBar: {
154
+ vibrateMs: false,
155
+ container: {
156
+ base: {
157
+ display: "flex",
158
+ justifyContent: "space-evenly",
159
+ position: "absolute",
160
+ width: 100,
161
+ height: 15,
162
+ bottom: 0,
163
+ left: 0, // h: 10,
164
+ alignItems: "center",
165
+ backgroundColor: "yellow",
166
+ },
167
+ whenSingle: { justifyContent: "space-evenly" },
168
+ whenMany: { justifyContent: "space-evenly" },
169
+ },
170
+ nextButtonTheme: BuilderOptionTheme.blueButton(),
171
+ responseButtons: BuilderOptionTheme.blueButton(),
172
+ },
173
+ };
@@ -1,125 +1,125 @@
1
- import { DStyle } from "@media-quest/engine";
2
- import type { CssTheme } from "./css-theme";
3
-
4
- type PStyle = Partial<DStyle>;
5
- export interface IDefaultTheme {
6
- name: string;
7
- schemaBackgroundColor: string;
8
- dimensions: {
9
- baseHeight: number;
10
- baseWidth: number;
11
- };
12
-
13
- pageBackGroundImage?: { url: string; style: PStyle };
14
-
15
- pageBackGround?: { style: PStyle };
16
-
17
- backGroundArea1?: { style: PStyle };
18
-
19
- backGroundArea2?: { style: PStyle };
20
-
21
- backGroundArea3?: { style: PStyle };
22
-
23
- progressBar?: {
24
- width: number;
25
- height: number;
26
- bottom: number;
27
- left: number;
28
- backgroundStyles: PStyle;
29
- progressStyles: PStyle;
30
- text?: {
31
- style: PStyle;
32
- textType: "percent" | "page-progress";
33
- };
34
- };
35
-
36
- image: { style: PStyle };
37
- videoPlayer: {
38
- playButton: {
39
- iconUrl: string;
40
- css: PStyle;
41
- cssDisabled: PStyle;
42
- cssEnabled: PStyle;
43
- text?: { text: string; css: PStyle };
44
- };
45
-
46
- buttonBar?: PStyle;
47
-
48
- pauseButton: {
49
- iconUrl: string;
50
- css: PStyle;
51
- cssDisabled: PStyle;
52
- cssEnabled: PStyle;
53
- text?: { text: string; css: PStyle };
54
- };
55
-
56
- replayButton?: {
57
- iconUrl: string;
58
- css: PStyle;
59
- cssDisabled: PStyle;
60
- cssEnabled: PStyle;
61
- text?: { text: string; css: PStyle };
62
- };
63
-
64
- muteButton?: {
65
- iconUrl: string;
66
- css: PStyle;
67
- text?: { text: string; css: PStyle };
68
- };
69
-
70
- unMuteButton?: {
71
- iconUrl: string;
72
- css: PStyle;
73
- text?: { text: string; css: PStyle };
74
- };
75
-
76
- videoElement: {
77
- css: PStyle;
78
- };
79
- };
80
- mainText: {
81
- base: {
82
- text: PStyle;
83
- audio: { css: PStyle; cssDisabled: PStyle; cssEnabled: PStyle; iconUrl: string };
84
- };
85
-
86
- notMediaNotAudio: {
87
- text: PStyle;
88
- };
89
-
90
- hasMediaNotAudio: {
91
- text: PStyle;
92
- };
93
-
94
- hasMediaHasAudio: {
95
- text: PStyle;
96
- audio: PStyle;
97
- };
98
-
99
- notMediaHasAudio: {
100
- text: PStyle;
101
- audio: PStyle;
102
- };
103
- };
104
-
105
- buttonBar: {
106
- vibrateMs: number | false;
107
- container: { base: PStyle; whenSingle: PStyle; whenMany: PStyle };
108
- responseButtons: BuilderOptionTheme;
109
- nextButtonTheme: BuilderOptionTheme;
110
- };
111
- // buttonThemes?: Array<BuilderOptionTheme>;
112
- }
113
-
114
- interface ButtonTheme {
115
- btn: CssTheme;
116
- divider: PStyle;
117
- text1: PStyle;
118
- text2: PStyle;
119
- }
120
-
121
- export interface BuilderOptionTheme {
122
- name: string;
123
- normal: ButtonTheme;
124
- dontKnow: ButtonTheme;
125
- }
1
+ import { DStyle } from "@media-quest/engine";
2
+ import type { CssTheme } from "./css-theme";
3
+
4
+ type PStyle = Partial<DStyle>;
5
+ export interface IDefaultTheme {
6
+ name: string;
7
+ schemaBackgroundColor: string;
8
+ dimensions: {
9
+ baseHeight: number;
10
+ baseWidth: number;
11
+ };
12
+
13
+ pageBackGroundImage?: { url: string; style: PStyle };
14
+
15
+ pageBackGround?: { style: PStyle };
16
+
17
+ backGroundArea1?: { style: PStyle };
18
+
19
+ backGroundArea2?: { style: PStyle };
20
+
21
+ backGroundArea3?: { style: PStyle };
22
+
23
+ progressBar?: {
24
+ width: number;
25
+ height: number;
26
+ bottom: number;
27
+ left: number;
28
+ backgroundStyles: PStyle;
29
+ progressStyles: PStyle;
30
+ text?: {
31
+ style: PStyle;
32
+ textType: "percent" | "page-progress";
33
+ };
34
+ };
35
+
36
+ image: { style: PStyle };
37
+ videoPlayer: {
38
+ playButton: {
39
+ iconUrl: string;
40
+ css: PStyle;
41
+ cssDisabled: PStyle;
42
+ cssEnabled: PStyle;
43
+ text?: { text: string; css: PStyle };
44
+ };
45
+
46
+ buttonBar?: PStyle;
47
+
48
+ pauseButton: {
49
+ iconUrl: string;
50
+ css: PStyle;
51
+ cssDisabled: PStyle;
52
+ cssEnabled: PStyle;
53
+ text?: { text: string; css: PStyle };
54
+ };
55
+
56
+ replayButton?: {
57
+ iconUrl: string;
58
+ css: PStyle;
59
+ cssDisabled: PStyle;
60
+ cssEnabled: PStyle;
61
+ text?: { text: string; css: PStyle };
62
+ };
63
+
64
+ muteButton?: {
65
+ iconUrl: string;
66
+ css: PStyle;
67
+ text?: { text: string; css: PStyle };
68
+ };
69
+
70
+ unMuteButton?: {
71
+ iconUrl: string;
72
+ css: PStyle;
73
+ text?: { text: string; css: PStyle };
74
+ };
75
+
76
+ videoElement: {
77
+ css: PStyle;
78
+ };
79
+ };
80
+ mainText: {
81
+ base: {
82
+ text: PStyle;
83
+ audio: { css: PStyle; cssDisabled: PStyle; cssEnabled: PStyle; iconUrl: string };
84
+ };
85
+
86
+ notMediaNotAudio: {
87
+ text: PStyle;
88
+ };
89
+
90
+ hasMediaNotAudio: {
91
+ text: PStyle;
92
+ };
93
+
94
+ hasMediaHasAudio: {
95
+ text: PStyle;
96
+ audio: PStyle;
97
+ };
98
+
99
+ notMediaHasAudio: {
100
+ text: PStyle;
101
+ audio: PStyle;
102
+ };
103
+ };
104
+
105
+ buttonBar: {
106
+ vibrateMs: number | false;
107
+ container: { base: PStyle; whenSingle: PStyle; whenMany: PStyle };
108
+ responseButtons: BuilderOptionTheme;
109
+ nextButtonTheme: BuilderOptionTheme;
110
+ };
111
+ // buttonThemes?: Array<BuilderOptionTheme>;
112
+ }
113
+
114
+ interface ButtonTheme {
115
+ btn: CssTheme;
116
+ divider: PStyle;
117
+ text1: PStyle;
118
+ text2: PStyle;
119
+ }
120
+
121
+ export interface BuilderOptionTheme {
122
+ name: string;
123
+ normal: ButtonTheme;
124
+ dontKnow: ButtonTheme;
125
+ }
@@ -1,11 +1,10 @@
1
- import { SchemaDto } from "@media-quest/engine";
2
- import { CompilerOption } from "../builder-compiler";
3
- import { BuilderSchemaDto } from "../Builder-schema-dto";
4
-
5
- export interface ThemeCompiler<ThemeSchema> {
6
- currentTheme: ThemeSchema;
7
- allThemes: ThemeSchema[];
8
- setTheme(theme: ThemeSchema): void;
9
- // protected constructor(protected readonly theme: ThemeSchema) {}
10
- compile(schema: BuilderSchemaDto): SchemaDto;
11
- }
1
+ import type { BuilderSchemaDto } from "../Builder-schema";
2
+ import { SchemaDto } from "@media-quest/engine";
3
+
4
+ export interface ThemeCompiler<ThemeSchema> {
5
+ currentTheme: ThemeSchema;
6
+ allThemes: ThemeSchema[];
7
+ setTheme(theme: ThemeSchema): void;
8
+ // protected constructor(protected readonly theme: ThemeSchema) {}
9
+ compile(schema: BuilderSchemaDto): SchemaDto;
10
+ }