@pie-lib/mask-markup 3.1.6-beta.2 → 4.0.0-next.20261002094057

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 (96) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +4 -0
  2. package/dist/choices/choice.d.ts +28 -0
  3. package/dist/choices/choice.js +92 -0
  4. package/dist/choices/index.d.ts +29 -0
  5. package/dist/choices/index.js +59 -0
  6. package/dist/componentize.d.ts +12 -0
  7. package/dist/componentize.js +4 -0
  8. package/dist/components/blank.d.ts +45 -0
  9. package/dist/components/blank.js +273 -0
  10. package/dist/components/dropdown.d.ts +37 -0
  11. package/dist/components/dropdown.js +311 -0
  12. package/dist/constructed-response.d.ts +44 -0
  13. package/dist/constructed-response.js +56 -0
  14. package/dist/customizable.d.ts +43 -0
  15. package/dist/customizable.js +8 -0
  16. package/dist/drag-in-the-blank.d.ts +47 -0
  17. package/dist/drag-in-the-blank.js +220 -0
  18. package/dist/index.d.ts +15 -0
  19. package/dist/index.js +7 -0
  20. package/dist/inline-dropdown.d.ts +44 -0
  21. package/dist/inline-dropdown.js +24 -0
  22. package/dist/keyboard-coordinates.d.ts +25 -0
  23. package/dist/keyboard-coordinates.js +49 -0
  24. package/dist/mask.d.ts +30 -0
  25. package/dist/mask.js +95 -0
  26. package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +16 -0
  27. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/index.js +17 -0
  28. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/cssPrefix.js +9 -0
  29. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/cssUnitless.js +26 -0
  30. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/hasOwn.js +11 -0
  31. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/isFunction.js +11 -0
  32. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/isObject.js +11 -0
  33. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/prefixInfo.js +24 -0
  34. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/prefixProperties.js +32 -0
  35. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/prefixer.js +29 -0
  36. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/camelize.js +14 -0
  37. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/hyphenRe.js +8 -0
  38. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/hyphenate.js +12 -0
  39. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/separate.js +11 -0
  40. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/toLowerFirst.js +10 -0
  41. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/toUpperFirst.js +10 -0
  42. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/toStyleObject.js +55 -0
  43. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/toStyleString.js +16 -0
  44. package/dist/serialization.d.ts +34 -0
  45. package/dist/serialization.js +132 -0
  46. package/dist/with-mask.d.ts +55 -0
  47. package/dist/with-mask.js +45 -0
  48. package/package.json +35 -19
  49. package/CHANGELOG.json +0 -17
  50. package/CHANGELOG.md +0 -1256
  51. package/lib/choices/choice.js +0 -120
  52. package/lib/choices/choice.js.map +0 -1
  53. package/lib/choices/index.js +0 -103
  54. package/lib/choices/index.js.map +0 -1
  55. package/lib/componentize.js +0 -21
  56. package/lib/componentize.js.map +0 -1
  57. package/lib/components/blank.js +0 -412
  58. package/lib/components/blank.js.map +0 -1
  59. package/lib/components/correct-input.js +0 -94
  60. package/lib/components/correct-input.js.map +0 -1
  61. package/lib/components/dropdown.js +0 -483
  62. package/lib/components/dropdown.js.map +0 -1
  63. package/lib/components/input.js +0 -50
  64. package/lib/components/input.js.map +0 -1
  65. package/lib/constructed-response.js +0 -101
  66. package/lib/constructed-response.js.map +0 -1
  67. package/lib/customizable.js +0 -42
  68. package/lib/customizable.js.map +0 -1
  69. package/lib/drag-in-the-blank.js +0 -254
  70. package/lib/drag-in-the-blank.js.map +0 -1
  71. package/lib/index.js +0 -55
  72. package/lib/index.js.map +0 -1
  73. package/lib/inline-dropdown.js +0 -40
  74. package/lib/inline-dropdown.js.map +0 -1
  75. package/lib/keyboard-coordinates.js +0 -156
  76. package/lib/mask.js +0 -198
  77. package/lib/mask.js.map +0 -1
  78. package/lib/serialization.js +0 -261
  79. package/lib/serialization.js.map +0 -1
  80. package/lib/with-mask.js +0 -97
  81. package/lib/with-mask.js.map +0 -1
  82. package/src/choices/choice.jsx +0 -100
  83. package/src/choices/index.jsx +0 -64
  84. package/src/componentize.js +0 -13
  85. package/src/components/blank.jsx +0 -431
  86. package/src/components/correct-input.jsx +0 -82
  87. package/src/components/dropdown.jsx +0 -423
  88. package/src/components/input.jsx +0 -48
  89. package/src/constructed-response.jsx +0 -87
  90. package/src/customizable.jsx +0 -34
  91. package/src/drag-in-the-blank.jsx +0 -241
  92. package/src/index.js +0 -16
  93. package/src/inline-dropdown.jsx +0 -29
  94. package/src/mask.jsx +0 -172
  95. package/src/serialization.js +0 -260
  96. package/src/with-mask.jsx +0 -75
@@ -1,156 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.closestDroppableKeyboardCoordinates = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var _core = require("@dnd-kit/core");
10
- function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
11
- function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12
- function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
13
- // Matches the id `drag-in-the-blank-dp.jsx` registers for the choice board's droppable.
14
- var CHOICE_BOARD_ID = 'drag-in-the-blank-droppable';
15
-
16
- /**
17
- * Custom keyboard coordinate getter for drag-in-the-blank's Tab-based placement.
18
- *
19
- * Tab/Shift+Tab cycle the dragged item directly onto the next/previous enabled
20
- * droppable — a blank (`mask-blank-drop-{id}`), sorted by on-screen position
21
- * (top-to-bottom, then left-to-right, since blanks sit inline in flowing text rather
22
- * than a simple list) — followed by the choice board as a fixed last stop (see below
23
- * for why the board isn't sorted alongside the blanks).
24
- *
25
- * Arrow keys are delegated to dnd-kit's own `defaultKeyboardCoordinateGetter`, leaving
26
- * the existing free-form arrow-key dragging behavior completely unchanged.
27
- */
28
- var closestDroppableKeyboardCoordinates = exports.closestDroppableKeyboardCoordinates = function closestDroppableKeyboardCoordinates(event, _ref) {
29
- var _active$data;
30
- var active = _ref.active,
31
- context = _ref.context,
32
- currentCoordinates = _ref.currentCoordinates;
33
- var code = event.code;
34
- var isTab = code === _core.KeyboardCode.Tab;
35
- var isArrow = code === _core.KeyboardCode.Down || code === _core.KeyboardCode.Up || code === _core.KeyboardCode.Left || code === _core.KeyboardCode.Right;
36
- if (!isTab && !isArrow) {
37
- return undefined;
38
- }
39
- if (isArrow) {
40
- return (0, _core.defaultKeyboardCoordinateGetter)(event, {
41
- context: context,
42
- currentCoordinates: currentCoordinates
43
- });
44
- }
45
- event.preventDefault();
46
- var droppableRects = context.droppableRects,
47
- droppableContainers = context.droppableContainers,
48
- collisionRect = context.collisionRect;
49
- if (!droppableRects || droppableRects.size === 0) {
50
- return currentCoordinates;
51
- }
52
-
53
- // A blank is itself a droppable for its own slot ("mask-blank-drop-{id}"), and
54
- // simultaneously draggable from that same slot — the same shape as match-list's
55
- // placed "target" tiles. That self drop-zone must never be treated as a navigable
56
- // target: exclude it outright rather than relying on a distance threshold.
57
- var draggedData = active === null || active === void 0 || (_active$data = active.data) === null || _active$data === void 0 ? void 0 : _active$data.current;
58
- var ownDropId = draggedData && draggedData.fromChoice === false && draggedData.id != null ? "mask-blank-drop-".concat(draggedData.id) : undefined;
59
- var targets = [];
60
- var boardTarget;
61
- var _iterator = _createForOfIteratorHelper(droppableContainers),
62
- _step;
63
- try {
64
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
65
- var _step$value = (0, _slicedToArray2["default"])(_step.value, 2),
66
- id = _step$value[0],
67
- container = _step$value[1];
68
- if (container !== null && container !== void 0 && container.disabled) continue;
69
- if (id === ownDropId) continue;
70
- var rect = droppableRects.get(id);
71
- if (!rect) continue;
72
- var center = {
73
- x: rect.left + rect.width / 2,
74
- y: rect.top + rect.height / 2
75
- };
76
- // Land the dragged item's own top-left corner at the target's center-left point,
77
- // rather than at the target's own top-left corner (avoids overshooting into a
78
- // neighboring droppable when the target is much wider than the dragged item).
79
- var dropPosition = {
80
- x: rect.left,
81
- y: rect.top + rect.height / 2
82
- };
83
- var target = {
84
- id: id,
85
- rect: rect,
86
- dropPosition: dropPosition,
87
- center: center
88
- };
89
- if (id === CHOICE_BOARD_ID) {
90
- boardTarget = target;
91
- } else {
92
- targets.push(target);
93
- }
94
- }
95
- } catch (err) {
96
- _iterator.e(err);
97
- } finally {
98
- _iterator.f();
99
- }
100
- if (targets.length === 0 && !boardTarget) {
101
- return currentCoordinates;
102
- }
103
- var reverse = event.shiftKey;
104
- targets.sort(function (a, b) {
105
- if (Math.abs(a.center.y - b.center.y) > 10) return a.center.y - b.center.y;
106
- return a.center.x - b.center.x;
107
- });
108
-
109
- // The choice board can be an arbitrarily large container — e.g. several choices
110
- // stacked beside the markup (`choicePosition: 'right'`/`'left'`) — so its own center
111
- // can land anywhere relative to the blanks it sits beside, including numerically
112
- // between two of them. Sorting it by position the same way as a blank would then
113
- // interleave it into the middle of the cycle, making a single Tab press jump over
114
- // more than one blank (confirmed live: with 3 stacked choices beside wrapped text,
115
- // the board's center fell between blank 2 and blank 3, so the very first Tab press
116
- // from the pool landed on blank 3, skipping blanks 1 and 2 entirely). Anchor it as a
117
- // fixed stop after every blank, in every layout, instead of trusting its own bounds.
118
- if (boardTarget) {
119
- targets.push(boardTarget);
120
- }
121
-
122
- // Find the current target: whichever target's rect actually contains the dragged
123
- // item's own center. This holds regardless of how the dragged item's size compares
124
- // to the target's — a compact chip landed (per `dropPosition` above) at a much wider
125
- // target's left edge is still contained within that target's rect. Comparing
126
- // distances between reconstructed centers instead breaks down for exactly that shape
127
- // (a small item in a much wider target): the reconstructed center can end up closer
128
- // to a completely different droppable than to the one the item is actually sitting
129
- // on, so the *next* press re-matches the wrong target and looks like it does nothing.
130
- var draggedCenter = collisionRect ? {
131
- x: collisionRect.left + collisionRect.width / 2,
132
- y: collisionRect.top + collisionRect.height / 2
133
- } : currentCoordinates;
134
- var currentIndex = targets.findIndex(function (t) {
135
- return draggedCenter.x >= t.rect.left && draggedCenter.x <= t.rect.right && draggedCenter.y >= t.rect.top && draggedCenter.y <= t.rect.bottom;
136
- });
137
-
138
- // Fall back to nearest-by-dropPosition if the dragged item's center isn't strictly
139
- // inside any target (e.g. mid-flight after a free arrow-key move).
140
- if (currentIndex === -1) {
141
- var minDist = Infinity;
142
- for (var i = 0; i < targets.length; i++) {
143
- var dist = distance(currentCoordinates, targets[i].dropPosition);
144
- if (dist < minDist) {
145
- minDist = dist;
146
- currentIndex = i;
147
- }
148
- }
149
- }
150
- var nextIndex = reverse ? (currentIndex - 1 + targets.length) % targets.length : (currentIndex + 1) % targets.length;
151
- return targets[nextIndex].dropPosition;
152
- };
153
- var distance = function distance(a, b) {
154
- return Math.sqrt(Math.pow(a.x - b.x, 2) + Math.pow(a.y - b.y, 2));
155
- };
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsIkNIT0lDRV9CT0FSRF9JRCIsImNsb3Nlc3REcm9wcGFibGVLZXlib2FyZENvb3JkaW5hdGVzIiwiZXhwb3J0cyIsImV2ZW50IiwiX3JlZiIsIl9hY3RpdmUkZGF0YSIsImFjdGl2ZSIsImNvbnRleHQiLCJjdXJyZW50Q29vcmRpbmF0ZXMiLCJjb2RlIiwiaXNUYWIiLCJLZXlib2FyZENvZGUiLCJUYWIiLCJpc0Fycm93IiwiRG93biIsIlVwIiwiTGVmdCIsIlJpZ2h0IiwidW5kZWZpbmVkIiwiZGVmYXVsdEtleWJvYXJkQ29vcmRpbmF0ZUdldHRlciIsInByZXZlbnREZWZhdWx0IiwiZHJvcHBhYmxlUmVjdHMiLCJkcm9wcGFibGVDb250YWluZXJzIiwiY29sbGlzaW9uUmVjdCIsInNpemUiLCJkcmFnZ2VkRGF0YSIsImRhdGEiLCJjdXJyZW50Iiwib3duRHJvcElkIiwiZnJvbUNob2ljZSIsImlkIiwiY29uY2F0IiwidGFyZ2V0cyIsImJvYXJkVGFyZ2V0IiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfc3RlcCR2YWx1ZSIsIl9zbGljZWRUb0FycmF5MiIsImNvbnRhaW5lciIsImRpc2FibGVkIiwicmVjdCIsImdldCIsImNlbnRlciIsIngiLCJsZWZ0Iiwid2lkdGgiLCJ5IiwidG9wIiwiaGVpZ2h0IiwiZHJvcFBvc2l0aW9uIiwidGFyZ2V0IiwicHVzaCIsImVyciIsInJldmVyc2UiLCJzaGlmdEtleSIsInNvcnQiLCJiIiwiTWF0aCIsImFicyIsImRyYWdnZWRDZW50ZXIiLCJjdXJyZW50SW5kZXgiLCJmaW5kSW5kZXgiLCJyaWdodCIsImJvdHRvbSIsIm1pbkRpc3QiLCJJbmZpbml0eSIsImkiLCJkaXN0IiwiZGlzdGFuY2UiLCJuZXh0SW5kZXgiLCJzcXJ0IiwicG93Il0sInNvdXJjZXMiOlsiLi4vc3JjL2tleWJvYXJkLWNvb3JkaW5hdGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHRLZXlib2FyZENvb3JkaW5hdGVHZXR0ZXIsIEtleWJvYXJkQ29kZSB9IGZyb20gJ0BkbmQta2l0L2NvcmUnO1xuXG4vLyBNYXRjaGVzIHRoZSBpZCBgZHJhZy1pbi10aGUtYmxhbmstZHAuanN4YCByZWdpc3RlcnMgZm9yIHRoZSBjaG9pY2UgYm9hcmQncyBkcm9wcGFibGUuXG5jb25zdCBDSE9JQ0VfQk9BUkRfSUQgPSAnZHJhZy1pbi10aGUtYmxhbmstZHJvcHBhYmxlJztcblxuLyoqXG4gKiBDdXN0b20ga2V5Ym9hcmQgY29vcmRpbmF0ZSBnZXR0ZXIgZm9yIGRyYWctaW4tdGhlLWJsYW5rJ3MgVGFiLWJhc2VkIHBsYWNlbWVudC5cbiAqXG4gKiBUYWIvU2hpZnQrVGFiIGN5Y2xlIHRoZSBkcmFnZ2VkIGl0ZW0gZGlyZWN0bHkgb250byB0aGUgbmV4dC9wcmV2aW91cyBlbmFibGVkXG4gKiBkcm9wcGFibGUg4oCUIGEgYmxhbmsgKGBtYXNrLWJsYW5rLWRyb3Ate2lkfWApLCBzb3J0ZWQgYnkgb24tc2NyZWVuIHBvc2l0aW9uXG4gKiAodG9wLXRvLWJvdHRvbSwgdGhlbiBsZWZ0LXRvLXJpZ2h0LCBzaW5jZSBibGFua3Mgc2l0IGlubGluZSBpbiBmbG93aW5nIHRleHQgcmF0aGVyXG4gKiB0aGFuIGEgc2ltcGxlIGxpc3QpIOKAlCBmb2xsb3dlZCBieSB0aGUgY2hvaWNlIGJvYXJkIGFzIGEgZml4ZWQgbGFzdCBzdG9wIChzZWUgYmVsb3dcbiAqIGZvciB3aHkgdGhlIGJvYXJkIGlzbid0IHNvcnRlZCBhbG9uZ3NpZGUgdGhlIGJsYW5rcykuXG4gKlxuICogQXJyb3cga2V5cyBhcmUgZGVsZWdhdGVkIHRvIGRuZC1raXQncyBvd24gYGRlZmF1bHRLZXlib2FyZENvb3JkaW5hdGVHZXR0ZXJgLCBsZWF2aW5nXG4gKiB0aGUgZXhpc3RpbmcgZnJlZS1mb3JtIGFycm93LWtleSBkcmFnZ2luZyBiZWhhdmlvciBjb21wbGV0ZWx5IHVuY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNsb3Nlc3REcm9wcGFibGVLZXlib2FyZENvb3JkaW5hdGVzID0gKGV2ZW50LCB7IGFjdGl2ZSwgY29udGV4dCwgY3VycmVudENvb3JkaW5hdGVzIH0pID0+IHtcbiAgY29uc3QgeyBjb2RlIH0gPSBldmVudDtcbiAgY29uc3QgaXNUYWIgPSBjb2RlID09PSBLZXlib2FyZENvZGUuVGFiO1xuICBjb25zdCBpc0Fycm93ID1cbiAgICBjb2RlID09PSBLZXlib2FyZENvZGUuRG93biB8fCBjb2RlID09PSBLZXlib2FyZENvZGUuVXAgfHwgY29kZSA9PT0gS2V5Ym9hcmRDb2RlLkxlZnQgfHwgY29kZSA9PT0gS2V5Ym9hcmRDb2RlLlJpZ2h0O1xuXG4gIGlmICghaXNUYWIgJiYgIWlzQXJyb3cpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGlzQXJyb3cpIHtcbiAgICByZXR1cm4gZGVmYXVsdEtleWJvYXJkQ29vcmRpbmF0ZUdldHRlcihldmVudCwgeyBjb250ZXh0LCBjdXJyZW50Q29vcmRpbmF0ZXMgfSk7XG4gIH1cblxuICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gIGNvbnN0IHsgZHJvcHBhYmxlUmVjdHMsIGRyb3BwYWJsZUNvbnRhaW5lcnMsIGNvbGxpc2lvblJlY3QgfSA9IGNvbnRleHQ7XG5cbiAgaWYgKCFkcm9wcGFibGVSZWN0cyB8fCBkcm9wcGFibGVSZWN0cy5zaXplID09PSAwKSB7XG4gICAgcmV0dXJuIGN1cnJlbnRDb29yZGluYXRlcztcbiAgfVxuXG4gIC8vIEEgYmxhbmsgaXMgaXRzZWxmIGEgZHJvcHBhYmxlIGZvciBpdHMgb3duIHNsb3QgKFwibWFzay1ibGFuay1kcm9wLXtpZH1cIiksIGFuZFxuICAvLyBzaW11bHRhbmVvdXNseSBkcmFnZ2FibGUgZnJvbSB0aGF0IHNhbWUgc2xvdCDigJQgdGhlIHNhbWUgc2hhcGUgYXMgbWF0Y2gtbGlzdCdzXG4gIC8vIHBsYWNlZCBcInRhcmdldFwiIHRpbGVzLiBUaGF0IHNlbGYgZHJvcC16b25lIG11c3QgbmV2ZXIgYmUgdHJlYXRlZCBhcyBhIG5hdmlnYWJsZVxuICAvLyB0YXJnZXQ6IGV4Y2x1ZGUgaXQgb3V0cmlnaHQgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBhIGRpc3RhbmNlIHRocmVzaG9sZC5cbiAgY29uc3QgZHJhZ2dlZERhdGEgPSBhY3RpdmU/LmRhdGE/LmN1cnJlbnQ7XG4gIGNvbnN0IG93bkRyb3BJZCA9XG4gICAgZHJhZ2dlZERhdGEgJiYgZHJhZ2dlZERhdGEuZnJvbUNob2ljZSA9PT0gZmFsc2UgJiYgZHJhZ2dlZERhdGEuaWQgIT0gbnVsbFxuICAgICAgPyBgbWFzay1ibGFuay1kcm9wLSR7ZHJhZ2dlZERhdGEuaWR9YFxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgdGFyZ2V0cyA9IFtdO1xuICBsZXQgYm9hcmRUYXJnZXQ7XG5cbiAgZm9yIChjb25zdCBbaWQsIGNvbnRhaW5lcl0gb2YgZHJvcHBhYmxlQ29udGFpbmVycykge1xuICAgIGlmIChjb250YWluZXI/LmRpc2FibGVkKSBjb250aW51ZTtcbiAgICBpZiAoaWQgPT09IG93bkRyb3BJZCkgY29udGludWU7XG5cbiAgICBjb25zdCByZWN0ID0gZHJvcHBhYmxlUmVjdHMuZ2V0KGlkKTtcbiAgICBpZiAoIXJlY3QpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgY2VudGVyID0ge1xuICAgICAgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsXG4gICAgICB5OiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMixcbiAgICB9O1xuICAgIC8vIExhbmQgdGhlIGRyYWdnZWQgaXRlbSdzIG93biB0b3AtbGVmdCBjb3JuZXIgYXQgdGhlIHRhcmdldCdzIGNlbnRlci1sZWZ0IHBvaW50LFxuICAgIC8vIHJhdGhlciB0aGFuIGF0IHRoZSB0YXJnZXQncyBvd24gdG9wLWxlZnQgY29ybmVyIChhdm9pZHMgb3ZlcnNob290aW5nIGludG8gYVxuICAgIC8vIG5laWdoYm9yaW5nIGRyb3BwYWJsZSB3aGVuIHRoZSB0YXJnZXQgaXMgbXVjaCB3aWRlciB0aGFuIHRoZSBkcmFnZ2VkIGl0ZW0pLlxuICAgIGNvbnN0IGRyb3BQb3NpdGlvbiA9IHtcbiAgICAgIHg6IHJlY3QubGVmdCxcbiAgICAgIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLFxuICAgIH07XG5cbiAgICBjb25zdCB0YXJnZXQgPSB7IGlkLCByZWN0LCBkcm9wUG9zaXRpb24sIGNlbnRlciB9O1xuXG4gICAgaWYgKGlkID09PSBDSE9JQ0VfQk9BUkRfSUQpIHtcbiAgICAgIGJvYXJkVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0YXJnZXRzLnB1c2godGFyZ2V0KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGFyZ2V0cy5sZW5ndGggPT09IDAgJiYgIWJvYXJkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIGN1cnJlbnRDb29yZGluYXRlcztcbiAgfVxuXG4gIGNvbnN0IHJldmVyc2UgPSBldmVudC5zaGlmdEtleTtcblxuICB0YXJnZXRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICBpZiAoTWF0aC5hYnMoYS5jZW50ZXIueSAtIGIuY2VudGVyLnkpID4gMTApIHJldHVybiBhLmNlbnRlci55IC0gYi5jZW50ZXIueTtcbiAgICByZXR1cm4gYS5jZW50ZXIueCAtIGIuY2VudGVyLng7XG4gIH0pO1xuXG4gIC8vIFRoZSBjaG9pY2UgYm9hcmQgY2FuIGJlIGFuIGFyYml0cmFyaWx5IGxhcmdlIGNvbnRhaW5lciDigJQgZS5nLiBzZXZlcmFsIGNob2ljZXNcbiAgLy8gc3RhY2tlZCBiZXNpZGUgdGhlIG1hcmt1cCAoYGNob2ljZVBvc2l0aW9uOiAncmlnaHQnYC9gJ2xlZnQnYCkg4oCUIHNvIGl0cyBvd24gY2VudGVyXG4gIC8vIGNhbiBsYW5kIGFueXdoZXJlIHJlbGF0aXZlIHRvIHRoZSBibGFua3MgaXQgc2l0cyBiZXNpZGUsIGluY2x1ZGluZyBudW1lcmljYWxseVxuICAvLyBiZXR3ZWVuIHR3byBvZiB0aGVtLiBTb3J0aW5nIGl0IGJ5IHBvc2l0aW9uIHRoZSBzYW1lIHdheSBhcyBhIGJsYW5rIHdvdWxkIHRoZW5cbiAgLy8gaW50ZXJsZWF2ZSBpdCBpbnRvIHRoZSBtaWRkbGUgb2YgdGhlIGN5Y2xlLCBtYWtpbmcgYSBzaW5nbGUgVGFiIHByZXNzIGp1bXAgb3ZlclxuICAvLyBtb3JlIHRoYW4gb25lIGJsYW5rIChjb25maXJtZWQgbGl2ZTogd2l0aCAzIHN0YWNrZWQgY2hvaWNlcyBiZXNpZGUgd3JhcHBlZCB0ZXh0LFxuICAvLyB0aGUgYm9hcmQncyBjZW50ZXIgZmVsbCBiZXR3ZWVuIGJsYW5rIDIgYW5kIGJsYW5rIDMsIHNvIHRoZSB2ZXJ5IGZpcnN0IFRhYiBwcmVzc1xuICAvLyBmcm9tIHRoZSBwb29sIGxhbmRlZCBvbiBibGFuayAzLCBza2lwcGluZyBibGFua3MgMSBhbmQgMiBlbnRpcmVseSkuIEFuY2hvciBpdCBhcyBhXG4gIC8vIGZpeGVkIHN0b3AgYWZ0ZXIgZXZlcnkgYmxhbmssIGluIGV2ZXJ5IGxheW91dCwgaW5zdGVhZCBvZiB0cnVzdGluZyBpdHMgb3duIGJvdW5kcy5cbiAgaWYgKGJvYXJkVGFyZ2V0KSB7XG4gICAgdGFyZ2V0cy5wdXNoKGJvYXJkVGFyZ2V0KTtcbiAgfVxuXG4gIC8vIEZpbmQgdGhlIGN1cnJlbnQgdGFyZ2V0OiB3aGljaGV2ZXIgdGFyZ2V0J3MgcmVjdCBhY3R1YWxseSBjb250YWlucyB0aGUgZHJhZ2dlZFxuICAvLyBpdGVtJ3Mgb3duIGNlbnRlci4gVGhpcyBob2xkcyByZWdhcmRsZXNzIG9mIGhvdyB0aGUgZHJhZ2dlZCBpdGVtJ3Mgc2l6ZSBjb21wYXJlc1xuICAvLyB0byB0aGUgdGFyZ2V0J3Mg4oCUIGEgY29tcGFjdCBjaGlwIGxhbmRlZCAocGVyIGBkcm9wUG9zaXRpb25gIGFib3ZlKSBhdCBhIG11Y2ggd2lkZXJcbiAgLy8gdGFyZ2V0J3MgbGVmdCBlZGdlIGlzIHN0aWxsIGNvbnRhaW5lZCB3aXRoaW4gdGhhdCB0YXJnZXQncyByZWN0LiBDb21wYXJpbmdcbiAgLy8gZGlzdGFuY2VzIGJldHdlZW4gcmVjb25zdHJ1Y3RlZCBjZW50ZXJzIGluc3RlYWQgYnJlYWtzIGRvd24gZm9yIGV4YWN0bHkgdGhhdCBzaGFwZVxuICAvLyAoYSBzbWFsbCBpdGVtIGluIGEgbXVjaCB3aWRlciB0YXJnZXQpOiB0aGUgcmVjb25zdHJ1Y3RlZCBjZW50ZXIgY2FuIGVuZCB1cCBjbG9zZXJcbiAgLy8gdG8gYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBkcm9wcGFibGUgdGhhbiB0byB0aGUgb25lIHRoZSBpdGVtIGlzIGFjdHVhbGx5IHNpdHRpbmdcbiAgLy8gb24sIHNvIHRoZSAqbmV4dCogcHJlc3MgcmUtbWF0Y2hlcyB0aGUgd3JvbmcgdGFyZ2V0IGFuZCBsb29rcyBsaWtlIGl0IGRvZXMgbm90aGluZy5cbiAgY29uc3QgZHJhZ2dlZENlbnRlciA9IGNvbGxpc2lvblJlY3RcbiAgICA/IHsgeDogY29sbGlzaW9uUmVjdC5sZWZ0ICsgY29sbGlzaW9uUmVjdC53aWR0aCAvIDIsIHk6IGNvbGxpc2lvblJlY3QudG9wICsgY29sbGlzaW9uUmVjdC5oZWlnaHQgLyAyIH1cbiAgICA6IGN1cnJlbnRDb29yZGluYXRlcztcblxuICBsZXQgY3VycmVudEluZGV4ID0gdGFyZ2V0cy5maW5kSW5kZXgoXG4gICAgKHQpID0+XG4gICAgICBkcmFnZ2VkQ2VudGVyLnggPj0gdC5yZWN0LmxlZnQgJiZcbiAgICAgIGRyYWdnZWRDZW50ZXIueCA8PSB0LnJlY3QucmlnaHQgJiZcbiAgICAgIGRyYWdnZWRDZW50ZXIueSA+PSB0LnJlY3QudG9wICYmXG4gICAgICBkcmFnZ2VkQ2VudGVyLnkgPD0gdC5yZWN0LmJvdHRvbSxcbiAgKTtcblxuICAvLyBGYWxsIGJhY2sgdG8gbmVhcmVzdC1ieS1kcm9wUG9zaXRpb24gaWYgdGhlIGRyYWdnZWQgaXRlbSdzIGNlbnRlciBpc24ndCBzdHJpY3RseVxuICAvLyBpbnNpZGUgYW55IHRhcmdldCAoZS5nLiBtaWQtZmxpZ2h0IGFmdGVyIGEgZnJlZSBhcnJvdy1rZXkgbW92ZSkuXG4gIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB7XG4gICAgbGV0IG1pbkRpc3QgPSBJbmZpbml0eTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZGlzdCA9IGRpc3RhbmNlKGN1cnJlbnRDb29yZGluYXRlcywgdGFyZ2V0c1tpXS5kcm9wUG9zaXRpb24pO1xuXG4gICAgICBpZiAoZGlzdCA8IG1pbkRpc3QpIHtcbiAgICAgICAgbWluRGlzdCA9IGRpc3Q7XG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgbmV4dEluZGV4ID0gcmV2ZXJzZVxuICAgID8gKGN1cnJlbnRJbmRleCAtIDEgKyB0YXJnZXRzLmxlbmd0aCkgJSB0YXJnZXRzLmxlbmd0aFxuICAgIDogKGN1cnJlbnRJbmRleCArIDEpICUgdGFyZ2V0cy5sZW5ndGg7XG5cbiAgcmV0dXJuIHRhcmdldHNbbmV4dEluZGV4XS5kcm9wUG9zaXRpb247XG59O1xuXG5jb25zdCBkaXN0YW5jZSA9IChhLCBiKSA9PiBNYXRoLnNxcnQoKGEueCAtIGIueCkgKiogMiArIChhLnkgLSBiLnkpICoqIDIpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLEtBQUEsR0FBQUMsT0FBQTtBQUE4RSxTQUFBQywyQkFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEseUJBQUFDLE1B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
package/lib/mask.js DELETED
@@ -1,198 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.renderChildren = exports["default"] = void 0;
8
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
- var _react = _interopRequireDefault(require("react"));
16
- var _propTypes = _interopRequireDefault(require("prop-types"));
17
- var _lodashEs = require("lodash-es");
18
- var _styles = require("@mui/material/styles");
19
- var _mathRendering = require("@pie-lib/math-rendering");
20
- var _serialization = require("./serialization");
21
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
23
- function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
24
- function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
25
- var Paragraph = (0, _styles.styled)('div')(function (_ref) {
26
- var theme = _ref.theme;
27
- return {
28
- paddingTop: theme.spacing(0.5),
29
- paddingBottom: theme.spacing(0.5)
30
- };
31
- });
32
- var Spacer = (0, _styles.styled)('span')(function () {
33
- return {
34
- display: 'inline-block',
35
- width: '.75em'
36
- };
37
- });
38
- var restrictWhitespaceTypes = ['tbody', 'tr'];
39
- var addText = function addText(parentNode, text) {
40
- var isWhitespace = text.trim() === '';
41
- var parentType = parentNode && parentNode.type;
42
- if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {
43
- return undefined;
44
- } else {
45
- return text;
46
- }
47
- };
48
- var getMark = function getMark(n) {
49
- var mark = n.leaves.find(function (leave) {
50
- return (0, _lodashEs.get)(leave, 'marks', []).length;
51
- });
52
- if (mark) {
53
- return mark.marks[0];
54
- }
55
- return null;
56
- };
57
- var _renderChildren = exports.renderChildren = function renderChildren(layout, value, onChange, rootRenderChildren, parentNode, elementType) {
58
- if (!value) {
59
- return null;
60
- }
61
- var children = [];
62
- (layout.nodes || []).forEach(function (n, index) {
63
- var key = n.type ? "".concat(n.type, "-").concat(index) : "".concat(index);
64
- if (n.isMath) {
65
- children.push(/*#__PURE__*/_react["default"].createElement("span", {
66
- dangerouslySetInnerHTML: {
67
- __html: "<math displaystyle=\"true\">".concat(n.nodes[0].innerHTML, "</math>")
68
- }
69
- }));
70
- return children;
71
- }
72
- if (rootRenderChildren) {
73
- var c = rootRenderChildren(n, value, onChange);
74
- if (c) {
75
- var _n$data;
76
- var isDndComponent = ((_n$data = n.data) === null || _n$data === void 0 || (_n$data = _n$data.dataset) === null || _n$data === void 0 ? void 0 : _n$data.component) === 'blank';
77
- if (isDndComponent) {
78
- children.push(/*#__PURE__*/_react["default"].createElement(Spacer, {
79
- key: "spacer-".concat(index)
80
- }));
81
- }
82
- children.push(c);
83
- if (isDndComponent) {
84
- children.push(/*#__PURE__*/_react["default"].createElement(Spacer, {
85
- key: "spacer-".concat(index)
86
- }));
87
- }
88
- return;
89
- }
90
- }
91
- if (n.object === 'text') {
92
- var content = n.leaves.reduce(function (acc, l) {
93
- var t = l.text;
94
- var extraText = addText(parentNode, t);
95
- return extraText ? acc + extraText : acc;
96
- }, '');
97
- var mark = getMark(n);
98
- if (mark) {
99
- var markKey;
100
- for (markKey in _serialization.MARK_TAGS) {
101
- if (_serialization.MARK_TAGS[markKey] === mark.type) {
102
- var Tag = markKey;
103
- children.push(/*#__PURE__*/_react["default"].createElement(Tag, {
104
- key: key
105
- }, content));
106
- break;
107
- }
108
- }
109
- } else if (content.length > 0) {
110
- children.push(content);
111
- }
112
- } else {
113
- var subNodes = _renderChildren(n, value, onChange, rootRenderChildren, n, elementType);
114
- if (n.type === 'p' || n.type === 'paragraph') {
115
- children.push(/*#__PURE__*/_react["default"].createElement(Paragraph, {
116
- key: key
117
- }, subNodes));
118
- } else {
119
- var _Tag = n.type;
120
- if (n.nodes && n.nodes.length > 0) {
121
- children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
122
- key: key
123
- }, n.data.attributes), subNodes));
124
- } else {
125
- children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
126
- key: key
127
- }, n.data.attributes)));
128
- }
129
- }
130
- }
131
- });
132
- return children;
133
- };
134
- var MaskContainer = (0, _styles.styled)('div')(function () {
135
- return {
136
- display: 'initial',
137
- '&:not(.MathJax) table': {
138
- borderCollapse: 'collapse'
139
- },
140
- // align table content to left as per STAR requirement PD-3687
141
- '&:not(.MathJax) table td, &:not(.MathJax) table th': {
142
- padding: '8px 12px',
143
- textAlign: 'left'
144
- }
145
- };
146
- });
147
-
148
- /**
149
- * Renders a layout that uses the slate.js Value model structure.
150
- */
151
- var Mask = exports["default"] = /*#__PURE__*/function (_React$Component) {
152
- function Mask(props) {
153
- var _this;
154
- (0, _classCallCheck2["default"])(this, Mask);
155
- _this = _callSuper(this, Mask, [props]);
156
- (0, _defineProperty2["default"])(_this, "handleChange", function (id, value) {
157
- var data = _objectSpread(_objectSpread({}, _this.props.value), {}, (0, _defineProperty2["default"])({}, id, value));
158
- _this.props.onChange(data);
159
- });
160
- _this.internalContainerRef = /*#__PURE__*/_react["default"].createRef();
161
- return _this;
162
- }
163
- (0, _inherits2["default"])(Mask, _React$Component);
164
- return (0, _createClass2["default"])(Mask, [{
165
- key: "componentDidMount",
166
- value: function componentDidMount() {
167
- var containerRef = this.props.containerRef || this.internalContainerRef;
168
- if (containerRef.current && typeof _mathRendering.renderMath === 'function') {
169
- (0, _mathRendering.renderMath)(containerRef.current);
170
- }
171
- }
172
- }, {
173
- key: "render",
174
- value: function render() {
175
- var _this$props = this.props,
176
- value = _this$props.value,
177
- layout = _this$props.layout,
178
- elementType = _this$props.elementType,
179
- containerRef = _this$props.containerRef;
180
- var children = _renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);
181
- var ref = containerRef || this.internalContainerRef;
182
- return /*#__PURE__*/_react["default"].createElement(MaskContainer, {
183
- ref: ref
184
- }, children);
185
- }
186
- }]);
187
- }(_react["default"].Component);
188
- (0, _defineProperty2["default"])(Mask, "propTypes", {
189
- renderChildren: _propTypes["default"].func,
190
- layout: _propTypes["default"].object,
191
- value: _propTypes["default"].object,
192
- onChange: _propTypes["default"].func,
193
- elementType: _propTypes["default"].string,
194
- containerRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].shape({
195
- current: _propTypes["default"].instanceOf(Element)
196
- })])
197
- });
198
- //# sourceMappingURL=mask.js.map
package/lib/mask.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_styles","_mathRendering","_serialization","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Paragraph","styled","_ref","theme","paddingTop","spacing","paddingBottom","Spacer","display","width","restrictWhitespaceTypes","addText","parentNode","text","isWhitespace","trim","parentType","type","includes","undefined","getMark","n","mark","leaves","find","leave","get","marks","renderChildren","exports","layout","value","onChange","rootRenderChildren","elementType","children","nodes","index","key","concat","isMath","createElement","dangerouslySetInnerHTML","__html","innerHTML","c","_n$data","isDndComponent","data","dataset","component","object","content","reduce","acc","l","extraText","markKey","MARK_TAGS","Tag","subNodes","_Tag","_extends2","attributes","MaskContainer","borderCollapse","padding","textAlign","Mask","_React$Component","props","_this","_classCallCheck2","id","internalContainerRef","React","createRef","_inherits2","_createClass2","componentDidMount","containerRef","current","renderMath","render","_this$props","handleChange","ref","Component","PropTypes","func","string","oneOfType","shape","instanceOf","Element"],"sources":["../src/mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { get } from 'lodash-es';\nimport { styled } from '@mui/material/styles';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { MARK_TAGS } from './serialization';\n\nconst Paragraph = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(0.5),\n paddingBottom: theme.spacing(0.5),\n}));\n\nconst Spacer = styled('span')(() => ({\n display: 'inline-block',\n width: '.75em',\n}));\n\nconst restrictWhitespaceTypes = ['tbody', 'tr'];\n\nconst addText = (parentNode, text) => {\n const isWhitespace = text.trim() === '';\n const parentType = parentNode && parentNode.type;\n\n if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {\n return undefined;\n } else {\n return text;\n }\n};\n\nconst getMark = (n) => {\n const mark = n.leaves.find((leave) => get(leave, 'marks', []).length);\n\n if (mark) {\n return mark.marks[0];\n }\n\n return null;\n};\n\nexport const renderChildren = (layout, value, onChange, rootRenderChildren, parentNode, elementType) => {\n if (!value) {\n return null;\n }\n\n const children = [];\n\n (layout.nodes || []).forEach((n, index) => {\n const key = n.type ? `${n.type}-${index}` : `${index}`;\n\n if (n.isMath) {\n children.push(\n <span\n dangerouslySetInnerHTML={{\n __html: `<math displaystyle=\"true\">${n.nodes[0].innerHTML}</math>`,\n }}\n />,\n );\n return children;\n }\n\n if (rootRenderChildren) {\n const c = rootRenderChildren(n, value, onChange);\n if (c) {\n const isDndComponent = n.data?.dataset?.component === 'blank';\n\n if (isDndComponent) {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n\n children.push(c);\n\n if (isDndComponent) {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n return;\n }\n }\n\n if (n.object === 'text') {\n const content = n.leaves.reduce((acc, l) => {\n const t = l.text;\n const extraText = addText(parentNode, t);\n return extraText ? acc + extraText : acc;\n }, '');\n const mark = getMark(n);\n\n if (mark) {\n let markKey;\n\n for (markKey in MARK_TAGS) {\n if (MARK_TAGS[markKey] === mark.type) {\n const Tag = markKey;\n\n children.push(<Tag key={key}>{content}</Tag>);\n break;\n }\n }\n } else if (content.length > 0) {\n children.push(content);\n }\n } else {\n const subNodes = renderChildren(n, value, onChange, rootRenderChildren, n, elementType);\n if (n.type === 'p' || n.type === 'paragraph') {\n children.push(<Paragraph key={key}>{subNodes}</Paragraph>);\n } else {\n const Tag = n.type;\n if (n.nodes && n.nodes.length > 0) {\n children.push(\n <Tag key={key} {...n.data.attributes}>\n {subNodes}\n </Tag>,\n );\n } else {\n children.push(<Tag key={key} {...n.data.attributes} />);\n }\n }\n }\n });\n return children;\n};\n\nconst MaskContainer = styled('div')(() => ({\n display: 'initial',\n '&:not(.MathJax) table': {\n borderCollapse: 'collapse',\n },\n // align table content to left as per STAR requirement PD-3687\n '&:not(.MathJax) table td, &:not(.MathJax) table th': {\n padding: '8px 12px',\n textAlign: 'left',\n },\n}));\n\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n constructor(props) {\n super(props);\n this.internalContainerRef = React.createRef();\n }\n\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n elementType: PropTypes.string,\n containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\n };\n\n componentDidMount() {\n const containerRef = this.props.containerRef || this.internalContainerRef;\n if (containerRef.current && typeof renderMath === 'function') {\n renderMath(containerRef.current);\n }\n }\n\n handleChange = (id, value) => {\n const data = { ...this.props.value, [id]: value };\n this.props.onChange(data);\n };\n\n render() {\n const { value, layout, elementType, containerRef } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);\n const ref = containerRef || this.internalContainerRef;\n\n return <MaskContainer ref={ref}>{children}</MaskContainer>;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AAA4C,SAAAM,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAoB,WAAAlB,CAAA,EAAAI,CAAA,EAAAN,CAAA,WAAAM,CAAA,OAAAe,gBAAA,aAAAf,CAAA,OAAAgB,2BAAA,aAAApB,CAAA,EAAAqB,yBAAA,KAAAC,OAAA,CAAAC,SAAA,CAAAnB,CAAA,EAAAN,CAAA,YAAAqB,gBAAA,aAAAnB,CAAA,EAAAwB,WAAA,IAAApB,CAAA,CAAAK,KAAA,CAAAT,CAAA,EAAAF,CAAA;AAAA,SAAAuB,0BAAA,cAAArB,CAAA,IAAAyB,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAN,OAAA,CAAAC,SAAA,CAAAE,OAAA,iCAAAzB,CAAA,aAAAqB,yBAAA,YAAAA,0BAAA,aAAArB,CAAA;AAE5C,IAAM6B,SAAS,GAAG,IAAAC,cAAM,EAAC,KAAK,CAAC,CAAC,UAAAC,IAAA;EAAA,IAAGC,KAAK,GAAAD,IAAA,CAALC,KAAK;EAAA,OAAQ;IAC9CC,UAAU,EAAED,KAAK,CAACE,OAAO,CAAC,GAAG,CAAC;IAC9BC,aAAa,EAAEH,KAAK,CAACE,OAAO,CAAC,GAAG;EAClC,CAAC;AAAA,CAAC,CAAC;AAEH,IAAME,MAAM,GAAG,IAAAN,cAAM,EAAC,MAAM,CAAC,CAAC;EAAA,OAAO;IACnCO,OAAO,EAAE,cAAc;IACvBC,KAAK,EAAE;EACT,CAAC;AAAA,CAAC,CAAC;AAEH,IAAMC,uBAAuB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC;AAE/C,IAAMC,OAAO,GAAG,SAAVA,OAAOA,CAAIC,UAAU,EAAEC,IAAI,EAAK;EACpC,IAAMC,YAAY,GAAGD,IAAI,CAACE,IAAI,CAAC,CAAC,KAAK,EAAE;EACvC,IAAMC,UAAU,GAAGJ,UAAU,IAAIA,UAAU,CAACK,IAAI;EAEhD,IAAIH,YAAY,IAAIJ,uBAAuB,CAACQ,QAAQ,CAACF,UAAU,CAAC,EAAE;IAChE,OAAOG,SAAS;EAClB,CAAC,MAAM;IACL,OAAON,IAAI;EACb;AACF,CAAC;AAED,IAAMO,OAAO,GAAG,SAAVA,OAAOA,CAAIC,CAAC,EAAK;EACrB,IAAMC,IAAI,GAAGD,CAAC,CAACE,MAAM,CAACC,IAAI,CAAC,UAACC,KAAK;IAAA,OAAK,IAAAC,aAAG,EAACD,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC1C,MAAM;EAAA,EAAC;EAErE,IAAIuC,IAAI,EAAE;IACR,OAAOA,IAAI,CAACK,KAAK,CAAC,CAAC,CAAC;EACtB;EAEA,OAAO,IAAI;AACb,CAAC;AAEM,IAAMC,eAAc,GAAAC,OAAA,CAAAD,cAAA,GAAG,SAAjBA,cAAcA,CAAIE,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,kBAAkB,EAAErB,UAAU,EAAEsB,WAAW,EAAK;EACtG,IAAI,CAACH,KAAK,EAAE;IACV,OAAO,IAAI;EACb;EAEA,IAAMI,QAAQ,GAAG,EAAE;EAEnB,CAACL,MAAM,CAACM,KAAK,IAAI,EAAE,EAAEpD,OAAO,CAAC,UAACqC,CAAC,EAAEgB,KAAK,EAAK;IACzC,IAAMC,GAAG,GAAGjB,CAAC,CAACJ,IAAI,MAAAsB,MAAA,CAAMlB,CAAC,CAACJ,IAAI,OAAAsB,MAAA,CAAIF,KAAK,OAAAE,MAAA,CAAQF,KAAK,CAAE;IAEtD,IAAIhB,CAAC,CAACmB,MAAM,EAAE;MACZL,QAAQ,CAACxD,IAAI,cACXnB,MAAA,YAAAiF,aAAA;QACEC,uBAAuB,EAAE;UACvBC,MAAM,iCAAAJ,MAAA,CAA+BlB,CAAC,CAACe,KAAK,CAAC,CAAC,CAAC,CAACQ,SAAS;QAC3D;MAAE,CACH,CACH,CAAC;MACD,OAAOT,QAAQ;IACjB;IAEA,IAAIF,kBAAkB,EAAE;MACtB,IAAMY,CAAC,GAAGZ,kBAAkB,CAACZ,CAAC,EAAEU,KAAK,EAAEC,QAAQ,CAAC;MAChD,IAAIa,CAAC,EAAE;QAAA,IAAAC,OAAA;QACL,IAAMC,cAAc,GAAG,EAAAD,OAAA,GAAAzB,CAAC,CAAC2B,IAAI,cAAAF,OAAA,gBAAAA,OAAA,GAANA,OAAA,CAAQG,OAAO,cAAAH,OAAA,uBAAfA,OAAA,CAAiBI,SAAS,MAAK,OAAO;QAE7D,IAAIH,cAAc,EAAE;UAClBZ,QAAQ,CAACxD,IAAI,cAACnB,MAAA,YAAAiF,aAAA,CAAClC,MAAM;YAAC+B,GAAG,YAAAC,MAAA,CAAYF,KAAK;UAAG,CAAE,CAAC,CAAC;QACnD;QAEAF,QAAQ,CAACxD,IAAI,CAACkE,CAAC,CAAC;QAEhB,IAAIE,cAAc,EAAE;UAClBZ,QAAQ,CAACxD,IAAI,cAACnB,MAAA,YAAAiF,aAAA,CAAClC,MAAM;YAAC+B,GAAG,YAAAC,MAAA,CAAYF,KAAK;UAAG,CAAE,CAAC,CAAC;QACnD;QACA;MACF;IACF;IAEA,IAAIhB,CAAC,CAAC8B,MAAM,KAAK,MAAM,EAAE;MACvB,IAAMC,OAAO,GAAG/B,CAAC,CAACE,MAAM,CAAC8B,MAAM,CAAC,UAACC,GAAG,EAAEC,CAAC,EAAK;QAC1C,IAAMpF,CAAC,GAAGoF,CAAC,CAAC1C,IAAI;QAChB,IAAM2C,SAAS,GAAG7C,OAAO,CAACC,UAAU,EAAEzC,CAAC,CAAC;QACxC,OAAOqF,SAAS,GAAGF,GAAG,GAAGE,SAAS,GAAGF,GAAG;MAC1C,CAAC,EAAE,EAAE,CAAC;MACN,IAAMhC,IAAI,GAAGF,OAAO,CAACC,CAAC,CAAC;MAEvB,IAAIC,IAAI,EAAE;QACR,IAAImC,OAAO;QAEX,KAAKA,OAAO,IAAIC,wBAAS,EAAE;UACzB,IAAIA,wBAAS,CAACD,OAAO,CAAC,KAAKnC,IAAI,CAACL,IAAI,EAAE;YACpC,IAAM0C,GAAG,GAAGF,OAAO;YAEnBtB,QAAQ,CAACxD,IAAI,cAACnB,MAAA,YAAAiF,aAAA,CAACkB,GAAG;cAACrB,GAAG,EAAEA;YAAI,GAAEc,OAAa,CAAC,CAAC;YAC7C;UACF;QACF;MACF,CAAC,MAAM,IAAIA,OAAO,CAACrE,MAAM,GAAG,CAAC,EAAE;QAC7BoD,QAAQ,CAACxD,IAAI,CAACyE,OAAO,CAAC;MACxB;IACF,CAAC,MAAM;MACL,IAAMQ,QAAQ,GAAGhC,eAAc,CAACP,CAAC,EAAEU,KAAK,EAAEC,QAAQ,EAAEC,kBAAkB,EAAEZ,CAAC,EAAEa,WAAW,CAAC;MACvF,IAAIb,CAAC,CAACJ,IAAI,KAAK,GAAG,IAAII,CAAC,CAACJ,IAAI,KAAK,WAAW,EAAE;QAC5CkB,QAAQ,CAACxD,IAAI,cAACnB,MAAA,YAAAiF,aAAA,CAACzC,SAAS;UAACsC,GAAG,EAAEA;QAAI,GAAEsB,QAAoB,CAAC,CAAC;MAC5D,CAAC,MAAM;QACL,IAAMD,IAAG,GAAGtC,CAAC,CAACJ,IAAI;QAClB,IAAII,CAAC,CAACe,KAAK,IAAIf,CAAC,CAACe,KAAK,CAACrD,MAAM,GAAG,CAAC,EAAE;UACjCoD,QAAQ,CAACxD,IAAI,cACXnB,MAAA,YAAAiF,aAAA,CAACoB,IAAG,MAAAC,SAAA;YAACxB,GAAG,EAAEA;UAAI,GAAKjB,CAAC,CAAC2B,IAAI,CAACe,UAAU,GACjCH,QACE,CACP,CAAC;QACH,CAAC,MAAM;UACLzB,QAAQ,CAACxD,IAAI,cAACnB,MAAA,YAAAiF,aAAA,CAACoB,IAAG,MAAAC,SAAA;YAACxB,GAAG,EAAEA;UAAI,GAAKjB,CAAC,CAAC2B,IAAI,CAACe,UAAU,CAAG,CAAC,CAAC;QACzD;MACF;IACF;EACF,CAAC,CAAC;EACF,OAAO5B,QAAQ;AACjB,CAAC;AAED,IAAM6B,aAAa,GAAG,IAAA/D,cAAM,EAAC,KAAK,CAAC,CAAC;EAAA,OAAO;IACzCO,OAAO,EAAE,SAAS;IAClB,uBAAuB,EAAE;MACvByD,cAAc,EAAE;IAClB,CAAC;IACD;IACA,oDAAoD,EAAE;MACpDC,OAAO,EAAE,UAAU;MACnBC,SAAS,EAAE;IACb;EACF,CAAC;AAAA,CAAC,CAAC;;AAEH;AACA;AACA;AAFA,IAGqBC,IAAI,GAAAvC,OAAA,qCAAAwC,gBAAA;EACvB,SAAAD,KAAYE,KAAK,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,mBAAAJ,IAAA;IACjBG,KAAA,GAAAlF,UAAA,OAAA+E,IAAA,GAAME,KAAK;IAAE,IAAArF,gBAAA,aAAAsF,KAAA,kBAoBA,UAACE,EAAE,EAAE1C,KAAK,EAAK;MAC5B,IAAMiB,IAAI,GAAAnE,aAAA,CAAAA,aAAA,KAAQ0F,KAAA,CAAKD,KAAK,CAACvC,KAAK,WAAA9C,gBAAA,iBAAGwF,EAAE,EAAG1C,KAAK,EAAE;MACjDwC,KAAA,CAAKD,KAAK,CAACtC,QAAQ,CAACgB,IAAI,CAAC;IAC3B,CAAC;IAtBCuB,KAAA,CAAKG,oBAAoB,gBAAGC,iBAAK,CAACC,SAAS,CAAC,CAAC;IAAC,OAAAL,KAAA;EAChD;EAAC,IAAAM,UAAA,aAAAT,IAAA,EAAAC,gBAAA;EAAA,WAAAS,aAAA,aAAAV,IAAA;IAAA9B,GAAA;IAAAP,KAAA,EAWD,SAAAgD,iBAAiBA,CAAA,EAAG;MAClB,IAAMC,YAAY,GAAG,IAAI,CAACV,KAAK,CAACU,YAAY,IAAI,IAAI,CAACN,oBAAoB;MACzE,IAAIM,YAAY,CAACC,OAAO,IAAI,OAAOC,yBAAU,KAAK,UAAU,EAAE;QAC5D,IAAAA,yBAAU,EAACF,YAAY,CAACC,OAAO,CAAC;MAClC;IACF;EAAC;IAAA3C,GAAA;IAAAP,KAAA,EAOD,SAAAoD,MAAMA,CAAA,EAAG;MACP,IAAAC,WAAA,GAAqD,IAAI,CAACd,KAAK;QAAvDvC,KAAK,GAAAqD,WAAA,CAALrD,KAAK;QAAED,MAAM,GAAAsD,WAAA,CAANtD,MAAM;QAAEI,WAAW,GAAAkD,WAAA,CAAXlD,WAAW;QAAE8C,YAAY,GAAAI,WAAA,CAAZJ,YAAY;MAChD,IAAM7C,QAAQ,GAAGP,eAAc,CAACE,MAAM,EAAEC,KAAK,EAAE,IAAI,CAACsD,YAAY,EAAE,IAAI,CAACf,KAAK,CAAC1C,cAAc,EAAE,IAAI,EAAEM,WAAW,CAAC;MAC/G,IAAMoD,GAAG,GAAGN,YAAY,IAAI,IAAI,CAACN,oBAAoB;MAErD,oBAAOlH,MAAA,YAAAiF,aAAA,CAACuB,aAAa;QAACsB,GAAG,EAAEA;MAAI,GAAEnD,QAAwB,CAAC;IAC5D;EAAC;AAAA,EAjC+BwC,iBAAK,CAACY,SAAS;AAAA,IAAAtG,gBAAA,aAA5BmF,IAAI,eAMJ;EACjBxC,cAAc,EAAE4D,qBAAS,CAACC,IAAI;EAC9B3D,MAAM,EAAE0D,qBAAS,CAACrC,MAAM;EACxBpB,KAAK,EAAEyD,qBAAS,CAACrC,MAAM;EACvBnB,QAAQ,EAAEwD,qBAAS,CAACC,IAAI;EACxBvD,WAAW,EAAEsD,qBAAS,CAACE,MAAM;EAC7BV,YAAY,EAAEQ,qBAAS,CAACG,SAAS,CAAC,CAACH,qBAAS,CAACC,IAAI,EAAED,qBAAS,CAACI,KAAK,CAAC;IAAEX,OAAO,EAAEO,qBAAS,CAACK,UAAU,CAACC,OAAO;EAAE,CAAC,CAAC,CAAC;AACjH,CAAC","ignoreList":[]}