@pie-element/categorize 13.1.2-next.2 → 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 (158) hide show
  1. package/CHANGELOG.json +1637 -0
  2. package/CHANGELOG.md +2542 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +5 -0
  5. package/configure/CHANGELOG.json +1202 -0
  6. package/configure/CHANGELOG.md +2125 -0
  7. package/configure/lib/defaults.js +222 -0
  8. package/configure/lib/defaults.js.map +1 -0
  9. package/configure/lib/design/builder.js +55 -0
  10. package/configure/lib/design/builder.js.map +1 -0
  11. package/configure/lib/design/buttons.js +59 -0
  12. package/configure/lib/design/buttons.js.map +1 -0
  13. package/configure/lib/design/categories/RowLabel.js +66 -0
  14. package/configure/lib/design/categories/RowLabel.js.map +1 -0
  15. package/configure/lib/design/categories/alternateResponses.js +116 -0
  16. package/configure/lib/design/categories/alternateResponses.js.map +1 -0
  17. package/configure/lib/design/categories/category.js +153 -0
  18. package/configure/lib/design/categories/category.js.map +1 -0
  19. package/configure/lib/design/categories/choice-preview.js +79 -0
  20. package/configure/lib/design/categories/choice-preview.js.map +1 -0
  21. package/configure/lib/design/categories/droppable-placeholder.js +93 -0
  22. package/configure/lib/design/categories/droppable-placeholder.js.map +1 -0
  23. package/configure/lib/design/categories/index.js +256 -0
  24. package/configure/lib/design/categories/index.js.map +1 -0
  25. package/configure/lib/design/choices/choice.js +187 -0
  26. package/configure/lib/design/choices/choice.js.map +1 -0
  27. package/configure/lib/design/choices/config.js +58 -0
  28. package/configure/lib/design/choices/config.js.map +1 -0
  29. package/configure/lib/design/choices/index.js +197 -0
  30. package/configure/lib/design/choices/index.js.map +1 -0
  31. package/configure/lib/design/header.js +71 -0
  32. package/configure/lib/design/header.js.map +1 -0
  33. package/configure/lib/design/index.js +727 -0
  34. package/configure/lib/design/index.js.map +1 -0
  35. package/configure/lib/design/input-header.js +105 -0
  36. package/configure/lib/design/input-header.js.map +1 -0
  37. package/configure/lib/design/utils.js +12 -0
  38. package/configure/lib/design/utils.js.map +1 -0
  39. package/configure/lib/index.js +147 -0
  40. package/configure/lib/index.js.map +1 -0
  41. package/configure/lib/main.js +44 -0
  42. package/configure/lib/main.js.map +1 -0
  43. package/configure/lib/utils.js +43 -0
  44. package/configure/lib/utils.js.map +1 -0
  45. package/configure/package.json +32 -0
  46. package/controller/CHANGELOG.json +452 -0
  47. package/controller/CHANGELOG.md +1377 -0
  48. package/controller/lib/defaults.js +33 -0
  49. package/controller/lib/defaults.js.map +1 -0
  50. package/controller/lib/index.js +479 -0
  51. package/controller/lib/index.js.map +1 -0
  52. package/controller/lib/utils.js +69 -0
  53. package/controller/lib/utils.js.map +1 -0
  54. package/controller/package.json +18 -0
  55. package/docs/config-schema.json +2897 -0
  56. package/docs/config-schema.json.md +2138 -0
  57. package/docs/demo/config.js +8 -0
  58. package/docs/demo/generate.js +357 -0
  59. package/docs/demo/index.html +1 -0
  60. package/docs/demo/session.js +12 -0
  61. package/docs/pie-schema.json +1784 -0
  62. package/docs/pie-schema.json.md +1046 -0
  63. package/lib/categorize/categories.js +135 -0
  64. package/lib/categorize/categories.js.map +1 -0
  65. package/lib/categorize/category.js +67 -0
  66. package/lib/categorize/category.js.map +1 -0
  67. package/lib/categorize/choice.js +140 -0
  68. package/lib/categorize/choice.js.map +1 -0
  69. package/lib/categorize/choices.js +99 -0
  70. package/lib/categorize/choices.js.map +1 -0
  71. package/lib/categorize/droppable-placeholder.js +84 -0
  72. package/lib/categorize/droppable-placeholder.js.map +1 -0
  73. package/lib/categorize/grid-content.js +55 -0
  74. package/lib/categorize/grid-content.js.map +1 -0
  75. package/lib/categorize/index.js +450 -0
  76. package/lib/categorize/index.js.map +1 -0
  77. package/lib/index.js +316 -0
  78. package/lib/index.js.map +1 -0
  79. package/package.json +22 -85
  80. package/configure.js +0 -2
  81. package/controller.js +0 -1
  82. package/dist/author/defaults.d.ts +0 -223
  83. package/dist/author/defaults.js +0 -170
  84. package/dist/author/design/builder.d.ts +0 -10
  85. package/dist/author/design/builder.js +0 -24
  86. package/dist/author/design/buttons.d.ts +0 -28
  87. package/dist/author/design/buttons.js +0 -36
  88. package/dist/author/design/categories/RowLabel.d.ts +0 -23
  89. package/dist/author/design/categories/RowLabel.js +0 -47
  90. package/dist/author/design/categories/alternateResponses.d.ts +0 -31
  91. package/dist/author/design/categories/alternateResponses.js +0 -62
  92. package/dist/author/design/categories/category.d.ts +0 -44
  93. package/dist/author/design/categories/category.js +0 -98
  94. package/dist/author/design/categories/choice-preview.d.ts +0 -25
  95. package/dist/author/design/categories/choice-preview.js +0 -60
  96. package/dist/author/design/categories/droppable-placeholder.d.ts +0 -11
  97. package/dist/author/design/categories/droppable-placeholder.js +0 -71
  98. package/dist/author/design/categories/index.d.ts +0 -41
  99. package/dist/author/design/categories/index.js +0 -146
  100. package/dist/author/design/choices/choice.d.ts +0 -11
  101. package/dist/author/design/choices/choice.js +0 -129
  102. package/dist/author/design/choices/config.d.ts +0 -21
  103. package/dist/author/design/choices/config.js +0 -33
  104. package/dist/author/design/choices/index.d.ts +0 -41
  105. package/dist/author/design/choices/index.js +0 -110
  106. package/dist/author/design/header.d.ts +0 -24
  107. package/dist/author/design/header.js +0 -49
  108. package/dist/author/design/index.d.ts +0 -52
  109. package/dist/author/design/index.js +0 -417
  110. package/dist/author/design/input-header.d.ts +0 -39
  111. package/dist/author/design/input-header.js +0 -69
  112. package/dist/author/design/utils.d.ts +0 -9
  113. package/dist/author/design/utils.js +0 -7
  114. package/dist/author/index.d.ts +0 -51
  115. package/dist/author/index.js +0 -87
  116. package/dist/author/main.d.ts +0 -23
  117. package/dist/author/main.js +0 -30
  118. package/dist/author/utils.d.ts +0 -16
  119. package/dist/author/utils.js +0 -17
  120. package/dist/browser/author/index.js +0 -2041
  121. package/dist/browser/author/index.js.map +0 -1
  122. package/dist/browser/categorize.css +0 -2
  123. package/dist/browser/controller/index.js +0 -299
  124. package/dist/browser/controller/index.js.map +0 -1
  125. package/dist/browser/delivery/index.js +0 -1051
  126. package/dist/browser/delivery/index.js.map +0 -1
  127. package/dist/browser/dist-BINEJ0Vp.js +0 -1954
  128. package/dist/browser/dist-BINEJ0Vp.js.map +0 -1
  129. package/dist/browser/dist-DDCLQ8jp.js +0 -49802
  130. package/dist/browser/dist-DDCLQ8jp.js.map +0 -1
  131. package/dist/controller/defaults.d.ts +0 -34
  132. package/dist/controller/defaults.js +0 -29
  133. package/dist/controller/index.d.ts +0 -61
  134. package/dist/controller/index.js +0 -155
  135. package/dist/controller/utils.d.ts +0 -20
  136. package/dist/controller/utils.js +0 -35
  137. package/dist/delivery/categorize/categories.d.ts +0 -34
  138. package/dist/delivery/categorize/categories.js +0 -66
  139. package/dist/delivery/categorize/category.d.ts +0 -28
  140. package/dist/delivery/categorize/category.js +0 -48
  141. package/dist/delivery/categorize/choice.d.ts +0 -27
  142. package/dist/delivery/categorize/choice.js +0 -94
  143. package/dist/delivery/categorize/choices.d.ts +0 -39
  144. package/dist/delivery/categorize/choices.js +0 -51
  145. package/dist/delivery/categorize/droppable-placeholder.d.ts +0 -32
  146. package/dist/delivery/categorize/droppable-placeholder.js +0 -64
  147. package/dist/delivery/categorize/grid-content.d.ts +0 -25
  148. package/dist/delivery/categorize/grid-content.js +0 -39
  149. package/dist/delivery/categorize/index.d.ts +0 -57
  150. package/dist/delivery/categorize/index.js +0 -260
  151. package/dist/delivery/index.d.ts +0 -27
  152. package/dist/delivery/index.js +0 -152
  153. package/dist/index.d.ts +0 -1
  154. package/dist/index.iife.d.ts +0 -8
  155. package/dist/index.iife.js +0 -152
  156. package/dist/index.js +0 -2
  157. package/dist/runtime-support.d.ts +0 -12
  158. package/dist/runtime-support.js +0 -12
@@ -1,44 +0,0 @@
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;
@@ -1,98 +0,0 @@
1
- import 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 default };
@@ -1,25 +0,0 @@
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;
@@ -1,60 +0,0 @@
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 default };
@@ -1,11 +0,0 @@
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;
@@ -1,71 +0,0 @@
1
- import 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 };
@@ -1,41 +0,0 @@
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;
@@ -1,146 +0,0 @@
1
- import e from "./category.js";
2
- import 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 default };
@@ -1,11 +0,0 @@
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;
@@ -1,129 +0,0 @@
1
- import 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 ? !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 };
@@ -1,21 +0,0 @@
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;