@pie-element/categorize 13.2.0-beta.0 → 13.2.0-next.9

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 (202) hide show
  1. package/configure.js +2 -0
  2. package/controller.js +1 -0
  3. package/dist/author/defaults.d.ts +222 -0
  4. package/dist/author/defaults.js +168 -0
  5. package/dist/author/design/builder.d.ts +10 -0
  6. package/dist/author/design/builder.js +24 -0
  7. package/dist/author/design/buttons.d.ts +28 -0
  8. package/dist/author/design/buttons.js +36 -0
  9. package/dist/author/design/categories/RowLabel.d.ts +23 -0
  10. package/dist/author/design/categories/RowLabel.js +47 -0
  11. package/dist/author/design/categories/alternateResponses.d.ts +31 -0
  12. package/dist/author/design/categories/alternateResponses.js +62 -0
  13. package/dist/author/design/categories/category.d.ts +44 -0
  14. package/dist/author/design/categories/category.js +98 -0
  15. package/dist/author/design/categories/choice-preview.d.ts +25 -0
  16. package/dist/author/design/categories/choice-preview.js +60 -0
  17. package/dist/author/design/categories/droppable-placeholder.d.ts +11 -0
  18. package/dist/author/design/categories/droppable-placeholder.js +71 -0
  19. package/dist/author/design/categories/index.d.ts +41 -0
  20. package/dist/author/design/categories/index.js +146 -0
  21. package/dist/author/design/choices/choice.d.ts +11 -0
  22. package/dist/author/design/choices/choice.js +129 -0
  23. package/dist/author/design/choices/config.d.ts +21 -0
  24. package/dist/author/design/choices/config.js +33 -0
  25. package/dist/author/design/choices/index.d.ts +41 -0
  26. package/dist/author/design/choices/index.js +110 -0
  27. package/dist/author/design/header.d.ts +24 -0
  28. package/dist/author/design/header.js +49 -0
  29. package/dist/author/design/index.d.ts +52 -0
  30. package/dist/author/design/index.js +427 -0
  31. package/dist/author/design/input-header.d.ts +39 -0
  32. package/dist/author/design/input-header.js +69 -0
  33. package/dist/author/design/utils.d.ts +9 -0
  34. package/dist/author/design/utils.js +7 -0
  35. package/dist/author/index.d.ts +50 -0
  36. package/dist/author/index.js +87 -0
  37. package/dist/author/main.d.ts +23 -0
  38. package/dist/author/main.js +30 -0
  39. package/dist/author/utils.d.ts +16 -0
  40. package/dist/author/utils.js +17 -0
  41. package/dist/browser/alert-dialog-BL9K_lnF.js +11511 -0
  42. package/dist/browser/alert-dialog-BL9K_lnF.js.map +1 -0
  43. package/dist/browser/author/index.js +43156 -0
  44. package/dist/browser/author/index.js.map +1 -0
  45. package/dist/browser/categorize.css +2 -0
  46. package/dist/browser/controller/index.js +372 -0
  47. package/dist/browser/controller/index.js.map +1 -0
  48. package/dist/browser/delivery/index.js +1205 -0
  49. package/dist/browser/delivery/index.js.map +1 -0
  50. package/dist/browser/dist-C11U2GIc.js +1871 -0
  51. package/dist/browser/dist-C11U2GIc.js.map +1 -0
  52. package/dist/browser/rolldown-runtime-CWhphoD1.js +32 -0
  53. package/dist/controller/defaults.d.ts +33 -0
  54. package/dist/controller/defaults.js +27 -0
  55. package/dist/controller/index.d.ts +62 -0
  56. package/dist/controller/index.js +168 -0
  57. package/dist/controller/utils.d.ts +20 -0
  58. package/dist/controller/utils.js +35 -0
  59. package/dist/delivery/categorize/__tests__/categories.test.d.ts +1 -0
  60. package/dist/delivery/categorize/__tests__/category.test.d.ts +1 -0
  61. package/dist/delivery/categorize/__tests__/choice.test.d.ts +1 -0
  62. package/dist/delivery/categorize/__tests__/choices.test.d.ts +1 -0
  63. package/dist/delivery/categorize/__tests__/droppable-placeholder.test.d.ts +1 -0
  64. package/dist/delivery/categorize/__tests__/grid-content.test.d.ts +1 -0
  65. package/dist/delivery/categorize/__tests__/index.test.d.ts +1 -0
  66. package/dist/delivery/categorize/__tests__/keyboard-coordinates.test.d.ts +1 -0
  67. package/dist/delivery/categorize/categories.d.ts +37 -0
  68. package/dist/delivery/categorize/categories.js +72 -0
  69. package/dist/delivery/categorize/category.d.ts +31 -0
  70. package/dist/delivery/categorize/category.js +55 -0
  71. package/dist/delivery/categorize/choice.d.ts +28 -0
  72. package/dist/delivery/categorize/choice.js +114 -0
  73. package/dist/delivery/categorize/choices.d.ts +42 -0
  74. package/dist/delivery/categorize/choices.js +58 -0
  75. package/dist/delivery/categorize/droppable-placeholder.d.ts +36 -0
  76. package/dist/delivery/categorize/droppable-placeholder.js +77 -0
  77. package/dist/delivery/categorize/grid-content.d.ts +25 -0
  78. package/dist/delivery/categorize/grid-content.js +39 -0
  79. package/dist/delivery/categorize/index.d.ts +70 -0
  80. package/dist/delivery/categorize/index.js +317 -0
  81. package/dist/delivery/categorize/keyboard-coordinates.d.ts +22 -0
  82. package/dist/delivery/categorize/keyboard-coordinates.js +49 -0
  83. package/dist/delivery/index.d.ts +27 -0
  84. package/dist/delivery/index.js +152 -0
  85. package/dist/index.d.ts +1 -0
  86. package/dist/index.iife.d.ts +8 -0
  87. package/dist/index.iife.js +152 -0
  88. package/dist/index.js +2 -0
  89. package/dist/runtime-support.d.ts +12 -0
  90. package/dist/runtime-support.js +12 -0
  91. package/package.json +97 -22
  92. package/CHANGELOG.json +0 -1637
  93. package/CHANGELOG.md +0 -2551
  94. package/LICENSE.md +0 -5
  95. package/README.md +0 -5
  96. package/configure/CHANGELOG.json +0 -1202
  97. package/configure/CHANGELOG.md +0 -2130
  98. package/configure/lib/__tests__/main.test.js +0 -100
  99. package/configure/lib/__tests__/utils.js +0 -39
  100. package/configure/lib/defaults.js +0 -220
  101. package/configure/lib/defaults.js.map +0 -1
  102. package/configure/lib/design/__tests__/builder.test.js +0 -34
  103. package/configure/lib/design/__tests__/buttons.test.js +0 -36
  104. package/configure/lib/design/__tests__/header.test.js +0 -37
  105. package/configure/lib/design/__tests__/index.test.js +0 -269
  106. package/configure/lib/design/__tests__/input-header.test.js +0 -41
  107. package/configure/lib/design/builder.js +0 -55
  108. package/configure/lib/design/builder.js.map +0 -1
  109. package/configure/lib/design/buttons.js +0 -59
  110. package/configure/lib/design/buttons.js.map +0 -1
  111. package/configure/lib/design/categories/RowLabel.js +0 -66
  112. package/configure/lib/design/categories/RowLabel.js.map +0 -1
  113. package/configure/lib/design/categories/__tests__/alternateResponses.test.js +0 -93
  114. package/configure/lib/design/categories/__tests__/category.test.js +0 -65
  115. package/configure/lib/design/categories/__tests__/choice-preview.test.js +0 -52
  116. package/configure/lib/design/categories/__tests__/droppable-placeholder.test.js +0 -63
  117. package/configure/lib/design/categories/__tests__/index.test.js +0 -91
  118. package/configure/lib/design/categories/alternateResponses.js +0 -116
  119. package/configure/lib/design/categories/alternateResponses.js.map +0 -1
  120. package/configure/lib/design/categories/category.js +0 -153
  121. package/configure/lib/design/categories/category.js.map +0 -1
  122. package/configure/lib/design/categories/choice-preview.js +0 -79
  123. package/configure/lib/design/categories/choice-preview.js.map +0 -1
  124. package/configure/lib/design/categories/droppable-placeholder.js +0 -93
  125. package/configure/lib/design/categories/droppable-placeholder.js.map +0 -1
  126. package/configure/lib/design/categories/index.js +0 -256
  127. package/configure/lib/design/categories/index.js.map +0 -1
  128. package/configure/lib/design/choices/__tests__/choice.test.js +0 -62
  129. package/configure/lib/design/choices/__tests__/config.test.js +0 -66
  130. package/configure/lib/design/choices/__tests__/index.test.js +0 -70
  131. package/configure/lib/design/choices/choice.js +0 -187
  132. package/configure/lib/design/choices/choice.js.map +0 -1
  133. package/configure/lib/design/choices/config.js +0 -58
  134. package/configure/lib/design/choices/config.js.map +0 -1
  135. package/configure/lib/design/choices/index.js +0 -197
  136. package/configure/lib/design/choices/index.js.map +0 -1
  137. package/configure/lib/design/header.js +0 -71
  138. package/configure/lib/design/header.js.map +0 -1
  139. package/configure/lib/design/index.js +0 -741
  140. package/configure/lib/design/index.js.map +0 -1
  141. package/configure/lib/design/input-header.js +0 -105
  142. package/configure/lib/design/input-header.js.map +0 -1
  143. package/configure/lib/design/utils.js +0 -12
  144. package/configure/lib/design/utils.js.map +0 -1
  145. package/configure/lib/index.js +0 -148
  146. package/configure/lib/index.js.map +0 -1
  147. package/configure/lib/main.js +0 -44
  148. package/configure/lib/main.js.map +0 -1
  149. package/configure/lib/utils.js +0 -43
  150. package/configure/lib/utils.js.map +0 -1
  151. package/configure/package.json +0 -32
  152. package/controller/CHANGELOG.json +0 -452
  153. package/controller/CHANGELOG.md +0 -1384
  154. package/controller/lib/__tests__/index.test.js +0 -526
  155. package/controller/lib/defaults.js +0 -31
  156. package/controller/lib/defaults.js.map +0 -1
  157. package/controller/lib/index.js +0 -506
  158. package/controller/lib/index.js.map +0 -1
  159. package/controller/lib/utils.js +0 -69
  160. package/controller/lib/utils.js.map +0 -1
  161. package/controller/package.json +0 -18
  162. package/docs/config-schema.json +0 -2897
  163. package/docs/config-schema.json.md +0 -2138
  164. package/docs/demo/.pie/.configure/package.json +0 -10
  165. package/docs/demo/.pie/.configure/yarn.lock +0 -2122
  166. package/docs/demo/.pie/.controllers/package.json +0 -10
  167. package/docs/demo/.pie/.controllers/yarn.lock +0 -110
  168. package/docs/demo/.pie/info.entry.js +0 -89
  169. package/docs/demo/.pie/info.webpack.config.js +0 -119
  170. package/docs/demo/.pie/package.json +0 -10
  171. package/docs/demo/.pie/yarn.lock +0 -2137
  172. package/docs/demo/config.js +0 -8
  173. package/docs/demo/generate.js +0 -357
  174. package/docs/demo/index.html +0 -1
  175. package/docs/demo/pie.manifest.json +0 -11
  176. package/docs/demo/session.js +0 -12
  177. package/docs/pie-schema.json +0 -1784
  178. package/docs/pie-schema.json.md +0 -1046
  179. package/lib/__tests__/index.test.js +0 -197
  180. package/lib/categorize/__tests__/categories.test.js +0 -138
  181. package/lib/categorize/__tests__/category.test.js +0 -137
  182. package/lib/categorize/__tests__/choice.test.js +0 -88
  183. package/lib/categorize/__tests__/choices.test.js +0 -118
  184. package/lib/categorize/__tests__/droppable-placeholder.test.js +0 -96
  185. package/lib/categorize/__tests__/grid-content.test.js +0 -48
  186. package/lib/categorize/__tests__/index.test.js +0 -250
  187. package/lib/categorize/categories.js +0 -135
  188. package/lib/categorize/categories.js.map +0 -1
  189. package/lib/categorize/category.js +0 -67
  190. package/lib/categorize/category.js.map +0 -1
  191. package/lib/categorize/choice.js +0 -140
  192. package/lib/categorize/choice.js.map +0 -1
  193. package/lib/categorize/choices.js +0 -99
  194. package/lib/categorize/choices.js.map +0 -1
  195. package/lib/categorize/droppable-placeholder.js +0 -84
  196. package/lib/categorize/droppable-placeholder.js.map +0 -1
  197. package/lib/categorize/grid-content.js +0 -55
  198. package/lib/categorize/grid-content.js.map +0 -1
  199. package/lib/categorize/index.js +0 -450
  200. package/lib/categorize/index.js.map +0 -1
  201. package/lib/index.js +0 -316
  202. package/lib/index.js.map +0 -1
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @synced-from pie-elements/packages/categorize/configure/src/design/categories/category.jsx
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
+ import React from 'react';
10
+ import PropTypes from 'prop-types';
11
+ export declare class Category extends React.Component {
12
+ static propTypes: {
13
+ alternateResponseIndex: PropTypes.Requireable<number>;
14
+ category: PropTypes.Validator<object>;
15
+ configuration: PropTypes.Validator<object>;
16
+ defaultImageMaxHeight: PropTypes.Requireable<number>;
17
+ defaultImageMaxWidth: PropTypes.Requireable<number>;
18
+ deleteFocusedEl: PropTypes.Requireable<(...args: any[]) => any>;
19
+ focusedEl: PropTypes.Requireable<number>;
20
+ index: PropTypes.Requireable<number>;
21
+ error: PropTypes.Requireable<string>;
22
+ isDuplicated: PropTypes.Requireable<boolean>;
23
+ maxImageWidth: PropTypes.Requireable<object>;
24
+ maxImageHeight: PropTypes.Requireable<object>;
25
+ onChange: PropTypes.Requireable<(...args: any[]) => any>;
26
+ onDelete: PropTypes.Requireable<(...args: any[]) => any>;
27
+ onDeleteChoice: PropTypes.Requireable<(...args: any[]) => any>;
28
+ imageSupport: PropTypes.Requireable<PropTypes.InferProps<{
29
+ add: PropTypes.Validator<(...args: any[]) => any>;
30
+ delete: PropTypes.Validator<(...args: any[]) => any>;
31
+ }>>;
32
+ toolbarOpts: PropTypes.Requireable<object>;
33
+ spellCheck: PropTypes.Requireable<boolean>;
34
+ uploadSoundSupport: PropTypes.Requireable<PropTypes.InferProps<{
35
+ add: PropTypes.Validator<(...args: any[]) => any>;
36
+ delete: PropTypes.Validator<(...args: any[]) => any>;
37
+ }>>;
38
+ isAlternate: PropTypes.Requireable<boolean>;
39
+ };
40
+ static defaultProps: {};
41
+ changeLabel: any;
42
+ render(): React.JSX.Element;
43
+ }
44
+ export default Category;
@@ -0,0 +1,98 @@
1
+ import { InputHeader as e } from "../input-header.js";
2
+ import { DeleteButton as t } from "../buttons.js";
3
+ import n from "./droppable-placeholder.js";
4
+ import r from "react";
5
+ import i from "prop-types";
6
+ import { styled as a } from "@mui/material/styles";
7
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
+ import c from "@mui/material/Card";
9
+ import l from "@mui/material/CardActions";
10
+ //#region src/author/design/categories/category.tsx
11
+ var u = a(c, { shouldForwardProp: (e) => e !== "isDuplicated" })(({ theme: e, isDuplicated: t }) => ({
12
+ minWidth: "196px",
13
+ padding: e.spacing(1),
14
+ overflow: "visible",
15
+ ...t && { border: "1px solid red" }
16
+ })), d = a(l)(({ theme: e }) => ({ padding: `${e.spacing(1)} 0 0` })), f = a("div")(({ theme: e }) => ({
17
+ padding: e.spacing(2),
18
+ "& p": { margin: 0 }
19
+ })), p = a("div")(({ theme: e }) => ({
20
+ fontSize: e.typography.fontSize - 2,
21
+ color: e.palette.error.main,
22
+ paddingBottom: e.spacing(1)
23
+ })), m = class extends r.Component {
24
+ static propTypes = {
25
+ alternateResponseIndex: i.number,
26
+ category: i.object.isRequired,
27
+ configuration: i.object.isRequired,
28
+ defaultImageMaxHeight: i.number,
29
+ defaultImageMaxWidth: i.number,
30
+ deleteFocusedEl: i.func,
31
+ focusedEl: i.number,
32
+ index: i.number,
33
+ error: i.string,
34
+ isDuplicated: i.bool,
35
+ maxImageWidth: i.object,
36
+ maxImageHeight: i.object,
37
+ onChange: i.func,
38
+ onDelete: i.func,
39
+ onDeleteChoice: i.func,
40
+ imageSupport: i.shape({
41
+ add: i.func.isRequired,
42
+ delete: i.func.isRequired
43
+ }),
44
+ toolbarOpts: i.object,
45
+ spellCheck: i.bool,
46
+ uploadSoundSupport: i.shape({
47
+ add: i.func.isRequired,
48
+ delete: i.func.isRequired
49
+ }),
50
+ isAlternate: i.bool
51
+ };
52
+ static defaultProps = {};
53
+ changeLabel = (e) => {
54
+ let { category: t, onChange: n } = this.props;
55
+ t.label = e, n(t);
56
+ };
57
+ render() {
58
+ let { alternateResponseIndex: r, category: i, configuration: a, deleteFocusedEl: c, focusedEl: l, index: m, error: h, isDuplicated: g, onDelete: _, onDeleteChoice: v, imageSupport: y, spellCheck: b, toolbarOpts: x, maxImageWidth: S, maxImageHeight: C, uploadSoundSupport: w, mathMlOptions: T = {} } = this.props;
59
+ return /* @__PURE__ */ s(u, {
60
+ isDuplicated: g,
61
+ children: [
62
+ /* @__PURE__ */ s("span", { children: [r || r === 0 ? /* @__PURE__ */ o(f, { dangerouslySetInnerHTML: { __html: i.label } }) : /* @__PURE__ */ o(e, {
63
+ label: i.label,
64
+ focusedEl: l,
65
+ deleteFocusedEl: c,
66
+ index: m,
67
+ disabled: !!r || r === 0,
68
+ error: h,
69
+ onChange: this.changeLabel,
70
+ onDelete: _,
71
+ imageSupport: y,
72
+ toolbarOpts: x,
73
+ spellCheck: b,
74
+ maxImageWidth: S,
75
+ maxImageHeight: C,
76
+ uploadSoundSupport: w,
77
+ mathMlOptions: T,
78
+ configuration: a
79
+ }), h && /* @__PURE__ */ o(p, { children: h })] }),
80
+ /* @__PURE__ */ o(n, {
81
+ alternateResponseIndex: r,
82
+ category: i,
83
+ choices: i.choices,
84
+ onDeleteChoice: v,
85
+ categoryId: i.id,
86
+ extraStyles: { minHeight: "100px" },
87
+ isAlternate: this.props.isAlternate
88
+ }),
89
+ _ && /* @__PURE__ */ o(d, { children: /* @__PURE__ */ o(t, {
90
+ label: "delete",
91
+ onClick: _
92
+ }) })
93
+ ]
94
+ });
95
+ }
96
+ };
97
+ //#endregion
98
+ export { m as Category, m as default };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @synced-from pie-elements/packages/categorize/configure/src/design/categories/choice-preview.jsx
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
+ import React from 'react';
10
+ import PropTypes from 'prop-types';
11
+ export declare class ChoicePreview extends React.Component {
12
+ static propTypes: {
13
+ alternateResponseIndex: PropTypes.Requireable<number>;
14
+ category: PropTypes.Requireable<object>;
15
+ choice: PropTypes.Validator<object>;
16
+ choiceIndex: PropTypes.Requireable<number>;
17
+ onDelete: PropTypes.Requireable<(...args: any[]) => any>;
18
+ };
19
+ static defaultProps: {
20
+ onDelete: () => void;
21
+ };
22
+ delete: any;
23
+ render(): React.JSX.Element;
24
+ }
25
+ export default ChoicePreview;
@@ -0,0 +1,60 @@
1
+ import e from "react";
2
+ import * as t from "@pie-lib/render-ui";
3
+ import { HtmlAndMath as n, color as r } from "@pie-lib/render-ui";
4
+ import i from "prop-types";
5
+ import { styled as a } from "@mui/material/styles";
6
+ import { DraggableChoice as o } from "@pie-lib/drag";
7
+ import { jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ import l from "@mui/material/IconButton";
9
+ import u from "@mui/icons-material/RemoveCircleOutline";
10
+ //#region src/author/design/categories/choice-preview.tsx
11
+ function d(e) {
12
+ return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
13
+ }
14
+ function f(e, t) {
15
+ return !e || d(e) ? e : d(e.default) ? e.default : t && d(e[t]) ? e[t] : t && d(e[t]?.default) ? e[t].default : e;
16
+ }
17
+ var p = f(n, "HtmlAndMath") || f(g.HtmlAndMath, "HtmlAndMath"), m = t, h = m.default, g = h && typeof h == "object" ? h : m, _ = a("div")({
18
+ position: "relative",
19
+ overflow: "auto",
20
+ touchAction: "none"
21
+ }), v = a(l)({
22
+ position: "absolute",
23
+ right: 0,
24
+ top: 0,
25
+ color: `${r.tertiary()} !important`
26
+ }), y = class extends e.Component {
27
+ static propTypes = {
28
+ alternateResponseIndex: i.number,
29
+ category: i.object,
30
+ choice: i.object.isRequired,
31
+ choiceIndex: i.number,
32
+ onDelete: i.func
33
+ };
34
+ static defaultProps = { onDelete: () => {} };
35
+ delete = () => {
36
+ let { onDelete: e, choice: t } = this.props;
37
+ e(t);
38
+ };
39
+ render() {
40
+ let { alternateResponseIndex: e, category: t, choice: n, choiceIndex: r } = this.props, i = t && t.id, a = e === void 0 ? `${n.id}-${i}-${r}` : `${n.id}-${i}-${r}-alt-${e}`;
41
+ return /* @__PURE__ */ c(_, { children: [n ? /* @__PURE__ */ s(o, {
42
+ alternateResponseIndex: e,
43
+ category: t,
44
+ choice: n,
45
+ choiceIndex: r,
46
+ onRemoveChoice: this.delete,
47
+ type: "choice-preview",
48
+ id: a,
49
+ categoryId: i,
50
+ children: /* @__PURE__ */ s(p, { html: n?.content })
51
+ }) : null, /* @__PURE__ */ s(v, {
52
+ "aria-label": "delete",
53
+ onClick: this.delete,
54
+ size: "large",
55
+ children: /* @__PURE__ */ s(u, {})
56
+ })] });
57
+ }
58
+ };
59
+ //#endregion
60
+ export { y as ChoicePreview, y as default };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @synced-from pie-elements/packages/categorize/configure/src/design/categories/droppable-placeholder.jsx
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
+ import React from 'react';
10
+ declare const _default: (props: any) => React.JSX.Element;
11
+ export default _default;
@@ -0,0 +1,71 @@
1
+ import { ChoicePreview as e } from "./choice-preview.js";
2
+ import t from "react";
3
+ import n from "prop-types";
4
+ import r from "debug";
5
+ import { styled as i } from "@mui/material/styles";
6
+ import { useDroppable as a } from "@dnd-kit/core";
7
+ import { PlaceHolder as o, uid as s } from "@pie-lib/drag";
8
+ import { jsx as c } from "react/jsx-runtime";
9
+ //#region src/author/design/categories/droppable-placeholder.tsx
10
+ r("@pie-element:categorize:configure");
11
+ var l = i("div")(({ theme: e }) => ({
12
+ display: "flex",
13
+ alignItems: "center",
14
+ justifyContent: "center",
15
+ fontSize: e.typography.fontSize - 2,
16
+ color: `rgba(${e.palette.common.black}, 0.4)`,
17
+ width: "100%",
18
+ height: "100%"
19
+ })), u = () => /* @__PURE__ */ c(l, { children: "Drag your correct answers here" }), d = ({ alternateResponseIndex: n, category: r, choices: i, onDeleteChoice: a }) => /* @__PURE__ */ c(t.Fragment, { children: (i || []).map((t, i) => t && /* @__PURE__ */ c(e, {
20
+ alternateResponseIndex: n,
21
+ category: r,
22
+ choice: t,
23
+ choiceIndex: i,
24
+ onDelete: (e) => a(e, i)
25
+ }, i)) });
26
+ d.propTypes = {
27
+ alternateResponseIndex: n.number,
28
+ category: n.object,
29
+ choices: n.array,
30
+ onDeleteChoice: n.func
31
+ };
32
+ var f = ({ alternateResponseIndex: e, category: t, choices: n, onDeleteChoice: r, categoryId: i, isAlternate: s }) => {
33
+ let { setNodeRef: l, isOver: f } = a({
34
+ id: `${i}-${s ? "alternate" : "standard"}`,
35
+ data: {
36
+ accepts: ["choice", "choice-preview"],
37
+ alternateResponseIndex: e,
38
+ categoryId: i,
39
+ type: s ? "category-alternate" : "category",
40
+ id: i
41
+ }
42
+ });
43
+ return /* @__PURE__ */ c("div", {
44
+ ref: l,
45
+ children: /* @__PURE__ */ c(o, {
46
+ isOver: f,
47
+ extraStyles: {
48
+ width: "100%",
49
+ minHeight: "100px",
50
+ height: "auto"
51
+ },
52
+ children: (n || []).length === 0 ? /* @__PURE__ */ c(u, {}) : /* @__PURE__ */ c(d, {
53
+ alternateResponseIndex: e,
54
+ category: t,
55
+ choices: n,
56
+ onDeleteChoice: r
57
+ })
58
+ })
59
+ });
60
+ };
61
+ f.propTypes = {
62
+ alternateResponseIndex: n.number,
63
+ category: n.object,
64
+ choices: n.array,
65
+ onDeleteChoice: n.func,
66
+ categoryId: n.string.isRequired,
67
+ isAlternate: n.bool
68
+ };
69
+ var p = s.withUid(f);
70
+ //#endregion
71
+ export { p as default };
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @synced-from pie-elements/packages/categorize/configure/src/design/categories/index.jsx
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
+ import React from 'react';
10
+ import PropTypes from 'prop-types';
11
+ export declare class Categories extends React.Component {
12
+ static propTypes: {
13
+ defaultImageMaxHeight: PropTypes.Requireable<number>;
14
+ defaultImageMaxWidth: PropTypes.Requireable<number>;
15
+ imageSupport: PropTypes.Requireable<PropTypes.InferProps<{
16
+ add: PropTypes.Validator<(...args: any[]) => any>;
17
+ delete: PropTypes.Validator<(...args: any[]) => any>;
18
+ }>>;
19
+ uploadSoundSupport: PropTypes.Requireable<PropTypes.InferProps<{
20
+ add: PropTypes.Validator<(...args: any[]) => any>;
21
+ delete: PropTypes.Validator<(...args: any[]) => any>;
22
+ }>>;
23
+ categories: PropTypes.Requireable<any[]>;
24
+ onModelChanged: PropTypes.Requireable<(...args: any[]) => any>;
25
+ model: PropTypes.Validator<object>;
26
+ configuration: PropTypes.Validator<object>;
27
+ toolbarOpts: PropTypes.Requireable<object>;
28
+ spellCheck: PropTypes.Requireable<boolean>;
29
+ };
30
+ state: {
31
+ focusedEl: null;
32
+ };
33
+ add: any;
34
+ deleteFocusedEl: any;
35
+ delete: any;
36
+ change: any;
37
+ deleteChoiceFromCategory: any;
38
+ changeRowLabel: any;
39
+ render(): React.JSX.Element;
40
+ }
41
+ export default Categories;
@@ -0,0 +1,146 @@
1
+ import { Category as e } from "./category.js";
2
+ import { Header as t } from "../header.js";
3
+ import { generateValidationMessage as n } from "../../utils.js";
4
+ import { RowLabel as r } from "./RowLabel.js";
5
+ import i from "react";
6
+ import a from "prop-types";
7
+ import { styled as o } from "@mui/material/styles";
8
+ import { removeCategory as s, removeChoiceFromCategory as c } from "@pie-lib/categorize";
9
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
10
+ import { choiceUtils as d } from "@pie-lib/config-ui";
11
+ import f from "@mui/icons-material/Info";
12
+ import p from "@mui/material/Tooltip";
13
+ //#region src/author/design/categories/index.tsx
14
+ var m = o("div")(({ theme: e }) => ({ marginBottom: e.spacing(3) })), h = o("div")(({ theme: e }) => ({
15
+ display: "grid",
16
+ gridRowGap: e.spacing(1),
17
+ gridColumnGap: e.spacing(1)
18
+ })), g = o(p)(({ theme: e }) => ({ "& .MuiTooltip-tooltip": {
19
+ fontSize: e.typography.fontSize - 2,
20
+ whiteSpace: "pre",
21
+ maxWidth: "500px"
22
+ } })), _ = o("div")(({ theme: e }) => ({
23
+ fontSize: e.typography.fontSize - 2,
24
+ color: e.palette.error.main,
25
+ paddingTop: e.spacing(.5)
26
+ })), v = class extends i.Component {
27
+ static propTypes = {
28
+ defaultImageMaxHeight: a.number,
29
+ defaultImageMaxWidth: a.number,
30
+ imageSupport: a.shape({
31
+ add: a.func.isRequired,
32
+ delete: a.func.isRequired
33
+ }),
34
+ uploadSoundSupport: a.shape({
35
+ add: a.func.isRequired,
36
+ delete: a.func.isRequired
37
+ }),
38
+ categories: a.array,
39
+ onModelChanged: a.func,
40
+ model: a.object.isRequired,
41
+ configuration: a.object.isRequired,
42
+ toolbarOpts: a.object,
43
+ spellCheck: a.bool
44
+ };
45
+ state = { focusedEl: null };
46
+ add = () => {
47
+ let { model: e, categories: t } = this.props, { categoriesPerRow: n, correctResponse: r, allowAlternateEnabled: i } = e, a = d.firstAvailableIndex(e.categories.map((e) => e.id), 1), o = {
48
+ id: a,
49
+ label: "Category " + a
50
+ }, s = e.categories.length % n === 0, c = [...e.rowLabels];
51
+ s && c.push(""), this.setState({ focusedEl: t.length }, () => {
52
+ this.props.onModelChanged({
53
+ rowLabels: c,
54
+ categories: e.categories.concat([o]),
55
+ correctResponse: i ? [...r, {
56
+ category: a,
57
+ choices: [],
58
+ alternateResponses: []
59
+ }] : r
60
+ });
61
+ });
62
+ };
63
+ deleteFocusedEl = () => {
64
+ this.setState({ focusedEl: null });
65
+ };
66
+ delete = (e) => {
67
+ let { model: t, onModelChanged: n } = this.props, r = t.categories.findIndex((t) => t.id === e.id);
68
+ r !== -1 && (t.categories.splice(r, 1), t.correctResponse = s(e.id, t.correctResponse), n(t));
69
+ };
70
+ change = (e) => {
71
+ let { categories: t } = this.props, n = t.findIndex((t) => t.id === e.id);
72
+ n !== -1 && (t.splice(n, 1, e), this.props.onModelChanged({ categories: t }));
73
+ };
74
+ deleteChoiceFromCategory = (e, t, n) => {
75
+ let { model: r, onModelChanged: i } = this.props;
76
+ i({ correctResponse: c(t.id, e.id, n, r.correctResponse) });
77
+ };
78
+ changeRowLabel = (e, t) => {
79
+ let { model: n } = this.props, { rowLabels: r } = n, i = [...r];
80
+ i.length < t ? i.push(e) : i[t] = e, this.props.onModelChanged({ rowLabels: i });
81
+ };
82
+ render() {
83
+ let { model: a, categories: o, imageSupport: s, uploadSoundSupport: c, toolbarOpts: d, spellCheck: p, configuration: v, defaultImageMaxHeight: y, defaultImageMaxWidth: b, mathMlOptions: x = {} } = this.props, { categoriesPerRow: S, rowLabels: C, errors: w } = a, { associationError: T, categoriesError: E, categoriesErrors: D } = w || {}, { maxCategories: O, maxImageWidth: k = {}, maxImageHeight: A = {} } = v || {}, j = { gridTemplateColumns: `repeat(${S}, 1fr)` }, M = n(v);
84
+ return /* @__PURE__ */ u(m, { children: [
85
+ /* @__PURE__ */ l(t, {
86
+ label: "Categories",
87
+ buttonLabel: "ADD A CATEGORY",
88
+ onAdd: this.add,
89
+ info: /* @__PURE__ */ l(g, {
90
+ disableFocusListener: !0,
91
+ disableTouchListener: !0,
92
+ placement: "right",
93
+ title: M,
94
+ children: /* @__PURE__ */ l(f, {
95
+ fontSize: "small",
96
+ color: "primary",
97
+ style: { marginLeft: "5px" }
98
+ })
99
+ }),
100
+ buttonDisabled: O && o && O === o.length
101
+ }),
102
+ /* @__PURE__ */ l(h, {
103
+ style: j,
104
+ children: o.map((t, n) => {
105
+ let a = n % S === 0, o = n / S;
106
+ return /* @__PURE__ */ u(i.Fragment, { children: [a && /* @__PURE__ */ l(r, {
107
+ categoriesPerRow: S,
108
+ disabled: !1,
109
+ rowIndex: o,
110
+ markup: C[o] || "",
111
+ onChange: (e) => this.changeRowLabel(e, o),
112
+ imageSupport: s,
113
+ toolbarOpts: d,
114
+ spellCheck: p,
115
+ maxImageWidth: k && k.rowLabel || b,
116
+ maxImageHeight: A && A.rowLabel || y,
117
+ uploadSoundSupport: c,
118
+ mathMlOptions: x,
119
+ configuration: v
120
+ }), /* @__PURE__ */ l(e, {
121
+ imageSupport: s,
122
+ focusedEl: this.state.focusedEl,
123
+ deleteFocusedEl: this.deleteFocusedEl,
124
+ index: n,
125
+ category: t,
126
+ error: D && D[t.id],
127
+ onChange: this.change,
128
+ onDelete: () => this.delete(t),
129
+ toolbarOpts: d,
130
+ spellCheck: p,
131
+ onDeleteChoice: (e, n) => this.deleteChoiceFromCategory(t, e, n),
132
+ maxImageWidth: k && k.categoryLabel || b,
133
+ maxImageHeight: A && A.categoryLabel || y,
134
+ uploadSoundSupport: c,
135
+ configuration: v,
136
+ alternateResponseIndex: void 0
137
+ })] }, n);
138
+ })
139
+ }),
140
+ T && /* @__PURE__ */ l(_, { children: T }),
141
+ E && /* @__PURE__ */ l(_, { children: E })
142
+ ] });
143
+ }
144
+ };
145
+ //#endregion
146
+ export { v as Categories, v as default };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @synced-from pie-elements/packages/categorize/configure/src/design/choices/choice.jsx
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
+ import React from 'react';
10
+ declare const _default: (props: any) => React.JSX.Element;
11
+ export default _default;
@@ -0,0 +1,129 @@
1
+ import { InputHeader as e } from "../input-header.js";
2
+ import { DeleteButton as t } from "../buttons.js";
3
+ import { multiplePlacements as n } from "../../utils.js";
4
+ import "react";
5
+ import r from "prop-types";
6
+ import i from "debug";
7
+ import { styled as a } from "@mui/material/styles";
8
+ import { useDraggable as o, useDroppable as s } from "@dnd-kit/core";
9
+ import { uid as c } from "@pie-lib/drag";
10
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
11
+ import { Checkbox as d } from "@pie-lib/config-ui";
12
+ import f from "@mui/material/Card";
13
+ import p from "@mui/material/CardActions";
14
+ import m from "@mui/icons-material/DragHandle";
15
+ //#region src/author/design/choices/choice.tsx
16
+ i("@pie-element:categorize:configure:choice");
17
+ var h = (e) => {
18
+ if (e.lockChoiceOrder) return !0;
19
+ let t = e.choice.categoryCount || 0;
20
+ return t === 0 || e.correctResponseCount < t;
21
+ }, g = a(f)(({ theme: e }) => ({
22
+ minWidth: "196px",
23
+ padding: e.spacing(1),
24
+ overflow: "visible"
25
+ })), _ = a(p)({
26
+ padding: 0,
27
+ justifyContent: "space-between"
28
+ }), v = a("span", { shouldForwardProp: (e) => e !== "draggable" })(({ draggable: e }) => ({
29
+ cursor: e ? "move" : "inherit",
30
+ touchAction: "none"
31
+ })), y = a("div")(({ theme: e }) => ({
32
+ fontSize: e.typography.fontSize - 2,
33
+ color: e.palette.error.main,
34
+ paddingBottom: e.spacing(1)
35
+ })), b = ({ allowMultiplePlacements: r, configuration: i, choice: a, deleteFocusedEl: c, focusedEl: f, index: p, onDelete: b, onChange: x, correctResponseCount: S, lockChoiceOrder: C, imageSupport: w, spellCheck: T, toolbarOpts: E, error: D, maxImageWidth: O, maxImageHeight: k, uploadSoundSupport: A }) => {
36
+ let j = h({
37
+ choice: a,
38
+ correctResponseCount: S,
39
+ lockChoiceOrder: C
40
+ }), { attributes: M, listeners: N, setNodeRef: P, isDragging: F } = o({
41
+ id: `choice-${a.id}`,
42
+ data: {
43
+ id: a.id,
44
+ index: p,
45
+ type: "choice"
46
+ },
47
+ disabled: !j
48
+ }), { setNodeRef: I } = s({
49
+ id: `choice-drop-${a.id}`,
50
+ data: {
51
+ id: a.id,
52
+ index: p,
53
+ type: "choice"
54
+ }
55
+ }), L = (e) => {
56
+ a.content = e, x(a);
57
+ }, R = () => {
58
+ a.categoryCount === 1 ? a.categoryCount = 0 : a.categoryCount = 1, x(a);
59
+ }, z = ((e) => e === n.perChoice)(r);
60
+ return /* @__PURE__ */ u(g, {
61
+ ref: (e) => {
62
+ P(e), I(e);
63
+ },
64
+ style: { opacity: F ? .5 : 1 },
65
+ children: [
66
+ /* @__PURE__ */ l(_, { children: /* @__PURE__ */ l(v, {
67
+ draggable: j,
68
+ ...M,
69
+ ...N,
70
+ children: /* @__PURE__ */ l(m, { color: j ? "primary" : "disabled" })
71
+ }) }),
72
+ /* @__PURE__ */ l(e, {
73
+ imageSupport: w,
74
+ focusedEl: f,
75
+ deleteFocusedEl: c,
76
+ index: p,
77
+ label: a.content,
78
+ onChange: L,
79
+ onDelete: b,
80
+ toolbarOpts: E,
81
+ spellCheck: T,
82
+ error: D,
83
+ maxImageWidth: O,
84
+ maxImageHeight: k,
85
+ uploadSoundSupport: A,
86
+ configuration: i
87
+ }),
88
+ D && /* @__PURE__ */ l(y, { children: D }),
89
+ /* @__PURE__ */ u(_, { children: [/* @__PURE__ */ l(t, {
90
+ label: "delete",
91
+ onClick: b
92
+ }), z && /* @__PURE__ */ l(d, {
93
+ mini: !0,
94
+ label: "Remove after placing",
95
+ checked: a.categoryCount === 1,
96
+ onChange: R
97
+ })] })
98
+ ]
99
+ });
100
+ };
101
+ b.propTypes = {
102
+ allowMultiplePlacements: r.string,
103
+ configuration: r.object.isRequired,
104
+ choice: r.object.isRequired,
105
+ deleteFocusedEl: r.func,
106
+ focusedEl: r.number,
107
+ index: r.number,
108
+ lockChoiceOrder: r.bool,
109
+ maxImageHeight: r.object,
110
+ maxImageWidth: r.object,
111
+ onChange: r.func.isRequired,
112
+ onDelete: r.func.isRequired,
113
+ correctResponseCount: r.number.isRequired,
114
+ imageSupport: r.shape({
115
+ add: r.func.isRequired,
116
+ delete: r.func.isRequired
117
+ }),
118
+ toolbarOpts: r.object,
119
+ error: r.string,
120
+ uploadSoundSupport: r.shape({
121
+ add: r.func.isRequired,
122
+ delete: r.func.isRequired
123
+ }),
124
+ spellCheck: r.bool,
125
+ rearrangeChoices: r.func
126
+ };
127
+ var x = c.withUid(b);
128
+ //#endregion
129
+ export { x as default };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @synced-from pie-elements/packages/categorize/configure/src/design/choices/config.jsx
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
+ import React from 'react';
10
+ import PropTypes from 'prop-types';
11
+ export declare class Config extends React.Component {
12
+ static propTypes: {
13
+ config: PropTypes.Requireable<object>;
14
+ onModelChanged: PropTypes.Requireable<(...args: any[]) => any>;
15
+ spellCheck: PropTypes.Requireable<boolean>;
16
+ };
17
+ static defaultProps: {};
18
+ changeLabel: any;
19
+ render(): React.JSX.Element;
20
+ }
21
+ export default Config;