@pie-element/select-text 13.1.2-next.1 → 13.1.2

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 (82) hide show
  1. package/CHANGELOG.json +1422 -0
  2. package/CHANGELOG.md +2288 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +5 -0
  5. package/configure/CHANGELOG.json +1032 -0
  6. package/configure/CHANGELOG.md +2023 -0
  7. package/configure/lib/defaultConfiguration.js +177 -0
  8. package/configure/lib/defaultConfiguration.js.map +1 -0
  9. package/configure/lib/design.js +406 -0
  10. package/configure/lib/design.js.map +1 -0
  11. package/configure/lib/index.js +128 -0
  12. package/configure/lib/index.js.map +1 -0
  13. package/configure/lib/utils.js +92 -0
  14. package/configure/lib/utils.js.map +1 -0
  15. package/configure/package.json +25 -0
  16. package/controller/CHANGELOG.json +442 -0
  17. package/controller/CHANGELOG.md +1468 -0
  18. package/controller/lib/defaults.js +25 -0
  19. package/controller/lib/defaults.js.map +1 -0
  20. package/controller/lib/index.js +258 -0
  21. package/controller/lib/index.js.map +1 -0
  22. package/controller/package.json +16 -0
  23. package/docs/config-schema.json +2135 -0
  24. package/docs/config-schema.json.md +1579 -0
  25. package/docs/demo/config.js +8 -0
  26. package/docs/demo/generate.js +823 -0
  27. package/docs/demo/index.html +1 -0
  28. package/docs/demo/session.js +24 -0
  29. package/docs/pie-schema.json +1248 -0
  30. package/docs/pie-schema.json.md +711 -0
  31. package/lib/index.js +103 -0
  32. package/lib/index.js.map +1 -0
  33. package/lib/main.js +191 -0
  34. package/lib/main.js.map +1 -0
  35. package/lib/print.js +87 -0
  36. package/lib/print.js.map +1 -0
  37. package/lib/utils.js +80 -0
  38. package/lib/utils.js.map +1 -0
  39. package/package.json +21 -91
  40. package/configure.js +0 -2
  41. package/controller.js +0 -1
  42. package/dist/author/defaultConfiguration.d.ts +0 -179
  43. package/dist/author/defaultConfiguration.js +0 -141
  44. package/dist/author/design.d.ts +0 -38
  45. package/dist/author/design.js +0 -263
  46. package/dist/author/index.d.ts +0 -27
  47. package/dist/author/index.js +0 -74
  48. package/dist/author/utils.d.ts +0 -10
  49. package/dist/author/utils.js +0 -50
  50. package/dist/browser/Check-BEV41wEJ.js +0 -9254
  51. package/dist/browser/Check-BEV41wEJ.js.map +0 -1
  52. package/dist/browser/author/index.js +0 -41129
  53. package/dist/browser/author/index.js.map +0 -1
  54. package/dist/browser/controller/index.js +0 -194
  55. package/dist/browser/controller/index.js.map +0 -1
  56. package/dist/browser/delivery/index.js +0 -89
  57. package/dist/browser/delivery/index.js.map +0 -1
  58. package/dist/browser/dist-SG92p6xV.js +0 -319
  59. package/dist/browser/dist-SG92p6xV.js.map +0 -1
  60. package/dist/browser/main-gsFiosO8.js +0 -4804
  61. package/dist/browser/main-gsFiosO8.js.map +0 -1
  62. package/dist/browser/print/index.js +0 -41
  63. package/dist/browser/print/index.js.map +0 -1
  64. package/dist/browser/select-text.css +0 -2
  65. package/dist/controller/defaults.d.ts +0 -27
  66. package/dist/controller/defaults.js +0 -21
  67. package/dist/controller/index.d.ts +0 -25
  68. package/dist/controller/index.js +0 -121
  69. package/dist/delivery/index.d.ts +0 -19
  70. package/dist/delivery/index.js +0 -60
  71. package/dist/delivery/main.d.ts +0 -34
  72. package/dist/delivery/main.js +0 -136
  73. package/dist/delivery/utils.d.ts +0 -10
  74. package/dist/delivery/utils.js +0 -47
  75. package/dist/index.d.ts +0 -1
  76. package/dist/index.iife.d.ts +0 -8
  77. package/dist/index.iife.js +0 -167
  78. package/dist/index.js +0 -2
  79. package/dist/print/index.d.ts +0 -15
  80. package/dist/print/index.js +0 -41
  81. package/dist/runtime-support.d.ts +0 -12
  82. package/dist/runtime-support.js +0 -12
@@ -1,263 +0,0 @@
1
- import { generateValidationMessage as e } from "./utils.js";
2
- import t from "react";
3
- import n from "prop-types";
4
- import { Tokenizer as r } from "@pie-lib/text-select";
5
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
6
- import { styled as o } from "@mui/material/styles";
7
- import s from "debug";
8
- import { cloneDeep as c, debounce as l } from "@pie-element/shared-lodash";
9
- import u from "@mui/material/TextField";
10
- import { FeedbackConfig as ee, InputContainer as d, NumberTextField as f, layout as p, settings as m } from "@pie-lib/config-ui";
11
- import h from "@mui/material/Chip";
12
- import te from "@mui/icons-material/Info";
13
- import g from "@pie-lib/editable-html-tip-tap";
14
- import _ from "@mui/material/Tooltip";
15
- //#region src/author/design.tsx
16
- var { Panel: ne, toggle: v, radio: y, dropdown: re } = m, b = o(d)(({ theme: e }) => ({
17
- width: "100%",
18
- paddingTop: e.spacing(2),
19
- marginBottom: e.spacing(2)
20
- })), x = o(g)({ width: "100%" }), S = o("div")(({ theme: e }) => ({
21
- fontSize: e.typography.fontSize - 2,
22
- color: e.palette.error.main,
23
- paddingTop: e.spacing(1)
24
- })), ie = o(u)({ width: "100%" }), ae = o(d)(({ theme: e }) => ({
25
- paddingRight: 0,
26
- marginRight: 0,
27
- position: "relative",
28
- "&:after": {
29
- position: "absolute",
30
- bottom: 0,
31
- left: 0,
32
- right: 0,
33
- height: "1px",
34
- content: "\"\"",
35
- backgroundColor: e.palette.primary.main
36
- },
37
- marginBottom: e.spacing(1)
38
- })), C = o(_)(({ theme: e }) => ({ "& .MuiTooltip-tooltip": {
39
- fontSize: e.typography.fontSize - 2,
40
- whiteSpace: "pre",
41
- maxWidth: "500px"
42
- } })), oe = o(r)(({ theme: e }) => ({ marginTop: e.spacing(2) })), w = o(h)(({ theme: e }) => ({
43
- marginTop: e.spacing(.5),
44
- marginRight: e.spacing(2)
45
- })), se = o("div")(({ theme: e }) => ({
46
- display: "flex",
47
- alignItems: "center",
48
- flexWrap: "wrap",
49
- marginBottom: e.spacing(2.5)
50
- })), ce = o(f)(({ theme: e }) => ({
51
- width: "180px",
52
- margin: `${e.spacing(.5)} auto 0`
53
- })), le = s("@pie-element:select-text:configure"), T = class extends t.Component {
54
- static propTypes = {
55
- model: n.object.isRequired,
56
- configuration: n.object.isRequired,
57
- onModelChanged: n.func.isRequired,
58
- onConfigurationChanged: n.func.isRequired,
59
- imageSupport: n.shape({
60
- add: n.func.isRequired,
61
- delete: n.func.isRequired
62
- }),
63
- uploadSoundSupport: n.object
64
- };
65
- static defaultProps = {};
66
- constructor(e) {
67
- super(e);
68
- let { model: t } = this.props;
69
- this.state = { text: t && t.text || "" };
70
- }
71
- UNSAFE_componentWillReceiveProps(e) {
72
- let { model: t } = e;
73
- t && t.text && this.setState({ text: t.text });
74
- }
75
- updateText = l((e) => {
76
- this.apply((t) => {
77
- t.text = e, t.tokens = [];
78
- });
79
- }, 200);
80
- changeText = (e) => this.updateText(e.target.value);
81
- changeTokens = (e, t) => {
82
- this.apply((n) => {
83
- n.tokens = e, n.mode = t;
84
- let r = e.filter((e) => e.correct).length, i = isFinite(n.maxSelections) ? n.maxSelections : 0;
85
- n.maxSelections = Math.max(i, r);
86
- });
87
- };
88
- changeMaxSelections = (e, t) => {
89
- this.apply((e) => e.maxSelections = t);
90
- };
91
- apply = (e) => {
92
- let { onModelChanged: t, model: n } = this.props, r = c(n);
93
- e(r), t(r);
94
- };
95
- changeFeedback = (e) => {
96
- this.apply((t) => t.feedback = e);
97
- };
98
- changePartialScoring = (e) => {
99
- let { onModelChanged: t, model: n } = this.props, r = c(n);
100
- r.partialScoring = e, t(r);
101
- };
102
- onPromptChanged = (e) => {
103
- let { onModelChanged: t, model: n } = this.props, r = c(n);
104
- r.prompt = e, t(r);
105
- };
106
- onTeacherInstructionsChanged = (e) => {
107
- let { onModelChanged: t, model: n } = this.props, r = c(n);
108
- r.teacherInstructions = e, t(r);
109
- };
110
- onRationaleChanged = (e) => {
111
- let { onModelChanged: t, model: n } = this.props;
112
- t({
113
- ...n,
114
- rationale: e
115
- });
116
- };
117
- render() {
118
- let { text: t } = this.state, { configuration: n, imageSupport: r, model: o, onConfigurationChanged: s, onModelChanged: c, uploadSoundSupport: l } = this.props, { baseInputConfiguration: u = {}, correctAnswer: d = {}, contentDimensions: f = {}, feedback: m = {}, highlightChoices: h = {}, mode: g = {}, partialScoring: _ = {}, prompt: T = {}, rationale: E = {}, selectionCount: D = {}, selections: O = {}, settingsPanelDisabled: ue, scoringType: k = {}, spellCheck: A = {}, studentInstructions: j = {}, teacherInstructions: M = {}, text: N = {}, tokens: P = {}, maxImageWidth: F = {}, maxImageHeight: I = {}, withRubric: L = {}, mathMlOptions: R = {}, language: z = {}, languageChoices: B = {} } = n || {}, { errors: V, extraCSSRules: H, feedbackEnabled: de, promptEnabled: fe, rationaleEnabled: pe, spellCheckEnabled: U, teacherInstructionsEnabled: me, toolbarEditorPosition: he } = o || {}, { prompt: W, rationale: G, selectionsError: K, teacherInstructions: q, tokensError: J } = V || {}, ge = e(n), Y = F && F.prompt, X = I && I.prompt, { tokens: Z } = o;
119
- Z ||= [];
120
- let Q = { position: he === "top" ? "top" : "bottom" };
121
- le("[render] maxSelections:", o.maxSelections);
122
- let _e = {
123
- partialScoring: _.settings && v(_.label),
124
- highlightChoices: h.settings && v(h.label),
125
- feedbackEnabled: m.settings && v(m.label),
126
- "language.enabled": z.settings && v(z.label, !0),
127
- language: z.settings && z.enabled && re(B.label, B.options)
128
- }, ve = {
129
- teacherInstructionsEnabled: M.settings && v(M.label),
130
- studentInstructionsEnabled: j.settings && v(j.label),
131
- promptEnabled: T.settings && v(T.label),
132
- rationaleEnabled: E.settings && v(E.label),
133
- spellCheckEnabled: A.settings && v(A.label),
134
- scoringType: k.settings && y(k.label, ["auto", "rubric"]),
135
- rubricEnabled: L?.settings && v(L?.label)
136
- }, $ = (e = {}) => ({
137
- ...u,
138
- ...e
139
- });
140
- return /* @__PURE__ */ a(p.ConfigLayout, {
141
- extraCSSRules: H,
142
- dimensions: f,
143
- hideSettings: ue,
144
- settings: /* @__PURE__ */ i(ne, {
145
- model: o,
146
- configuration: n,
147
- onChangeModel: (e) => c(e),
148
- onChangeConfiguration: s,
149
- groups: {
150
- Settings: _e,
151
- Properties: ve
152
- }
153
- }),
154
- children: [
155
- me && /* @__PURE__ */ a(b, {
156
- label: M.label,
157
- children: [/* @__PURE__ */ i(x, {
158
- markup: o.teacherInstructions || "",
159
- onChange: this.onTeacherInstructionsChanged,
160
- imageSupport: r,
161
- nonEmpty: !1,
162
- error: q,
163
- toolbarOpts: Q,
164
- pluginProps: $(n?.teacherInstructions?.inputConfiguration),
165
- spellCheck: U,
166
- maxImageWidth: F && F.teacherInstructions || Y,
167
- maxImageHeight: I && I.teacherInstructions || X,
168
- uploadSoundSupport: l,
169
- languageCharactersProps: [{ language: "spanish" }, { language: "special" }],
170
- mathMlOptions: R
171
- }), q && /* @__PURE__ */ i(S, { children: q })]
172
- }),
173
- fe && /* @__PURE__ */ a(b, {
174
- label: T.label || "",
175
- children: [/* @__PURE__ */ i(x, {
176
- markup: o.prompt,
177
- onChange: this.onPromptChanged,
178
- imageSupport: r,
179
- error: W,
180
- toolbarOpts: Q,
181
- pluginProps: $(n?.prompt?.inputConfiguration),
182
- spellCheck: U,
183
- maxImageWidth: Y,
184
- maxImageHeight: X,
185
- uploadSoundSupport: l,
186
- languageCharactersProps: [{ language: "spanish" }, { language: "special" }],
187
- mathMlOptions: R
188
- }), W && /* @__PURE__ */ i(S, { children: W })]
189
- }),
190
- N.settings && /* @__PURE__ */ i(b, {
191
- label: N.label || "",
192
- children: /* @__PURE__ */ i(ie, {
193
- variant: "standard",
194
- multiline: !0,
195
- defaultValue: t,
196
- onChange: this.changeText,
197
- spellCheck: U
198
- })
199
- }),
200
- P.settings && /* @__PURE__ */ a(ae, {
201
- label: P.label || "",
202
- children: [/* @__PURE__ */ i(C, {
203
- disableFocusListener: !0,
204
- disableTouchListener: !0,
205
- placement: "right",
206
- title: ge,
207
- children: /* @__PURE__ */ i(te, {
208
- fontSize: "small",
209
- color: "primary",
210
- style: {
211
- position: "absolute",
212
- left: "48px",
213
- top: "-3px"
214
- }
215
- })
216
- }), /* @__PURE__ */ i(oe, {
217
- text: o.text,
218
- tokens: Z,
219
- onChange: this.changeTokens
220
- })]
221
- }),
222
- J && /* @__PURE__ */ i(S, { children: J }),
223
- K && /* @__PURE__ */ i(S, { children: K }),
224
- /* @__PURE__ */ a(se, { children: [
225
- g.settings && /* @__PURE__ */ i(w, { label: `${g.label}: ${o.mode ? o.mode : "None"}` }),
226
- O.settings && /* @__PURE__ */ i(w, { label: `${O.label}: ${Z.length}` }),
227
- d.settings && /* @__PURE__ */ i(w, { label: `${d.label}: ${Z.filter((e) => e.correct).length}` }),
228
- D.settings && /* @__PURE__ */ i(ce, {
229
- min: Z.filter((e) => e.correct).length || 0,
230
- label: `${D.label} (0:any)`,
231
- max: Z.length,
232
- value: o.maxSelections,
233
- onChange: this.changeMaxSelections
234
- })
235
- ] }),
236
- pe && /* @__PURE__ */ a(b, {
237
- label: E.label || "",
238
- children: [/* @__PURE__ */ i(x, {
239
- markup: o.rationale || "",
240
- onChange: this.onRationaleChanged,
241
- imageSupport: r,
242
- error: G,
243
- toolbarOpts: Q,
244
- pluginProps: $(n?.rationale?.inputConfiguration),
245
- spellCheck: U,
246
- maxImageWidth: F && F.rationale || Y,
247
- maxImageHeight: I && I.rationale || X,
248
- uploadSoundSupport: l,
249
- languageCharactersProps: [{ language: "spanish" }, { language: "special" }],
250
- mathMlOptions: R
251
- }), G && /* @__PURE__ */ i(S, { children: G })]
252
- }),
253
- de && /* @__PURE__ */ i(ee, {
254
- feedback: o.feedback,
255
- onChange: this.changeFeedback,
256
- toolbarOpts: Q
257
- })
258
- ]
259
- });
260
- }
261
- };
262
- //#endregion
263
- export { T as default };
@@ -1,27 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/select-text/configure/src/index.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- export default class SelectTextConfigure extends HTMLElement {
10
- static createDefaultModel: (model?: {}) => any;
11
- constructor();
12
- set model(m: any);
13
- set configuration(c: any);
14
- connectedCallback(): void;
15
- modelChanged(m: any): void;
16
- onConfigurationChanged(c: any): void;
17
- /**
18
- *
19
- * @param {done, progress, file} handler
20
- */
21
- insertImage(handler: any): void;
22
- onDeleteImage(src: any, done: any): void;
23
- insertSound(handler: any): void;
24
- onDeleteSound(src: any, done: any): void;
25
- render(): void;
26
- disconnectedCallback(): void;
27
- }
@@ -1,74 +0,0 @@
1
- import { generateModel as e } from "./utils.js";
2
- import t from "./design.js";
3
- import n from "./defaultConfiguration.js";
4
- import r from "react";
5
- import { createRoot as i } from "react-dom/client";
6
- import { DeleteImageEvent as a, DeleteSoundEvent as o, InsertImageEvent as s, InsertSoundEvent as c, ModelUpdatedEvent as l } from "@pie-element/shared-configure-events";
7
- //#region src/author/index.ts
8
- var u = class u extends HTMLElement {
9
- static createDefaultModel = (t = {}) => e({
10
- ...n.model,
11
- ...t
12
- });
13
- constructor() {
14
- super(), this._root = null, this._model = u.createDefaultModel(), this._configuration = n.configuration;
15
- }
16
- set model(e) {
17
- this._model = u.createDefaultModel(e), this.render();
18
- }
19
- set configuration(e) {
20
- let t = {
21
- ...n.configuration,
22
- ...e
23
- };
24
- this._configuration = t, t?.language?.enabled ? t?.languageChoices?.options?.length && (this._model.language = t?.languageChoices.options[0].value) : t.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({
25
- value: this._model.language,
26
- label: this._model.language
27
- })) : delete this._model.language, this.render();
28
- }
29
- connectedCallback() {
30
- this.render();
31
- }
32
- modelChanged(e) {
33
- this._model = e, this.dispatchEvent(new l(this._model), !0), this.render();
34
- }
35
- onConfigurationChanged(e) {
36
- this._configuration = e, this._model && this.dispatchEvent(new l(this._model), !1), this.render();
37
- }
38
- insertImage(e) {
39
- this.dispatchEvent(new s(e));
40
- }
41
- onDeleteImage(e, t) {
42
- this.dispatchEvent(new a(e, t));
43
- }
44
- insertSound(e) {
45
- this.dispatchEvent(new c(e));
46
- }
47
- onDeleteSound(e, t) {
48
- this.dispatchEvent(new o(e, t));
49
- }
50
- render() {
51
- if (this._model) {
52
- let e = r.createElement(t, {
53
- model: this._model,
54
- configuration: this._configuration,
55
- onModelChanged: this.modelChanged.bind(this),
56
- onConfigurationChanged: this.onConfigurationChanged.bind(this),
57
- imageSupport: {
58
- add: this.insertImage.bind(this),
59
- delete: this.onDeleteImage.bind(this)
60
- },
61
- uploadSoundSupport: {
62
- add: this.insertSound.bind(this),
63
- delete: this.onDeleteSound.bind(this)
64
- }
65
- });
66
- this._root ||= i(this), this._root.render(e);
67
- }
68
- }
69
- disconnectedCallback() {
70
- this._root && this._root.unmount();
71
- }
72
- };
73
- //#endregion
74
- export { u as default };
@@ -1,10 +0,0 @@
1
- /**
2
- * @synced-from pie-elements/packages/select-text/configure/src/utils.js
3
- * @auto-generated
4
- *
5
- * This file is automatically synced from pie-elements and converted to TypeScript.
6
- * Manual edits will be overwritten on next sync.
7
- * To make changes, edit the upstream JavaScript file and run sync again.
8
- */
9
- export declare const generateModel: (model: any) => any;
10
- export declare const generateValidationMessage: (config: any) => string;
@@ -1,50 +0,0 @@
1
- //#region src/author/utils.tsx
2
- var e = function() {
3
- var e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", t = document.createElement("div");
4
- return t.innerHTML = e.trim(), t;
5
- }, t = function(e, t) {
6
- return t ? e.innerHTML : `${e.innerHTML}
7
-
8
- `;
9
- }, n = function(e) {
10
- var n = e.querySelectorAll("div[separator=true]"), r = "";
11
- return n.forEach(function(e, i) {
12
- r += t(e, i === n.length - 1);
13
- }), r || null;
14
- }, r = function(t) {
15
- var r = e(t), i = document.createElement("div");
16
- return i.innerHTML = `<div separator='true'>${r.innerHTML}</div>`, r = i, Array.from(r.querySelectorAll("*")).length === 0 ? t : n(r);
17
- }, i = (e) => {
18
- if (!e) return e;
19
- let t = r(e.text || ""), n = (e.tokens || []).reduce((n, i = {}) => {
20
- let a = r((e.text || "").slice(i.start, i.end));
21
- if (!a) return [...n, i];
22
- let o = (e) => {
23
- let n = e;
24
- for (; n >= 0;) {
25
- let e = t.slice(n).indexOf(a);
26
- if (e >= 0) return e + n;
27
- n--;
28
- }
29
- return 0;
30
- }, s = n[n.length - 1], c = o(s ? s.end : i.start), l = c + a.length;
31
- return [...n, {
32
- ...i,
33
- text: a,
34
- start: c,
35
- end: l,
36
- oldStart: i.start,
37
- oldEnd: i.end
38
- }];
39
- }, []);
40
- return {
41
- ...e,
42
- tokens: n,
43
- text: t
44
- };
45
- }, a = (e) => {
46
- let { minTokens: t, maxTokens: n, maxSelections: r } = e, i = `\nThere should be at least ${t} ` + (n ? `and at most ${n} ` : "") + "tokens defined.", a = "\nThere should be at least 1 " + (r ? `and at most ${r} ` : "") + "token" + (r ? "s" : "") + " selected.";
47
- return "Validation requirements:" + i + a;
48
- };
49
- //#endregion
50
- export { i as generateModel, a as generateValidationMessage };