@pie-element/number-line 14.0.4-next.20261011174919 → 14.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,170 +1,345 @@
1
+ import type { ConfigureLanguageOptionsProp } from '@pie-element/shared-types';
2
+ import type { NumberLineResponse } from '../types.js';
1
3
  export declare const model: {
2
- correctResponse: never[];
4
+ correctResponse: NumberLineResponse[];
3
5
  feedback: {
4
6
  correct: {
5
7
  default: string;
6
- type: string;
8
+ type: "none";
7
9
  };
8
10
  incorrect: {
9
11
  default: string;
10
- type: string;
12
+ type: "none";
11
13
  };
12
14
  partial: {
13
15
  default: string;
14
- type: string;
16
+ type: "none";
15
17
  };
16
18
  };
17
19
  graph: {
18
20
  arrows: {
19
- left: boolean;
20
- right: boolean;
21
+ left: true;
22
+ right: true;
21
23
  };
22
24
  availableTypes: {
23
- PF: boolean;
25
+ PF: true;
24
26
  };
25
27
  domain: {
26
28
  min: number;
27
29
  max: number;
28
30
  };
29
- exhibitOnly: boolean;
30
- initialElements: never[];
31
- initialType: string;
31
+ exhibitOnly: false;
32
+ initialElements: NumberLineResponse[];
33
+ initialType: "PF";
32
34
  maxNumberOfPoints: number;
33
35
  ticks: {
34
36
  minor: number;
35
37
  major: number;
36
- tickIntervalType: string;
38
+ tickIntervalType: "Decimal";
37
39
  };
38
40
  title: string;
39
41
  width: number;
40
42
  };
41
43
  prompt: string;
42
- promptEnabled: boolean;
44
+ promptEnabled: true;
43
45
  rationale: string;
44
- rationaleEnabled: boolean;
46
+ rationaleEnabled: true;
45
47
  teacherInstructions: string;
46
- teacherInstructionsEnabled: boolean;
47
- toolbarEditorPosition: string;
48
- widthEnabled: boolean;
48
+ teacherInstructionsEnabled: true;
49
+ toolbarEditorPosition: "bottom";
50
+ widthEnabled: true;
49
51
  };
50
52
  export declare const configuration: {
51
53
  baseInputConfiguration: {
52
54
  h3: {
53
- disabled: boolean;
55
+ disabled: true;
54
56
  };
55
57
  audio: {
56
- disabled: boolean;
58
+ disabled: false;
57
59
  };
58
60
  video: {
59
- disabled: boolean;
61
+ disabled: false;
60
62
  };
61
63
  image: {
62
- disabled: boolean;
64
+ disabled: false;
63
65
  };
64
66
  textAlign: {
65
- disabled: boolean;
67
+ disabled: true;
66
68
  };
67
69
  showParagraphs: {
68
- disabled: boolean;
70
+ disabled: false;
69
71
  };
70
72
  };
71
73
  instruction: {
72
- settings: boolean;
73
- enabled: boolean;
74
+ settings: false;
75
+ enabled: true;
74
76
  label: string;
75
77
  };
76
78
  prompt: {
77
- settings: boolean;
79
+ settings: true;
78
80
  label: string;
79
- required: boolean;
81
+ required: false;
80
82
  inputConfiguration: {
81
83
  audio: {
82
- disabled: boolean;
84
+ disabled: false;
83
85
  };
84
86
  video: {
85
- disabled: boolean;
87
+ disabled: false;
86
88
  };
87
89
  image: {
88
- disabled: boolean;
90
+ disabled: false;
89
91
  };
90
92
  };
91
93
  };
92
94
  rationale: {
93
- settings: boolean;
95
+ settings: true;
94
96
  label: string;
95
- required: boolean;
97
+ required: false;
96
98
  inputConfiguration: {
97
99
  audio: {
98
- disabled: boolean;
100
+ disabled: false;
99
101
  };
100
102
  video: {
101
- disabled: boolean;
103
+ disabled: false;
102
104
  };
103
105
  image: {
104
- disabled: boolean;
106
+ disabled: false;
105
107
  };
106
108
  };
107
109
  };
108
110
  teacherInstructions: {
109
- settings: boolean;
111
+ settings: true;
110
112
  label: string;
111
- required: boolean;
113
+ required: false;
112
114
  inputConfiguration: {
113
115
  audio: {
114
- disabled: boolean;
116
+ disabled: false;
115
117
  };
116
118
  video: {
117
- disabled: boolean;
119
+ disabled: false;
118
120
  };
119
121
  image: {
120
- disabled: boolean;
122
+ disabled: false;
121
123
  };
122
124
  };
123
125
  };
124
126
  title: {
125
127
  label: string;
126
- settings: boolean;
127
- enabled: boolean;
128
+ settings: true;
129
+ enabled: true;
128
130
  inputConfiguration: {
129
131
  audio: {
130
- disabled: boolean;
132
+ disabled: false;
131
133
  };
132
134
  video: {
133
- disabled: boolean;
135
+ disabled: false;
134
136
  };
135
137
  image: {
136
- disabled: boolean;
138
+ disabled: false;
137
139
  };
138
140
  };
139
141
  };
140
142
  numberLineDimensions: {
141
- settings: boolean;
143
+ settings: true;
142
144
  label: string;
143
- enabled: boolean;
145
+ enabled: true;
144
146
  min: number;
145
147
  max: number;
146
148
  step: number;
147
149
  };
148
150
  mathMlOptions: {
149
- mmlOutput: boolean;
150
- mmlEditing: boolean;
151
+ mmlOutput: false;
152
+ mmlEditing: false;
151
153
  };
152
154
  language: {
153
- settings: boolean;
155
+ settings: false;
154
156
  label: string;
155
- enabled: boolean;
157
+ enabled: false;
156
158
  };
157
159
  languageChoices: {
158
160
  label: string;
159
- options: never[];
161
+ options: ConfigureLanguageOptionsProp[];
160
162
  };
161
163
  spellCheck: {
162
164
  label: string;
163
- settings: boolean;
164
- enabled: boolean;
165
+ settings: false;
166
+ enabled: true;
165
167
  };
166
168
  maxMaxElements: number;
167
- hidePointConfigButtons: boolean;
168
- availableTools: string[];
169
- settingsPanelDisabled: boolean;
169
+ hidePointConfigButtons: false;
170
+ availableTools: ("PF" | "LFF" | "LEF" | "LFE" | "LEE" | "RFN" | "RFP" | "REN" | "REP")[];
171
+ settingsPanelDisabled: false;
170
172
  };
173
+ declare const _default: {
174
+ model: {
175
+ correctResponse: NumberLineResponse[];
176
+ feedback: {
177
+ correct: {
178
+ default: string;
179
+ type: "none";
180
+ };
181
+ incorrect: {
182
+ default: string;
183
+ type: "none";
184
+ };
185
+ partial: {
186
+ default: string;
187
+ type: "none";
188
+ };
189
+ };
190
+ graph: {
191
+ arrows: {
192
+ left: true;
193
+ right: true;
194
+ };
195
+ availableTypes: {
196
+ PF: true;
197
+ };
198
+ domain: {
199
+ min: number;
200
+ max: number;
201
+ };
202
+ exhibitOnly: false;
203
+ initialElements: NumberLineResponse[];
204
+ initialType: "PF";
205
+ maxNumberOfPoints: number;
206
+ ticks: {
207
+ minor: number;
208
+ major: number;
209
+ tickIntervalType: "Decimal";
210
+ };
211
+ title: string;
212
+ width: number;
213
+ };
214
+ prompt: string;
215
+ promptEnabled: true;
216
+ rationale: string;
217
+ rationaleEnabled: true;
218
+ teacherInstructions: string;
219
+ teacherInstructionsEnabled: true;
220
+ toolbarEditorPosition: "bottom";
221
+ widthEnabled: true;
222
+ };
223
+ configuration: {
224
+ baseInputConfiguration: {
225
+ h3: {
226
+ disabled: true;
227
+ };
228
+ audio: {
229
+ disabled: false;
230
+ };
231
+ video: {
232
+ disabled: false;
233
+ };
234
+ image: {
235
+ disabled: false;
236
+ };
237
+ textAlign: {
238
+ disabled: true;
239
+ };
240
+ showParagraphs: {
241
+ disabled: false;
242
+ };
243
+ };
244
+ instruction: {
245
+ settings: false;
246
+ enabled: true;
247
+ label: string;
248
+ };
249
+ prompt: {
250
+ settings: true;
251
+ label: string;
252
+ required: false;
253
+ inputConfiguration: {
254
+ audio: {
255
+ disabled: false;
256
+ };
257
+ video: {
258
+ disabled: false;
259
+ };
260
+ image: {
261
+ disabled: false;
262
+ };
263
+ };
264
+ };
265
+ rationale: {
266
+ settings: true;
267
+ label: string;
268
+ required: false;
269
+ inputConfiguration: {
270
+ audio: {
271
+ disabled: false;
272
+ };
273
+ video: {
274
+ disabled: false;
275
+ };
276
+ image: {
277
+ disabled: false;
278
+ };
279
+ };
280
+ };
281
+ teacherInstructions: {
282
+ settings: true;
283
+ label: string;
284
+ required: false;
285
+ inputConfiguration: {
286
+ audio: {
287
+ disabled: false;
288
+ };
289
+ video: {
290
+ disabled: false;
291
+ };
292
+ image: {
293
+ disabled: false;
294
+ };
295
+ };
296
+ };
297
+ title: {
298
+ label: string;
299
+ settings: true;
300
+ enabled: true;
301
+ inputConfiguration: {
302
+ audio: {
303
+ disabled: false;
304
+ };
305
+ video: {
306
+ disabled: false;
307
+ };
308
+ image: {
309
+ disabled: false;
310
+ };
311
+ };
312
+ };
313
+ numberLineDimensions: {
314
+ settings: true;
315
+ label: string;
316
+ enabled: true;
317
+ min: number;
318
+ max: number;
319
+ step: number;
320
+ };
321
+ mathMlOptions: {
322
+ mmlOutput: false;
323
+ mmlEditing: false;
324
+ };
325
+ language: {
326
+ settings: false;
327
+ label: string;
328
+ enabled: false;
329
+ };
330
+ languageChoices: {
331
+ label: string;
332
+ options: ConfigureLanguageOptionsProp[];
333
+ };
334
+ spellCheck: {
335
+ label: string;
336
+ settings: false;
337
+ enabled: true;
338
+ };
339
+ maxMaxElements: number;
340
+ hidePointConfigButtons: false;
341
+ availableTools: ("PF" | "LFF" | "LEF" | "LFE" | "LEE" | "RFN" | "RFP" | "REN" | "REP")[];
342
+ settingsPanelDisabled: false;
343
+ };
344
+ };
345
+ export default _default;
@@ -1,5 +1,12 @@
1
1
  import React from 'react';
2
- export declare class Domain extends React.Component {
2
+ import type { NumberLineDomain } from '../types.js';
3
+ type DomainProps = {
4
+ domain: NumberLineDomain;
5
+ /** Not read */
6
+ errors?: object;
7
+ onChange: (domain: NumberLineDomain) => void;
8
+ };
9
+ export declare class Domain extends React.Component<DomainProps> {
3
10
  constructor(props: any);
4
11
  change(key: any, event: any, value: any): void;
5
12
  render(): React.JSX.Element;
@@ -1,15 +1,23 @@
1
+ import { type AuthorModel } from './main.js';
2
+ import { type DeleteDone, type ImageHandler, type SoundHandler } from '@pie-element/shared-configure-events';
3
+ import type { NumberLineConfiguration, NumberLineModel } from '../types.js';
1
4
  export default class NumberLine extends HTMLElement {
2
- static createDefaultModel: (model?: {}) => any;
5
+ private _root;
6
+ private _model;
7
+ private _modelCopy?;
8
+ private _configuration;
9
+ private hasPlayerAsParent?;
10
+ static createDefaultModel: (model?: Partial<NumberLineModel>) => AuthorModel;
3
11
  constructor();
4
- set model(m: any);
5
- resetModelAfterConfigurationIsSet: any;
6
- set configuration(c: any);
7
- onChange: any;
8
- onConfigurationChanged: any;
9
- insertImage(handler: any): void;
10
- onDeleteImage(src: any, done: any): void;
11
- insertSound(handler: any): void;
12
- onDeleteSound(src: any, done: any): void;
12
+ set model(m: Partial<NumberLineModel>);
13
+ resetModelAfterConfigurationIsSet: () => void;
14
+ set configuration(c: NumberLineConfiguration);
15
+ onChange: (o: Partial<AuthorModel>) => void;
16
+ onConfigurationChanged: (config: NumberLineConfiguration) => void;
17
+ insertImage(handler: ImageHandler): void;
18
+ onDeleteImage(src: string, done: DeleteDone): void;
19
+ insertSound(handler: SoundHandler): void;
20
+ onDeleteSound(src: string, done: DeleteDone): void;
13
21
  _rerender(): void;
14
22
  connectedCallback(): void;
15
23
  disconnectedCallback(): void;
@@ -15,6 +15,11 @@ var f = (t) => {
15
15
  }
16
16
  return t;
17
17
  }, p = class e extends HTMLElement {
18
+ _root;
19
+ _model;
20
+ _modelCopy;
21
+ _configuration;
22
+ hasPlayerAsParent;
18
23
  static createDefaultModel = (e = {}) => {
19
24
  let r = t, i = e.language || "";
20
25
  return !i && r.language && r.language.enabled && r.languageChoices?.options?.length && (i = r.languageChoices.options[0].value), f({
@@ -38,7 +43,7 @@ var f = (t) => {
38
43
  ...t,
39
44
  ...e
40
45
  });
41
- this._configuration = n, this.resetModelAfterConfigurationIsSet(), n?.language?.enabled ? n?.languageChoices?.options?.length && (this._model.language = n?.languageChoices.options[0].value) : n.language.settings && this._model.language ? (this._configuration.language.enabled = !0, (!this._configuration.languageChoices.options || !this._configuration.languageChoices.options.length) && (this._configuration.languageChoices.options = []), this._configuration.languageChoices.options.find((e) => e.value === this._model.language) || this._configuration.languageChoices.options.push({
46
+ this._configuration = n, this.resetModelAfterConfigurationIsSet(), n?.language?.enabled ? n?.languageChoices?.options?.length && (this._model.language = n?.languageChoices.options[0].value) : n.language.settings && this._model.language ? (n.language.enabled = !0, (!n.languageChoices.options || !n.languageChoices.options.length) && (n.languageChoices.options = []), n.languageChoices.options.find((e) => e.value === this._model.language) || n.languageChoices.options.push({
42
47
  value: this._model.language,
43
48
  label: this._model.language
44
49
  })) : delete this._model.language, this._rerender();
@@ -1,36 +1,77 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
- export declare const toPointType: (response: any) => string;
4
- export declare class Main extends React.Component {
5
- static propTypes: {
6
- model: PropTypes.Validator<object>;
7
- configuration: PropTypes.Validator<object>;
8
- onConfigurationChanged: PropTypes.Validator<(...args: any[]) => any>;
9
- onChange: PropTypes.Validator<(...args: any[]) => any>;
10
- imageSupport: PropTypes.Validator<object>;
11
- uploadSoundSupport: PropTypes.Validator<object>;
2
+ import type { DeleteDone, ImageHandler, SoundHandler } from '@pie-element/shared-configure-events';
3
+ import type { NumberLineValidationErrors } from '../controller/index.js';
4
+ import type { NumberLineArrows, NumberLineAvailableTypes, NumberLineConfiguration, NumberLineGraph, NumberLineModel, NumberLinePointType, NumberLineRay, NumberLineResponse, NumberLineTicks } from '../types.js';
5
+ /** The model the author edits; `createDefaultModel()` fills `graph` and `correctResponse`, and the host sets `errors` from the controller's `validate()`. */
6
+ export type AuthorModel = Partial<NumberLineModel> & {
7
+ graph: NumberLineGraph;
8
+ correctResponse: NumberLineResponse[];
9
+ /** `rationale` is read, but `validate()` never sets it */
10
+ errors?: NumberLineValidationErrors & {
11
+ rationale?: string;
12
12
  };
13
- constructor(props: any);
13
+ };
14
+ type MediaSupport<Handler> = {
15
+ add: (handler: Handler) => void;
16
+ delete: (src: string, done: DeleteDone) => void;
17
+ };
18
+ export type MainProps = {
19
+ model: AuthorModel;
20
+ configuration: NumberLineConfiguration;
21
+ onConfigurationChanged: (configuration: NumberLineConfiguration) => void;
22
+ onChange: (model: Partial<AuthorModel>) => void;
23
+ imageSupport: MediaSupport<ImageHandler>;
24
+ uploadSoundSupport: MediaSupport<SoundHandler>;
25
+ };
26
+ type DialogState = {
27
+ open: boolean;
28
+ text?: string;
29
+ };
30
+ type State = {
31
+ dialog: DialogState;
32
+ /** `indices` are the correct responses the graph change would drop; `graph` is the graph before it */
33
+ correctAnswerDialog: DialogState & {
34
+ indices?: number[];
35
+ graph?: NumberLineGraph;
36
+ };
37
+ };
38
+ /** A response in the delivery graph's format: a line's `position` holds both ends */
39
+ type GraphElement = {
40
+ type: NumberLineResponse['type'];
41
+ position: number | {
42
+ left: number;
43
+ right: number;
44
+ };
45
+ pointType?: NumberLinePointType;
46
+ direction?: NumberLineRay['direction'];
47
+ leftPoint?: NumberLinePointType;
48
+ rightPoint?: NumberLinePointType;
49
+ };
50
+ export declare const toPointType: (response: NumberLineResponse) => string;
51
+ export declare class Main extends React.Component<MainProps, State> {
52
+ constructor(props: MainProps);
14
53
  componentDidMount(): void;
15
- graphChange: any;
54
+ graphChange: (obj: Partial<NumberLineGraph>) => void;
16
55
  changeSize: ({ width, height }: {
17
- width: any;
18
- height: any;
19
- }) => any;
20
- getAdjustedHeight: any;
21
- changeMaxNoOfPoints: any;
22
- changeGraphTitle: (title: any) => any;
23
- changeTicks: any;
24
- reloadTicksData: any;
25
- updateMajorValue: any;
26
- changeArrows: (arrows: any) => any;
27
- setDefaults: any;
28
- moveCorrectResponse: any;
29
- availableTypesChange: any;
30
- deleteCorrectResponse: any;
31
- addCorrectResponse: any;
32
- clearCorrectResponse: any;
33
- undoCorrectResponse: any;
56
+ width: number;
57
+ height?: number;
58
+ }) => void;
59
+ getAdjustedHeight: (availableTypes: NumberLineAvailableTypes | undefined, maxNumberOfPoints: number | undefined) => number;
60
+ changeMaxNoOfPoints: (_event: unknown, maxNumberOfPoints: number) => void;
61
+ changeGraphTitle: (title: string) => void;
62
+ changeTicks: (object: {
63
+ ticks: NumberLineTicks;
64
+ }) => void;
65
+ reloadTicksData: (graph: NumberLineGraph) => NumberLineGraph;
66
+ updateMajorValue: (graph: NumberLineGraph) => NumberLineGraph;
67
+ changeArrows: (arrows: NumberLineArrows) => void;
68
+ setDefaults: () => void;
69
+ moveCorrectResponse: (index: number, el: GraphElement, position: GraphElement["position"]) => void;
70
+ availableTypesChange: (availableTypes: NumberLineAvailableTypes) => void;
71
+ deleteCorrectResponse: (indices: number[]) => void;
72
+ addCorrectResponse: (data: GraphElement) => void;
73
+ clearCorrectResponse: () => void;
74
+ undoCorrectResponse: () => void;
34
75
  render(): React.JSX.Element;
35
76
  }
36
77
  export default Main;