@pie-lib/mask-markup 3.1.0-beta.7 → 3.1.0-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/lib/keyboard-coordinates.js +156 -0
  2. package/package.json +2 -2
  3. package/lib/__tests__/drag-in-the-blank.test.js +0 -129
  4. package/lib/__tests__/drag-in-the-blank.test.js.map +0 -1
  5. package/lib/__tests__/index.test.js +0 -39
  6. package/lib/__tests__/index.test.js.map +0 -1
  7. package/lib/__tests__/mask.test.js +0 -344
  8. package/lib/__tests__/mask.test.js.map +0 -1
  9. package/lib/__tests__/serialization.test.js +0 -44
  10. package/lib/__tests__/serialization.test.js.map +0 -1
  11. package/lib/__tests__/utils.js +0 -14
  12. package/lib/__tests__/utils.js.map +0 -1
  13. package/lib/__tests__/with-mask.test.js +0 -110
  14. package/lib/__tests__/with-mask.test.js.map +0 -1
  15. package/lib/choices/__tests__/index.test.js +0 -139
  16. package/lib/choices/__tests__/index.test.js.map +0 -1
  17. package/lib/components/__tests__/blank.test.js +0 -293
  18. package/lib/components/__tests__/blank.test.js.map +0 -1
  19. package/lib/components/__tests__/correct-input.test.js +0 -132
  20. package/lib/components/__tests__/correct-input.test.js.map +0 -1
  21. package/lib/components/__tests__/dropdown.test.js +0 -202
  22. package/lib/components/__tests__/dropdown.test.js.map +0 -1
  23. package/lib/components/__tests__/input.test.js +0 -129
  24. package/lib/components/__tests__/input.test.js.map +0 -1
  25. package/src/__tests__/drag-in-the-blank.test.js +0 -111
  26. package/src/__tests__/index.test.js +0 -38
  27. package/src/__tests__/mask.test.js +0 -381
  28. package/src/__tests__/serialization.test.js +0 -54
  29. package/src/__tests__/utils.js +0 -1
  30. package/src/__tests__/with-mask.test.js +0 -76
  31. package/src/choices/__tests__/index.test.js +0 -109
  32. package/src/components/__tests__/blank.test.js +0 -232
  33. package/src/components/__tests__/correct-input.test.js +0 -90
  34. package/src/components/__tests__/dropdown.test.js +0 -129
  35. package/src/components/__tests__/input.test.js +0 -102
@@ -0,0 +1,156 @@
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-lib/mask-markup",
3
- "version": "3.1.0-beta.7",
3
+ "version": "3.1.0-beta.9",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -14,7 +14,7 @@
14
14
  "@mui/icons-material": "^7.3.4",
15
15
  "@mui/material": "^7.3.4",
16
16
  "@pie-lib/drag": "^4.0.2",
17
- "@pie-lib/editable-html-tip-tap": "^2.2.0-beta.7",
17
+ "@pie-lib/editable-html-tip-tap": "^2.2.0-beta.9",
18
18
  "@pie-lib/math-rendering": "^5.0.2",
19
19
  "@pie-lib/render-ui": "^6.1.0",
20
20
  "classnames": "^2.2.6",
@@ -1,129 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
6
- var React = _interopRequireWildcard(require("react"));
7
- var _react2 = require("@testing-library/react");
8
- var _dragInTheBlank = _interopRequireDefault(require("../drag-in-the-blank"));
9
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
10
- var markup = "<div>\n <img src=\"https://image.shutterstock.com/image-vector/cow-jumped-over-moon-traditional-260nw-1152899330.jpg\"></img>\n <h5>Hey Diddle Diddle <i>by ?</i></h5>\n <p>1: Hey, diddle, diddle,</p>\n <p>2: The cat and the fiddle,</p>\n <p>3: The cow {{0}} over the moon;</p>\n <p>4: The little dog {{1}},</p>\n <p>5: To see such sport,</p>\n <p>6: And the dish ran away with the {{2}}.</p>\n</div>";
11
- var choice = function choice(v, id) {
12
- return {
13
- value: v,
14
- id: id
15
- };
16
- };
17
-
18
- // Mock DragProvider and DragDroppablePlaceholder to avoid DndContext requirement
19
- jest.mock('@pie-lib/drag', function () {
20
- return {
21
- DragProvider: function DragProvider(_ref) {
22
- var children = _ref.children,
23
- onDragStart = _ref.onDragStart,
24
- onDragEnd = _ref.onDragEnd;
25
- // Simple wrapper that doesn't require DndContext
26
- return /*#__PURE__*/React.createElement("div", {
27
- "data-testid": "drag-provider"
28
- }, children);
29
- },
30
- DragDroppablePlaceholder: function DragDroppablePlaceholder(_ref2) {
31
- var children = _ref2.children,
32
- disabled = _ref2.disabled,
33
- instanceId = _ref2.instanceId;
34
- // Simple wrapper that doesn't require useDroppable
35
- return /*#__PURE__*/React.createElement("div", {
36
- "data-testid": "drag-droppable-placeholder"
37
- }, children);
38
- }
39
- };
40
- });
41
-
42
- // Mock @dnd-kit/core components and hooks used by DragInTheBlank and child components
43
- jest.mock('@dnd-kit/core', function () {
44
- return {
45
- DragOverlay: function DragOverlay(_ref3) {
46
- var children = _ref3.children;
47
- return /*#__PURE__*/React.createElement("div", {
48
- "data-testid": "drag-overlay"
49
- }, children);
50
- },
51
- closestCenter: jest.fn(),
52
- useDraggable: jest.fn(function () {
53
- return {
54
- attributes: {},
55
- listeners: {},
56
- setNodeRef: jest.fn(),
57
- transform: null,
58
- isDragging: false
59
- };
60
- }),
61
- useDroppable: jest.fn(function () {
62
- return {
63
- setNodeRef: jest.fn(),
64
- isOver: false,
65
- active: null
66
- };
67
- })
68
- };
69
- });
70
- jest.mock('@dnd-kit/utilities', function () {
71
- return {
72
- CSS: {
73
- Translate: {
74
- toString: jest.fn(function () {
75
- return 'translate3d(0, 0, 0)';
76
- })
77
- }
78
- }
79
- };
80
- });
81
- describe('DragInTheBlank', function () {
82
- var defaultProps = {
83
- disabled: false,
84
- feedback: {},
85
- markup: markup,
86
- choices: [choice('Jumped', '0'), choice('Laughed', '1'), choice('Spoon', '2'), choice('Fork', '3'), choice('Bumped', '4'), choice('Smiled', '5')],
87
- value: {
88
- 0: undefined
89
- }
90
- };
91
- describe('render', function () {
92
- it('renders correctly with default props', function () {
93
- var _render = (0, _react2.render)(/*#__PURE__*/React.createElement(_dragInTheBlank["default"], defaultProps)),
94
- container = _render.container;
95
- expect(container.firstChild).toBeInTheDocument();
96
- // Check that markup content is rendered
97
- expect(_react2.screen.getByText(/Hey Diddle Diddle/)).toBeInTheDocument();
98
- expect(_react2.screen.getByText(/Hey, diddle, diddle,/)).toBeInTheDocument();
99
- });
100
- it('renders correctly with disabled prop as true', function () {
101
- var _render2 = (0, _react2.render)(/*#__PURE__*/React.createElement(_dragInTheBlank["default"], (0, _extends2["default"])({}, defaultProps, {
102
- disabled: true
103
- }))),
104
- container = _render2.container;
105
- expect(container.firstChild).toBeInTheDocument();
106
- });
107
- it('renders correctly with feedback', function () {
108
- var _render3 = (0, _react2.render)(/*#__PURE__*/React.createElement(_dragInTheBlank["default"], (0, _extends2["default"])({}, defaultProps, {
109
- feedback: {
110
- 0: {
111
- value: 'Jumped',
112
- correct: 'Jumped'
113
- },
114
- 1: {
115
- value: 'Laughed',
116
- correct: 'Laughed'
117
- },
118
- 2: {
119
- value: 'Spoon',
120
- correct: 'Spoon'
121
- }
122
- }
123
- }))),
124
- container = _render3.container;
125
- expect(container.firstChild).toBeInTheDocument();
126
- });
127
- });
128
- });
129
- //# sourceMappingURL=drag-in-the-blank.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drag-in-the-blank.test.js","names":["React","_interopRequireWildcard","require","_react2","_dragInTheBlank","_interopRequireDefault","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","_typeof","has","get","set","_t","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","markup","choice","v","id","value","jest","mock","DragProvider","_ref","children","onDragStart","onDragEnd","createElement","DragDroppablePlaceholder","_ref2","disabled","instanceId","DragOverlay","_ref3","closestCenter","fn","useDraggable","attributes","listeners","setNodeRef","transform","isDragging","useDroppable","isOver","active","CSS","Translate","toString","describe","defaultProps","feedback","choices","undefined","it","_render","render","container","expect","firstChild","toBeInTheDocument","screen","getByText","_render2","_extends2","_render3","correct"],"sources":["../../src/__tests__/drag-in-the-blank.test.js"],"sourcesContent":["import * as React from 'react';\nimport { render, screen } from '@testing-library/react';\nimport DragInTheBlank from '../drag-in-the-blank';\n\nconst markup = `<div>\n <img src=\"https://image.shutterstock.com/image-vector/cow-jumped-over-moon-traditional-260nw-1152899330.jpg\"></img>\n <h5>Hey Diddle Diddle <i>by ?</i></h5>\n <p>1: Hey, diddle, diddle,</p>\n <p>2: The cat and the fiddle,</p>\n <p>3: The cow {{0}} over the moon;</p>\n <p>4: The little dog {{1}},</p>\n <p>5: To see such sport,</p>\n <p>6: And the dish ran away with the {{2}}.</p>\n</div>`;\nconst choice = (v, id) => ({ value: v, id });\n\n// Mock DragProvider and DragDroppablePlaceholder to avoid DndContext requirement\njest.mock('@pie-lib/drag', () => ({\n DragProvider: ({ children, onDragStart, onDragEnd }) => {\n // Simple wrapper that doesn't require DndContext\n return <div data-testid=\"drag-provider\">{children}</div>;\n },\n DragDroppablePlaceholder: ({ children, disabled, instanceId }) => {\n // Simple wrapper that doesn't require useDroppable\n return <div data-testid=\"drag-droppable-placeholder\">{children}</div>;\n },\n}));\n\n// Mock @dnd-kit/core components and hooks used by DragInTheBlank and child components\njest.mock('@dnd-kit/core', () => ({\n DragOverlay: ({ children }) => <div data-testid=\"drag-overlay\">{children}</div>,\n closestCenter: jest.fn(),\n useDraggable: jest.fn(() => ({\n attributes: {},\n listeners: {},\n setNodeRef: jest.fn(),\n transform: null,\n isDragging: false,\n })),\n useDroppable: jest.fn(() => ({\n setNodeRef: jest.fn(),\n isOver: false,\n active: null,\n })),\n}));\n\njest.mock('@dnd-kit/utilities', () => ({\n CSS: {\n Translate: {\n toString: jest.fn(() => 'translate3d(0, 0, 0)'),\n },\n },\n}));\n\ndescribe('DragInTheBlank', () => {\n const defaultProps = {\n disabled: false,\n feedback: {},\n markup,\n choices: [\n choice('Jumped', '0'),\n choice('Laughed', '1'),\n choice('Spoon', '2'),\n choice('Fork', '3'),\n choice('Bumped', '4'),\n choice('Smiled', '5'),\n ],\n\n value: {\n 0: undefined,\n },\n };\n\n describe('render', () => {\n it('renders correctly with default props', () => {\n const { container } = render(<DragInTheBlank {...defaultProps} />);\n expect(container.firstChild).toBeInTheDocument();\n // Check that markup content is rendered\n expect(screen.getByText(/Hey Diddle Diddle/)).toBeInTheDocument();\n expect(screen.getByText(/Hey, diddle, diddle,/)).toBeInTheDocument();\n });\n\n it('renders correctly with disabled prop as true', () => {\n const { container } = render(<DragInTheBlank {...defaultProps} disabled={true} />);\n expect(container.firstChild).toBeInTheDocument();\n });\n\n it('renders correctly with feedback', () => {\n const { container } = render(\n <DragInTheBlank\n {...defaultProps}\n feedback={{\n 0: {\n value: 'Jumped',\n correct: 'Jumped',\n },\n 1: {\n value: 'Laughed',\n correct: 'Laughed',\n },\n 2: {\n value: 'Spoon',\n correct: 'Spoon',\n },\n }}\n />,\n );\n expect(container.firstChild).toBeInTheDocument();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _componentize = _interopRequireDefault(require("../componentize"));
5
- var _serialization = require("../serialization");
6
- describe('index', function () {
7
- describe('componentize', function () {
8
- it('should return an array with the appropriate markup', function () {
9
- var dropDownMarkup = (0, _componentize["default"])('{{0}} foo {{1}}', 'dropdown');
10
- expect(dropDownMarkup).toEqual({
11
- markup: '<span data-component="dropdown" data-id="0"></span> foo <span data-component="dropdown" data-id="1"></span>'
12
- });
13
- });
14
- });
15
- describe('serialization', function () {
16
- it('should have default node a span', function () {
17
- expect((0, _serialization.deserialize)('something')).toEqual(expect.objectContaining({
18
- object: 'value',
19
- document: {
20
- object: 'document',
21
- data: {},
22
- nodes: [{
23
- object: 'block',
24
- data: {},
25
- isVoid: false,
26
- type: 'span',
27
- nodes: [{
28
- object: 'text',
29
- leaves: [{
30
- text: 'something'
31
- }]
32
- }]
33
- }]
34
- }
35
- }));
36
- });
37
- });
38
- });
39
- //# sourceMappingURL=index.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.js","names":["_componentize","_interopRequireDefault","require","_serialization","describe","it","dropDownMarkup","componentize","expect","toEqual","markup","deserialize","objectContaining","object","document","data","nodes","isVoid","type","leaves","text"],"sources":["../../src/__tests__/index.test.js"],"sourcesContent":["import componentize from '../componentize';\nimport { deserialize } from '../serialization';\n\ndescribe('index', () => {\n describe('componentize', () => {\n it('should return an array with the appropriate markup', () => {\n const dropDownMarkup = componentize('{{0}} foo {{1}}', 'dropdown');\n\n expect(dropDownMarkup).toEqual({\n markup:\n '<span data-component=\"dropdown\" data-id=\"0\"></span> foo <span data-component=\"dropdown\" data-id=\"1\"></span>',\n });\n });\n });\n\n describe('serialization', () => {\n it('should have default node a span', () => {\n expect(deserialize('something')).toEqual(\n expect.objectContaining({\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: [\n {\n object: 'block',\n data: {},\n isVoid: false,\n type: 'span',\n nodes: [{ object: 'text', leaves: [{ text: 'something' }] }],\n },\n ],\n },\n }),\n );\n });\n });\n});\n"],"mappings":";;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAEAE,QAAQ,CAAC,OAAO,EAAE,YAAM;EACtBA,QAAQ,CAAC,cAAc,EAAE,YAAM;IAC7BC,EAAE,CAAC,oDAAoD,EAAE,YAAM;MAC7D,IAAMC,cAAc,GAAG,IAAAC,wBAAY,EAAC,iBAAiB,EAAE,UAAU,CAAC;MAElEC,MAAM,CAACF,cAAc,CAAC,CAACG,OAAO,CAAC;QAC7BC,MAAM,EACJ;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFN,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9BC,EAAE,CAAC,iCAAiC,EAAE,YAAM;MAC1CG,MAAM,CAAC,IAAAG,0BAAW,EAAC,WAAW,CAAC,CAAC,CAACF,OAAO,CACtCD,MAAM,CAACI,gBAAgB,CAAC;QACtBC,MAAM,EAAE,OAAO;QACfC,QAAQ,EAAE;UACRD,MAAM,EAAE,UAAU;UAClBE,IAAI,EAAE,CAAC,CAAC;UACRC,KAAK,EAAE,CACL;YACEH,MAAM,EAAE,OAAO;YACfE,IAAI,EAAE,CAAC,CAAC;YACRE,MAAM,EAAE,KAAK;YACbC,IAAI,EAAE,MAAM;YACZF,KAAK,EAAE,CAAC;cAAEH,MAAM,EAAE,MAAM;cAAEM,MAAM,EAAE,CAAC;gBAAEC,IAAI,EAAE;cAAY,CAAC;YAAE,CAAC;UAC7D,CAAC;QAEL;MACF,CAAC,CACH,CAAC;IACH,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}