@pie-element/math-templated 8.0.4-next.20261011174919 → 8.0.4

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.
@@ -1,20 +1,21 @@
1
+ import type { MathTemplatedResponse } from '../types.js';
1
2
  declare const _default: {
2
3
  model: {
3
- allowTrailingZerosDefault: boolean;
4
- equationEditor: string;
5
- ignoreOrderDefault: boolean;
4
+ allowTrailingZerosDefault: false;
5
+ equationEditor: "8";
6
+ ignoreOrderDefault: false;
6
7
  markup: string;
7
- playerSpellCheckEnabled: boolean;
8
+ playerSpellCheckEnabled: true;
8
9
  prompt: string;
9
- promptEnabled: boolean;
10
+ promptEnabled: true;
10
11
  rationale: string;
11
- rationaleEnabled: boolean;
12
- responses: {};
13
- spellCheckEnabled: boolean;
12
+ rationaleEnabled: true;
13
+ responses: Record<string, MathTemplatedResponse>;
14
+ spellCheckEnabled: true;
14
15
  teacherInstructions: string;
15
- teacherInstructionsEnabled: boolean;
16
- toolbarEditorPosition: string;
17
- validationDefault: string;
16
+ teacherInstructionsEnabled: true;
17
+ toolbarEditorPosition: "bottom";
18
+ validationDefault: "literal";
18
19
  };
19
20
  configuration: {};
20
21
  };
@@ -1,9 +1,47 @@
1
- export declare const getCorrectness: (question: any, env: any, session: any) => {
2
- correctness: string;
1
+ import type { ExtraCSSRules, PieEnvironment } from '@pie-element/shared-types';
2
+ import type { EquationEditor, MathTemplatedConfiguration, MathTemplatedModel, MathTemplatedResponse, MathTemplatedSession } from '../types.js';
3
+ /** Correctness of the learner's answers across every response area. */
4
+ type ResponseCorrectness = {
5
+ correctness: 'unanswered' | 'correct' | 'incorrect';
3
6
  score: number;
4
7
  correct: boolean;
5
- } | undefined;
6
- export declare const getPartialScore: (question: any, session: any) => 1 | 0;
8
+ };
9
+ /** The model as the delivery view receives it. */
10
+ type MathTemplatedViewModel = {
11
+ prompt: string | null;
12
+ markup?: string;
13
+ responses: Record<string, MathTemplatedResponse> | null;
14
+ language?: string;
15
+ equationEditor?: EquationEditor;
16
+ customKeys?: string[];
17
+ disabled: boolean;
18
+ view: boolean;
19
+ correctness?: ResponseCorrectness;
20
+ env: PieEnvironment;
21
+ extraCSSRules?: ExtraCSSRules;
22
+ correctResponse?: Record<string, never>;
23
+ showNote?: boolean;
24
+ note?: string;
25
+ feedback?: Record<string, boolean>;
26
+ rationale?: string | null;
27
+ teacherInstructions?: string | null;
28
+ };
29
+ type MathTemplatedOutcome = {
30
+ score: number | undefined;
31
+ completed?: undefined;
32
+ empty?: boolean;
33
+ logTrace: string[];
34
+ };
35
+ /** Errors `validate()` reports, keyed by field; `responses` is keyed by response index, then by `answer` or alternate id. */
36
+ export type MathTemplatedValidationErrors = {
37
+ teacherInstructions?: string;
38
+ prompt?: string;
39
+ rationale?: string;
40
+ responseAreas?: string;
41
+ responses?: Record<number, Record<string, string>>;
42
+ };
43
+ export declare const getCorrectness: (question: MathTemplatedModel, env: PieEnvironment, session: MathTemplatedSession | null | undefined) => ResponseCorrectness | undefined;
44
+ export declare const getPartialScore: (_question: MathTemplatedModel, session: MathTemplatedSession | null | undefined) => 1 | 0;
7
45
  /**
8
46
  * Generates detailed trace log for math-templated scoring evaluation
9
47
  * @param {Object} question
@@ -11,27 +49,40 @@ export declare const getPartialScore: (question: any, session: any) => 1 | 0;
11
49
  * @param {Object} env
12
50
  * @returns {Array<string>} traceLog
13
51
  */
14
- export declare const getLogTrace: (question: any, session: any, env: any) => string[];
15
- export declare const outcome: (question: any, session: any, env: any) => Promise<unknown>;
16
- export declare const createDefaultModel: (model?: {}) => {
17
- responses: {};
18
- allowTrailingZerosDefault: boolean;
19
- equationEditor: string;
20
- ignoreOrderDefault: boolean;
52
+ export declare const getLogTrace: (question: MathTemplatedModel, session: MathTemplatedSession | null | undefined, env: PieEnvironment) => string[];
53
+ export declare const outcome: (question: MathTemplatedModel, session: MathTemplatedSession | null | undefined, env: PieEnvironment) => Promise<MathTemplatedOutcome>;
54
+ export declare const createDefaultModel: (model?: Partial<MathTemplatedModel>) => {
55
+ responses: Record<string, MathTemplatedResponse>;
21
56
  markup: string;
22
- playerSpellCheckEnabled: boolean;
57
+ slateMarkup?: string | undefined;
23
58
  prompt: string;
24
59
  promptEnabled: boolean;
60
+ teacherInstructions: string;
61
+ teacherInstructionsEnabled: boolean;
25
62
  rationale: string;
26
63
  rationaleEnabled: boolean;
27
64
  spellCheckEnabled: boolean;
28
- teacherInstructions: string;
29
- teacherInstructionsEnabled: boolean;
30
- toolbarEditorPosition: string;
31
- validationDefault: string;
65
+ playerSpellCheckEnabled: boolean;
66
+ equationEditor: EquationEditor;
67
+ customKeys?: string[] | undefined;
68
+ ignoreOrderDefault: boolean;
69
+ allowTrailingZerosDefault: boolean;
70
+ validationDefault: "literal" | "symbolic";
71
+ partialScoring?: boolean | undefined;
72
+ toolbarEditorPosition: "bottom" | "top";
73
+ note?: string | undefined;
74
+ language?: string | undefined;
75
+ extraCSSRules?: ExtraCSSRules | undefined;
76
+ scoringType?: "auto" | "rubric" | undefined;
77
+ feedbackEnabled?: boolean | undefined;
78
+ studentInstructionsEnabled?: boolean | undefined;
79
+ id?: string | undefined;
80
+ element?: string | undefined;
81
+ accessibilityCatalogs?: import("@pie-element/shared-types").AccessibilityCatalog[] | undefined;
32
82
  };
33
- export declare const normalizeSession: (s: any) => any;
34
- export declare const prepareVal: (html: any) => any;
35
- export declare const model: (question: any, session: any, env: any) => Promise<unknown>;
36
- export declare const createCorrectResponseSession: (question: any, env: any) => Promise<unknown>;
37
- export declare const validate: (model?: {}, config?: {}) => {};
83
+ export declare const normalizeSession: (s: MathTemplatedSession) => MathTemplatedSession;
84
+ export declare const prepareVal: (html: string | undefined) => string;
85
+ export declare const model: (question: Partial<MathTemplatedModel>, session: MathTemplatedSession | null | undefined, env: PieEnvironment) => Promise<MathTemplatedViewModel>;
86
+ export declare const createCorrectResponseSession: (question: MathTemplatedModel, env: PieEnvironment) => Promise<MathTemplatedSession | null>;
87
+ export declare const validate: (model?: Partial<MathTemplatedModel>, config?: MathTemplatedConfiguration) => MathTemplatedValidationErrors;
88
+ export {};
@@ -80,7 +80,7 @@ var { translator: o } = n, s = r("@pie-element:math-templated:controller"), c =
80
80
  logTrace: []
81
81
  });
82
82
  else {
83
- let t = f(e, r, n, !0).score;
83
+ let t = f(e, r, n).score;
84
84
  i({
85
85
  score: o ? t : +(t === 1),
86
86
  logTrace: m(e, n, r)
@@ -126,10 +126,13 @@ var { translator: o } = n, s = r("@pie-element:math-templated:controller"), c =
126
126
  _[e] = u(n, t);
127
127
  }), n.mode === "evaluate" ? (m.correctResponse = {}, m.showNote = p, m.note = d, m.feedback = _) : (m.responses = {}, m.showNote = !1), n.role === "instructor" && (n.mode === "view" || n.mode === "evaluate") ? (m.rationale = i.rationaleEnabled ? i.rationale : null, m.teacherInstructions = i.teacherInstructionsEnabled ? i.teacherInstructions : null) : (m.rationale = null, m.teacherInstructions = null), s("out: ", m), r(m);
128
128
  }), x = (e, t) => new Promise((n) => {
129
- t.mode !== "evaluate" && t.role === "instructor" ? n({
130
- id: "1",
131
- answers: Object.keys(e.responses).reduce((t, n) => (t["r" + n] = { value: e.responses[n].answer }, t), {})
132
- }) : n(null);
129
+ if (t.mode !== "evaluate" && t.role === "instructor") {
130
+ let t = e.responses;
131
+ n({
132
+ id: "1",
133
+ answers: Object.keys(t).reduce((e, n) => (e["r" + n] = { value: t[n].answer }, e), {})
134
+ });
135
+ } else n(null);
133
136
  }), S = (e = {}, n = {}) => {
134
137
  let { responses: r, markup: i } = e, { maxResponseAreas: a } = n, o = {}, s = {};
135
138
  [
@@ -138,13 +141,13 @@ var { translator: o } = n, s = r("@pie-element:math-templated:controller"), c =
138
141
  "rationale"
139
142
  ].forEach((t) => {
140
143
  n[t]?.required && !l(e[t]) && (s[t] = "This field is required.");
141
- }), Object.entries(r || {}).forEach(([e, n], r) => {
142
- let { answer: i } = n, a = [...Object.entries(n.alternates || {})].reverse(), s = {}, c = {};
143
- i === "" && (c.answer = "Content should not be empty."), a.forEach(([e, t], n) => {
144
- t === "" ? s[e] = "Content should not be empty." : (i === t || a.slice(n + 1).some(([, e]) => e === t)) && (s[e] = "Content should be unique.");
145
- }), (!t(c) || !t(s)) && (o[r] = {
146
- ...c,
147
- ...s
144
+ }), Object.entries(r || {}).forEach(([, e], n) => {
145
+ let { answer: r } = e, i = [...Object.entries(e.alternates || {})].reverse(), a = {}, s = {};
146
+ r === "" && (s.answer = "Content should not be empty."), i.forEach(([e, t], n) => {
147
+ t === "" ? a[e] = "Content should not be empty." : (r === t || i.slice(n + 1).some(([, e]) => e === t)) && (a[e] = "Content should be unique.");
148
+ }), (!t(s) || !t(a)) && (o[n] = {
149
+ ...s,
150
+ ...a
148
151
  });
149
152
  });
150
153
  let c = (i.match(/\{\{(\d+)\}\}/g) || []).length;
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export { default } from './delivery/index.js';
2
+ export type * from './types.js';
@@ -0,0 +1,382 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://cdn.jsdelivr.net/npm/@pie-element/math-templated@8.0.4/dist/schemas/configuration.schema.json",
4
+ "type": "object",
5
+ "properties": {
6
+ "ignoreOrder": {
7
+ "$ref": "#/definitions/ConfigurePropWithEnabled",
8
+ "description": "Ignore Order configuration; `enabled` shows the control on each response"
9
+ },
10
+ "allowTrailingZeros": {
11
+ "$ref": "#/definitions/ConfigurePropWithEnabled",
12
+ "description": "Allow Trailing Zeros configuration; `enabled` shows the control on each response"
13
+ },
14
+ "partialScoring": {
15
+ "$ref": "#/definitions/ConfigureProp",
16
+ "description": "Partial Scoring configuration"
17
+ },
18
+ "baseInputConfiguration": {
19
+ "$ref": "#/definitions/EditableHtmlConfigureProp",
20
+ "description": "Base editable html input configuration regarding plugins that are enabled/disabled E.g. audio, video, image"
21
+ },
22
+ "prompt": {
23
+ "$ref": "#/definitions/EditableHtmlPluginConfigureRequired",
24
+ "description": "Configuration for the prompt; `inputConfiguration` is not read, the prompt editor takes `teacherInstructions.inputConfiguration`"
25
+ },
26
+ "spellCheck": {
27
+ "$ref": "#/definitions/ConfigurePropWithEnabled",
28
+ "description": "Configuration for the author's spellcheck; `enabled` is not read"
29
+ },
30
+ "editSource": {
31
+ "$ref": "#/definitions/ConfigurePropWithEnabled",
32
+ "description": "Configuration for edit Source; `enabled` is not read"
33
+ },
34
+ "playerSpellCheck": {
35
+ "$ref": "#/definitions/ConfigurePropWithEnabled",
36
+ "description": "Configuration for the player's spellcheck; `enabled` is not read"
37
+ },
38
+ "teacherInstructions": {
39
+ "$ref": "#/definitions/EditableHtmlPluginConfigureRequired",
40
+ "description": "Teacher Instructions configuration"
41
+ },
42
+ "rationale": {
43
+ "$ref": "#/definitions/EditableHtmlPluginConfigureRequired",
44
+ "description": "Configuration for Rationale"
45
+ },
46
+ "template": {
47
+ "$ref": "#/definitions/EditableHtmlPluginConfigure",
48
+ "description": "Template configuration"
49
+ },
50
+ "maxImageWidth": {
51
+ "$ref": "#/definitions/ConfigureMaxImageDimensionsProp",
52
+ "description": "Maximum image width for input fields"
53
+ },
54
+ "maxImageHeight": {
55
+ "$ref": "#/definitions/ConfigureMaxImageDimensionsProp",
56
+ "description": "Maximum image height for input fields"
57
+ },
58
+ "mathMlOptions": {
59
+ "$ref": "#/definitions/ConfigureMathMLProp",
60
+ "description": "Configuration for editable-html"
61
+ },
62
+ "language": {
63
+ "$ref": "#/definitions/ConfigurePropWithEnabled",
64
+ "description": "Language configuration"
65
+ },
66
+ "languageChoices": {
67
+ "$ref": "#/definitions/ConfigureLanguageOptions",
68
+ "description": "Language choices configuration Only available if language is enabled"
69
+ },
70
+ "maxResponseAreas": {
71
+ "type": "number",
72
+ "description": "Maximum number of response areas"
73
+ },
74
+ "settingsPanelDisabled": {
75
+ "type": "boolean",
76
+ "description": "Indicates if the settings panel is not available"
77
+ },
78
+ "contentDimensions": {
79
+ "$ref": "#/definitions/ContentDimensions",
80
+ "description": "Dimensions of the authoring container"
81
+ }
82
+ },
83
+ "description": "Config Object for `@pie-element/math-templated`",
84
+ "definitions": {
85
+ "ConfigurePropWithEnabled": {
86
+ "type": "object",
87
+ "properties": {
88
+ "settings": {
89
+ "type": "boolean",
90
+ "description": "Indicates if the item has to be displayed in the Settings Panel"
91
+ },
92
+ "label": {
93
+ "type": "string",
94
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel"
95
+ },
96
+ "enabled": {
97
+ "type": "boolean",
98
+ "description": "Indicates the value of the item if it affects config-ui (eg.: if item is a switch and displaying an input on the config-ui depends on the switch value: on/off)"
99
+ }
100
+ }
101
+ },
102
+ "ConfigureProp": {
103
+ "type": "object",
104
+ "properties": {
105
+ "settings": {
106
+ "type": "boolean",
107
+ "description": "Indicates if the item has to be displayed in the Settings Panel"
108
+ },
109
+ "label": {
110
+ "type": "string",
111
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel"
112
+ }
113
+ },
114
+ "description": "Building blocks of an element's authoring configuration: the object a host passes to the `<tag>-config` custom element to decide which settings the author sees and how editors behave.\n\nEach element declares its own `<Name>Configuration` interface from these, and its JSON Schema is generated from that interface. Descriptions are carried over from the legacy `pie-elements` config schemas, so they appear in the generated schemas unchanged."
115
+ },
116
+ "EditableHtmlConfigureProp": {
117
+ "type": "object",
118
+ "properties": {
119
+ "math": {
120
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
121
+ },
122
+ "audio": {
123
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
124
+ },
125
+ "video": {
126
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
127
+ },
128
+ "image": {
129
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
130
+ },
131
+ "customPlugins": {
132
+ "type": "array",
133
+ "items": {
134
+ "$ref": "#/definitions/CustomPlugin"
135
+ },
136
+ "description": "An array of objects that determine custom plugins. A custom plugin is an object which determines how the button will look like (icon) and the event name that will be triggered when the button gets pressed (event)."
137
+ },
138
+ "blockquote": {
139
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
140
+ },
141
+ "h3": {
142
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
143
+ },
144
+ "characters": {
145
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
146
+ },
147
+ "bold": {
148
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
149
+ },
150
+ "html": {
151
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
152
+ },
153
+ "italic": {
154
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
155
+ },
156
+ "ol_list": {
157
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
158
+ },
159
+ "redo": {
160
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
161
+ },
162
+ "strikethrough": {
163
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
164
+ },
165
+ "sub": {
166
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
167
+ },
168
+ "sup": {
169
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
170
+ },
171
+ "table": {
172
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
173
+ },
174
+ "ul_list": {
175
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
176
+ },
177
+ "underline": {
178
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
179
+ },
180
+ "undo": {
181
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
182
+ },
183
+ "textAlign": {
184
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
185
+ },
186
+ "showParagraphs": {
187
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
188
+ },
189
+ "separateParagraphs": {
190
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
191
+ },
192
+ "pasteFormatting": {
193
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
194
+ },
195
+ "superscript": {
196
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
197
+ },
198
+ "subscript": {
199
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
200
+ },
201
+ "languageCharacters": {
202
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
203
+ },
204
+ "responseArea": {
205
+ "$ref": "#/definitions/EditableHtmlButtonConfigure"
206
+ }
207
+ },
208
+ "description": "Toolbar plugins of an editable-html field, keyed by plugin name."
209
+ },
210
+ "EditableHtmlButtonConfigure": {
211
+ "type": "object",
212
+ "properties": {
213
+ "disabled": {
214
+ "type": "boolean",
215
+ "description": "Indicates if the plugin is disabled or not"
216
+ }
217
+ }
218
+ },
219
+ "CustomPlugin": {
220
+ "type": "object",
221
+ "properties": {
222
+ "event": {
223
+ "type": "string",
224
+ "description": "The name of the custom event. It needs to be valid (only letters, numbers and \"_\" can be used). The event is emitted with the \"PIE-\" prefix."
225
+ },
226
+ "iconAlt": {
227
+ "type": "string",
228
+ "description": "The alt for the custom button icon"
229
+ },
230
+ "iconType": {
231
+ "type": "string",
232
+ "description": "The icon type. Currently, only \"SVG\" is supported."
233
+ },
234
+ "icon": {
235
+ "type": "string",
236
+ "description": "The icon string. Currently, only SVG is supported, so it needs to be a valid svg."
237
+ }
238
+ },
239
+ "required": [
240
+ "event",
241
+ "iconAlt",
242
+ "iconType",
243
+ "icon"
244
+ ]
245
+ },
246
+ "EditableHtmlPluginConfigureRequired": {
247
+ "type": "object",
248
+ "properties": {
249
+ "settings": {
250
+ "type": "boolean",
251
+ "description": "Indicates if the item has to be displayed in the Settings Panel"
252
+ },
253
+ "label": {
254
+ "type": "string",
255
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel"
256
+ },
257
+ "inputConfiguration": {
258
+ "$ref": "#/definitions/EditableHtmlConfigureProp",
259
+ "description": "Configuration for editable-html"
260
+ },
261
+ "required": {
262
+ "type": "boolean",
263
+ "description": "Indicates if the item is required and the value cannot be empty"
264
+ }
265
+ }
266
+ },
267
+ "EditableHtmlPluginConfigure": {
268
+ "type": "object",
269
+ "properties": {
270
+ "settings": {
271
+ "type": "boolean",
272
+ "description": "Indicates if the item has to be displayed in the Settings Panel"
273
+ },
274
+ "label": {
275
+ "type": "string",
276
+ "description": "Indicates the label for the item that has to be displayed in the Settings Panel"
277
+ },
278
+ "inputConfiguration": {
279
+ "$ref": "#/definitions/EditableHtmlConfigureProp",
280
+ "description": "Configuration for editable-html"
281
+ }
282
+ }
283
+ },
284
+ "ConfigureMaxImageDimensionsProp": {
285
+ "type": "object",
286
+ "properties": {
287
+ "teacherInstructions": {
288
+ "type": "number",
289
+ "description": "Indicates the max dimension for images in teacher instructions"
290
+ },
291
+ "prompt": {
292
+ "type": "number",
293
+ "description": "Indicates the max dimension for images in prompt - this is also the default dimension for all other input fields if it's not specified"
294
+ },
295
+ "rationale": {
296
+ "type": "number",
297
+ "description": "Indicates the max dimension for images in rationale"
298
+ }
299
+ },
300
+ "description": "Maximum image dimensions per editable field. Elements extend it with their own fields."
301
+ },
302
+ "ConfigureMathMLProp": {
303
+ "type": "object",
304
+ "properties": {
305
+ "mmlOutput": {
306
+ "type": "boolean",
307
+ "description": "Indicates if model should have mathML output instead of latex"
308
+ },
309
+ "mmlEditing": {
310
+ "type": "boolean",
311
+ "description": "Indicates if mathML that's already in model should be editable"
312
+ }
313
+ }
314
+ },
315
+ "ConfigureLanguageOptions": {
316
+ "type": "object",
317
+ "properties": {
318
+ "label": {
319
+ "type": "string"
320
+ },
321
+ "options": {
322
+ "type": "array",
323
+ "items": {
324
+ "$ref": "#/definitions/ConfigureLanguageOptionsProp"
325
+ }
326
+ }
327
+ },
328
+ "required": [
329
+ "label",
330
+ "options"
331
+ ]
332
+ },
333
+ "ConfigureLanguageOptionsProp": {
334
+ "type": "object",
335
+ "properties": {
336
+ "value": {
337
+ "type": "string",
338
+ "description": "Value of the language option"
339
+ },
340
+ "label": {
341
+ "type": "string",
342
+ "description": "Label of the language option"
343
+ }
344
+ },
345
+ "required": [
346
+ "value",
347
+ "label"
348
+ ]
349
+ },
350
+ "ContentDimensions": {
351
+ "type": "object",
352
+ "properties": {
353
+ "maxHeight": {
354
+ "type": [
355
+ "string",
356
+ "number"
357
+ ]
358
+ },
359
+ "maxWidth": {
360
+ "type": [
361
+ "string",
362
+ "number"
363
+ ]
364
+ },
365
+ "minHeight": {
366
+ "type": [
367
+ "string",
368
+ "number"
369
+ ]
370
+ },
371
+ "minWidth": {
372
+ "type": [
373
+ "string",
374
+ "number"
375
+ ]
376
+ }
377
+ },
378
+ "description": "Indicates the dimensions configuration for the authoring container. Note: Some items have a default minimum width because of their content, but if a lower minWidth is provided, it will be used."
379
+ }
380
+ },
381
+ "additionalProperties": false
382
+ }