@pie-element/multi-trait-rubric 8.1.2-next.1 → 8.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 (100) hide show
  1. package/CHANGELOG.json +1 -0
  2. package/CHANGELOG.md +1590 -0
  3. package/LICENSE.md +5 -0
  4. package/README.md +55 -0
  5. package/configure/CHANGELOG.json +1 -0
  6. package/configure/CHANGELOG.md +1485 -0
  7. package/configure/lib/common.js +424 -0
  8. package/configure/lib/common.js.map +1 -0
  9. package/configure/lib/defaults.js +184 -0
  10. package/configure/lib/defaults.js.map +1 -0
  11. package/configure/lib/index.js +157 -0
  12. package/configure/lib/index.js.map +1 -0
  13. package/configure/lib/main.js +454 -0
  14. package/configure/lib/main.js.map +1 -0
  15. package/configure/lib/modals.js +206 -0
  16. package/configure/lib/modals.js.map +1 -0
  17. package/configure/lib/scale.js +478 -0
  18. package/configure/lib/scale.js.map +1 -0
  19. package/configure/lib/trait.js +275 -0
  20. package/configure/lib/trait.js.map +1 -0
  21. package/configure/lib/traitsHeader.js +235 -0
  22. package/configure/lib/traitsHeader.js.map +1 -0
  23. package/configure/lib/utils.js +87 -0
  24. package/configure/lib/utils.js.map +1 -0
  25. package/configure/package.json +24 -0
  26. package/controller/CHANGELOG.json +1 -0
  27. package/controller/CHANGELOG.md +911 -0
  28. package/controller/lib/defaults.js +18 -0
  29. package/controller/lib/defaults.js.map +1 -0
  30. package/controller/lib/index.js +158 -0
  31. package/controller/lib/index.js.map +1 -0
  32. package/controller/lib/utils.js +11 -0
  33. package/controller/lib/utils.js.map +1 -0
  34. package/controller/package.json +14 -0
  35. package/docs/config-schema.json +1628 -0
  36. package/docs/config-schema.json.md +1202 -0
  37. package/docs/demo/config.js +8 -0
  38. package/docs/demo/generate.js +117 -0
  39. package/docs/demo/index.html +1 -0
  40. package/docs/demo/session.js +6 -0
  41. package/docs/pie-schema.json +861 -0
  42. package/docs/pie-schema.json.md +614 -0
  43. package/lib/index.js +54 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/main.js +123 -0
  46. package/lib/main.js.map +1 -0
  47. package/lib/scale.js +248 -0
  48. package/lib/scale.js.map +1 -0
  49. package/lib/trait.js +83 -0
  50. package/lib/trait.js.map +1 -0
  51. package/package.json +15 -85
  52. package/configure.js +0 -2
  53. package/controller.js +0 -1
  54. package/dist/author/common.d.ts +0 -90
  55. package/dist/author/common.js +0 -275
  56. package/dist/author/defaults.d.ts +0 -153
  57. package/dist/author/defaults.js +0 -113
  58. package/dist/author/index.d.ts +0 -22
  59. package/dist/author/index.js +0 -89
  60. package/dist/author/main.d.ts +0 -43
  61. package/dist/author/main.js +0 -247
  62. package/dist/author/modals.d.ts +0 -94
  63. package/dist/author/modals.js +0 -171
  64. package/dist/author/scale.d.ts +0 -46
  65. package/dist/author/scale.js +0 -280
  66. package/dist/author/trait.d.ts +0 -70
  67. package/dist/author/trait.js +0 -202
  68. package/dist/author/traitsHeader.d.ts +0 -28
  69. package/dist/author/traitsHeader.js +0 -172
  70. package/dist/author/utils.d.ts +0 -10
  71. package/dist/author/utils.js +0 -41
  72. package/dist/browser/Typography-CdgSBeUZ.js +0 -8993
  73. package/dist/browser/Typography-CdgSBeUZ.js.map +0 -1
  74. package/dist/browser/author/index.js +0 -41731
  75. package/dist/browser/author/index.js.map +0 -1
  76. package/dist/browser/controller/index.js +0 -70
  77. package/dist/browser/controller/index.js.map +0 -1
  78. package/dist/browser/delivery/index.js +0 -523
  79. package/dist/browser/delivery/index.js.map +0 -1
  80. package/dist/browser/multi-trait-rubric.css +0 -2
  81. package/dist/controller/defaults.d.ts +0 -20
  82. package/dist/controller/defaults.js +0 -14
  83. package/dist/controller/index.d.ts +0 -26
  84. package/dist/controller/index.js +0 -57
  85. package/dist/controller/utils.d.ts +0 -9
  86. package/dist/controller/utils.js +0 -4
  87. package/dist/delivery/index.d.ts +0 -17
  88. package/dist/delivery/index.js +0 -37
  89. package/dist/delivery/main.d.ts +0 -15
  90. package/dist/delivery/main.js +0 -95
  91. package/dist/delivery/scale.d.ts +0 -17
  92. package/dist/delivery/scale.js +0 -175
  93. package/dist/delivery/trait.d.ts +0 -27
  94. package/dist/delivery/trait.js +0 -44
  95. package/dist/index.d.ts +0 -1
  96. package/dist/index.iife.d.ts +0 -8
  97. package/dist/index.iife.js +0 -145
  98. package/dist/index.js +0 -2
  99. package/dist/runtime-support.d.ts +0 -12
  100. package/dist/runtime-support.js +0 -12
@@ -1,70 +0,0 @@
1
- //#region src/controller/defaults.ts
2
- var e = {
3
- addScaleEnabled: !0,
4
- description: !1,
5
- excludeZero: !1,
6
- halfScoring: !1,
7
- maxPointsEnabled: !0,
8
- pointLabels: !0,
9
- scales: [],
10
- standards: !1,
11
- visibleToStudent: !0
12
- }, t = (e) => (e || "").replace(/(<([^>]+)>)/gi, "");
13
- //#endregion
14
- //#region src/controller/index.ts
15
- function n(t = {}) {
16
- return new Promise((n) => n({
17
- ...e,
18
- ...t
19
- }));
20
- }
21
- var r = (t) => ({
22
- ...e,
23
- ...t
24
- });
25
- async function i(e, t, n) {
26
- let i = r(e);
27
- !n.role || n.role === "student" ? i.visible = i.visibleToStudent : i.visible = !0;
28
- let { scales: a, excludeZero: o } = i || {}, s = (a || []).map((e) => ({
29
- ...e,
30
- excludeZero: o
31
- }));
32
- return {
33
- ...i,
34
- scales: s
35
- };
36
- }
37
- var a = () => 0;
38
- function o() {
39
- return new Promise((e) => e({
40
- score: 0,
41
- empty: !0
42
- }));
43
- }
44
- var s = (e, t) => new Promise((e) => {
45
- t.mode !== "evaluate" && t.role === "instructor" ? e({ id: "1" }) : e(null);
46
- }), c = (e, n) => {
47
- let { scales: r, description: i = !1, pointLabels: a = !1 } = e, o = {}, s = {}, c = {};
48
- return (r || []).forEach((e, n) => {
49
- let { traits: r = [] } = e, { scorePointsLabels: o = [] } = e, l = {}, u = {};
50
- a && o.forEach((e, n) => {
51
- !e || e === "<div></div>" ? u[n] = "Points labels should not be empty." : o.slice(n + 1).some((n) => t(n) === t(e)) && (u[n] = "Points labels should be unique.");
52
- }), Object.keys(u).length > 0 && (c[n] = u), r.forEach((e, n) => {
53
- if (!e.name || e.name === "<div></div>" ? l[n] = { name: "Trait names should not be empty." } : r.slice(n + 1).some((n) => t(n.name) === t(e.name)) && (l[n] = { name: "Trait names should be unique." }), i && (!e.description || e.description === "<div></div>")) l[n] = {
54
- ...l[n],
55
- description: "Trait description should not be empty"
56
- };
57
- else {
58
- let a = r.slice(n + 1).some((n) => t(n.description) === t(e.description));
59
- i && a && (l[n] = {
60
- ...l[n],
61
- description: "Trait descriptions should be unique."
62
- });
63
- }
64
- }), Object.keys(l).length > 0 && (s[n] = l);
65
- }), Object.keys(s).length > 0 && (o.traitsErrors = s), Object.keys(c).length > 0 && (o.scorePointsErrors = c), o;
66
- };
67
- //#endregion
68
- export { s as createCorrectResponseSession, n as createDefaultModel, a as getScore, i as model, r as normalize, o as outcome, c as validate };
69
-
70
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/controller/defaults.ts","../../../src/controller/utils.ts","../../../src/controller/index.ts"],"sourcesContent":["// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/multi-trait-rubric/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 addScaleEnabled: true,\n description: false,\n excludeZero: false,\n halfScoring: false,\n maxPointsEnabled: true,\n pointLabels: true,\n scales: [],\n standards: false,\n visibleToStudent: true,\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/multi-trait-rubric/controller/src/utils.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 const markupToText = (s) => {\n return (s || '').replace(/(<([^>]+)>)/ig, '');\n};\n","// @ts-nocheck\n/**\n * @synced-from pie-elements/packages/multi-trait-rubric/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 { markupToText } from './utils.js';\n\nexport function createDefaultModel(model = {}) {\n return new Promise((resolve) => resolve({ ...defaults, ...model }));\n}\n\nexport const normalize = (question) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n */\nexport async function model(question, session, env) {\n const normalizedQuestion = normalize(question);\n\n if (!env.role || env.role === 'student') {\n normalizedQuestion.visible = normalizedQuestion.visibleToStudent;\n } else {\n normalizedQuestion.visible = true;\n }\n\n // todo update pie-ui instead of parsing this here:\n const { scales, excludeZero } = normalizedQuestion || {};\n const parsedScales = (scales || []).map((scale) => ({ ...scale, excludeZero }));\n\n return {\n ...normalizedQuestion,\n scales: parsedScales,\n };\n}\n\nexport const getScore = () => 0;\n\n/**\n * @param {Object} model - the main model\n * @param {*} session\n * @param {Object} env\n */\nexport function outcome() {\n return new Promise((resolve) => resolve({ score: 0, empty: true }));\n}\n\nexport const createCorrectResponseSession = (question, env) => {\n return new Promise((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n resolve({ id: '1' });\n } else {\n resolve(null);\n }\n });\n};\n\n// IMPORTANT! If you make any changes to this function, please make sure you also update complex-rubric/controller/validateMultiTraitRubric function!“.\nexport const validate = (model, config) => {\n const { scales, description = false, pointLabels = false } = model;\n const errors = {};\n const traitsErrors = {};\n const scorePointsErrors = {};\n\n (scales || []).forEach((scale, scaleIndex) => {\n const { traits = [] } = scale;\n const { scorePointsLabels = [] } = scale;\n const scaleErrors = {};\n const scorePointsLabelsErrors = {};\n\n if (pointLabels) {\n scorePointsLabels.forEach((scorePointLabel, scoreIndex) => {\n if (!scorePointLabel || scorePointLabel === '<div></div>') {\n scorePointsLabelsErrors[scoreIndex] = 'Points labels should not be empty.';\n } else {\n const identicalScorePointLabel = scorePointsLabels\n .slice(scoreIndex + 1)\n .some((s) => markupToText(s) === markupToText(scorePointLabel));\n\n if (identicalScorePointLabel) {\n scorePointsLabelsErrors[scoreIndex] = 'Points labels should be unique.';\n }\n }\n });\n }\n\n if (Object.keys(scorePointsLabelsErrors).length > 0) {\n scorePointsErrors[scaleIndex] = scorePointsLabelsErrors;\n }\n\n traits.forEach((trait, traitIndex) => {\n if (!trait.name || trait.name === '<div></div>') {\n scaleErrors[traitIndex] = { name: 'Trait names should not be empty.' };\n } else {\n const identicalTraitName = traits\n .slice(traitIndex + 1)\n .some((t) => markupToText(t.name) === markupToText(trait.name));\n\n if (identicalTraitName) {\n scaleErrors[traitIndex] = { name: 'Trait names should be unique.' };\n }\n }\n if (description && (!trait.description || trait.description === '<div></div>')) {\n scaleErrors[traitIndex] = { ...scaleErrors[traitIndex], description: 'Trait description should not be empty' };\n } else {\n const identicalTraitDescr = traits\n .slice(traitIndex + 1)\n .some((t) => markupToText(t.description) === markupToText(trait.description));\n\n if (description && identicalTraitDescr) {\n scaleErrors[traitIndex] = { ...scaleErrors[traitIndex], description: 'Trait descriptions should be unique.' };\n }\n }\n });\n if (Object.keys(scaleErrors).length > 0) {\n traitsErrors[scaleIndex] = scaleErrors;\n }\n });\n\n if (Object.keys(traitsErrors).length > 0) {\n errors.traitsErrors = traitsErrors;\n }\n\n if (Object.keys(scorePointsErrors).length > 0) {\n errors.scorePointsErrors = scorePointsErrors;\n }\n\n return errors;\n};\n"],"mappings":";AAUA,IAAA,IAAe;CACb,iBAAiB;CACjB,aAAa;CACb,aAAa;CACb,aAAa;CACb,kBAAkB;CAClB,aAAa;CACb,QAAQ,CAAC;CACT,WAAW;CACX,kBAAkB;AACpB,GCVa,KAAgB,OACjB,KAAK,IAAI,QAAQ,iBAAiB,EAAE;;;ACEhD,SAAgB,EAAmB,IAAQ,CAAC,GAAG;CAC7C,OAAO,IAAI,SAAS,MAAY,EAAQ;EAAE,GAAG;EAAU,GAAG;CAAM,CAAC,CAAC;AACpE;AAEA,IAAa,KAAa,OAAc;CAAE,GAAG;CAAU,GAAG;AAAS;AAQnE,eAAsB,EAAM,GAAU,GAAS,GAAK;CAClD,IAAM,IAAqB,EAAU,CAAQ;CAE7C,AAAI,CAAC,EAAI,QAAQ,EAAI,SAAS,YAC5B,EAAmB,UAAU,EAAmB,mBAEhD,EAAmB,UAAU;CAI/B,IAAM,EAAE,WAAQ,mBAAgB,KAAsB,CAAC,GACjD,KAAgB,KAAU,CAAC,GAAG,KAAK,OAAW;EAAE,GAAG;EAAO;CAAY,EAAE;CAE9E,OAAO;EACL,GAAG;EACH,QAAQ;CACV;AACF;AAEA,IAAa,UAAiB;AAO9B,SAAgB,IAAU;CACxB,OAAO,IAAI,SAAS,MAAY,EAAQ;EAAE,OAAO;EAAG,OAAO;CAAK,CAAC,CAAC;AACpE;AAEA,IAAa,KAAgC,GAAU,MAC9C,IAAI,SAAS,MAAY;CAC9B,AAAI,EAAI,SAAS,cAAc,EAAI,SAAS,eAC1C,EAAQ,EAAE,IAAI,IAAI,CAAC,IAEnB,EAAQ,IAAI;AAEhB,CAAC,GAIU,KAAY,GAAO,MAAW;CACzC,IAAM,EAAE,WAAQ,iBAAc,IAAO,iBAAc,OAAU,GACvD,IAAS,CAAC,GACV,IAAe,CAAC,GAChB,IAAoB,CAAC;CAiE3B,QA/DC,KAAU,CAAC,GAAG,SAAS,GAAO,MAAe;EAC5C,IAAM,EAAE,YAAS,CAAC,MAAM,GAClB,EAAE,uBAAoB,CAAC,MAAM,GAC7B,IAAc,CAAC,GACf,IAA0B,CAAC;EA8CjC,AA5CI,KACF,EAAkB,SAAS,GAAiB,MAAe;GACzD,AAAI,CAAC,KAAmB,MAAoB,gBAC1C,EAAwB,KAAc,uCAEL,EAC9B,MAAM,IAAa,CAAC,EACpB,MAAM,MAAM,EAAa,CAAC,MAAM,EAAa,CAAe,CAE3D,MACF,EAAwB,KAAc;EAG5C,CAAC,GAGC,OAAO,KAAK,CAAuB,EAAE,SAAS,MAChD,EAAkB,KAAc,IAGlC,EAAO,SAAS,GAAO,MAAe;GAYpC,IAXI,CAAC,EAAM,QAAQ,EAAM,SAAS,gBAChC,EAAY,KAAc,EAAE,MAAM,mCAAmC,IAE1C,EACxB,MAAM,IAAa,CAAC,EACpB,MAAM,MAAM,EAAa,EAAE,IAAI,MAAM,EAAa,EAAM,IAAI,CAE3D,MACF,EAAY,KAAc,EAAE,MAAM,gCAAgC,IAGlE,MAAgB,CAAC,EAAM,eAAe,EAAM,gBAAgB,gBAC9D,EAAY,KAAc;IAAE,GAAG,EAAY;IAAa,aAAa;GAAwC;QACxG;IACL,IAAM,IAAsB,EACzB,MAAM,IAAa,CAAC,EACpB,MAAM,MAAM,EAAa,EAAE,WAAW,MAAM,EAAa,EAAM,WAAW,CAAC;IAE9E,AAAI,KAAe,MACjB,EAAY,KAAc;KAAE,GAAG,EAAY;KAAa,aAAa;IAAuC;GAEhH;EACF,CAAC,GACG,OAAO,KAAK,CAAW,EAAE,SAAS,MACpC,EAAa,KAAc;CAE/B,CAAC,GAEG,OAAO,KAAK,CAAY,EAAE,SAAS,MACrC,EAAO,eAAe,IAGpB,OAAO,KAAK,CAAiB,EAAE,SAAS,MAC1C,EAAO,oBAAoB,IAGtB;AACT"}
@@ -1,523 +0,0 @@
1
- import { C as e, E as t, Et as n, H as r, P as i, _ as a, _t as o, bt as s, ft as c, ht as l, i as u, it as d, kt as f, lt as p, n as m, ot as h, r as g, t as _, tt as v, vt as y, w as b, x, yt as S } from "../Typography-CdgSBeUZ.js";
2
- import * as C from "react";
3
- import w from "react";
4
- import { createRoot as T } from "react-dom/client";
5
- import { jsx as E, jsxs as D } from "react/jsx-runtime";
6
- //#region ../../shared/player-events/dist/index.js
7
- var O = class e extends CustomEvent {
8
- static {
9
- this.TYPE = "model-set";
10
- }
11
- constructor(t, n, r) {
12
- super(e.TYPE, {
13
- bubbles: !0,
14
- composed: !0,
15
- detail: {
16
- complete: n,
17
- component: t,
18
- hasModel: r
19
- }
20
- }), this.component = t, this.complete = n;
21
- }
22
- };
23
- (class e extends CustomEvent {
24
- static {
25
- this.TYPE = "session-changed";
26
- }
27
- constructor(t, n) {
28
- super(e.TYPE, {
29
- bubbles: !0,
30
- composed: !0,
31
- detail: {
32
- complete: n,
33
- component: t
34
- }
35
- }), this.component = t, this.complete = n;
36
- }
37
- });
38
- //#endregion
39
- //#region src/delivery/trait.tsx
40
- var k = /* @__PURE__ */ f(n(), 1), A = h("td")({
41
- color: d.primaryDark(),
42
- verticalAlign: "middle"
43
- }), j = h("div")({
44
- color: d.secondaryBackground(),
45
- textAlign: "center"
46
- }), M = (e) => {
47
- let { trait: t, traitIndex: n, scaleIndex: r, showStandards: i, showDescription: a, scorePointsValues: o } = e, { name: s, standards: c, scorePointsDescriptors: l, description: u } = t || {};
48
- return /* @__PURE__ */ D("tr", { children: [
49
- /* @__PURE__ */ E(A, { children: /* @__PURE__ */ E("div", { dangerouslySetInnerHTML: { __html: s } }) }),
50
- i ? /* @__PURE__ */ E("td", { children: /* @__PURE__ */ E("div", { dangerouslySetInnerHTML: { __html: c.join(",") } }) }) : null,
51
- a ? /* @__PURE__ */ E("td", { children: /* @__PURE__ */ E("div", { dangerouslySetInnerHTML: { __html: u } }) }) : null,
52
- o && o.map((e, t) => {
53
- let n;
54
- try {
55
- n = l[o.length - t - 1] || "";
56
- } catch {
57
- n = "";
58
- }
59
- return /* @__PURE__ */ E("td", { children: n ? /* @__PURE__ */ E("div", { dangerouslySetInnerHTML: { __html: n } }) : /* @__PURE__ */ E(j, { dangerouslySetInnerHTML: { __html: "No Description" } }) }, `table-cell-${t}`);
60
- })
61
- ] }, `scale-${r}-trait-${n}`);
62
- };
63
- M.propTypes = {
64
- showStandards: k.default.bool,
65
- showDescription: k.default.bool,
66
- scorePointsValues: k.default.arrayOf(k.default.number),
67
- scaleIndex: k.default.number,
68
- traitIndex: k.default.number,
69
- trait: k.default.shape({
70
- name: k.default.string,
71
- standards: k.default.arrayOf(k.default.string),
72
- scorePointsDescriptors: k.default.arrayOf(k.default.string),
73
- description: k.default.string
74
- })
75
- };
76
- //#endregion
77
- //#region src/delivery/scale.tsx
78
- var N = h("div")({
79
- display: "flex",
80
- position: "relative"
81
- }), P = h("div")({
82
- width: "100%",
83
- overflow: "auto"
84
- }), F = h("table")(({ theme: e }) => ({
85
- borderSpacing: 0,
86
- marginBottom: e.spacing(2),
87
- borderRadius: "4px",
88
- color: d.text(),
89
- fontSize: e.typography.fontSize,
90
- lineHeight: "16px",
91
- overflow: "unset",
92
- "& ul, ol": {
93
- marginBlockStart: 0,
94
- paddingInlineStart: e.spacing(2)
95
- },
96
- "& th": {
97
- padding: e.spacing(2),
98
- textAlign: "left",
99
- backgroundColor: d.secondaryBackground(),
100
- verticalAlign: "bottom"
101
- },
102
- "& th div": { width: "200px" },
103
- "& td": {
104
- width: "200px",
105
- padding: `${e.spacing(2)} ${e.spacing(1)}`,
106
- verticalAlign: "top"
107
- }
108
- })), I = h("table")({ "& td": {
109
- border: 0,
110
- padding: 0,
111
- textAlign: "center",
112
- minWidth: "200px"
113
- } }), L = h("div")({ marginBottom: "4px" }), R = h("td")({ fontWeight: "normal" }), z = ({ show: e, onClick: t, extraStyles: n, children: r }) => /* @__PURE__ */ E("div", {
114
- style: {
115
- height: "calc(100% - 1px)",
116
- top: "1px",
117
- display: e ? "flex" : "none",
118
- width: "50px",
119
- margin: "auto",
120
- position: "absolute",
121
- alignItems: "center",
122
- justifyContent: "center",
123
- cursor: "pointer",
124
- ...n
125
- },
126
- onClick: t,
127
- children: r
128
- });
129
- z.propTypes = {
130
- show: k.default.bool,
131
- onClick: k.default.func,
132
- extraStyles: k.default.object,
133
- children: k.default.object
134
- };
135
- var B = class extends w.Component {
136
- state = {};
137
- componentDidMount() {
138
- this.tableWrapper && this.tableWrapper.offsetWidth < this.tableWrapper.scrollWidth && this.setState({ showRight: !0 });
139
- }
140
- scrollLeft = () => {
141
- this.tableWrapper.scrollLeft -= this.tableWrapper.offsetWidth / 2, this.setState({
142
- showRight: this.tableWrapper.scrollLeft < this.tableWrapper.scrollWidth,
143
- showLeft: this.tableWrapper.scrollLeft < this.tableWrapper.scrollWidth && this.tableWrapper.scrollLeft > 0
144
- });
145
- };
146
- scrollRight = () => {
147
- let e = this.tableWrapper.scrollLeft;
148
- this.tableWrapper.scrollLeft += this.tableWrapper.offsetWidth / 2, this.setState({
149
- showRight: e !== this.tableWrapper.scrollLeft && this.tableWrapper.scrollLeft < this.tableWrapper.scrollWidth,
150
- showLeft: this.tableWrapper.scrollLeft < this.tableWrapper.scrollWidth && this.tableWrapper.scrollLeft > 0
151
- });
152
- };
153
- render() {
154
- let { showRight: e, showLeft: t } = this.state, { scale: n, scaleIndex: r, showDescription: i, showPointsLabels: a, showStandards: o, arrowsDisabled: s } = this.props, { excludeZero: c, maxPoints: l, traitLabel: u, traits: f, scorePointsLabels: p } = n || {}, h = [], _, v, y;
155
- try {
156
- for (let e = l; +(e >= c); --e) h.push(e);
157
- let { traitStandards: e, traitDescriptions: t } = f.reduce((e, t) => ({
158
- traitStandards: [...e.traitStandards, ...t.standards || []],
159
- traitDescriptions: [...e.traitDescriptions, ...t.description || []]
160
- }), {
161
- traitStandards: [],
162
- traitDescriptions: []
163
- });
164
- _ = i && t.length, v = a && p.length, y = o && e.length;
165
- } catch {
166
- _ = !1, v = !1, y = !1;
167
- }
168
- return /* @__PURE__ */ D(N, { children: [
169
- /* @__PURE__ */ E(z, {
170
- show: t && !s,
171
- onClick: this.scrollLeft,
172
- extraStyles: {
173
- left: 0,
174
- background: `linear-gradient(to right, white, ${d.background()})`
175
- },
176
- children: /* @__PURE__ */ E(g, {})
177
- }),
178
- /* @__PURE__ */ D(P, {
179
- ref: (e) => {
180
- this.tableWrapper = e;
181
- },
182
- onScroll: () => {
183
- this.setState({
184
- showRight: this.tableWrapper.scrollLeft + this.tableWrapper.offsetWidth < this.tableWrapper.scrollWidth - 5 && this.tableWrapper.scrollLeft < this.tableWrapper.scrollWidth,
185
- showLeft: this.tableWrapper.scrollLeft < this.tableWrapper.scrollWidth && this.tableWrapper.scrollLeft > 0
186
- });
187
- },
188
- children: [s && (e || t) ? /* @__PURE__ */ E("div", { children: "The item is too large to fit in print mode." }) : null, /* @__PURE__ */ D(F, { children: [/* @__PURE__ */ E("thead", { children: /* @__PURE__ */ D("tr", { children: [
189
- /* @__PURE__ */ E("th", { children: /* @__PURE__ */ E("div", { dangerouslySetInnerHTML: { __html: u } }) }),
190
- y ? /* @__PURE__ */ E("th", { children: /* @__PURE__ */ E("div", { children: "Standard(s)" }) }) : null,
191
- _ ? /* @__PURE__ */ E("th", { children: /* @__PURE__ */ E("div", { children: "Description" }) }) : null,
192
- h && h.map((e, t) => {
193
- let n = "";
194
- try {
195
- n = p[h.length - t - 1] || "";
196
- } catch {
197
- n = "";
198
- }
199
- return /* @__PURE__ */ E("th", { children: /* @__PURE__ */ E(I, { children: /* @__PURE__ */ D("thead", { children: [v ? /* @__PURE__ */ E("tr", { children: /* @__PURE__ */ E("td", { children: /* @__PURE__ */ E(L, { dangerouslySetInnerHTML: { __html: n } }) }) }) : null, /* @__PURE__ */ E("tr", { children: /* @__PURE__ */ E(R, { children: e === 1 ? `${e} point` : `${e} points` }) })] }) }) }, `table-header-${t}`);
200
- })
201
- ] }) }), /* @__PURE__ */ E("tbody", { children: f && f.map((e, t) => /* @__PURE__ */ E(M, {
202
- trait: e,
203
- traitIndex: t,
204
- showDescription: !!_,
205
- showStandards: !!y,
206
- scaleIndex: r,
207
- scorePointsValues: h,
208
- excludeZero: c
209
- }, `trait_${r}_${t}`)) })] }, `scale-${r}`)]
210
- }),
211
- /* @__PURE__ */ E(z, {
212
- show: e && !s,
213
- onClick: this.scrollRight,
214
- extraStyles: {
215
- right: 0,
216
- background: `linear-gradient(to left, white, ${d.background()})`
217
- },
218
- children: /* @__PURE__ */ E(m, {})
219
- })
220
- ] });
221
- }
222
- };
223
- B.propTypes = {
224
- scaleIndex: k.default.number,
225
- scale: k.default.shape({
226
- excludeZero: k.default.bool,
227
- maxPoints: k.default.number,
228
- scorePointsLabels: k.default.arrayOf(k.default.string),
229
- traitLabel: k.default.string,
230
- traits: k.default.arrayOf(k.default.shape({
231
- name: k.default.string,
232
- standards: k.default.arrayOf(k.default.string),
233
- scorePointsDescriptors: k.default.arrayOf(k.default.string),
234
- description: k.default.string
235
- }))
236
- }),
237
- showPointsLabels: k.default.bool,
238
- showDescription: k.default.bool,
239
- showStandards: k.default.bool,
240
- arrowsDisabled: k.default.bool
241
- };
242
- //#endregion
243
- //#region ../../../node_modules/.bun/@mui+material@7.3.11+eb26afe407ed7030/node_modules/@mui/material/esm/Link/linkClasses.js
244
- function V(e) {
245
- return y("MuiLink", e);
246
- }
247
- var H = o("MuiLink", [
248
- "root",
249
- "underlineNone",
250
- "underlineHover",
251
- "underlineAlways",
252
- "button",
253
- "focusVisible"
254
- ]), U = ({ theme: e, ownerState: t }) => {
255
- let n = t.color;
256
- if ("colorSpace" in e && e.colorSpace) {
257
- let r = s(e, `palette.${n}.main`) || s(e, `palette.${n}`) || t.color;
258
- return e.alpha(r, .4);
259
- }
260
- let r = s(e, `palette.${n}.main`, !1) || s(e, `palette.${n}`, !1) || t.color, i = s(e, `palette.${n}.mainChannel`) || s(e, `palette.${n}Channel`);
261
- return "vars" in e && i ? `rgba(${i} / 0.4)` : l(r, .4);
262
- }, W = {
263
- primary: !0,
264
- secondary: !0,
265
- error: !0,
266
- info: !0,
267
- success: !0,
268
- warning: !0,
269
- textPrimary: !0,
270
- textSecondary: !0,
271
- textDisabled: !0
272
- }, G = (e) => {
273
- let { classes: t, component: n, focusVisible: r, underline: a } = e;
274
- return c({ root: [
275
- "root",
276
- `underline${i(a)}`,
277
- n === "button" && "button",
278
- r && "focusVisible"
279
- ] }, V, t);
280
- }, K = h(_, {
281
- name: "MuiLink",
282
- slot: "Root",
283
- overridesResolver: (e, t) => {
284
- let { ownerState: n } = e;
285
- return [
286
- t.root,
287
- t[`underline${i(n.underline)}`],
288
- n.component === "button" && t.button
289
- ];
290
- }
291
- })(r(({ theme: e }) => ({ variants: [
292
- {
293
- props: { underline: "none" },
294
- style: { textDecoration: "none" }
295
- },
296
- {
297
- props: { underline: "hover" },
298
- style: {
299
- textDecoration: "none",
300
- "&:hover": { textDecoration: "underline" }
301
- }
302
- },
303
- {
304
- props: { underline: "always" },
305
- style: {
306
- textDecoration: "underline",
307
- "&:hover": { textDecorationColor: "inherit" }
308
- }
309
- },
310
- {
311
- props: ({ underline: e, ownerState: t }) => e === "always" && t.color !== "inherit",
312
- style: { textDecorationColor: "var(--Link-underlineColor)" }
313
- },
314
- {
315
- props: ({ underline: e, ownerState: t }) => e === "always" && t.color === "inherit",
316
- style: e.colorSpace ? { textDecorationColor: e.alpha("currentColor", .4) } : null
317
- },
318
- ...Object.entries(e.palette).filter(x()).map(([t]) => ({
319
- props: {
320
- underline: "always",
321
- color: t
322
- },
323
- style: { "--Link-underlineColor": e.alpha((e.vars || e).palette[t].main, .4) }
324
- })),
325
- {
326
- props: {
327
- underline: "always",
328
- color: "textPrimary"
329
- },
330
- style: { "--Link-underlineColor": e.alpha((e.vars || e).palette.text.primary, .4) }
331
- },
332
- {
333
- props: {
334
- underline: "always",
335
- color: "textSecondary"
336
- },
337
- style: { "--Link-underlineColor": e.alpha((e.vars || e).palette.text.secondary, .4) }
338
- },
339
- {
340
- props: {
341
- underline: "always",
342
- color: "textDisabled"
343
- },
344
- style: { "--Link-underlineColor": (e.vars || e).palette.text.disabled }
345
- },
346
- {
347
- props: { component: "button" },
348
- style: {
349
- position: "relative",
350
- WebkitTapHighlightColor: "transparent",
351
- backgroundColor: "transparent",
352
- outline: 0,
353
- border: 0,
354
- margin: 0,
355
- borderRadius: 0,
356
- padding: 0,
357
- cursor: "pointer",
358
- userSelect: "none",
359
- verticalAlign: "middle",
360
- MozAppearance: "none",
361
- WebkitAppearance: "none",
362
- "&::-moz-focus-inner": { borderStyle: "none" },
363
- [`&.${H.focusVisible}`]: { outline: "auto" }
364
- }
365
- }
366
- ] }))), q = /*#__PURE__*/ C.forwardRef(function(t, n) {
367
- let r = v({
368
- props: t,
369
- name: "MuiLink"
370
- }), i = p(), { className: a, color: o = "primary", component: s = "a", onBlur: c, onFocus: l, TypographyClasses: u, underline: d = "always", variant: f = "inherit", sx: m, ...h } = r, [g, _] = C.useState(!1), y = (t) => {
371
- e(t.target) || _(!1), c && c(t);
372
- }, b = (t) => {
373
- e(t.target) && _(!0), l && l(t);
374
- }, x = {
375
- ...r,
376
- color: o,
377
- component: s,
378
- focusVisible: g,
379
- underline: d,
380
- variant: f
381
- };
382
- return /*#__PURE__*/ E(K, {
383
- color: o,
384
- className: S(G(x).root, a),
385
- classes: u,
386
- component: s,
387
- onBlur: y,
388
- onFocus: b,
389
- ref: n,
390
- ownerState: x,
391
- variant: f,
392
- ...h,
393
- sx: [...W[o] === void 0 ? [{ color: o }] : [], ...Array.isArray(m) ? m : [m]],
394
- style: {
395
- ...h.style,
396
- ...d === "always" && o !== "inherit" && !W[o] && { "--Link-underlineColor": U({
397
- theme: i,
398
- ownerState: x
399
- }) }
400
- }
401
- });
402
- });
403
- //#endregion
404
- //#region src/delivery/main.tsx
405
- function J(e) {
406
- return typeof e == "function" || typeof e == "object" && !!e && typeof e.$$typeof == "symbol";
407
- }
408
- function Y(e, t) {
409
- 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;
410
- }
411
- var X = Y(a, "UiLayout") || Y(ee.UiLayout, "UiLayout"), Z = u, Q = Z.default, ee = Q && typeof Q == "object" ? Q : Z, $ = class extends w.Component {
412
- constructor(e) {
413
- super(e), this.state = {
414
- rubricOpen: !1,
415
- linkPrefix: "Show"
416
- }, this.toggleRubric = this.toggleRubric.bind(this);
417
- }
418
- toggleRubric() {
419
- this.setState({ rubricOpen: !this.state.rubricOpen }), this.setState({ linkPrefix: this.state.rubricOpen ? "Show" : "Hide" });
420
- }
421
- render() {
422
- let { model: e } = this.props, { animationsDisabled: n } = this.props, { extraCSSRules: r, halfScoring: i, scales: a, visible: o, pointLabels: s, description: c, standards: l, arrowsDisabled: u } = e || {};
423
- if (n ||= e.animationsDisabled, !a || !o) return null;
424
- let f = /* @__PURE__ */ D(X, {
425
- extraCSSRules: r,
426
- style: {
427
- fontFamily: "Cerebri Sans",
428
- color: d.text(),
429
- backgroundColor: d.background()
430
- },
431
- children: [i ? /* @__PURE__ */ E("div", {
432
- style: { marginBottom: "16px" },
433
- children: "* Half-point or in-between scores are permitted under this rubric."
434
- }) : null, a.map((e, t) => /* @__PURE__ */ E(B, {
435
- scale: e,
436
- scaleIndex: t,
437
- showPointsLabels: s,
438
- showDescription: c,
439
- showStandards: l,
440
- arrowsDisabled: u
441
- }, `scale_${t}`))]
442
- });
443
- return n ? f : /* @__PURE__ */ D(X, {
444
- extraCSSRules: r,
445
- style: {
446
- color: d.text(),
447
- backgroundColor: d.background()
448
- },
449
- children: [/* @__PURE__ */ D(q, {
450
- style: { backgroundColor: d.background() },
451
- href: this.dudUrl,
452
- onClick: this.toggleRubric,
453
- children: [this.state.linkPrefix, " Rubric"]
454
- }), /* @__PURE__ */ E(t, {
455
- style: { marginTop: "16px" },
456
- in: this.state.rubricOpen,
457
- timeout: {
458
- enter: 225,
459
- exit: 195
460
- },
461
- children: f
462
- })]
463
- });
464
- }
465
- };
466
- $.propTypes = {
467
- model: k.default.shape({
468
- halfScoring: k.default.bool,
469
- scales: k.default.arrayOf(k.default.shape({
470
- excludeZero: k.default.bool,
471
- maxPoints: k.default.number,
472
- scorePointsLabels: k.default.arrayOf(k.default.string),
473
- traitLabel: k.default.string,
474
- traits: k.default.arrayOf(k.default.shape({
475
- name: k.default.string,
476
- description: k.default.string,
477
- scorePointsDescriptors: k.default.arrayOf(k.default.string),
478
- standards: k.default.arrayOf(k.default.string)
479
- }))
480
- })),
481
- visible: k.default.bool,
482
- pointLabels: k.default.bool,
483
- description: k.default.bool,
484
- standards: k.default.bool,
485
- animationsDisabled: k.default.bool
486
- }),
487
- animationsDisabled: k.default.bool
488
- };
489
- //#endregion
490
- //#region src/delivery/index.ts
491
- var te = class extends HTMLElement {
492
- constructor() {
493
- super(), this._model = {}, this._session = null, this._root = null;
494
- }
495
- set model(e) {
496
- this._model = e, this.dispatchEvent(new O(this.tagName.toLowerCase(), this._session, !!this._model)), this._render();
497
- }
498
- set session(e) {
499
- this._session = e;
500
- }
501
- get session() {
502
- return this._session;
503
- }
504
- connectedCallback() {
505
- this._render();
506
- }
507
- _render() {
508
- let e = w.createElement($, {
509
- model: this._model,
510
- session: this._session
511
- });
512
- this._root ||= T(this), this._root.render(e), queueMicrotask(() => {
513
- b(this);
514
- });
515
- }
516
- disconnectedCallback() {
517
- this._root && this._root.unmount();
518
- }
519
- };
520
- //#endregion
521
- export { te as default };
522
-
523
- //# sourceMappingURL=index.js.map