@pie-element/matrix 4.1.2-next.2 → 4.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 (117) hide show
  1. package/CHANGELOG.json +1 -0
  2. package/CHANGELOG.md +1415 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +59 -0
  5. package/configure/CHANGELOG.json +1 -0
  6. package/configure/CHANGELOG.md +1341 -0
  7. package/configure/lib/HeaderCommon.js +28 -0
  8. package/configure/lib/HeaderCommon.js.map +1 -0
  9. package/configure/lib/Main.js +179 -0
  10. package/configure/lib/Main.js.map +1 -0
  11. package/configure/lib/MatrixColumnsSizeHeaderInput.js +56 -0
  12. package/configure/lib/MatrixColumnsSizeHeaderInput.js.map +1 -0
  13. package/configure/lib/MatrixLabelEditableButton.js +224 -0
  14. package/configure/lib/MatrixLabelEditableButton.js.map +1 -0
  15. package/configure/lib/MatrixLabelTypeHeaderInput.js +98 -0
  16. package/configure/lib/MatrixLabelTypeHeaderInput.js.map +1 -0
  17. package/configure/lib/MatrixRowsSizeHeaderInput.js +56 -0
  18. package/configure/lib/MatrixRowsSizeHeaderInput.js.map +1 -0
  19. package/configure/lib/MatrixValues.js +217 -0
  20. package/configure/lib/MatrixValues.js.map +1 -0
  21. package/configure/lib/NumberInput.js +77 -0
  22. package/configure/lib/NumberInput.js.map +1 -0
  23. package/configure/lib/columnLabelsGenerator.js +49 -0
  24. package/configure/lib/columnLabelsGenerator.js.map +1 -0
  25. package/configure/lib/defaults.js +86 -0
  26. package/configure/lib/defaults.js.map +1 -0
  27. package/configure/lib/index.js +98 -0
  28. package/configure/lib/index.js.map +1 -0
  29. package/configure/lib/isNumeric.js +11 -0
  30. package/configure/lib/isNumeric.js.map +1 -0
  31. package/configure/lib/matrixEntities.js +16 -0
  32. package/configure/lib/matrixEntities.js.map +1 -0
  33. package/configure/package.json +28 -0
  34. package/controller/CHANGELOG.json +1 -0
  35. package/controller/CHANGELOG.md +88 -0
  36. package/controller/lib/defaults.js +17 -0
  37. package/controller/lib/defaults.js.map +1 -0
  38. package/controller/lib/index.js +96 -0
  39. package/controller/lib/index.js.map +1 -0
  40. package/controller/package.json +17 -0
  41. package/docs/config-schema.json +1475 -0
  42. package/docs/config-schema.json.md +1093 -0
  43. package/docs/demo/config.js +8 -0
  44. package/docs/demo/generate.js +9 -0
  45. package/docs/demo/index.html +1 -0
  46. package/docs/demo/session.js +6 -0
  47. package/docs/pie-schema.json +1 -0
  48. package/docs/pie-schema.json.md +1 -0
  49. package/lib/ChoiceInput.js +59 -0
  50. package/lib/ChoiceInput.js.map +1 -0
  51. package/lib/Main.js +42 -0
  52. package/lib/Main.js.map +1 -0
  53. package/lib/Matrix.js +104 -0
  54. package/lib/Matrix.js.map +1 -0
  55. package/lib/index.js +80 -0
  56. package/lib/index.js.map +1 -0
  57. package/lib/session-updater.js +10 -0
  58. package/lib/session-updater.js.map +1 -0
  59. package/package.json +19 -83
  60. package/configure.js +0 -2
  61. package/controller.js +0 -1
  62. package/dist/author/HeaderCommon.d.ts +0 -12
  63. package/dist/author/HeaderCommon.js +0 -20
  64. package/dist/author/Main.d.ts +0 -27
  65. package/dist/author/Main.js +0 -134
  66. package/dist/author/MatrixColumnsSizeHeaderInput.d.ts +0 -21
  67. package/dist/author/MatrixColumnsSizeHeaderInput.js +0 -39
  68. package/dist/author/MatrixLabelEditableButton.d.ts +0 -27
  69. package/dist/author/MatrixLabelEditableButton.js +0 -191
  70. package/dist/author/MatrixLabelTypeHeaderInput.d.ts +0 -21
  71. package/dist/author/MatrixLabelTypeHeaderInput.js +0 -96
  72. package/dist/author/MatrixRowsSizeHeaderInput.d.ts +0 -21
  73. package/dist/author/MatrixRowsSizeHeaderInput.js +0 -39
  74. package/dist/author/MatrixValues.d.ts +0 -29
  75. package/dist/author/MatrixValues.js +0 -156
  76. package/dist/author/NumberInput.d.ts +0 -20
  77. package/dist/author/NumberInput.js +0 -61
  78. package/dist/author/columnLabelsGenerator.d.ts +0 -11
  79. package/dist/author/columnLabelsGenerator.js +0 -101
  80. package/dist/author/defaults.d.ts +0 -88
  81. package/dist/author/defaults.js +0 -56
  82. package/dist/author/index.d.ts +0 -31
  83. package/dist/author/index.js +0 -66
  84. package/dist/author/isNumeric.d.ts +0 -10
  85. package/dist/author/isNumeric.js +0 -4
  86. package/dist/author/matrixEntities.d.ts +0 -17
  87. package/dist/author/matrixEntities.js +0 -12
  88. package/dist/browser/Radio-CKUPMCLi.js +0 -10145
  89. package/dist/browser/Radio-CKUPMCLi.js.map +0 -1
  90. package/dist/browser/author/index.js +0 -39771
  91. package/dist/browser/author/index.js.map +0 -1
  92. package/dist/browser/controller/index.js +0 -60
  93. package/dist/browser/controller/index.js.map +0 -1
  94. package/dist/browser/delivery/index.js +0 -205
  95. package/dist/browser/delivery/index.js.map +0 -1
  96. package/dist/browser/dist-DHz-aOnW.js +0 -92
  97. package/dist/browser/dist-DHz-aOnW.js.map +0 -1
  98. package/dist/browser/matrix.css +0 -2
  99. package/dist/controller/defaults.d.ts +0 -19
  100. package/dist/controller/defaults.js +0 -17
  101. package/dist/controller/index.d.ts +0 -19
  102. package/dist/controller/index.js +0 -46
  103. package/dist/delivery/ChoiceInput.d.ts +0 -25
  104. package/dist/delivery/ChoiceInput.js +0 -36
  105. package/dist/delivery/Main.d.ts +0 -23
  106. package/dist/delivery/Main.js +0 -37
  107. package/dist/delivery/Matrix.d.ts +0 -29
  108. package/dist/delivery/Matrix.js +0 -81
  109. package/dist/delivery/index.d.ts +0 -22
  110. package/dist/delivery/index.js +0 -45
  111. package/dist/delivery/session-updater.d.ts +0 -9
  112. package/dist/index.d.ts +0 -1
  113. package/dist/index.iife.d.ts +0 -8
  114. package/dist/index.iife.js +0 -164
  115. package/dist/index.js +0 -2
  116. package/dist/runtime-support.d.ts +0 -12
  117. package/dist/runtime-support.js +0 -12
@@ -1,60 +0,0 @@
1
- import { i as e } from "../dist-DHz-aOnW.js";
2
- //#region src/controller/defaults.ts
3
- var t = {
4
- columnLabels: [
5
- "COLUMN 1",
6
- "COLUMN 2",
7
- "COLUMN 3"
8
- ],
9
- labelType: "agreement",
10
- matrixValues: {},
11
- prompt: "",
12
- promptEnabled: !0,
13
- rowLabels: ["STATEMENT 1", "STATEMENT 2"],
14
- teacherInstructions: "",
15
- teacherInstructionsEnabled: !0
16
- }, n = (e = {}) => new Promise((n) => n({
17
- ...t,
18
- ...e
19
- }));
20
- async function r(e, n, r) {
21
- let i = {
22
- ...t,
23
- ...e
24
- }, a = {
25
- ...i,
26
- disabled: r.mode !== "gather",
27
- mode: r.mode
28
- }, { role: o, mode: s } = r || {};
29
- return o === "instructor" && (s === "view" || s === "evaluate") ? a.teacherInstructions = i.teacherInstructionsEnabled ? i.teacherInstructions : null : a.teacherInstructions = null, a;
30
- }
31
- function i(t, n) {
32
- return new Promise((r) => {
33
- if (!n || e(n)) return r({
34
- score: 0,
35
- empty: !0
36
- });
37
- r({
38
- score: Object.keys(n.value).reduce((e, n) => e + (t.matrixValues[n] || 0), 0),
39
- empty: !1
40
- });
41
- });
42
- }
43
- var a = (e, t) => new Promise((n) => {
44
- if (t.mode !== "evaluate" && t.role === "instructor") {
45
- let { matrixValues: t } = e || [];
46
- n({
47
- id: "1",
48
- value: t
49
- });
50
- } else n(null);
51
- }), o = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), s = (e = {}, t = {}) => {
52
- let n = {};
53
- return ["teacherInstructions", "prompt"].forEach((r) => {
54
- t[r]?.required && !o(e[r]) && (n[r] = "This field is required.");
55
- }), n;
56
- };
57
- //#endregion
58
- export { a as createCorrectResponseSession, n as createDefaultModel, r as model, i as outcome, s as validate };
59
-
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/controller/defaults.ts","../../../src/controller/index.ts"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/matrix/controller/src/defaults.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nexport default {\n columnLabels: ['COLUMN 1', 'COLUMN 2', 'COLUMN 3'],\n labelType: 'agreement',\n matrixValues: {},\n prompt: '',\n promptEnabled: true,\n rowLabels: ['STATEMENT 1', 'STATEMENT 2'],\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/matrix/controller/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport defaults from './defaults.js';\nimport { isEmpty } from '@pie-element/shared-lodash';\n\nexport const createDefaultModel = (model = {}) => new Promise((resolve) => resolve({ ...defaults, ...model }));\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = { ...defaults, ...question };\n\n const out = {\n ...normalizedQuestion,\n disabled: env.mode !== 'gather',\n mode: env.mode,\n };\n\n const { role, mode } = env || {};\n\n if (role === 'instructor' && (mode === 'view' || mode === 'evaluate')) {\n out.teacherInstructions = normalizedQuestion.teacherInstructionsEnabled\n ? normalizedQuestion.teacherInstructions\n : null;\n } else {\n out.teacherInstructions = null;\n }\n\n return out;\n}\n\nexport function outcome(model, session) {\n return new Promise((resolve) => {\n if (!session || isEmpty(session)) {\n return resolve({ score: 0, empty: true });\n }\n\n const score = Object.keys(session.value).reduce((acc, key) => {\n const matrixValue = model.matrixValues[key];\n return acc + (matrixValue || 0);\n }, 0);\n\n resolve({ score, empty: false });\n });\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { matrixValues } = question || [];\n\n resolve({\n id: '1',\n value: matrixValues,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags\nconst getInnerText = (html) => (html || '').replaceAll(/<[^>]*>/g, '');\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (model = {}, config = {}) => {\n const errors = {};\n\n ['teacherInstructions', 'prompt'].forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n return errors;\n};\n"],"mappings":";;AAUA,IAAA,IAAe;CACb,cAAc;EAAC;EAAY;EAAY;CAAU;CACjD,WAAW;CACX,cAAc,CAAC;CACf,QAAQ;CACR,eAAe;CACf,WAAW,CAAC,eAAe,aAAa;CACxC,qBAAqB;CACrB,4BAA4B;AAC9B,GCNa,KAAsB,IAAQ,CAAC,MAAM,IAAI,SAAS,MAAY,EAAQ;CAAE,GAAG;CAAU,GAAG;AAAM,CAAC,CAAC;AAQ7G,eAAsB,EAAM,GAAU,GAAS,GAAK;CAClD,IAAM,IAAqB;EAAE,GAAG;EAAU,GAAG;CAAS,GAEhD,IAAM;EACV,GAAG;EACH,UAAU,EAAI,SAAS;EACvB,MAAM,EAAI;CACZ,GAEM,EAAE,SAAM,YAAS,KAAO,CAAC;CAU/B,OARI,MAAS,iBAAiB,MAAS,UAAU,MAAS,cACxD,EAAI,sBAAsB,EAAmB,6BACzC,EAAmB,sBACnB,OAEJ,EAAI,sBAAsB,MAGrB;AACT;AAEA,SAAgB,EAAQ,GAAO,GAAS;CACtC,OAAO,IAAI,SAAS,MAAY;EAC9B,IAAI,CAAC,KAAW,EAAQ,CAAO,GAC7B,OAAO,EAAQ;GAAE,OAAO;GAAG,OAAO;EAAK,CAAC;EAQ1C,EAAQ;GAAE,OALI,OAAO,KAAK,EAAQ,KAAK,EAAE,QAAQ,GAAK,MAE7C,KADa,EAAM,aAAa,MACV,IAC5B,CAEO;GAAO,OAAO;EAAM,CAAC;CACjC,CAAC;AACH;AAEA,IAAa,KAAgC,GAAU,MAC9C,IAAI,SAAS,MAAY;CAC9B,IAAI,EAAI,SAAS,cAAc,EAAI,SAAS,cAAc;EACxD,IAAM,EAAE,oBAAiB,KAAY,CAAC;EAEtC,EAAQ;GACN,IAAI;GACJ,OAAO;EACT,CAAC;CACH,OACE,EAAQ,IAAI;AAEhB,CAAC,GAOG,KAAc,OAAU,KAAQ,IAAI,QAAQ,sCAAsC,EAAE,GAE7E,KAAY,IAAQ,CAAC,GAAG,IAAS,CAAC,MAAM;CACnD,IAAM,IAAS,CAAC;CAQhB,OANA,CAAC,uBAAuB,QAAQ,EAAE,SAAS,MAAU;EACnD,AAAI,EAAO,IAAQ,YAAY,CAAC,EAAW,EAAM,EAAM,MACrD,EAAO,KAAS;CAEpB,CAAC,GAEM;AACT"}
@@ -1,205 +0,0 @@
1
- import { At as e, Ct as t, Dt as n, T as r, Tt as i, a, d as o, i as s, ot as c, t as l, y as u } from "../Radio-CKUPMCLi.js";
2
- import d from "react";
3
- import { createRoot as f } from "react-dom/client";
4
- import { jsx as p, jsxs as m } from "react/jsx-runtime";
5
- (class e extends CustomEvent {
6
- static {
7
- this.TYPE = "model-set";
8
- }
9
- constructor(t, n, r) {
10
- super(e.TYPE, {
11
- bubbles: !0,
12
- composed: !0,
13
- detail: {
14
- complete: n,
15
- component: t,
16
- hasModel: r
17
- }
18
- }), this.component = t, this.complete = n;
19
- }
20
- });
21
- //#region ../../shared/player-events/dist/index.js
22
- var h = class e extends CustomEvent {
23
- static {
24
- this.TYPE = "session-changed";
25
- }
26
- constructor(t, n) {
27
- super(e.TYPE, {
28
- bubbles: !0,
29
- composed: !0,
30
- detail: {
31
- complete: n,
32
- component: t
33
- }
34
- }), this.component = t, this.complete = n;
35
- }
36
- }, g = /* @__PURE__ */ e(i(), 1), _ = c(l)({
37
- "&.MuiRadio-root": { color: `var(--choice-input-color, ${t.text()})` },
38
- "&.MuiRadio-root.Mui-checked": { color: `var(--choice-input-selected-color, ${t.primary()})` },
39
- "&.MuiRadio-root.Mui-disabled": { color: `var(--choice-input-disabled-color, ${t.defaults.DISABLED})` }
40
- }), v = (e) => {
41
- let { disabled: t, checked: n, matrixKey: r, matrixValue: i, onChange: a } = e;
42
- return /* @__PURE__ */ p(_, {
43
- checked: n,
44
- onChange: () => {
45
- t || a({
46
- matrixValue: i,
47
- matrixKey: r
48
- });
49
- },
50
- disabled: t
51
- });
52
- };
53
- v.propTypes = {
54
- checked: g.default.bool.isRequired,
55
- disabled: g.default.bool.isRequired,
56
- matrixValue: g.default.number.isRequired,
57
- matrixKey: g.default.string.isRequired,
58
- onChange: g.default.func.isRequired
59
- }, v.defaultProps = {
60
- checked: !1,
61
- disabled: !1
62
- };
63
- //#endregion
64
- //#region src/delivery/Matrix.tsx
65
- function y(e) {
66
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
67
- }
68
- function b(e, t) {
69
- return !e || y(e) ? e : y(e.default) ? e.default : t && y(e[t]) ? e[t] : t && y(e[t]?.default) ? e[t].default : e;
70
- }
71
- var x = b(o, "PreviewPrompt") || b(T.PreviewPrompt, "PreviewPrompt"), S = b(r, "Collapsible") || b(T.Collapsible, "Collapsible"), C = a, w = C.default, T = w && typeof w == "object" ? w : C, E = s.div`
72
- color: ${t.text()};
73
- background-color: ${t.background()};
74
- font-family: Roboto, Arial, Helvetica, sans-serif;
75
- `, D = s.div`
76
- display: grid;
77
- grid-template-columns: ${(e) => e.gridTemplateColumns};
78
- grid-column-gap: 30px;
79
- grid-row-gap: 20px;
80
- margin-top: 20px;
81
- `, O = s(S)`
82
- margin-bottom: 16px;
83
- `, k = s.div`
84
- align-self: center;
85
- justify-self: center;
86
- white-space: nowrap;
87
- `, A = (e) => {
88
- let { disabled: t, prompt: n, onSessionChange: r, columnLabels: i, matrixValues: a, rowLabels: o, session: s, teacherInstructions: c } = e, l = [];
89
- for (let e = 0; e < o.length + 1; e++) for (let n = 0; n < i.length + 1; n++) {
90
- let c;
91
- if (e === 0 && n === 0) c = null;
92
- else if (e === 0) c = i[n - 1];
93
- else if (n === 0) c = o[e - 1];
94
- else {
95
- let i = `${e - 1}-${n - 1}`, o = a[i];
96
- c = /* @__PURE__ */ p(v, {
97
- matrixKey: i,
98
- matrixValue: o || 0,
99
- disabled: t,
100
- onChange: r,
101
- checked: s.value && Object.prototype.hasOwnProperty.call(s.value, i)
102
- });
103
- }
104
- l.push(c);
105
- }
106
- let u = [...i, {}].map(() => "min-content").join(" ");
107
- return /* @__PURE__ */ m(E, { children: [
108
- c && /* @__PURE__ */ p(O, {
109
- className: c,
110
- labels: {
111
- hidden: "Show Teacher Instructions",
112
- visible: "Hide Teacher Instructions"
113
- },
114
- children: /* @__PURE__ */ p(x, { prompt: c })
115
- }),
116
- /* @__PURE__ */ p(x, {
117
- className: "prompt",
118
- prompt: n
119
- }),
120
- /* @__PURE__ */ p(D, {
121
- gridTemplateColumns: u,
122
- children: l.map((e, t) => /* @__PURE__ */ p(k, { children: e }, `${t}`))
123
- })
124
- ] });
125
- };
126
- A.propTypes = {
127
- prompt: g.default.string,
128
- teacherInstructions: g.default.string,
129
- session: g.default.object,
130
- matrixValues: g.default.object,
131
- rowLabels: g.default.arrayOf(g.default.string),
132
- columnLabels: g.default.arrayOf(g.default.string),
133
- disabled: g.default.bool.isRequired,
134
- onSessionChange: g.default.func.isRequired
135
- }, A.defaultProps = { session: { value: {} } };
136
- //#endregion
137
- //#region src/delivery/Main.tsx
138
- function j(e) {
139
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
140
- }
141
- function M(e, t) {
142
- return !e || j(e) ? e : j(e.default) ? e.default : t && j(e[t]) ? e[t] : t && j(e[t]?.default) ? e[t].default : e;
143
- }
144
- var N = M(u, "PreviewLayout") || M(I.PreviewLayout, "PreviewLayout"), P = a, F = P.default, I = F && typeof F == "object" ? F : P, L = class extends d.Component {
145
- static propTypes = {
146
- model: g.default.object,
147
- session: g.default.object,
148
- onSessionChange: g.default.func
149
- };
150
- static defaultProps = {
151
- model: {},
152
- session: {}
153
- };
154
- render() {
155
- let { model: e, onSessionChange: t, session: n } = this.props, { extraCSSRules: r } = e;
156
- return /* @__PURE__ */ p(N, {
157
- extraCSSRules: r,
158
- children: /* @__PURE__ */ p(A, {
159
- ...e,
160
- session: n,
161
- onSessionChange: t
162
- })
163
- });
164
- }
165
- }, R = (e) => !e || !e.value ? !1 : !!Object.keys(e.value).length, z = class extends HTMLElement {
166
- constructor() {
167
- super(), this._root = null;
168
- }
169
- set model(e) {
170
- this._model = e, this._render();
171
- }
172
- set session(e) {
173
- this._session = e, this._render();
174
- }
175
- get session() {
176
- return this._session;
177
- }
178
- sessionChanged({ matrixKey: e, matrixValue: t }) {
179
- let n = e.split("-")[0], r = Object.keys(this._session.value || {}).reduce((e, t) => (t.startsWith(n) || (e[t] = this._session.value[t]), e), {});
180
- r[e] = t, this._session.value = r;
181
- let i = R(this._session, this._model);
182
- this.dispatchEvent(new h(this.tagName.toLowerCase(), i)), this._render();
183
- }
184
- connectedCallback() {
185
- this._render();
186
- }
187
- _render() {
188
- if (!this._model || !this._session) return;
189
- let e = d.createElement(L, {
190
- model: this._model,
191
- session: this._session,
192
- onSessionChange: this.sessionChanged.bind(this)
193
- });
194
- this._root ||= f(this), this._root.render(e), queueMicrotask(() => {
195
- n(this);
196
- });
197
- }
198
- disconnectedCallback() {
199
- this._root && this._root.unmount();
200
- }
201
- };
202
- //#endregion
203
- export { z as default, R as isComplete };
204
-
205
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../shared/player-events/dist/index.js","../../../src/delivery/ChoiceInput.tsx","../../../src/delivery/Matrix.tsx","../../../src/delivery/Main.tsx","../../../src/delivery/index.ts"],"sourcesContent":["//#region src/index.ts\nvar e = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, t = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { e as ModelSetEvent, t as SessionChangedEvent };\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/matrix/src/ChoiceInput.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { styled } from '@mui/material/styles';\n\nimport { color } from '@pie-lib/render-ui';\nimport Radio from '@mui/material/Radio';\n\nconst StyledRadio: any = styled(Radio)({\n '&.MuiRadio-root': {\n color: `var(--choice-input-color, ${color.text()})`,\n },\n '&.MuiRadio-root.Mui-checked': {\n color: `var(--choice-input-selected-color, ${color.primary()})`,\n },\n '&.MuiRadio-root.Mui-disabled': {\n color: `var(--choice-input-disabled-color, ${color.defaults.DISABLED})`,\n },\n});\n\nconst ChoiceInput = (props) => {\n const { disabled, checked, matrixKey, matrixValue, onChange } = props;\n\n const onChangeWrapper = () => {\n if (disabled) {\n return;\n }\n onChange({\n matrixValue,\n matrixKey,\n });\n };\n\n return (\n <StyledRadio\n checked={checked}\n onChange={onChangeWrapper}\n disabled={disabled}\n />\n );\n};\n\nChoiceInput.propTypes = {\n checked: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n matrixValue: PropTypes.number.isRequired,\n matrixKey: PropTypes.string.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nChoiceInput.defaultProps = {\n checked: false,\n disabled: false,\n};\n\nexport default ChoiceInput;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/matrix/src/Matrix.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport ChoiceInput from './ChoiceInput.js';\nimport { color, Collapsible as CollapsibleImport, PreviewPrompt as PreviewPromptImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nconst MatrixWrapper = styled.div`\n color: ${color.text()};\n background-color: ${color.background()};\n font-family: Roboto, Arial, Helvetica, sans-serif;\n`;\n\nconst MatrixGridWrapper = styled.div`\n display: grid;\n grid-template-columns: ${(props) => props.gridTemplateColumns};\n grid-column-gap: 30px;\n grid-row-gap: 20px;\n margin-top: 20px;\n`;\n\nconst TeacherInstructions: any = styled(Collapsible)`\n margin-bottom: 16px;\n`;\n\nconst MatrixGridItem = styled.div`\n align-self: center;\n justify-self: center;\n white-space: nowrap;\n`;\n\nconst Matrix = (props) => {\n const { disabled, prompt, onSessionChange, columnLabels, matrixValues, rowLabels, session, teacherInstructions } =\n props;\n\n const gridMatrixItems = [];\n\n for (let rowIndex = 0; rowIndex < rowLabels.length + 1; rowIndex++) {\n for (let columnIndex = 0; columnIndex < columnLabels.length + 1; columnIndex++) {\n let gridMatrixItem;\n\n if (rowIndex === 0 && columnIndex === 0) {\n gridMatrixItem = null;\n } else if (rowIndex === 0) {\n gridMatrixItem = columnLabels[columnIndex - 1];\n } else if (columnIndex === 0) {\n gridMatrixItem = rowLabels[rowIndex - 1];\n } else {\n const matrixKey = `${rowIndex - 1}-${columnIndex - 1}`;\n const matrixValue = matrixValues[matrixKey];\n\n gridMatrixItem = (\n <ChoiceInput\n matrixKey={matrixKey}\n matrixValue={matrixValue || 0}\n disabled={disabled}\n onChange={onSessionChange}\n checked={session.value && Object.prototype.hasOwnProperty.call(session.value, matrixKey)}\n />\n );\n }\n\n gridMatrixItems.push(gridMatrixItem);\n }\n }\n const gridTemplateColumns = [...columnLabels, {}].map(() => 'min-content').join(' ');\n\n return (\n <MatrixWrapper>\n {teacherInstructions && (\n <TeacherInstructions\n className={teacherInstructions}\n labels={{\n hidden: 'Show Teacher Instructions',\n visible: 'Hide Teacher Instructions',\n }}\n >\n <PreviewPrompt prompt={teacherInstructions} />\n </TeacherInstructions>\n )}\n\n <PreviewPrompt className=\"prompt\" prompt={prompt} />\n\n <MatrixGridWrapper gridTemplateColumns={gridTemplateColumns}>\n {gridMatrixItems.map((gridMatrixItem, gridMatrixIndex) => {\n return <MatrixGridItem key={`${gridMatrixIndex}`}>{gridMatrixItem}</MatrixGridItem>;\n })}\n </MatrixGridWrapper>\n </MatrixWrapper>\n );\n};\n\nMatrix.propTypes = {\n prompt: PropTypes.string,\n teacherInstructions: PropTypes.string,\n session: PropTypes.object,\n matrixValues: PropTypes.object,\n rowLabels: PropTypes.arrayOf(PropTypes.string),\n columnLabels: PropTypes.arrayOf(PropTypes.string),\n disabled: PropTypes.bool.isRequired,\n onSessionChange: PropTypes.func.isRequired,\n};\n\nMatrix.defaultProps = {\n session: {\n value: {},\n },\n};\n\nexport default Matrix;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/matrix/src/Main.jsx\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { PreviewLayout as PreviewLayoutImport } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst PreviewLayout = unwrapReactInteropSymbol(PreviewLayoutImport, 'PreviewLayout') || unwrapReactInteropSymbol(renderUi.PreviewLayout, 'PreviewLayout');\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nimport Matrix from './Matrix.js';\n\nclass Main extends React.Component {\n static propTypes = {\n model: PropTypes.object,\n session: PropTypes.object,\n onSessionChange: PropTypes.func,\n };\n\n static defaultProps = {\n model: {},\n session: {},\n };\n\n render() {\n const { model, onSessionChange, session } = this.props;\n const { extraCSSRules } = model;\n return (\n <PreviewLayout extraCSSRules={extraCSSRules}>\n <Matrix {...model} session={session} onSessionChange={onSessionChange} />\n </PreviewLayout>\n );\n }\n}\n\nexport default Main;\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/matrix/src/index.js\n * @auto-generated\n *\n * This file is automatically synced from pie-elements and converted to TypeScript.\n * Manual edits will be overwritten on next sync.\n * To make changes, edit the upstream JavaScript file and run sync again.\n */\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { SessionChangedEvent } from '@pie-element/shared-player-events';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport Main from './Main.js';\n\nexport const isComplete = (session) => {\n if (!session || !session.value) {\n return false;\n }\n return !!Object.keys(session.value).length;\n};\n\nexport default class Matrix extends HTMLElement {\n constructor() {\n super();\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n this._render();\n }\n\n set session(s) {\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n sessionChanged({ matrixKey, matrixValue }) {\n const matrixRowKey = matrixKey.split('-')[0];\n const sessionValueClone = Object.keys(this._session.value || {}).reduce((acc, key) => {\n if (!key.startsWith(matrixRowKey)) {\n acc[key] = this._session.value[key];\n }\n return acc;\n }, {});\n sessionValueClone[matrixKey] = matrixValue;\n this._session.value = sessionValueClone;\n const complete = isComplete(this._session, this._model);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), complete));\n this._render();\n }\n\n connectedCallback() {\n this._render();\n }\n\n _render() {\n if (!this._model || !this._session) {\n return;\n }\n\n const el = React.createElement(Main, {\n model: this._model,\n session: this._session,\n onSessionChange: this.sessionChanged.bind(this),\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n\n disconnectedCallback() {\n if (this._root) {\n this._root.unmount();\n }\n }\n}\n"],"mappings":"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"}
@@ -1,92 +0,0 @@
1
- //#region ../../shared/lodash/dist/index.js
2
- var e = Object.prototype;
3
- function t(e) {
4
- return typeof e == "object" && !!e;
5
- }
6
- function n(e) {
7
- return Array.isArray(e) ? e : typeof e == "number" ? [e] : e.replace(/\[(\d+)\]/g, ".$1").split(".").filter(Boolean);
8
- }
9
- function r(e) {
10
- return (e ?? []).filter(Boolean);
11
- }
12
- function i(e, t = 0, n = {}) {
13
- let r, i, a, o, s, c = n.leading === !0, l = n.trailing !== !1, u = () => {
14
- if (!a) return s;
15
- let t = a, n = o;
16
- return a = void 0, o = void 0, s = e.apply(n, t), s;
17
- }, d = () => {
18
- r && clearTimeout(r), i && clearTimeout(i), r = void 0, i = void 0, a = void 0, o = void 0;
19
- }, f = function(...e) {
20
- let d = c && !r;
21
- return a = e, o = this, d && u(), r && clearTimeout(r), r = setTimeout(() => {
22
- r = void 0, i &&= (clearTimeout(i), void 0), l ? u() : (a = void 0, o = void 0);
23
- }, t), n.maxWait !== void 0 && !i && (i = setTimeout(() => {
24
- r && clearTimeout(r), r = void 0, i = void 0, l || !c ? u() : (a = void 0, o = void 0);
25
- }, n.maxWait)), s;
26
- };
27
- return f.cancel = d, f.flush = () => (r &&= (clearTimeout(r), void 0), i &&= (clearTimeout(i), void 0), u()), f;
28
- }
29
- function a(e, ...t) {
30
- for (let n of t) if (n) for (let [t, r] of Object.entries(n)) e[t] === void 0 && (e[t] = r);
31
- return e;
32
- }
33
- function o(e) {
34
- let t = [];
35
- for (let n of e ?? []) Array.isArray(n) ? t.push(...n) : t.push(n);
36
- return t;
37
- }
38
- function s(e, t, r) {
39
- let i = e;
40
- for (let e of n(t)) {
41
- if (i == null) return r;
42
- i = i[e];
43
- }
44
- return i === void 0 ? r : i;
45
- }
46
- function c(e) {
47
- return e == null ? !0 : typeof e == "string" || Array.isArray(e) ? e.length === 0 : e instanceof Map || e instanceof Set ? e.size === 0 : t(e) ? Object.keys(e).length === 0 : !0;
48
- }
49
- function l(n, r, i) {
50
- let a = i?.(n, r);
51
- if (a !== void 0) return !!a;
52
- if (Object.is(n, r)) return !0;
53
- if (!t(n) || !t(r)) return !1;
54
- if (n instanceof Date || r instanceof Date) return n instanceof Date && r instanceof Date && n.getTime() === r.getTime();
55
- if (Array.isArray(n) || Array.isArray(r)) return Array.isArray(n) && Array.isArray(r) && n.length === r.length && n.every((e, t) => l(e, r[t], i));
56
- let o = Object.keys(n), s = Object.keys(r);
57
- return o.length === s.length && o.every((t) => e.hasOwnProperty.call(r, t) && l(n[t], r[t], i));
58
- }
59
- function u(e, t) {
60
- return l(e, t);
61
- }
62
- function d(e) {
63
- return Number.isFinite(e);
64
- }
65
- function f(e, t) {
66
- let n = { ...e ?? {} };
67
- for (let e of Array.isArray(t) ? t : [t]) delete n[e];
68
- return n;
69
- }
70
- function p(e, t, r) {
71
- let i = n(t), a = e;
72
- return i.forEach((e, t) => {
73
- if (t === i.length - 1) {
74
- a[e] = r;
75
- return;
76
- }
77
- let n = i[t + 1];
78
- a[e] ??= typeof n == "number" || /^\d+$/.test(String(n)) ? [] : {}, a = a[e];
79
- }), e;
80
- }
81
- function m(e, t) {
82
- let n = t ?? ((e) => e);
83
- return Array.from({ length: Math.max(0, e) }, (e, t) => n(t));
84
- }
85
- function h(...e) {
86
- let t = Math.max(0, ...e.map((e) => e.length));
87
- return Array.from({ length: t }, (t, n) => e.map((e) => e[n]));
88
- }
89
- //#endregion
90
- export { f as a, h as c, s as d, o as f, c as i, a as l, p as n, i as o, d as r, m as s, u as t, r as u };
91
-
92
- //# sourceMappingURL=dist-DHz-aOnW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dist-DHz-aOnW.js","names":[],"sources":["../../../../shared/lodash/dist/index.js"],"sourcesContent":["//#region src/index.ts\nvar e = Object.prototype;\nfunction t(e) {\n\treturn typeof e == \"object\" && !!e;\n}\nfunction n(e) {\n\treturn Array.isArray(e) ? e : typeof e == \"number\" ? [e] : e.replace(/\\[(\\d+)\\]/g, \".$1\").split(\".\").filter(Boolean);\n}\nfunction r(e) {\n\treturn (t) => x(t, e);\n}\nfunction i(e) {\n\treturn (n) => t(n) ? Object.entries(e).every(([e, t]) => A(n[e], t)) : !1;\n}\nfunction a(e) {\n\treturn typeof e == \"function\" ? e : typeof e == \"string\" ? r(e) : t(e) ? i(e) : ((e) => e);\n}\nfunction o(e, ...t) {\n\treturn Object.assign(e, ...t.filter(Boolean));\n}\nfunction s(e, t = 1) {\n\tif (!e?.length || t < 1) return [];\n\tlet n = [];\n\tfor (let r = 0; r < e.length; r += t) n.push(e.slice(r, r + t));\n\treturn n;\n}\nfunction c(e) {\n\treturn Array.isArray(e) ? e.slice() : t(e) ? { ...e } : e;\n}\nfunction l(e) {\n\tif (!t(e)) return e;\n\tif (e instanceof Date) return new Date(e.getTime());\n\tif (Array.isArray(e)) return e.map((e) => l(e));\n\tlet n = {};\n\tfor (let [t, r] of Object.entries(e)) n[t] = l(r);\n\treturn n;\n}\nfunction u(e) {\n\treturn (e ?? []).filter(Boolean);\n}\nfunction d(e, ...t) {\n\tlet n = [...e ?? []];\n\tfor (let e of t) Array.isArray(e) ? n.push(...e) : n.push(e);\n\treturn n;\n}\nfunction f(e, t = 0, n = {}) {\n\tlet r, i, a, o, s, c = n.leading === !0, l = n.trailing !== !1, u = () => {\n\t\tif (!a) return s;\n\t\tlet t = a, n = o;\n\t\treturn a = void 0, o = void 0, s = e.apply(n, t), s;\n\t}, d = () => {\n\t\tr && clearTimeout(r), i && clearTimeout(i), r = void 0, i = void 0, a = void 0, o = void 0;\n\t}, f = function(...e) {\n\t\tlet d = c && !r;\n\t\treturn a = e, o = this, d && u(), r && clearTimeout(r), r = setTimeout(() => {\n\t\t\tr = void 0, i &&= (clearTimeout(i), void 0), l ? u() : (a = void 0, o = void 0);\n\t\t}, t), n.maxWait !== void 0 && !i && (i = setTimeout(() => {\n\t\t\tr && clearTimeout(r), r = void 0, i = void 0, l || !c ? u() : (a = void 0, o = void 0);\n\t\t}, n.maxWait)), s;\n\t};\n\treturn f.cancel = d, f.flush = () => (r &&= (clearTimeout(r), void 0), i &&= (clearTimeout(i), void 0), u()), f;\n}\nfunction p(e, ...t) {\n\tfor (let n of t) if (n) for (let [t, r] of Object.entries(n)) e[t] === void 0 && (e[t] = r);\n\treturn e;\n}\nfunction m(e, ...t) {\n\tlet n = new Set(t.flat());\n\treturn (e ?? []).filter((e) => !n.has(e));\n}\nfunction h(e, t, n) {\n\treturn (e ?? []).filter((e) => !(t ?? []).some((t) => n(e, t)));\n}\nfunction g(e, t) {\n\tlet n = a(t), r = Array.isArray(e) ? e.entries() : Object.entries(e ?? {});\n\tfor (let [t, i] of r) if (!n(i, t, e)) return !1;\n\treturn !0;\n}\nfunction ee(e) {\n\treturn String(e).replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\").replace(/\"/g, \"&quot;\").replace(/'/g, \"&#39;\");\n}\nfunction _(e, t) {\n\tlet n = a(t), r = Array.isArray(e) ? e.entries() : Object.entries(e ?? {});\n\tfor (let [t, i] of r) if (n(i, t, e)) return i;\n}\nfunction v(e, t) {\n\tlet n = a(t);\n\tfor (let [t, r] of Object.entries(e ?? {})) if (n(r, t, e)) return t;\n}\nfunction y(e) {\n\tlet t = [];\n\tfor (let n of e ?? []) Array.isArray(n) ? t.push(...n) : t.push(n);\n\treturn t;\n}\nfunction te(e, t) {\n\treturn R(e, t).flat();\n}\nfunction b(e, t) {\n\tlet n = Array.isArray(e) ? e.entries() : Object.entries(e ?? {});\n\tfor (let [r, i] of n) t(i, r, e);\n\treturn e;\n}\nfunction x(e, t, r) {\n\tlet i = e;\n\tfor (let e of n(t)) {\n\t\tif (i == null) return r;\n\t\ti = i[e];\n\t}\n\treturn i === void 0 ? r : i;\n}\nfunction S(e, t) {\n\tlet n = a(t);\n\treturn K(e, (t, r, i) => {\n\t\tlet a = String(n(r, i, e));\n\t\treturn (t[a] ??= []).push(r), t;\n\t}, {});\n}\nfunction C(e) {\n\treturn e?.[0];\n}\nfunction w(e) {\n\treturn (e ?? []).slice(0, -1);\n}\nfunction T(e, t) {\n\treturn typeof e == \"string\" ? e.includes(String(t)) : Array.isArray(e) ? e.includes(t) : Object.values(e ?? {}).includes(t);\n}\nfunction E(...e) {\n\tlet [t, ...n] = e;\n\treturn $((t ?? []).filter((e) => n.every((t) => (t ?? []).includes(e))));\n}\nfunction D(e) {\n\treturn Array.isArray(e);\n}\nfunction O(e) {\n\treturn e == null ? !0 : typeof e == \"string\" || Array.isArray(e) ? e.length === 0 : e instanceof Map || e instanceof Set ? e.size === 0 : t(e) ? Object.keys(e).length === 0 : !0;\n}\nfunction k(n, r, i) {\n\tlet a = i?.(n, r);\n\tif (a !== void 0) return !!a;\n\tif (Object.is(n, r)) return !0;\n\tif (!t(n) || !t(r)) return !1;\n\tif (n instanceof Date || r instanceof Date) return n instanceof Date && r instanceof Date && n.getTime() === r.getTime();\n\tif (Array.isArray(n) || Array.isArray(r)) return Array.isArray(n) && Array.isArray(r) && n.length === r.length && n.every((e, t) => k(e, r[t], i));\n\tlet o = Object.keys(n), s = Object.keys(r);\n\treturn o.length === s.length && o.every((t) => e.hasOwnProperty.call(r, t) && k(n[t], r[t], i));\n}\nfunction A(e, t) {\n\treturn k(e, t);\n}\nfunction j(e, t, n) {\n\treturn k(e, t, n);\n}\nfunction M(e) {\n\treturn Number.isFinite(e);\n}\nfunction N(e) {\n\treturn typeof e == \"function\";\n}\nfunction P(e) {\n\treturn typeof e == \"number\" || e instanceof Number;\n}\nfunction F(e) {\n\treturn typeof e == \"object\" && !!e || typeof e == \"function\";\n}\nfunction I(e) {\n\treturn typeof e == \"string\" || e instanceof String;\n}\nfunction L(e) {\n\treturn e === void 0;\n}\nfunction R(e, t) {\n\tlet n = a(t), r = Array.isArray(e) ? e.entries() : Object.entries(e ?? {}), i = [];\n\tfor (let [t, a] of r) i.push(n(a, t, e));\n\treturn i;\n}\nfunction z(e) {\n\treturn e?.length ? Math.max(...e) : void 0;\n}\nfunction B(e, ...n) {\n\tfor (let r of n) if (r) for (let [n, i] of Object.entries(r)) t(i) && !Array.isArray(i) && t(e[n]) ? B(e[n], i) : e[n] = l(i);\n\treturn e;\n}\nfunction V(e, t) {\n\tlet n = { ...e ?? {} };\n\tfor (let e of Array.isArray(t) ? t : [t]) delete n[e];\n\treturn n;\n}\nfunction H(e, t) {\n\tlet n = a(t), r = {};\n\tfor (let [t, i] of Object.entries(e ?? {})) n(i, t, e) || (r[t] = i);\n\treturn r;\n}\nfunction U(e, ...t) {\n\tlet n = {};\n\tfor (let r of t.flat()) e && r in e && (n[r] = e[r]);\n\treturn n;\n}\nfunction W(e, t, n = 1) {\n\tlet r = t ?? e, i = t === void 0 ? 0 : e;\n\tif (n === 0) return [];\n\tlet a = [], o = n > 0;\n\tfor (let e = i; o ? e < r : e > r; e += n) a.push(e);\n\treturn a;\n}\nfunction G(e, t, n = 1) {\n\treturn W(e, t, n).reverse();\n}\nfunction K(e, t, n) {\n\tlet r = n, i = Array.isArray(e) ? e.entries() : Object.entries(e ?? {});\n\tfor (let [n, a] of i) r = t(r, a, n, e);\n\treturn r;\n}\nfunction q(e, t) {\n\tlet n = a(t), r = [];\n\tfor (let t = e.length - 1; t >= 0; t--) n(e[t], t, e) && r.unshift(...e.splice(t, 1));\n\treturn r;\n}\nfunction J(e, t, r) {\n\tlet i = n(t), a = e;\n\treturn i.forEach((e, t) => {\n\t\tif (t === i.length - 1) {\n\t\t\ta[e] = r;\n\t\t\treturn;\n\t\t}\n\t\tlet n = i[t + 1];\n\t\ta[e] ??= typeof n == \"number\" || /^\\d+$/.test(String(n)) ? [] : {}, a = a[e];\n\t}), e;\n}\nfunction Y(e) {\n\tlet t = [...e ?? []];\n\tfor (let e = t.length - 1; e > 0; e--) {\n\t\tlet n = Math.floor(Math.random() * (e + 1));\n\t\t[t[e], t[n]] = [t[n], t[e]];\n\t}\n\treturn t;\n}\nfunction X(e) {\n\treturn (e ?? []).slice(1);\n}\nfunction Z(e, t = 1) {\n\treturn t <= 0 ? [] : (e ?? []).slice(-t);\n}\nfunction Q(e, t = 0, n = {}) {\n\treturn f(e, t, {\n\t\tleading: n.leading !== !1,\n\t\ttrailing: n.trailing !== !1,\n\t\tmaxWait: t\n\t});\n}\nfunction ne(e, t) {\n\tlet n = t ?? ((e) => e);\n\treturn Array.from({ length: Math.max(0, e) }, (e, t) => n(t));\n}\nvar re = 0;\nfunction ie(e = \"\") {\n\treturn re += 1, `${e}${re}`;\n}\nfunction $(e) {\n\treturn Array.from(new Set(e ?? []));\n}\nfunction ae(e, t) {\n\tlet n = [];\n\tfor (let r of e ?? []) n.some((e) => t(r, e)) || n.push(r);\n\treturn n;\n}\nfunction oe(...e) {\n\tlet t = Math.max(0, ...e.map((e) => e.length));\n\treturn Array.from({ length: t }, (t, n) => e.map((e) => e[n]));\n}\nvar se = {\n\tassign: o,\n\tchunk: s,\n\tclone: c,\n\tcloneDeep: l,\n\tcompact: u,\n\tconcat: d,\n\tdebounce: f,\n\tdefaults: p,\n\tdifference: m,\n\tdifferenceWith: h,\n\tevery: g,\n\tescape: ee,\n\tfind: _,\n\tfindKey: v,\n\tflatten: y,\n\tflatMap: te,\n\tforEach: b,\n\tget: x,\n\tgroupBy: S,\n\thead: C,\n\tincludes: T,\n\tinitial: w,\n\tintersection: E,\n\tisArray: D,\n\tisEmpty: O,\n\tisEqual: A,\n\tisEqualWith: j,\n\tisFinite: M,\n\tisFunction: N,\n\tisNumber: P,\n\tisObject: F,\n\tisString: I,\n\tisUndefined: L,\n\tmap: R,\n\tmax: z,\n\tmerge: B,\n\tomit: V,\n\tomitBy: H,\n\tpick: U,\n\trange: W,\n\trangeRight: G,\n\treduce: K,\n\tremove: q,\n\tset: J,\n\tshuffle: Y,\n\ttail: X,\n\ttakeRight: Z,\n\tthrottle: Q,\n\ttimes: ne,\n\tuniqueId: ie,\n\tuniq: $,\n\tuniqWith: ae,\n\tzip: oe\n};\n//#endregion\nexport { o as assign, s as chunk, c as clone, l as cloneDeep, u as compact, d as concat, f as debounce, se as default, p as defaults, m as difference, h as differenceWith, ee as escape, g as every, _ as find, v as findKey, te as flatMap, y as flatten, b as forEach, x as get, S as groupBy, C as head, T as includes, w as initial, E as intersection, D as isArray, O as isEmpty, A as isEqual, j as isEqualWith, M as isFinite, N as isFunction, P as isNumber, F as isObject, I as isString, L as isUndefined, R as map, z as max, B as merge, V as omit, H as omitBy, U as pick, W as range, G as rangeRight, K as reduce, q as remove, J as set, Y as shuffle, X as tail, Z as takeRight, Q as throttle, ne as times, $ as uniq, ae as uniqWith, ie as uniqueId, oe as zip };\n"],"mappings":"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"}