@media-quest/builder 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.
Files changed (42) hide show
  1. package/dist/public-api.d.ts +82 -100
  2. package/dist/public-api.js +68 -128
  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 +77 -62
  8. package/src/Builder-question.spec.ts +1 -0
  9. package/src/Builder-question.ts +97 -98
  10. package/src/Builder-schema.spec.ts +348 -348
  11. package/src/Builder-schema.ts +308 -306
  12. package/src/builder-compiler.ts +14 -20
  13. package/src/code-book/codebook-variable.ts +27 -27
  14. package/src/code-book/codebook.ts +89 -89
  15. package/src/media-files.ts +28 -32
  16. package/src/page/Builder-page-collection.spec.ts +224 -219
  17. package/src/page/Builder-page-collection.ts +129 -129
  18. package/src/page/Builder-page.spec.ts +177 -177
  19. package/src/page/Builder-page.ts +250 -250
  20. package/src/primitives/ID.ts +135 -135
  21. package/src/public-api.ts +29 -30
  22. package/src/rulebuilder/RuleAction.ts +105 -105
  23. package/src/schema-config.ts +25 -26
  24. package/src/sum-score/sum-score-variable-collection.spec.ts +68 -68
  25. package/src/sum-score/sum-score-variable-collection.ts +101 -101
  26. package/src/sum-score/sum-score-variable.ts +0 -1
  27. package/src/sum-score/sum-score.ts +166 -167
  28. package/src/tag/BuilderTag.ts +45 -45
  29. package/src/tag/Tag-Collection.ts +53 -53
  30. package/src/theme/Default-theme.ts +173 -188
  31. package/src/theme/IDefault-theme.ts +124 -125
  32. package/src/theme/ThemeCompiler.ts +10 -11
  33. package/src/theme/default-theme-compiler.spec.ts +31 -31
  34. package/src/theme/default-theme-compiler.ts +660 -652
  35. package/src/theme/icon-urls.ts +29 -29
  36. package/src/theme/icons.ts +117 -117
  37. package/src/theme/theme-utils.spec.ts +52 -52
  38. package/src/theme/theme-utils.ts +56 -56
  39. package/src/theme/theme2.ts +399 -386
  40. package/tsconfig.json +19 -19
  41. package/src/Builder-schema-dto.spec.ts +0 -155
  42. 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,124 @@
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 { PStyle } from "@media-quest/engine";
2
+ import type { CssTheme } from "./css-theme";
3
+
4
+ export interface IDefaultTheme {
5
+ name: string;
6
+ schemaBackgroundColor: string;
7
+ dimensions: {
8
+ baseHeight: number;
9
+ baseWidth: number;
10
+ };
11
+
12
+ pageBackGroundImage?: { url: string; style: PStyle };
13
+
14
+ pageBackGround?: { style: PStyle };
15
+
16
+ backGroundArea1?: { style: PStyle };
17
+
18
+ backGroundArea2?: { style: PStyle };
19
+
20
+ backGroundArea3?: { style: PStyle };
21
+
22
+ progressBar?: {
23
+ width: number;
24
+ height: number;
25
+ bottom: number;
26
+ left: number;
27
+ backgroundStyles: PStyle;
28
+ progressStyles: PStyle;
29
+ text?: {
30
+ style: PStyle;
31
+ textType: "percent" | "page-progress";
32
+ };
33
+ };
34
+
35
+ image: { style: PStyle };
36
+ videoPlayer: {
37
+ playButton: {
38
+ iconUrl: string;
39
+ css: PStyle;
40
+ cssDisabled: PStyle;
41
+ cssEnabled: PStyle;
42
+ text?: { text: string; css: PStyle };
43
+ };
44
+
45
+ buttonBar?: PStyle;
46
+
47
+ pauseButton: {
48
+ iconUrl: string;
49
+ css: PStyle;
50
+ cssDisabled: PStyle;
51
+ cssEnabled: PStyle;
52
+ text?: { text: string; css: PStyle };
53
+ };
54
+
55
+ replayButton?: {
56
+ iconUrl: string;
57
+ css: PStyle;
58
+ cssDisabled: PStyle;
59
+ cssEnabled: PStyle;
60
+ text?: { text: string; css: PStyle };
61
+ };
62
+
63
+ muteButton?: {
64
+ iconUrl: string;
65
+ css: PStyle;
66
+ text?: { text: string; css: PStyle };
67
+ };
68
+
69
+ unMuteButton?: {
70
+ iconUrl: string;
71
+ css: PStyle;
72
+ text?: { text: string; css: PStyle };
73
+ };
74
+
75
+ videoElement: {
76
+ css: PStyle;
77
+ };
78
+ };
79
+ mainText: {
80
+ base: {
81
+ text: PStyle;
82
+ audio: { css: PStyle; cssDisabled: PStyle; cssEnabled: PStyle; iconUrl: string };
83
+ };
84
+
85
+ notMediaNotAudio: {
86
+ text: PStyle;
87
+ };
88
+
89
+ hasMediaNotAudio: {
90
+ text: PStyle;
91
+ };
92
+
93
+ hasMediaHasAudio: {
94
+ text: PStyle;
95
+ audio: PStyle;
96
+ };
97
+
98
+ notMediaHasAudio: {
99
+ text: PStyle;
100
+ audio: PStyle;
101
+ };
102
+ };
103
+
104
+ buttonBar: {
105
+ vibrateMs: number | false;
106
+ container: { base: PStyle; whenSingle: PStyle; whenMany: PStyle };
107
+ responseButtons: BuilderOptionTheme;
108
+ nextButtonTheme: BuilderOptionTheme;
109
+ };
110
+ // buttonThemes?: Array<BuilderOptionTheme>;
111
+ }
112
+
113
+ interface ButtonTheme {
114
+ btn: CssTheme;
115
+ divider: PStyle;
116
+ text1: PStyle;
117
+ text2: PStyle;
118
+ }
119
+
120
+ export interface BuilderOptionTheme {
121
+ name: string;
122
+ normal: ButtonTheme;
123
+ dontKnow: ButtonTheme;
124
+ }
@@ -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
+ }