atom.io 0.19.0 → 0.19.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.
- package/data/dist/index.cjs +99 -79
- package/data/dist/index.js +2 -2
- package/data/src/join.ts +91 -74
- package/dist/{chunk-YDOGCZ53.js → chunk-ATKDGVTV.js} +29 -29
- package/dist/{chunk-CVBEVTM5.js → chunk-CC7IF7QF.js} +5 -42
- package/dist/{chunk-WX2NCOZR.js → chunk-FTONNX2R.js} +8 -8
- package/dist/{chunk-7ZR244C2.js → chunk-MSCJWACE.js} +92 -72
- package/dist/index.cjs +15 -7
- package/dist/index.d.ts +24 -35
- package/dist/index.js +15 -7
- package/internal/dist/index.cjs +56 -44
- package/internal/dist/index.d.ts +21 -21
- package/internal/dist/index.js +49 -37
- package/internal/src/atom/create-regular-atom.ts +7 -5
- package/internal/src/atom/delete-atom.ts +2 -2
- package/internal/src/families/create-readonly-selector-family.ts +2 -2
- package/internal/src/families/create-regular-atom-family.ts +1 -1
- package/internal/src/families/create-writable-selector-family.ts +1 -1
- package/internal/src/future.ts +4 -2
- package/internal/src/lineage.ts +1 -0
- package/internal/src/mutable/create-mutable-atom-family.ts +1 -1
- package/internal/src/mutable/create-mutable-atom.ts +7 -5
- package/internal/src/mutable/tracker.ts +4 -4
- package/internal/src/mutable/transceiver.ts +2 -2
- package/internal/src/selector/delete-selector.ts +1 -1
- package/internal/src/set-state/become.ts +1 -1
- package/internal/src/set-state/copy-mutable-if-needed.ts +1 -1
- package/internal/src/store/deposit.ts +5 -5
- package/internal/src/store/store.ts +5 -5
- package/internal/src/store/withdraw.ts +4 -5
- package/internal/src/subject.ts +3 -1
- package/internal/src/subscribe/subscribe-to-state.ts +2 -2
- package/internal/src/subscribe/subscribe-to-transaction.ts +4 -4
- package/internal/src/timeline/add-atom-to-timeline.ts +16 -11
- package/internal/src/timeline/create-timeline.ts +3 -4
- package/internal/src/transaction/act-upon-store.ts +5 -5
- package/internal/src/transaction/apply-transaction.ts +4 -4
- package/internal/src/transaction/build-transaction.ts +10 -7
- package/internal/src/transaction/create-transaction.ts +10 -10
- package/internal/src/transaction/index.ts +3 -3
- package/internal/src/transaction/is-root-store.ts +2 -2
- package/introspection/dist/index.cjs +3 -2
- package/introspection/dist/index.d.ts +6 -6
- package/introspection/dist/index.js +3 -2
- package/introspection/src/attach-atom-index.ts +5 -4
- package/introspection/src/attach-introspection-states.ts +3 -3
- package/introspection/src/attach-transaction-index.ts +4 -4
- package/introspection/src/attach-transaction-logs.ts +8 -4
- package/introspection/src/index.ts +3 -3
- package/json/dist/index.cjs +6 -2
- package/json/dist/index.d.ts +1 -1
- package/json/dist/index.js +8 -4
- package/json/src/select-json-family.ts +3 -2
- package/json/src/select-json.ts +3 -1
- package/package.json +243 -242
- package/react/dist/index.cjs +9 -3
- package/react/dist/index.js +9 -3
- package/react/src/use-i.ts +3 -1
- package/react/src/use-tl.ts +6 -2
- package/react-devtools/dist/index.cjs +332 -978
- package/react-devtools/dist/index.css +0 -18
- package/react-devtools/dist/index.d.ts +7 -9
- package/react-devtools/dist/index.js +291 -881
- package/react-devtools/src/AtomIODevtools.tsx +5 -2
- package/react-devtools/src/Button.tsx +6 -2
- package/react-devtools/src/StateEditor.tsx +13 -16
- package/react-devtools/src/StateIndex.tsx +28 -21
- package/react-devtools/src/TimelineIndex.tsx +17 -6
- package/react-devtools/src/TransactionIndex.tsx +13 -6
- package/react-devtools/src/Updates.tsx +24 -9
- package/realtime/dist/index.cjs +1 -0
- package/realtime/dist/index.d.ts +2 -2
- package/realtime/dist/index.js +1 -0
- package/realtime/src/realtime-continuity.ts +4 -3
- package/realtime-client/dist/index.cjs +29 -29
- package/realtime-client/dist/index.d.ts +2 -2
- package/realtime-client/dist/index.js +1 -1
- package/realtime-client/src/server-action.ts +2 -2
- package/realtime-client/src/sync-continuity.ts +23 -23
- package/realtime-react/dist/index.cjs +30 -30
- package/realtime-react/dist/index.d.ts +2 -2
- package/realtime-react/dist/index.js +2 -2
- package/realtime-react/src/use-server-action.ts +3 -3
- package/realtime-react/src/use-single-effect.ts +1 -1
- package/realtime-server/dist/index.cjs +54 -44
- package/realtime-server/dist/index.d.ts +6 -6
- package/realtime-server/dist/index.js +34 -24
- package/realtime-server/src/ipc-sockets/child-socket.ts +7 -7
- package/realtime-server/src/ipc-sockets/custom-socket.ts +4 -8
- package/realtime-server/src/ipc-sockets/parent-socket.ts +13 -7
- package/realtime-server/src/realtime-action-receiver.ts +7 -5
- package/realtime-server/src/realtime-continuity-synchronizer.ts +3 -3
- package/realtime-server/src/realtime-server-stores/server-room-external-store.ts +2 -2
- package/realtime-server/src/realtime-state-receiver.ts +3 -1
- package/realtime-testing/dist/index.cjs +15 -13
- package/realtime-testing/dist/index.js +9 -7
- package/realtime-testing/src/setup-realtime-test.tsx +7 -5
- package/src/atom.ts +4 -8
- package/src/dispose.ts +1 -0
- package/src/index.ts +2 -9
- package/src/selector.ts +4 -8
- package/src/silo.ts +13 -3
- package/src/subscribe.ts +6 -6
- package/src/timeline.ts +4 -4
- package/src/transaction.ts +24 -24
- package/src/validators.ts +2 -2
- package/transceivers/set-rtx/dist/index.cjs +11 -12
- package/transceivers/set-rtx/dist/index.js +11 -12
- package/transceivers/set-rtx/src/set-rtx.ts +10 -10
- /package/dist/{chunk-VAE5OCKN.js → chunk-BF4MVQF6.js} +0 -0
|
@@ -2,31 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var atom_io = require('atom.io');
|
|
4
4
|
var introspection = require('atom.io/introspection');
|
|
5
|
-
var react = require('atom.io/react');
|
|
5
|
+
var react$1 = require('atom.io/react');
|
|
6
6
|
var framerMotion = require('framer-motion');
|
|
7
|
-
var
|
|
7
|
+
var react = require('react');
|
|
8
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
9
|
-
var react$1 = require('@floating-ui/react');
|
|
10
|
-
|
|
11
|
-
function _interopNamespace(e) {
|
|
12
|
-
if (e && e.__esModule) return e;
|
|
13
|
-
var n = Object.create(null);
|
|
14
|
-
if (e) {
|
|
15
|
-
Object.keys(e).forEach(function (k) {
|
|
16
|
-
if (k !== 'default') {
|
|
17
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
-
enumerable: true,
|
|
20
|
-
get: function () { return e[k]; }
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
n.default = e;
|
|
26
|
-
return Object.freeze(n);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
30
9
|
|
|
31
10
|
var __defProp = Object.defineProperty;
|
|
32
11
|
var __defProps = Object.defineProperties;
|
|
@@ -97,18 +76,6 @@ var doNothing = () => void 0;
|
|
|
97
76
|
var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(
|
|
98
77
|
originalThing instanceof Function ? originalThing() : originalThing
|
|
99
78
|
) : nextVersionOfThing;
|
|
100
|
-
var isModifier = (validate) => (sample) => {
|
|
101
|
-
const sampleIsValid = validate(sample);
|
|
102
|
-
if (!sampleIsValid) {
|
|
103
|
-
throw new Error(`Invalid test case: JSON.stringify(${sample})`);
|
|
104
|
-
}
|
|
105
|
-
return (input) => {
|
|
106
|
-
if (typeof input !== `function`)
|
|
107
|
-
return false;
|
|
108
|
-
const testResult = input(sample);
|
|
109
|
-
return validate(testResult);
|
|
110
|
-
};
|
|
111
|
-
};
|
|
112
79
|
var pass = (...params) => (fn) => fn(...params);
|
|
113
80
|
var raiseError = (message) => {
|
|
114
81
|
throw new Error(message);
|
|
@@ -121,24 +88,11 @@ var fallback = (fn, fallbackValue) => {
|
|
|
121
88
|
}
|
|
122
89
|
};
|
|
123
90
|
|
|
124
|
-
// ../anvl/src/array/venn.ts
|
|
125
|
-
var includesAll = (items) => (array) => {
|
|
126
|
-
for (const item of items) {
|
|
127
|
-
if (!array.includes(item))
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
return true;
|
|
131
|
-
};
|
|
132
|
-
var comprises = (items) => (array) => includesAll(items)(array) && includesAll(array)(items);
|
|
133
|
-
|
|
134
91
|
// ../anvl/src/array/index.ts
|
|
135
92
|
var isArray = (isType) => (input) => Array.isArray(input) && input.every((item) => isType(item));
|
|
136
93
|
var map = (f) => (a2) => a2.map(f);
|
|
137
94
|
var every = (f = Boolean) => (a2) => a2.every(f);
|
|
138
95
|
var allTrue = every((x) => x === true);
|
|
139
|
-
var addTo = (a2) => (x) => a2.includes(x) ? a2 : [...a2, x];
|
|
140
|
-
var isEmptyArray = (input) => Array.isArray(input) && input.length === 0;
|
|
141
|
-
var isOneOf = (...args) => (input) => args.includes(input);
|
|
142
96
|
|
|
143
97
|
// ../anvl/src/nullish/index.ts
|
|
144
98
|
var isUndefined = (input) => input === void 0;
|
|
@@ -166,7 +120,6 @@ var mob = (fn) => (obj) => mapObject(obj, fn);
|
|
|
166
120
|
// ../anvl/src/object/refinement.ts
|
|
167
121
|
var isNonNullObject = (input) => typeof input === `object` && input !== null;
|
|
168
122
|
var isPlainObject = (input) => isNonNullObject(input) && Object.getPrototypeOf(input) === Object.prototype;
|
|
169
|
-
var isEmptyObject = (input) => isPlainObject(input) && Object.keys(input).length === 0;
|
|
170
123
|
var isRecord = (isKey, isValue) => (input) => isPlainObject(input) && Object.entries(input).every(([k, v]) => isKey(k) && isValue(v));
|
|
171
124
|
var hasProperties = (isValue, options = { allowExtraProperties: false }) => {
|
|
172
125
|
const name = `{${recordToEntries(
|
|
@@ -195,20 +148,19 @@ var hasProperties = (isValue, options = { allowExtraProperties: false }) => {
|
|
|
195
148
|
};
|
|
196
149
|
var ALLOW_EXTENSION = { allowExtraProperties: true };
|
|
197
150
|
var doesExtend = (isValue) => hasProperties(isValue, ALLOW_EXTENSION);
|
|
198
|
-
var DO_NOT_ALLOW_EXTENSION = { allowExtraProperties: false };
|
|
199
|
-
var hasExactProperties = (isValue) => hasProperties(isValue, DO_NOT_ALLOW_EXTENSION);
|
|
200
151
|
|
|
201
152
|
// ../anvl/src/object/sprawl.ts
|
|
202
153
|
var sprawl = (tree, inspector) => {
|
|
203
154
|
const walk = (path, node) => {
|
|
204
|
-
|
|
205
|
-
|
|
155
|
+
var _a2;
|
|
156
|
+
const inspect = (p, n) => {
|
|
157
|
+
const result2 = inspector(p, n);
|
|
206
158
|
if (result2)
|
|
207
159
|
return result2;
|
|
208
160
|
return null;
|
|
209
161
|
};
|
|
210
162
|
const result = inspect(path, node);
|
|
211
|
-
if ((result == null ? void 0 : result.jobComplete)
|
|
163
|
+
if ((_a2 = result == null ? void 0 : result.jobComplete) != null ? _a2 : result == null ? void 0 : result.pathComplete) {
|
|
212
164
|
return result;
|
|
213
165
|
}
|
|
214
166
|
const childEntries = Array.isArray(node) ? node.map((v, i) => [i, v]) : isPlainObject(node) ? Object.entries(node) : [];
|
|
@@ -224,16 +176,6 @@ var sprawl = (tree, inspector) => {
|
|
|
224
176
|
};
|
|
225
177
|
|
|
226
178
|
// ../anvl/src/object/index.ts
|
|
227
|
-
var treeShake = (shouldDiscard = isUndefined) => (obj) => {
|
|
228
|
-
const newObj = {};
|
|
229
|
-
const entries = Object.entries(obj);
|
|
230
|
-
for (const [key, val] of entries) {
|
|
231
|
-
if (!shouldDiscard(val, key)) {
|
|
232
|
-
newObj[key] = val;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return newObj;
|
|
236
|
-
};
|
|
237
179
|
var delve = (obj, path) => {
|
|
238
180
|
const found = path.reduce((acc, key) => acc == null ? void 0 : acc[key], obj);
|
|
239
181
|
return found === void 0 ? new Error(`Not found`) : { found };
|
|
@@ -258,7 +200,7 @@ var Refinery = class {
|
|
|
258
200
|
if (input instanceof refiner) {
|
|
259
201
|
return { type: key, data: input };
|
|
260
202
|
}
|
|
261
|
-
} catch (
|
|
203
|
+
} catch (_) {
|
|
262
204
|
}
|
|
263
205
|
}
|
|
264
206
|
}
|
|
@@ -332,8 +274,8 @@ var isJson = (input) => {
|
|
|
332
274
|
if (input === void 0)
|
|
333
275
|
return false;
|
|
334
276
|
const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
|
|
335
|
-
const
|
|
336
|
-
return
|
|
277
|
+
const refine = JSON_PROTOTYPES.includes(prototype);
|
|
278
|
+
return refine;
|
|
337
279
|
};
|
|
338
280
|
|
|
339
281
|
// ../anvl/src/refinement/can-exist.ts
|
|
@@ -526,13 +468,16 @@ var persistAtom = (storage) => ({ stringify, parse }) => (key) => ({ setSelf, on
|
|
|
526
468
|
});
|
|
527
469
|
};
|
|
528
470
|
var lazyLocalStorageEffect = persistAtom(window.localStorage)(JSON);
|
|
529
|
-
var OpenClose = ({ isOpen, setIsOpen, disabled }) => {
|
|
471
|
+
var OpenClose = ({ isOpen, setIsOpen, disabled, testid }) => {
|
|
530
472
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
531
473
|
"button",
|
|
532
474
|
{
|
|
533
475
|
type: "button",
|
|
476
|
+
"data-testid": testid,
|
|
534
477
|
className: `carat ${isOpen ? `open` : `closed`}`,
|
|
535
|
-
onClick: () =>
|
|
478
|
+
onClick: () => {
|
|
479
|
+
setIsOpen((prev) => !prev);
|
|
480
|
+
},
|
|
536
481
|
disabled,
|
|
537
482
|
children: "\u25B6"
|
|
538
483
|
}
|
|
@@ -541,307 +486,12 @@ var OpenClose = ({ isOpen, setIsOpen, disabled }) => {
|
|
|
541
486
|
var button = {
|
|
542
487
|
OpenClose
|
|
543
488
|
};
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
relations: {},
|
|
551
|
-
relationType: `n:n`,
|
|
552
|
-
a: `from`,
|
|
553
|
-
b: `to`
|
|
554
|
-
};
|
|
555
|
-
var isRelationData = ({
|
|
556
|
-
from: a2 = `from`,
|
|
557
|
-
to: b2 = `to`,
|
|
558
|
-
isContent
|
|
559
|
-
} = {}) => (input) => {
|
|
560
|
-
return hasExactProperties({
|
|
561
|
-
contents: isContent ? isRecord(isString, isContent) : hasExactProperties({}),
|
|
562
|
-
relations: isRecord(isString, isArray(isString)),
|
|
563
|
-
relationType: isRelationType,
|
|
564
|
-
a: isLiteral(a2),
|
|
565
|
-
b: isLiteral(b2)
|
|
566
|
-
})(input);
|
|
567
|
-
};
|
|
568
|
-
|
|
569
|
-
// ../anvl/src/join/get-related-ids.ts
|
|
570
|
-
var getRelatedIds = (relationMap, id) => {
|
|
571
|
-
var _a2;
|
|
572
|
-
return (_a2 = relationMap.relations[id]) != null ? _a2 : [];
|
|
573
|
-
};
|
|
574
|
-
var getRelatedId = (relationMap, id) => {
|
|
575
|
-
const relations = getRelatedIds(relationMap, id);
|
|
576
|
-
if (relations.length > 1) {
|
|
577
|
-
console.warn(
|
|
578
|
-
`entry with id ${id} was not expected to have multiple relations`
|
|
579
|
-
);
|
|
580
|
-
}
|
|
581
|
-
return relations[0];
|
|
582
|
-
};
|
|
583
|
-
|
|
584
|
-
// ../anvl/src/join/make-json-interface.ts
|
|
585
|
-
var makeJsonInterface = (join, ...params) => {
|
|
586
|
-
const isContent = params[0];
|
|
587
|
-
const { a: a2, b: b2 } = join;
|
|
588
|
-
const options = {
|
|
589
|
-
from: a2,
|
|
590
|
-
to: b2,
|
|
591
|
-
isContent
|
|
592
|
-
};
|
|
593
|
-
return {
|
|
594
|
-
toJson: (join2) => join2.toJSON(),
|
|
595
|
-
fromJson: (json) => Join.fromJSON(json, options)
|
|
596
|
-
};
|
|
597
|
-
};
|
|
598
|
-
|
|
599
|
-
// ../anvl/src/join/relation-record.ts
|
|
600
|
-
var getRelationEntries = (relationMap, idA) => getRelatedIds(relationMap, idA).map((idB) => [
|
|
601
|
-
idB,
|
|
602
|
-
getContent(relationMap, idA, idB)
|
|
603
|
-
]);
|
|
604
|
-
var getRelationRecord = (relationMap, id) => Object.fromEntries(getRelationEntries(relationMap, id));
|
|
605
|
-
|
|
606
|
-
// ../anvl/src/string/split.ts
|
|
607
|
-
var split = (separator) => (str) => str.split(separator);
|
|
608
|
-
|
|
609
|
-
// ../anvl/src/join/remove-relation.ts
|
|
610
|
-
var removeSpecific = (current, idA, idB) => {
|
|
611
|
-
const isIdForRemoval = isOneOf(idA, idB);
|
|
612
|
-
return __spreadProps(__spreadValues({}, current), {
|
|
613
|
-
relations: pipe(
|
|
614
|
-
current.relations,
|
|
615
|
-
recordToEntries,
|
|
616
|
-
map(([id, relations]) => [
|
|
617
|
-
id,
|
|
618
|
-
isIdForRemoval(id) ? relations.filter((relation) => !isIdForRemoval(relation)) : relations
|
|
619
|
-
]),
|
|
620
|
-
entriesToRecord,
|
|
621
|
-
treeShake(isEmptyArray)
|
|
622
|
-
),
|
|
623
|
-
contents: pipe(
|
|
624
|
-
current.contents,
|
|
625
|
-
treeShake(
|
|
626
|
-
(_, key) => isString(key) && pipe(key, split(`/`), comprises([idA, idB]))
|
|
627
|
-
)
|
|
628
|
-
)
|
|
629
|
-
});
|
|
630
|
-
};
|
|
631
|
-
var removeAll = (current, idToRemove) => {
|
|
632
|
-
const next = __spreadProps(__spreadValues({}, current), {
|
|
633
|
-
relations: pipe(
|
|
634
|
-
current.relations,
|
|
635
|
-
recordToEntries,
|
|
636
|
-
map(([id, relations]) => [
|
|
637
|
-
id,
|
|
638
|
-
relations.filter((relation) => relation !== idToRemove)
|
|
639
|
-
]),
|
|
640
|
-
entriesToRecord,
|
|
641
|
-
treeShake((val, key) => key === idToRemove || isEmptyArray(val))
|
|
642
|
-
),
|
|
643
|
-
contents: pipe(
|
|
644
|
-
current.contents,
|
|
645
|
-
treeShake(
|
|
646
|
-
(_, key) => isString(key) && key.split(`/`).includes(idToRemove)
|
|
647
|
-
)
|
|
648
|
-
)
|
|
649
|
-
});
|
|
650
|
-
return next;
|
|
651
|
-
};
|
|
652
|
-
var removeRelation = (current, relation) => {
|
|
653
|
-
const idA = relation[current.a];
|
|
654
|
-
const idB = relation[current.b];
|
|
655
|
-
return idB ? removeSpecific(current, idA, idB) : removeAll(current, idA);
|
|
656
|
-
};
|
|
657
|
-
|
|
658
|
-
// ../anvl/src/join/set-relation.ts
|
|
659
|
-
var setManyToMany = (map2, idA, idB, ...rest) => {
|
|
660
|
-
var _a2, _b;
|
|
661
|
-
const next = __spreadProps(__spreadValues({}, map2), {
|
|
662
|
-
relations: __spreadProps(__spreadValues({}, map2.relations), {
|
|
663
|
-
[idA]: addTo((_a2 = map2.relations[idA]) != null ? _a2 : [])(idB),
|
|
664
|
-
[idB]: addTo((_b = map2.relations[idB]) != null ? _b : [])(idA)
|
|
665
|
-
})
|
|
666
|
-
});
|
|
667
|
-
const content = rest[0];
|
|
668
|
-
return content ? setContent(next, idA, idB, content) : next;
|
|
669
|
-
};
|
|
670
|
-
var removeEmpties = treeShake(isEmptyArray);
|
|
671
|
-
var set1ToMany = (current, leaderId, followerId, ...rest) => {
|
|
672
|
-
var _a2;
|
|
673
|
-
const relations = __spreadValues({}, current.relations);
|
|
674
|
-
const prevLeaderId = getRelatedId(current, followerId);
|
|
675
|
-
const next = __spreadProps(__spreadValues({}, current), {
|
|
676
|
-
relations: removeEmpties(__spreadProps(__spreadValues(__spreadValues({}, relations), prevLeaderId && prevLeaderId !== leaderId && {
|
|
677
|
-
[prevLeaderId]: relations[prevLeaderId].filter(
|
|
678
|
-
(id) => id !== followerId
|
|
679
|
-
)
|
|
680
|
-
}), {
|
|
681
|
-
[followerId]: [leaderId],
|
|
682
|
-
[leaderId]: addTo((_a2 = relations[leaderId]) != null ? _a2 : [])(followerId)
|
|
683
|
-
}))
|
|
684
|
-
});
|
|
685
|
-
const content = rest[0];
|
|
686
|
-
return content ? setContent(next, leaderId, followerId, content) : next;
|
|
687
|
-
};
|
|
688
|
-
var set1To1 = (current, wifeId, husbandId, ...rest) => {
|
|
689
|
-
const prevWifeId = getRelatedId(current, husbandId);
|
|
690
|
-
const prevHusbandId = getRelatedId(current, wifeId);
|
|
691
|
-
const next = __spreadProps(__spreadValues({}, current), {
|
|
692
|
-
relations: removeEmpties(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, current.relations), prevWifeId && { [prevWifeId]: [] }), prevHusbandId && { [prevHusbandId]: [] }), {
|
|
693
|
-
[wifeId]: [husbandId],
|
|
694
|
-
[husbandId]: [wifeId]
|
|
695
|
-
}))
|
|
696
|
-
});
|
|
697
|
-
const content = rest[0];
|
|
698
|
-
return content ? setContent(next, wifeId, husbandId, content) : next;
|
|
699
|
-
};
|
|
700
|
-
var setRelationWithContent = (current, relation, ...rest) => {
|
|
701
|
-
const { [current.a]: idA, [current.b]: idB } = relation;
|
|
702
|
-
switch (current.relationType) {
|
|
703
|
-
case `1:1`:
|
|
704
|
-
return set1To1(current, idA, idB, ...rest);
|
|
705
|
-
case `1:n`:
|
|
706
|
-
return set1ToMany(current, idA, idB, ...rest);
|
|
707
|
-
case `n:n`:
|
|
708
|
-
return setManyToMany(current, idA, idB, ...rest);
|
|
709
|
-
}
|
|
710
|
-
};
|
|
711
|
-
|
|
712
|
-
// ../anvl/src/join/relation-contents.ts
|
|
713
|
-
var makeContentId = (idA, idB) => [idA, idB].sort().join(`/`);
|
|
714
|
-
var getContent = (relationMap, idA, idB) => relationMap.contents[makeContentId(idA, idB)];
|
|
715
|
-
var setContent = (map2, idA, idB, content) => __spreadProps(__spreadValues({}, map2), {
|
|
716
|
-
contents: __spreadProps(__spreadValues({}, map2.contents), {
|
|
717
|
-
[makeContentId(idA, idB)]: content
|
|
718
|
-
})
|
|
719
|
-
});
|
|
720
|
-
var getRelations = (relationMap, id) => getRelationEntries(relationMap, id).map(
|
|
721
|
-
([id2, content]) => __spreadValues({
|
|
722
|
-
id: id2
|
|
723
|
-
}, content)
|
|
724
|
-
);
|
|
725
|
-
var setRelations = (current, subject, relations) => {
|
|
726
|
-
const idA = subject[current.a];
|
|
727
|
-
const idB = subject[current.b];
|
|
728
|
-
return pipe(
|
|
729
|
-
current,
|
|
730
|
-
(relationData) => {
|
|
731
|
-
const relatedIds = getRelatedIds(current, idA);
|
|
732
|
-
const removedIds = relatedIds.filter(
|
|
733
|
-
(id) => !relations.some((r) => r.id === id)
|
|
734
|
-
);
|
|
735
|
-
let step = relationData;
|
|
736
|
-
for (const id of removedIds) {
|
|
737
|
-
const remove = {
|
|
738
|
-
[current.a]: idA != null ? idA : id,
|
|
739
|
-
[current.b]: idB != null ? idB : id
|
|
740
|
-
};
|
|
741
|
-
step = removeRelation(step, remove);
|
|
742
|
-
}
|
|
743
|
-
return step;
|
|
744
|
-
},
|
|
745
|
-
(relationData) => {
|
|
746
|
-
let step = relationData;
|
|
747
|
-
for (const _a2 of relations) {
|
|
748
|
-
const _b = _a2, { id } = _b, rest = __objRest(_b, ["id"]);
|
|
749
|
-
const content = isEmptyObject(rest) ? void 0 : rest;
|
|
750
|
-
step = setRelationWithContent(
|
|
751
|
-
step,
|
|
752
|
-
{ [current.a]: idA != null ? idA : id, [current.b]: idB != null ? idB : id },
|
|
753
|
-
// @ts-expect-error hacky
|
|
754
|
-
content
|
|
755
|
-
);
|
|
756
|
-
}
|
|
757
|
-
return step;
|
|
758
|
-
},
|
|
759
|
-
(relationData) => {
|
|
760
|
-
const newlyOrderedIds = relations.map((r) => r.id);
|
|
761
|
-
return __spreadProps(__spreadValues({}, relationData), {
|
|
762
|
-
relations: __spreadProps(__spreadValues({}, relationData.relations), {
|
|
763
|
-
[idA != null ? idA : idB]: newlyOrderedIds
|
|
764
|
-
})
|
|
765
|
-
});
|
|
766
|
-
}
|
|
767
|
-
);
|
|
768
|
-
};
|
|
769
|
-
|
|
770
|
-
// ../anvl/src/join/index.ts
|
|
771
|
-
var Join = class _Join {
|
|
772
|
-
constructor(json) {
|
|
773
|
-
this.a = `from`;
|
|
774
|
-
this.b = `to`;
|
|
775
|
-
this.makeJsonInterface = (...params) => {
|
|
776
|
-
return makeJsonInterface(this, ...params);
|
|
777
|
-
};
|
|
778
|
-
Object.assign(this, __spreadProps(__spreadValues(__spreadValues({}, EMPTY_RELATION_DATA), json), {
|
|
779
|
-
makeJsonInterface: this.makeJsonInterface
|
|
780
|
-
}));
|
|
781
|
-
}
|
|
782
|
-
toJSON() {
|
|
783
|
-
return {
|
|
784
|
-
relationType: this.relationType,
|
|
785
|
-
relations: this.relations,
|
|
786
|
-
contents: this.contents,
|
|
787
|
-
a: this.a,
|
|
788
|
-
b: this.b
|
|
789
|
-
};
|
|
790
|
-
}
|
|
791
|
-
static fromJSON(json, options) {
|
|
792
|
-
const isValid = isRelationData(options)(json);
|
|
793
|
-
if (isValid) {
|
|
794
|
-
return new _Join(json);
|
|
795
|
-
}
|
|
796
|
-
throw new Error(
|
|
797
|
-
`Saved JSON for this Join is invalid: ${JSON.stringify(json)}`
|
|
798
|
-
);
|
|
799
|
-
}
|
|
800
|
-
from(newA) {
|
|
801
|
-
return new _Join(__spreadProps(__spreadValues({}, this), { a: newA }));
|
|
802
|
-
}
|
|
803
|
-
to(newB) {
|
|
804
|
-
return new _Join(__spreadProps(__spreadValues({}, this), { b: newB }));
|
|
805
|
-
}
|
|
806
|
-
getRelatedId(id) {
|
|
807
|
-
return getRelatedId(this, id);
|
|
808
|
-
}
|
|
809
|
-
getRelatedIds(id) {
|
|
810
|
-
return getRelatedIds(this, id);
|
|
811
|
-
}
|
|
812
|
-
getContent(idA, idB) {
|
|
813
|
-
return getContent(this, idA, idB);
|
|
814
|
-
}
|
|
815
|
-
getRelationEntries(id) {
|
|
816
|
-
return getRelationEntries(this, id);
|
|
817
|
-
}
|
|
818
|
-
getRelationRecord(id) {
|
|
819
|
-
return getRelationRecord(this, id);
|
|
820
|
-
}
|
|
821
|
-
getRelation(id) {
|
|
822
|
-
return getRelations(this, id)[0];
|
|
823
|
-
}
|
|
824
|
-
getRelations(id) {
|
|
825
|
-
return getRelations(this, id);
|
|
826
|
-
}
|
|
827
|
-
setRelations(subject, relations) {
|
|
828
|
-
return new _Join(setRelations(this, subject, relations));
|
|
829
|
-
}
|
|
830
|
-
set(relation, ...rest) {
|
|
831
|
-
return new _Join(setRelationWithContent(this, relation, ...rest));
|
|
832
|
-
}
|
|
833
|
-
remove(relation) {
|
|
834
|
-
return new _Join(
|
|
835
|
-
removeRelation(this, relation)
|
|
836
|
-
);
|
|
837
|
-
}
|
|
838
|
-
};
|
|
839
|
-
var ElasticInput = React.forwardRef(function ElasticInputFC(props, ref) {
|
|
840
|
-
var _a2, _b, _c, _d;
|
|
841
|
-
const inputRef = React.useRef(null);
|
|
842
|
-
const spanRef = React.useRef(null);
|
|
843
|
-
const [inputWidth, setInputWidth] = React.useState(`auto`);
|
|
844
|
-
React.useImperativeHandle(
|
|
489
|
+
var ElasticInput = react.forwardRef(function ElasticInputFC(props, ref) {
|
|
490
|
+
var _a2, _b, _c, _d, _e, _f;
|
|
491
|
+
const inputRef = react.useRef(null);
|
|
492
|
+
const spanRef = react.useRef(null);
|
|
493
|
+
const [inputWidth, setInputWidth] = react.useState(`auto`);
|
|
494
|
+
react.useImperativeHandle(
|
|
845
495
|
ref,
|
|
846
496
|
() => ({
|
|
847
497
|
focus: () => {
|
|
@@ -851,7 +501,7 @@ var ElasticInput = React.forwardRef(function ElasticInputFC(props, ref) {
|
|
|
851
501
|
})
|
|
852
502
|
);
|
|
853
503
|
const extraWidth = props.type === `number` ? 15 : 0;
|
|
854
|
-
|
|
504
|
+
react.useLayoutEffect(() => {
|
|
855
505
|
if (spanRef.current) {
|
|
856
506
|
setInputWidth(`${spanRef.current.offsetWidth + extraWidth}px`);
|
|
857
507
|
const interval = setInterval(() => {
|
|
@@ -859,7 +509,9 @@ var ElasticInput = React.forwardRef(function ElasticInputFC(props, ref) {
|
|
|
859
509
|
setInputWidth(`${spanRef.current.offsetWidth + extraWidth}px`);
|
|
860
510
|
}
|
|
861
511
|
}, 1e3);
|
|
862
|
-
return () =>
|
|
512
|
+
return () => {
|
|
513
|
+
clearInterval(interval);
|
|
514
|
+
};
|
|
863
515
|
}
|
|
864
516
|
}, [(_a2 = inputRef.current) == null ? void 0 : _a2.value, props.value]);
|
|
865
517
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { style: { display: `inline-block`, position: `relative` }, children: [
|
|
@@ -887,8 +539,8 @@ var ElasticInput = React.forwardRef(function ElasticInputFC(props, ref) {
|
|
|
887
539
|
visibility: `hidden`,
|
|
888
540
|
// color: `red`,
|
|
889
541
|
whiteSpace: `pre`,
|
|
890
|
-
fontFamily: ((_c = props.style) == null ? void 0 : _c.fontFamily)
|
|
891
|
-
fontSize: ((
|
|
542
|
+
fontFamily: (_d = (_c = props.style) == null ? void 0 : _c.fontFamily) != null ? _d : `inherit`,
|
|
543
|
+
fontSize: (_f = (_e = props.style) == null ? void 0 : _e.fontSize) != null ? _f : `inherit`
|
|
892
544
|
},
|
|
893
545
|
children: props.value
|
|
894
546
|
}
|
|
@@ -898,9 +550,6 @@ var ElasticInput = React.forwardRef(function ElasticInputFC(props, ref) {
|
|
|
898
550
|
|
|
899
551
|
// ../anvl/src/number/clamp.ts
|
|
900
552
|
var clampInto = (min, max) => (value) => value < min ? min : value > max ? max : value;
|
|
901
|
-
|
|
902
|
-
// ../anvl/src/number/wrap.ts
|
|
903
|
-
var wrapInto = (min, max) => (value) => value < min ? max - (min - value) % (max - min) : min + (value - min) % (max - min);
|
|
904
553
|
function round(value, decimalPlaces) {
|
|
905
554
|
if (decimalPlaces === void 0)
|
|
906
555
|
return value;
|
|
@@ -919,11 +568,11 @@ var isDecimalInProgress = (input) => input === `0` || !Number.isNaN(Number(input
|
|
|
919
568
|
var textToValue = (input, allowDecimal) => {
|
|
920
569
|
if (isValidNonNumber(input))
|
|
921
570
|
return VALID_NON_NUMBER_INTERPRETATIONS[input];
|
|
922
|
-
return allowDecimal ? parseFloat(input) : Math.round(parseFloat(input));
|
|
571
|
+
return allowDecimal ? Number.parseFloat(input) : Math.round(Number.parseFloat(input));
|
|
923
572
|
};
|
|
924
573
|
var DEFAULT_NUMBER_CONSTRAINTS = {
|
|
925
|
-
max:
|
|
926
|
-
min:
|
|
574
|
+
max: Number.POSITIVE_INFINITY,
|
|
575
|
+
min: Number.NEGATIVE_INFINITY,
|
|
927
576
|
decimalPlaces: 100,
|
|
928
577
|
nullable: true
|
|
929
578
|
};
|
|
@@ -960,9 +609,9 @@ var NumberInput = ({
|
|
|
960
609
|
testId,
|
|
961
610
|
value = null
|
|
962
611
|
}) => {
|
|
963
|
-
const id =
|
|
964
|
-
const [temporaryEntry, setTemporaryEntry] =
|
|
965
|
-
const userHasMadeDeliberateChange =
|
|
612
|
+
const id = react.useId();
|
|
613
|
+
const [temporaryEntry, setTemporaryEntry] = react.useState(null);
|
|
614
|
+
const userHasMadeDeliberateChange = react.useRef(false);
|
|
966
615
|
const refine = initRefinery({ max, min, decimalPlaces, nullable: true });
|
|
967
616
|
const allowDecimal = decimalPlaces === void 0 || decimalPlaces > 0;
|
|
968
617
|
const handleBlur = () => {
|
|
@@ -1101,7 +750,9 @@ var JsonEditor_INTERNAL = ({
|
|
|
1101
750
|
ElasticInput,
|
|
1102
751
|
{
|
|
1103
752
|
value: name,
|
|
1104
|
-
onChange: disabled ? doNothing : (e) =>
|
|
753
|
+
onChange: disabled ? doNothing : (e) => {
|
|
754
|
+
rename(e.target.value);
|
|
755
|
+
},
|
|
1105
756
|
disabled
|
|
1106
757
|
}
|
|
1107
758
|
) }),
|
|
@@ -1122,7 +773,9 @@ var JsonEditor_INTERNAL = ({
|
|
|
1122
773
|
recast && dataIsJson ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1123
774
|
"select",
|
|
1124
775
|
{
|
|
1125
|
-
onChange: disabled ? doNothing : (e) =>
|
|
776
|
+
onChange: disabled ? doNothing : (e) => {
|
|
777
|
+
recast(e.target.value);
|
|
778
|
+
},
|
|
1126
779
|
value: refined.type,
|
|
1127
780
|
disabled,
|
|
1128
781
|
children: Object.keys(SubEditors).map((type) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: type, children: type }, type))
|
|
@@ -1132,13 +785,13 @@ var JsonEditor_INTERNAL = ({
|
|
|
1132
785
|
};
|
|
1133
786
|
|
|
1134
787
|
// ../hamr/react-json-editor/src/editors-by-type/utilities/array-elements.ts
|
|
1135
|
-
var makeElementSetters = (data, set) => data.map(
|
|
1136
|
-
|
|
788
|
+
var makeElementSetters = (data, set) => data.map((value, index) => (newValue) => {
|
|
789
|
+
set(() => {
|
|
1137
790
|
const newData = [...data];
|
|
1138
791
|
newData[index] = become(newValue)(value);
|
|
1139
792
|
return newData;
|
|
1140
|
-
})
|
|
1141
|
-
);
|
|
793
|
+
});
|
|
794
|
+
});
|
|
1142
795
|
var ArrayEditor = ({
|
|
1143
796
|
path = [],
|
|
1144
797
|
isReadonly = () => false,
|
|
@@ -1194,7 +847,7 @@ var Int = Object.assign((input) => parseInteger(input), {
|
|
|
1194
847
|
from: (input) => pipe(
|
|
1195
848
|
input,
|
|
1196
849
|
String,
|
|
1197
|
-
parseFloat,
|
|
850
|
+
Number.parseFloat,
|
|
1198
851
|
(num) => isInteger(num) ? {
|
|
1199
852
|
value: num,
|
|
1200
853
|
error: null,
|
|
@@ -1435,7 +1088,9 @@ var expandPathForSchema = (path) => {
|
|
|
1435
1088
|
);
|
|
1436
1089
|
default:
|
|
1437
1090
|
throw new TypeError(
|
|
1438
|
-
`The key ${
|
|
1091
|
+
`The key ${JSON.stringify(
|
|
1092
|
+
key
|
|
1093
|
+
)} is not a valid JSON key; expected string or number, got ${typeof key}`
|
|
1439
1094
|
);
|
|
1440
1095
|
}
|
|
1441
1096
|
});
|
|
@@ -1458,10 +1113,11 @@ var findSubSchema = (schema) => {
|
|
|
1458
1113
|
if (typeof schema === `boolean`) {
|
|
1459
1114
|
return new TypeError(`The schema is not a JsonSchema`);
|
|
1460
1115
|
}
|
|
1461
|
-
const
|
|
1116
|
+
const reduction = pathIntoSchema.reduce(
|
|
1462
1117
|
({ node: node2, refMap: refMap2 = void 0 }, key) => (console.log({ node: node2, key }), isJsonSchemaRef(node2) ? retrieveRef({ refNode: node2, root: schema, refMap: refMap2 }) : { node: node2[key], refMap: refMap2 }),
|
|
1463
1118
|
{ node: schema, refMap: void 0 }
|
|
1464
1119
|
);
|
|
1120
|
+
const { node, refMap } = reduction;
|
|
1465
1121
|
if (node instanceof Error)
|
|
1466
1122
|
throw node;
|
|
1467
1123
|
let subSchema = node;
|
|
@@ -1616,35 +1272,44 @@ var castToJson = (input) => {
|
|
|
1616
1272
|
// ../hamr/react-json-editor/src/editors-by-type/utilities/object-properties.ts
|
|
1617
1273
|
var makePropertySetters = (data, set) => mapObject(
|
|
1618
1274
|
data,
|
|
1619
|
-
(value, key) => (newValue) =>
|
|
1275
|
+
(value, key) => (newValue) => {
|
|
1276
|
+
set(__spreadProps(__spreadValues({}, data), { [key]: become(newValue)(value[key]) }));
|
|
1277
|
+
}
|
|
1620
1278
|
);
|
|
1621
1279
|
var makePropertyRenamers = (data, set, stableKeyMapRef) => mapObject(
|
|
1622
1280
|
data,
|
|
1623
|
-
(value, key) => (newKey) =>
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1281
|
+
(value, key) => (newKey) => {
|
|
1282
|
+
if (!Object.hasOwn(data, newKey)) {
|
|
1283
|
+
set(() => {
|
|
1284
|
+
const entries = Object.entries(data);
|
|
1285
|
+
const index = entries.findIndex(([k]) => k === key);
|
|
1286
|
+
entries[index] = [newKey, value];
|
|
1287
|
+
const stableKeyMap = stableKeyMapRef.current;
|
|
1288
|
+
stableKeyMapRef.current = __spreadProps(__spreadValues({}, stableKeyMap), {
|
|
1289
|
+
[newKey]: stableKeyMap[key]
|
|
1290
|
+
});
|
|
1291
|
+
return Object.fromEntries(entries);
|
|
1292
|
+
});
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1633
1295
|
);
|
|
1634
|
-
var makePropertyRemovers = (data, set) => mapObject(
|
|
1635
|
-
|
|
1636
|
-
(_, key) => () => set(() => {
|
|
1296
|
+
var makePropertyRemovers = (data, set) => mapObject(data, (_, key) => () => {
|
|
1297
|
+
set(() => {
|
|
1637
1298
|
const _a2 = data, rest = __objRest(_a2, [__restKey(key)]);
|
|
1638
1299
|
return rest;
|
|
1639
|
-
})
|
|
1640
|
-
);
|
|
1300
|
+
});
|
|
1301
|
+
});
|
|
1641
1302
|
var makePropertyRecasters = (data, set) => mapObject(
|
|
1642
1303
|
data,
|
|
1643
|
-
(value, key) => (newType) =>
|
|
1644
|
-
|
|
1645
|
-
|
|
1304
|
+
(value, key) => (newType) => {
|
|
1305
|
+
set(() => __spreadProps(__spreadValues({}, data), {
|
|
1306
|
+
[key]: castToJson(value).to[newType]()
|
|
1307
|
+
}));
|
|
1308
|
+
}
|
|
1646
1309
|
);
|
|
1647
|
-
var makePropertyCreationInterface = (data, set) => (key, type) => (value) =>
|
|
1310
|
+
var makePropertyCreationInterface = (data, set) => (key, type) => (value) => {
|
|
1311
|
+
set(__spreadProps(__spreadValues({}, data), { [key]: value != null ? value : JSON_DEFAULTS[type] }));
|
|
1312
|
+
};
|
|
1648
1313
|
var makePropertySorter = (data, set, sortFn) => () => {
|
|
1649
1314
|
const sortedKeys = Object.keys(data).sort(sortFn);
|
|
1650
1315
|
const sortedObj = {};
|
|
@@ -1662,7 +1327,16 @@ var PropertyAdder = ({
|
|
|
1662
1327
|
/* @__PURE__ */ jsxRuntime.jsx(ElasticInput, { disabled: true, defaultValue: propertyKey }),
|
|
1663
1328
|
` `,
|
|
1664
1329
|
/* @__PURE__ */ jsxRuntime.jsx(ElasticInput, { disabled: true, defaultValue: "is missing" }),
|
|
1665
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1330
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1331
|
+
Components.Button,
|
|
1332
|
+
{
|
|
1333
|
+
onClick: () => {
|
|
1334
|
+
addProperty();
|
|
1335
|
+
},
|
|
1336
|
+
disabled,
|
|
1337
|
+
children: "+"
|
|
1338
|
+
}
|
|
1339
|
+
)
|
|
1666
1340
|
] });
|
|
1667
1341
|
var ObjectEditor = ({
|
|
1668
1342
|
schema,
|
|
@@ -1675,7 +1349,7 @@ var ObjectEditor = ({
|
|
|
1675
1349
|
}) => {
|
|
1676
1350
|
var _a2;
|
|
1677
1351
|
const disabled = isReadonly(path);
|
|
1678
|
-
const stableKeyMap =
|
|
1352
|
+
const stableKeyMap = react.useRef(
|
|
1679
1353
|
Object.keys(data).reduce(
|
|
1680
1354
|
(acc, key) => {
|
|
1681
1355
|
acc[key] = key;
|
|
@@ -1702,7 +1376,16 @@ var ObjectEditor = ({
|
|
|
1702
1376
|
);
|
|
1703
1377
|
const missingKeys = schemaKeys === true ? [] : schemaKeys.filter((key) => !dataKeys.includes(key));
|
|
1704
1378
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1705
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1379
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1380
|
+
Components.Button,
|
|
1381
|
+
{
|
|
1382
|
+
onClick: () => {
|
|
1383
|
+
sortProperties();
|
|
1384
|
+
},
|
|
1385
|
+
disabled,
|
|
1386
|
+
children: "Sort"
|
|
1387
|
+
}
|
|
1388
|
+
),
|
|
1706
1389
|
/* @__PURE__ */ jsxRuntime.jsxs(Components.ObjectWrapper, { children: [
|
|
1707
1390
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "json_editor_properties", children: [...missingKeys, ...officialKeys, ...unofficialKeys].map((key) => {
|
|
1708
1391
|
const originalKey = stableKeyMap.current[key];
|
|
@@ -1741,7 +1424,9 @@ var ObjectEditor = ({
|
|
|
1741
1424
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1742
1425
|
Components.Button,
|
|
1743
1426
|
{
|
|
1744
|
-
onClick: disabled ? doNothing : () =>
|
|
1427
|
+
onClick: disabled ? doNothing : () => {
|
|
1428
|
+
makePropertyAdder(`new_property`, `string`)();
|
|
1429
|
+
},
|
|
1745
1430
|
disabled,
|
|
1746
1431
|
children: "+"
|
|
1747
1432
|
}
|
|
@@ -1758,7 +1443,9 @@ var BooleanEditor = ({
|
|
|
1758
1443
|
{
|
|
1759
1444
|
type: "checkbox",
|
|
1760
1445
|
checked: data,
|
|
1761
|
-
onChange: (event) =>
|
|
1446
|
+
onChange: (event) => {
|
|
1447
|
+
set(event.target.checked);
|
|
1448
|
+
}
|
|
1762
1449
|
}
|
|
1763
1450
|
) });
|
|
1764
1451
|
var NullEditor = ({
|
|
@@ -1774,7 +1461,9 @@ var NumberEditor = ({
|
|
|
1774
1461
|
NumberInput,
|
|
1775
1462
|
{
|
|
1776
1463
|
value: data,
|
|
1777
|
-
set: isReadonly(path) ? void 0 : (newValue) =>
|
|
1464
|
+
set: isReadonly(path) ? void 0 : (newValue) => {
|
|
1465
|
+
set(Number(newValue));
|
|
1466
|
+
},
|
|
1778
1467
|
autoSize: true
|
|
1779
1468
|
}
|
|
1780
1469
|
) });
|
|
@@ -1841,7 +1530,7 @@ var DefaultFallback = ({ error, errorInfo }) => {
|
|
|
1841
1530
|
}
|
|
1842
1531
|
);
|
|
1843
1532
|
};
|
|
1844
|
-
var ErrorBoundary = class extends
|
|
1533
|
+
var ErrorBoundary = class extends react.Component {
|
|
1845
1534
|
constructor(props) {
|
|
1846
1535
|
super(props);
|
|
1847
1536
|
this.state = {};
|
|
@@ -1948,419 +1637,19 @@ var SubEditors = {
|
|
|
1948
1637
|
object: ObjectEditor,
|
|
1949
1638
|
string: StringEditor
|
|
1950
1639
|
};
|
|
1951
|
-
|
|
1952
|
-
// ../anvl/src/string/string-to-color.ts
|
|
1953
|
-
function stringToColor(input) {
|
|
1954
|
-
let hash = 0;
|
|
1955
|
-
for (let i = 0; i < input.length; i++) {
|
|
1956
|
-
const char = input.charCodeAt(i);
|
|
1957
|
-
hash = (hash << 5) - hash + char;
|
|
1958
|
-
hash |= 0;
|
|
1959
|
-
}
|
|
1960
|
-
let hexColor = (hash & 16777215).toString(16);
|
|
1961
|
-
while (hexColor.length < 6) {
|
|
1962
|
-
hexColor = `0` + hexColor;
|
|
1963
|
-
}
|
|
1964
|
-
return `#${hexColor}`;
|
|
1965
|
-
}
|
|
1966
|
-
|
|
1967
|
-
// ../luum/src/constants/index.ts
|
|
1968
|
-
var CHANNEL_SPECIFIC_LUM = {
|
|
1969
|
-
R: 0.3,
|
|
1970
|
-
G: 0.5,
|
|
1971
|
-
B: 0.2
|
|
1972
|
-
};
|
|
1973
|
-
|
|
1974
|
-
// ../luum/src/constants/filters.ts
|
|
1975
|
-
var unfiltered = [
|
|
1976
|
-
{ sat: 255, hue: 0 },
|
|
1977
|
-
{ sat: 255, hue: 360 }
|
|
1978
|
-
];
|
|
1979
|
-
|
|
1980
|
-
// ../luum/src/export/channelsToHex.ts
|
|
1981
|
-
var channelsToHex = (channels) => `#${Object.values(channels).map((channel) => {
|
|
1982
|
-
let channelHex = channel.toString(16);
|
|
1983
|
-
if (channelHex.length === 1)
|
|
1984
|
-
channelHex = 0 + channelHex;
|
|
1985
|
-
return channelHex;
|
|
1986
|
-
}).join(``)}`;
|
|
1987
|
-
var channelsToHex_default = channelsToHex;
|
|
1988
|
-
|
|
1989
|
-
// ../luum/src/import/hueToRelativeChannels.ts
|
|
1990
|
-
var hueToRelativeChannels_default = (hue) => {
|
|
1991
|
-
const hueWrapped = wrapInto(0, 360)(hue);
|
|
1992
|
-
const hueReduced = hueWrapped / 60;
|
|
1993
|
-
const hueInteger = Math.floor(hueReduced);
|
|
1994
|
-
const hueDecimal = hueReduced - hueInteger;
|
|
1995
|
-
const x = hueDecimal;
|
|
1996
|
-
const y = 1 - hueDecimal;
|
|
1997
|
-
switch (hueInteger) {
|
|
1998
|
-
case 0:
|
|
1999
|
-
return [1, x, 0];
|
|
2000
|
-
case 1:
|
|
2001
|
-
return [y, 1, 0];
|
|
2002
|
-
case 2:
|
|
2003
|
-
return [0, 1, x];
|
|
2004
|
-
case 3:
|
|
2005
|
-
return [0, y, 1];
|
|
2006
|
-
case 4:
|
|
2007
|
-
return [x, 0, 1];
|
|
2008
|
-
case 5:
|
|
2009
|
-
return [1, 0, y];
|
|
2010
|
-
default:
|
|
2011
|
-
throw new Error(`invalid hue served: ${hue}`);
|
|
2012
|
-
}
|
|
2013
|
-
};
|
|
2014
|
-
|
|
2015
|
-
// ../luum/src/solveFor/hueFromChannels.ts
|
|
2016
|
-
var hueFromChannels = ({ R, G, B }) => {
|
|
2017
|
-
let hue = 0;
|
|
2018
|
-
if (R > G && G >= B)
|
|
2019
|
-
hue = 60 * (0 + (G - B) / (R - B));
|
|
2020
|
-
if (G >= R && R > B)
|
|
2021
|
-
hue = 60 * (2 - (R - B) / (G - B));
|
|
2022
|
-
if (G > B && B >= R)
|
|
2023
|
-
hue = 60 * (2 + (B - R) / (G - R));
|
|
2024
|
-
if (B >= G && G > R)
|
|
2025
|
-
hue = 60 * (4 - (G - R) / (B - R));
|
|
2026
|
-
if (B > R && R >= G)
|
|
2027
|
-
hue = 60 * (4 + (R - G) / (B - G));
|
|
2028
|
-
if (R >= B && B > G)
|
|
2029
|
-
hue = 60 * (6 - (B - G) / (R - G));
|
|
2030
|
-
return hue;
|
|
2031
|
-
};
|
|
2032
|
-
var hueFromChannels_default = hueFromChannels;
|
|
2033
|
-
|
|
2034
|
-
// ../luum/src/solveFor/lumFromChannels.ts
|
|
2035
|
-
var lumFromChannels = ({ R, G, B }) => {
|
|
2036
|
-
const lum = CHANNEL_SPECIFIC_LUM.R * R / 255 + CHANNEL_SPECIFIC_LUM.G * G / 255 + CHANNEL_SPECIFIC_LUM.B * B / 255;
|
|
2037
|
-
return lum;
|
|
2038
|
-
};
|
|
2039
|
-
var lumFromChannels_default = lumFromChannels;
|
|
2040
|
-
|
|
2041
|
-
// ../luum/src/solveFor/maxSatForHueInFilter.ts
|
|
2042
|
-
var maxSatForHueInFilter_default = (hue, filter) => {
|
|
2043
|
-
let maxSat = 255;
|
|
2044
|
-
const hueWrapped = wrapInto(0, 360)(hue);
|
|
2045
|
-
for (let a2 = -1, b2 = 0; b2 < filter.length; a2++, b2++) {
|
|
2046
|
-
a2 = wrapInto(0, filter.length)(a2);
|
|
2047
|
-
const hueDoubleWrapped = a2 > b2 ? wrapInto(-180, 180)(hueWrapped) : void 0;
|
|
2048
|
-
const tuningPointA = filter[a2];
|
|
2049
|
-
const tuningPointB = filter[b2];
|
|
2050
|
-
const hueA = a2 > b2 ? wrapInto(-180, 180)(tuningPointA.hue) : tuningPointA.hue;
|
|
2051
|
-
const hueB = tuningPointB.hue;
|
|
2052
|
-
if ((hueDoubleWrapped || hueWrapped) >= hueA && (hueDoubleWrapped || hueWrapped) < hueB) {
|
|
2053
|
-
let $ = hueDoubleWrapped || hueWrapped;
|
|
2054
|
-
$ -= hueA;
|
|
2055
|
-
$ /= hueB - hueA;
|
|
2056
|
-
$ *= tuningPointB.sat - tuningPointA.sat;
|
|
2057
|
-
$ += tuningPointA.sat;
|
|
2058
|
-
maxSat = $;
|
|
2059
|
-
}
|
|
2060
|
-
}
|
|
2061
|
-
return maxSat;
|
|
2062
|
-
};
|
|
2063
|
-
|
|
2064
|
-
// ../luum/src/solveFor/satFromChannels.ts
|
|
2065
|
-
var satFromChannels = ({ R, G, B }) => {
|
|
2066
|
-
const sat = Math.max(R, G, B) - Math.min(R, G, B);
|
|
2067
|
-
return sat;
|
|
2068
|
-
};
|
|
2069
|
-
var satFromChannels_default = satFromChannels;
|
|
2070
|
-
|
|
2071
|
-
// ../luum/src/solveFor/specificLumFromHue.ts
|
|
2072
|
-
var specificLumFromHue_default = (hue) => {
|
|
2073
|
-
const [factorR, factorG, factorB] = hueToRelativeChannels_default(hue);
|
|
2074
|
-
const lumR = CHANNEL_SPECIFIC_LUM.R * factorR;
|
|
2075
|
-
const lumG = CHANNEL_SPECIFIC_LUM.G * factorG;
|
|
2076
|
-
const lumB = CHANNEL_SPECIFIC_LUM.B * factorB;
|
|
2077
|
-
const specificLum = lumR + lumG + lumB;
|
|
2078
|
-
return specificLum;
|
|
2079
|
-
};
|
|
2080
|
-
|
|
2081
|
-
// ../luum/src/export/specToChannelsFixLimit.ts
|
|
2082
|
-
var minChannelsForSaturationFromHue = (hue) => {
|
|
2083
|
-
const relativeChannels = hueToRelativeChannels_default(hue);
|
|
2084
|
-
const channelSpreader = (trueSaturation) => {
|
|
2085
|
-
const makeMinChannel = (idx) => Math.round(relativeChannels[idx] * trueSaturation);
|
|
2086
|
-
return {
|
|
2087
|
-
R: makeMinChannel(0),
|
|
2088
|
-
G: makeMinChannel(1),
|
|
2089
|
-
B: makeMinChannel(2)
|
|
2090
|
-
};
|
|
2091
|
-
};
|
|
2092
|
-
return channelSpreader;
|
|
2093
|
-
};
|
|
2094
|
-
var channelsFromIlluminationObj = ({
|
|
2095
|
-
minChannels,
|
|
2096
|
-
trueLuminosity,
|
|
2097
|
-
minLum
|
|
2098
|
-
}) => {
|
|
2099
|
-
const { max, round: round2 } = Math;
|
|
2100
|
-
const maxWhite = 255 - max(...Object.values(minChannels));
|
|
2101
|
-
const white = clampInto(0, maxWhite)(round2((trueLuminosity - minLum) * 255));
|
|
2102
|
-
const channels = {
|
|
2103
|
-
R: minChannels.R + white,
|
|
2104
|
-
G: minChannels.G + white,
|
|
2105
|
-
B: minChannels.B + white
|
|
2106
|
-
};
|
|
2107
|
-
return channels;
|
|
2108
|
-
};
|
|
2109
|
-
var specToChannelsFixLimit = ({ hue, sat, lum, prefer = `lum` }, filter = unfiltered) => {
|
|
2110
|
-
const minChannelsForSaturation = minChannelsForSaturationFromHue(hue);
|
|
2111
|
-
let trueSaturation;
|
|
2112
|
-
let trueLuminosity;
|
|
2113
|
-
let minChannels;
|
|
2114
|
-
let maxChannels;
|
|
2115
|
-
let specificLum;
|
|
2116
|
-
let minLum = 0;
|
|
2117
|
-
let maxLum = 1;
|
|
2118
|
-
let maxSat = maxSatForHueInFilter_default(hue, filter);
|
|
2119
|
-
switch (prefer) {
|
|
2120
|
-
case `sat`:
|
|
2121
|
-
trueSaturation = clampInto(0, 255)(Math.min(sat, maxSat));
|
|
2122
|
-
minChannels = minChannelsForSaturation(trueSaturation);
|
|
2123
|
-
maxChannels = {
|
|
2124
|
-
R: minChannels.R + 255 - trueSaturation,
|
|
2125
|
-
G: minChannels.G + 255 - trueSaturation,
|
|
2126
|
-
B: minChannels.B + 255 - trueSaturation
|
|
2127
|
-
};
|
|
2128
|
-
minLum = lumFromChannels_default(minChannels);
|
|
2129
|
-
maxLum = lumFromChannels_default(maxChannels);
|
|
2130
|
-
trueLuminosity = clampInto(minLum, maxLum)(lum);
|
|
2131
|
-
break;
|
|
2132
|
-
case `lum`:
|
|
2133
|
-
trueLuminosity = clampInto(0, 1)(lum);
|
|
2134
|
-
specificLum = specificLumFromHue_default(hue);
|
|
2135
|
-
maxSat = Math.min(
|
|
2136
|
-
maxSat,
|
|
2137
|
-
Math.round(
|
|
2138
|
-
trueLuminosity <= specificLum ? 255 * (trueLuminosity / specificLum) : 255 * (1 - trueLuminosity) / (1 - specificLum)
|
|
2139
|
-
)
|
|
2140
|
-
);
|
|
2141
|
-
trueSaturation = Math.min(sat, maxSat);
|
|
2142
|
-
minChannels = minChannelsForSaturation(trueSaturation);
|
|
2143
|
-
minLum = lumFromChannels_default(minChannels);
|
|
2144
|
-
break;
|
|
2145
|
-
}
|
|
2146
|
-
const channels = channelsFromIlluminationObj({
|
|
2147
|
-
minChannels,
|
|
2148
|
-
trueLuminosity,
|
|
2149
|
-
minLum
|
|
2150
|
-
});
|
|
2151
|
-
return {
|
|
2152
|
-
channels,
|
|
2153
|
-
fix: {
|
|
2154
|
-
sat: trueSaturation,
|
|
2155
|
-
lum: trueLuminosity
|
|
2156
|
-
},
|
|
2157
|
-
limit: {
|
|
2158
|
-
sat: [0, maxSat],
|
|
2159
|
-
lum: [prefer === `lum` ? 0 : minLum, maxLum]
|
|
2160
|
-
}
|
|
2161
|
-
};
|
|
2162
|
-
};
|
|
2163
|
-
var specToChannelsFixLimit_default = specToChannelsFixLimit;
|
|
2164
|
-
|
|
2165
|
-
// ../luum/src/export/specToHexFixLimit.ts
|
|
2166
|
-
var specToHexFixLimit = ({ hue, sat, lum, prefer }, filter) => {
|
|
2167
|
-
const { channels, fix, limit } = specToChannelsFixLimit_default(
|
|
2168
|
-
{
|
|
2169
|
-
hue,
|
|
2170
|
-
sat,
|
|
2171
|
-
lum,
|
|
2172
|
-
prefer
|
|
2173
|
-
},
|
|
2174
|
-
filter
|
|
2175
|
-
);
|
|
2176
|
-
const { R, G, B } = channels;
|
|
2177
|
-
const hex = channelsToHex_default({ R, G, B });
|
|
2178
|
-
return { hex, fix, limit };
|
|
2179
|
-
};
|
|
2180
|
-
var specToHexFixLimit_default = specToHexFixLimit;
|
|
2181
|
-
|
|
2182
|
-
// ../luum/src/export/specToHex.ts
|
|
2183
|
-
var specToHex = ({ hue, sat, lum, prefer }, filter) => {
|
|
2184
|
-
const { hex } = specToHexFixLimit_default({ hue, sat, lum, prefer }, filter);
|
|
2185
|
-
return hex;
|
|
2186
|
-
};
|
|
2187
|
-
var specToHex_default = specToHex;
|
|
2188
|
-
|
|
2189
|
-
// ../luum/src/import/channelsToSpec.ts
|
|
2190
|
-
var channelsToSpec = ({ R, G, B }) => {
|
|
2191
|
-
const hue = hueFromChannels_default({ R, G, B });
|
|
2192
|
-
const sat = satFromChannels_default({ R, G, B });
|
|
2193
|
-
const lum = lumFromChannels_default({ R, G, B });
|
|
2194
|
-
return { hue, sat, lum };
|
|
2195
|
-
};
|
|
2196
|
-
var channelsToSpec_default = channelsToSpec;
|
|
2197
|
-
|
|
2198
|
-
// ../luum/src/import/normalizeHex.ts
|
|
2199
|
-
var BASE_16_CHAR_SET = `[a-fA-F0-9]+`;
|
|
2200
|
-
var miniHexToHex = (miniHex) => {
|
|
2201
|
-
const miniHexArray = miniHex.split(``);
|
|
2202
|
-
const hexTemplate = [0, 0, 1, 1, 2, 2];
|
|
2203
|
-
return hexTemplate.map((idx) => miniHexArray[idx]).join(``);
|
|
2204
|
-
};
|
|
2205
|
-
var normalizeHex = (maybeHex) => {
|
|
2206
|
-
const hex = maybeHex.replace(/^#/, ``);
|
|
2207
|
-
const hexIsCorrectLength = hex.length === 6 || hex.length === 3;
|
|
2208
|
-
const hexIsCorrectCharSet = hex.match(new RegExp(`^${BASE_16_CHAR_SET}$`)) !== null;
|
|
2209
|
-
const hexIsValid = hexIsCorrectLength && hexIsCorrectCharSet;
|
|
2210
|
-
if (!hexIsValid) {
|
|
2211
|
-
throw new Error(`${maybeHex} is not a valid hex code`);
|
|
2212
|
-
}
|
|
2213
|
-
if (hex.length === 3) {
|
|
2214
|
-
return miniHexToHex(hex);
|
|
2215
|
-
}
|
|
2216
|
-
return hex;
|
|
2217
|
-
};
|
|
2218
|
-
var normalizeHex_default = normalizeHex;
|
|
2219
|
-
|
|
2220
|
-
// ../luum/src/import/hexToChannels.ts
|
|
2221
|
-
var hexToChannels_default = (maybeHex) => {
|
|
2222
|
-
const hex = normalizeHex_default(maybeHex);
|
|
2223
|
-
return {
|
|
2224
|
-
R: parseInt(hex.slice(0, 2), 16),
|
|
2225
|
-
G: parseInt(hex.slice(2, 4), 16),
|
|
2226
|
-
B: parseInt(hex.slice(4, 6), 16)
|
|
2227
|
-
};
|
|
2228
|
-
};
|
|
2229
|
-
|
|
2230
|
-
// ../luum/src/import/hexToSpec.ts
|
|
2231
|
-
var hexToSpec = (hex) => {
|
|
2232
|
-
const { R, G, B } = hexToChannels_default(hex);
|
|
2233
|
-
const { hue, sat, lum } = channelsToSpec_default({ R, G, B });
|
|
2234
|
-
return { hue, sat, lum };
|
|
2235
|
-
};
|
|
2236
|
-
var hexToSpec_default = hexToSpec;
|
|
2237
|
-
|
|
2238
|
-
// ../luum/src/mixers/contrast.ts
|
|
2239
|
-
var contrastMax = (color) => __spreadProps(__spreadValues({}, color), {
|
|
2240
|
-
lum: color.lum > 0.666 ? 0 : 1
|
|
2241
|
-
});
|
|
2242
|
-
var offset = (offsetAmount) => (color) => __spreadProps(__spreadValues({}, color), {
|
|
2243
|
-
lum: color.lum > 0.666 ? color.lum - offsetAmount : color.lum + offsetAmount
|
|
2244
|
-
});
|
|
2245
|
-
|
|
2246
|
-
// ../luum/src/constants/luum-spec.ts
|
|
2247
|
-
var defaultSpec = {
|
|
2248
|
-
hue: 0,
|
|
2249
|
-
lum: 0,
|
|
2250
|
-
sat: 0,
|
|
2251
|
-
prefer: `lum`
|
|
2252
|
-
};
|
|
2253
|
-
|
|
2254
|
-
// ../luum/src/scheme/index.ts
|
|
2255
|
-
var isLuumSpec = (input) => typeof input === `object` && input !== null && typeof input.hue === `number` && typeof input.sat === `number` && typeof input.lum === `number` && [`sat`, `lum`].includes(input.prefer);
|
|
2256
|
-
isModifier(isLuumSpec)(defaultSpec);
|
|
2257
|
-
var WAYFORGE_CORE_COLOR_NAMES = [
|
|
2258
|
-
`Red`,
|
|
2259
|
-
`Orange`,
|
|
2260
|
-
`Yellow`,
|
|
2261
|
-
`Lime`,
|
|
2262
|
-
`Green`,
|
|
2263
|
-
`Teal`,
|
|
2264
|
-
`Cyan`,
|
|
2265
|
-
`Blue`,
|
|
2266
|
-
`Indigo`,
|
|
2267
|
-
`Violet`,
|
|
2268
|
-
`Magenta`,
|
|
2269
|
-
`Pink`
|
|
2270
|
-
];
|
|
2271
|
-
WAYFORGE_CORE_COLOR_NAMES.reduce(
|
|
2272
|
-
(acc, name, idx) => {
|
|
2273
|
-
acc[name] = {
|
|
2274
|
-
hue: idx * 30,
|
|
2275
|
-
sat: 255,
|
|
2276
|
-
lum: 0.5,
|
|
2277
|
-
prefer: `sat`
|
|
2278
|
-
};
|
|
2279
|
-
return acc;
|
|
2280
|
-
},
|
|
2281
|
-
{}
|
|
2282
|
-
);
|
|
2283
|
-
var Id = ({ id }) => {
|
|
2284
|
-
const [isOpen, setIsOpen] = React__namespace.useState(false);
|
|
2285
|
-
const { refs, floatingStyles, context } = react$1.useFloating({
|
|
2286
|
-
open: isOpen,
|
|
2287
|
-
onOpenChange: setIsOpen,
|
|
2288
|
-
placement: `bottom-start`
|
|
2289
|
-
});
|
|
2290
|
-
const click = react$1.useClick(context);
|
|
2291
|
-
const { getReferenceProps, getFloatingProps } = react$1.useInteractions([click]);
|
|
2292
|
-
const bgColor = stringToColor(id);
|
|
2293
|
-
const contrastColor = pipe(bgColor, hexToSpec_default, contrastMax, specToHex_default);
|
|
2294
|
-
const offsetColor = pipe(bgColor, hexToSpec_default, offset(0.25), specToHex_default);
|
|
2295
|
-
const contrastOffsetColor = pipe(
|
|
2296
|
-
offsetColor,
|
|
2297
|
-
hexToSpec_default,
|
|
2298
|
-
contrastMax,
|
|
2299
|
-
specToHex_default
|
|
2300
|
-
);
|
|
2301
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2302
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2303
|
-
"span",
|
|
2304
|
-
__spreadProps(__spreadValues({
|
|
2305
|
-
ref: refs.setReference
|
|
2306
|
-
}, getReferenceProps()), {
|
|
2307
|
-
style: {
|
|
2308
|
-
background: bgColor,
|
|
2309
|
-
cursor: `pointer`,
|
|
2310
|
-
padding: `0px 4px`,
|
|
2311
|
-
color: contrastColor,
|
|
2312
|
-
userSelect: `none`,
|
|
2313
|
-
whiteSpace: `nowrap`
|
|
2314
|
-
},
|
|
2315
|
-
children: id.substring(0, 3)
|
|
2316
|
-
})
|
|
2317
|
-
),
|
|
2318
|
-
isOpen && /* @__PURE__ */ jsxRuntime.jsx(react$1.FloatingPortal, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2319
|
-
"span",
|
|
2320
|
-
__spreadProps(__spreadValues({
|
|
2321
|
-
ref: refs.setFloating
|
|
2322
|
-
}, getFloatingProps()), {
|
|
2323
|
-
style: __spreadProps(__spreadValues({}, floatingStyles), {
|
|
2324
|
-
color: contrastOffsetColor,
|
|
2325
|
-
background: offsetColor,
|
|
2326
|
-
padding: `0px 4px`,
|
|
2327
|
-
boxShadow: `0px 2px 10px rgba(0, 0, 0, 0.1)`
|
|
2328
|
-
}),
|
|
2329
|
-
children: id
|
|
2330
|
-
})
|
|
2331
|
-
) })
|
|
2332
|
-
] });
|
|
2333
|
-
};
|
|
2334
|
-
var RelationEditor = (props) => {
|
|
2335
|
-
const seen = /* @__PURE__ */ new Set();
|
|
2336
|
-
const data = Object.entries(props.data.relations).sort(([_, a2], [__, b2]) => b2.length - a2.length).filter(([head, tail]) => {
|
|
2337
|
-
if (seen.has(head))
|
|
2338
|
-
return false;
|
|
2339
|
-
seen.add(head);
|
|
2340
|
-
for (const tailElement of tail) {
|
|
2341
|
-
seen.add(tailElement);
|
|
2342
|
-
}
|
|
2343
|
-
return true;
|
|
2344
|
-
});
|
|
2345
|
-
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "relation-editor-0123456789", children: data.map(([head, tail]) => /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
2346
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: /* @__PURE__ */ jsxRuntime.jsx(Id, { id: head }) }),
|
|
2347
|
-
":",
|
|
2348
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: tail.map((child) => /* @__PURE__ */ jsxRuntime.jsx(Id, { id: child })) })
|
|
2349
|
-
] })) });
|
|
2350
|
-
};
|
|
2351
1640
|
var StateEditor = ({ token }) => {
|
|
2352
|
-
const set = react.useI(token);
|
|
2353
|
-
const data = react.useO(token);
|
|
2354
|
-
return isJson(data) ? /* @__PURE__ */ jsxRuntime.jsx(JsonEditor, { data, set, schema: true }) :
|
|
1641
|
+
const set = react$1.useI(token);
|
|
1642
|
+
const data = react$1.useO(token);
|
|
1643
|
+
return isJson(data) ? /* @__PURE__ */ jsxRuntime.jsx(JsonEditor, { data, set, schema: true }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "json_editor", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2355
1644
|
ElasticInput,
|
|
2356
1645
|
{
|
|
2357
|
-
value: data
|
|
1646
|
+
value: data !== null && typeof data === `object` && `toJson` in data && typeof data.toJson === `function` ? JSON.stringify(data.toJson()) : data instanceof Set ? `Set { ${JSON.stringify([...data]).slice(1, -1)} }` : Object.getPrototypeOf(data).constructor.name + ` ` + fallback(() => JSON.stringify(data), `?`),
|
|
2358
1647
|
disabled: true
|
|
2359
1648
|
}
|
|
2360
1649
|
) });
|
|
2361
1650
|
};
|
|
2362
1651
|
var ReadonlySelectorViewer = ({ token }) => {
|
|
2363
|
-
const data = react.useO(token);
|
|
1652
|
+
const data = react$1.useO(token);
|
|
2364
1653
|
return isJson(data) ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2365
1654
|
JsonEditor,
|
|
2366
1655
|
{
|
|
@@ -2372,7 +1661,7 @@ var ReadonlySelectorViewer = ({ token }) => {
|
|
|
2372
1661
|
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "json_editor", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2373
1662
|
ElasticInput,
|
|
2374
1663
|
{
|
|
2375
|
-
value: data instanceof Set ? `Set ` + JSON.stringify([...data]) :
|
|
1664
|
+
value: data instanceof Set ? `Set ` + JSON.stringify([...data]) : Object.getPrototypeOf(data).constructor.name + ` ` + JSON.stringify(data),
|
|
2376
1665
|
disabled: true
|
|
2377
1666
|
}
|
|
2378
1667
|
) });
|
|
@@ -2401,10 +1690,10 @@ var findStateTypeState = atom_io.selectorFamily({
|
|
|
2401
1690
|
});
|
|
2402
1691
|
var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
2403
1692
|
var _a2, _b;
|
|
2404
|
-
const setIsOpen = react.useI(isOpenState);
|
|
2405
|
-
const isOpen = react.useO(isOpenState);
|
|
2406
|
-
const state = react.useO(node);
|
|
2407
|
-
const stateType = react.useO(typeState);
|
|
1693
|
+
const setIsOpen = react$1.useI(isOpenState);
|
|
1694
|
+
const isOpen = react$1.useO(isOpenState);
|
|
1695
|
+
const state = react$1.useO(node);
|
|
1696
|
+
const stateType = react$1.useO(typeState);
|
|
2408
1697
|
const isPrimitive = Boolean(primitiveRefinery.refine(state));
|
|
2409
1698
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2410
1699
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { children: [
|
|
@@ -2412,6 +1701,7 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
|
2412
1701
|
button.OpenClose,
|
|
2413
1702
|
{
|
|
2414
1703
|
isOpen: isOpen && !isPrimitive,
|
|
1704
|
+
testid: `open-close-state-${node.key}`,
|
|
2415
1705
|
setIsOpen,
|
|
2416
1706
|
disabled: isPrimitive
|
|
2417
1707
|
}
|
|
@@ -2419,8 +1709,12 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
|
2419
1709
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
2420
1710
|
"label",
|
|
2421
1711
|
{
|
|
2422
|
-
onClick: () =>
|
|
2423
|
-
|
|
1712
|
+
onClick: () => {
|
|
1713
|
+
console.log(node, atom_io.getState(node));
|
|
1714
|
+
},
|
|
1715
|
+
onKeyUp: () => {
|
|
1716
|
+
console.log(node, atom_io.getState(node));
|
|
1717
|
+
},
|
|
2424
1718
|
children: [
|
|
2425
1719
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { children: (_b = (_a2 = node.family) == null ? void 0 : _a2.subKey) != null ? _b : node.key }),
|
|
2426
1720
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "type detail", children: [
|
|
@@ -2431,21 +1725,28 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
|
|
|
2431
1725
|
]
|
|
2432
1726
|
}
|
|
2433
1727
|
),
|
|
2434
|
-
|
|
1728
|
+
/* @__PURE__ */ jsxRuntime.jsx(StoreEditor, { token: node })
|
|
2435
1729
|
] }),
|
|
2436
1730
|
isOpen && !isPrimitive ? /* @__PURE__ */ jsxRuntime.jsx("main", { children: /* @__PURE__ */ jsxRuntime.jsx(StoreEditor, { token: node }) }) : null
|
|
2437
1731
|
] });
|
|
2438
1732
|
};
|
|
2439
1733
|
var StateIndexTreeNode = ({ node, isOpenState }) => {
|
|
2440
|
-
const setIsOpen = react.useI(isOpenState);
|
|
2441
|
-
const isOpen = react.useO(isOpenState);
|
|
1734
|
+
const setIsOpen = react$1.useI(isOpenState);
|
|
1735
|
+
const isOpen = react$1.useO(isOpenState);
|
|
2442
1736
|
for (const [key, childNode] of recordToEntries(node.familyMembers)) {
|
|
2443
|
-
findViewIsOpenState
|
|
2444
|
-
findStateTypeState
|
|
1737
|
+
atom_io.findState(findViewIsOpenState, key);
|
|
1738
|
+
atom_io.findState(findStateTypeState, childNode);
|
|
2445
1739
|
}
|
|
2446
1740
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2447
1741
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { children: [
|
|
2448
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1742
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1743
|
+
button.OpenClose,
|
|
1744
|
+
{
|
|
1745
|
+
isOpen,
|
|
1746
|
+
testid: `open-close-state-family-${node.key}`,
|
|
1747
|
+
setIsOpen
|
|
1748
|
+
}
|
|
1749
|
+
),
|
|
2449
1750
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { children: [
|
|
2450
1751
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { children: node.key }),
|
|
2451
1752
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "type detail", children: " (family)" })
|
|
@@ -2455,18 +1756,15 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
|
|
|
2455
1756
|
StateIndexNode,
|
|
2456
1757
|
{
|
|
2457
1758
|
node: childNode,
|
|
2458
|
-
isOpenState: findViewIsOpenState
|
|
2459
|
-
typeState: findStateTypeState
|
|
1759
|
+
isOpenState: atom_io.findState(findViewIsOpenState, childNode.key),
|
|
1760
|
+
typeState: atom_io.findState(findStateTypeState, childNode)
|
|
2460
1761
|
},
|
|
2461
1762
|
key
|
|
2462
1763
|
)) : null
|
|
2463
1764
|
] });
|
|
2464
1765
|
};
|
|
2465
1766
|
var StateIndexNode = ({ node, isOpenState, typeState }) => {
|
|
2466
|
-
|
|
2467
|
-
return null;
|
|
2468
|
-
}
|
|
2469
|
-
return /* @__PURE__ */ jsxRuntime.jsx("section", { className: "node state", children: `type` in node ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1767
|
+
return /* @__PURE__ */ jsxRuntime.jsx("section", { className: "node state", "data-testid": `state-${node.key}`, children: `type` in node ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2470
1768
|
StateIndexLeafNode,
|
|
2471
1769
|
{
|
|
2472
1770
|
node,
|
|
@@ -2476,14 +1774,14 @@ var StateIndexNode = ({ node, isOpenState, typeState }) => {
|
|
|
2476
1774
|
) : /* @__PURE__ */ jsxRuntime.jsx(StateIndexTreeNode, { node, isOpenState }) });
|
|
2477
1775
|
};
|
|
2478
1776
|
var StateIndex = ({ tokenIndex }) => {
|
|
2479
|
-
const tokenIds = react.useO(tokenIndex);
|
|
2480
|
-
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "index state_index", children: Object.entries(tokenIds).filter(([key]) => !key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).sort().map(([key, node]) => {
|
|
1777
|
+
const tokenIds = react$1.useO(tokenIndex);
|
|
1778
|
+
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "index state_index", "data-testid": "state-index", children: Object.entries(tokenIds).filter(([key]) => !key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).sort().map(([key, node]) => {
|
|
2481
1779
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2482
1780
|
StateIndexNode,
|
|
2483
1781
|
{
|
|
2484
1782
|
node,
|
|
2485
|
-
isOpenState: findViewIsOpenState
|
|
2486
|
-
typeState: findStateTypeState
|
|
1783
|
+
isOpenState: atom_io.findState(findViewIsOpenState, node.key),
|
|
1784
|
+
typeState: atom_io.findState(findStateTypeState, node)
|
|
2487
1785
|
},
|
|
2488
1786
|
key
|
|
2489
1787
|
);
|
|
@@ -2494,8 +1792,12 @@ var AtomUpdateFC = ({ atomUpdate }) => {
|
|
|
2494
1792
|
"article",
|
|
2495
1793
|
{
|
|
2496
1794
|
className: "node atom_update",
|
|
2497
|
-
onClick: () =>
|
|
2498
|
-
|
|
1795
|
+
onClick: () => {
|
|
1796
|
+
console.log(atomUpdate);
|
|
1797
|
+
},
|
|
1798
|
+
onKeyUp: () => {
|
|
1799
|
+
console.log(atomUpdate);
|
|
1800
|
+
},
|
|
2499
1801
|
children: [
|
|
2500
1802
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "detail", children: [
|
|
2501
1803
|
atomUpdate.key,
|
|
@@ -2508,104 +1810,122 @@ var AtomUpdateFC = ({ atomUpdate }) => {
|
|
|
2508
1810
|
);
|
|
2509
1811
|
};
|
|
2510
1812
|
var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
|
|
2511
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2512
|
-
|
|
2513
|
-
|
|
2514
|
-
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
|
|
2519
|
-
|
|
2520
|
-
|
|
2521
|
-
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
|
|
2530
|
-
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2538
|
-
|
|
1813
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1814
|
+
"article",
|
|
1815
|
+
{
|
|
1816
|
+
className: "node transaction_update",
|
|
1817
|
+
"data-testid": `transaction-update-${transactionUpdate.key}-${serialNumber}`,
|
|
1818
|
+
children: [
|
|
1819
|
+
/* @__PURE__ */ jsxRuntime.jsx("header", { children: /* @__PURE__ */ jsxRuntime.jsx("h4", { children: serialNumber }) }),
|
|
1820
|
+
/* @__PURE__ */ jsxRuntime.jsxs("main", { children: [
|
|
1821
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "transaction_params", children: [
|
|
1822
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "detail", children: "params: " }),
|
|
1823
|
+
transactionUpdate.params.map((param, index) => {
|
|
1824
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1825
|
+
"article",
|
|
1826
|
+
{
|
|
1827
|
+
className: "node transaction_param",
|
|
1828
|
+
onClick: () => {
|
|
1829
|
+
console.log(transactionUpdate);
|
|
1830
|
+
},
|
|
1831
|
+
onKeyUp: () => {
|
|
1832
|
+
console.log(transactionUpdate);
|
|
1833
|
+
},
|
|
1834
|
+
children: [
|
|
1835
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "detail", children: [
|
|
1836
|
+
discoverType(param),
|
|
1837
|
+
": "
|
|
1838
|
+
] }),
|
|
1839
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "summary", children: typeof param === `object` && param !== null && `type` in param && `target` in param ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: JSON.stringify(param.type) }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: JSON.stringify(param) }) })
|
|
1840
|
+
]
|
|
1841
|
+
},
|
|
1842
|
+
`param` + index
|
|
1843
|
+
);
|
|
1844
|
+
})
|
|
1845
|
+
] }),
|
|
1846
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "node transaction_output", children: [
|
|
1847
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "detail", children: "output: " }),
|
|
1848
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "detail", children: discoverType(transactionUpdate.output) }),
|
|
1849
|
+
transactionUpdate.output ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "summary", children: [
|
|
1850
|
+
": ",
|
|
1851
|
+
JSON.stringify(transactionUpdate.output)
|
|
1852
|
+
] }) : null
|
|
1853
|
+
] }),
|
|
1854
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "transaction_impact", children: [
|
|
1855
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "detail", children: "impact: " }),
|
|
1856
|
+
transactionUpdate.updates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((update, index) => {
|
|
1857
|
+
return `newValue` in update ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1858
|
+
article.AtomUpdate,
|
|
1859
|
+
{
|
|
1860
|
+
serialNumber: index,
|
|
1861
|
+
atomUpdate: update
|
|
1862
|
+
},
|
|
1863
|
+
`${transactionUpdate.key}:${index}:${update.key}`
|
|
1864
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1865
|
+
TransactionUpdateFC,
|
|
1866
|
+
{
|
|
1867
|
+
serialNumber: index,
|
|
1868
|
+
transactionUpdate: update
|
|
1869
|
+
},
|
|
1870
|
+
`${transactionUpdate.key}:${index}:${update.key}`
|
|
1871
|
+
);
|
|
1872
|
+
})
|
|
1873
|
+
] })
|
|
1874
|
+
] })
|
|
1875
|
+
]
|
|
1876
|
+
}
|
|
1877
|
+
);
|
|
1878
|
+
};
|
|
1879
|
+
var TimelineUpdateFC = ({ timelineUpdate, serialNumber }) => {
|
|
1880
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1881
|
+
"article",
|
|
1882
|
+
{
|
|
1883
|
+
className: "node timeline_update",
|
|
1884
|
+
"data-testid": `timeline-update-${timelineUpdate.key}-${serialNumber}`,
|
|
1885
|
+
children: [
|
|
1886
|
+
/* @__PURE__ */ jsxRuntime.jsx("header", { children: /* @__PURE__ */ jsxRuntime.jsxs("h4", { children: [
|
|
1887
|
+
timelineUpdate.timestamp,
|
|
2539
1888
|
": ",
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
|
|
2545
|
-
|
|
1889
|
+
timelineUpdate.type,
|
|
1890
|
+
" (",
|
|
1891
|
+
timelineUpdate.key,
|
|
1892
|
+
")"
|
|
1893
|
+
] }) }),
|
|
1894
|
+
/* @__PURE__ */ jsxRuntime.jsx("main", { children: timelineUpdate.type === `transaction_update` ? timelineUpdate.updates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((update, index) => {
|
|
2546
1895
|
return `newValue` in update ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2547
1896
|
article.AtomUpdate,
|
|
2548
1897
|
{
|
|
2549
1898
|
serialNumber: index,
|
|
2550
1899
|
atomUpdate: update
|
|
2551
1900
|
},
|
|
2552
|
-
`${
|
|
1901
|
+
`${timelineUpdate.key}:${index}:${update.key}`
|
|
2553
1902
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2554
1903
|
TransactionUpdateFC,
|
|
2555
1904
|
{
|
|
2556
1905
|
serialNumber: index,
|
|
2557
1906
|
transactionUpdate: update
|
|
2558
1907
|
},
|
|
2559
|
-
`${
|
|
1908
|
+
`${timelineUpdate.key}:${index}:${update.key}`
|
|
2560
1909
|
);
|
|
2561
|
-
})
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2570
|
-
|
|
2571
|
-
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
serialNumber: index,
|
|
2581
|
-
atomUpdate: update
|
|
2582
|
-
},
|
|
2583
|
-
`${timelineUpdate.key}:${index}:${update.key}`
|
|
2584
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
2585
|
-
TransactionUpdateFC,
|
|
2586
|
-
{
|
|
2587
|
-
serialNumber: index,
|
|
2588
|
-
transactionUpdate: update
|
|
2589
|
-
},
|
|
2590
|
-
`${timelineUpdate.key}:${index}:${update.key}`
|
|
2591
|
-
);
|
|
2592
|
-
}) : timelineUpdate.type === `selector_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
|
|
2593
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2594
|
-
article.AtomUpdate,
|
|
2595
|
-
{
|
|
2596
|
-
serialNumber: index,
|
|
2597
|
-
atomUpdate
|
|
2598
|
-
},
|
|
2599
|
-
`${timelineUpdate.key}:${index}:${atomUpdate.key}`
|
|
2600
|
-
);
|
|
2601
|
-
}) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2602
|
-
article.AtomUpdate,
|
|
2603
|
-
{
|
|
2604
|
-
serialNumber: timelineUpdate.timestamp,
|
|
2605
|
-
atomUpdate: timelineUpdate
|
|
2606
|
-
}
|
|
2607
|
-
) : null })
|
|
2608
|
-
] });
|
|
1910
|
+
}) : timelineUpdate.type === `selector_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
|
|
1911
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1912
|
+
article.AtomUpdate,
|
|
1913
|
+
{
|
|
1914
|
+
serialNumber: index,
|
|
1915
|
+
atomUpdate
|
|
1916
|
+
},
|
|
1917
|
+
`${timelineUpdate.key}:${index}:${atomUpdate.key}`
|
|
1918
|
+
);
|
|
1919
|
+
}) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1920
|
+
article.AtomUpdate,
|
|
1921
|
+
{
|
|
1922
|
+
serialNumber: timelineUpdate.timestamp,
|
|
1923
|
+
atomUpdate: timelineUpdate
|
|
1924
|
+
}
|
|
1925
|
+
) : null })
|
|
1926
|
+
]
|
|
1927
|
+
}
|
|
1928
|
+
);
|
|
2609
1929
|
};
|
|
2610
1930
|
var article = {
|
|
2611
1931
|
AtomUpdate: AtomUpdateFC,
|
|
@@ -2616,12 +1936,19 @@ var YouAreHere = () => {
|
|
|
2616
1936
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "you_are_here", children: "you are here" });
|
|
2617
1937
|
};
|
|
2618
1938
|
var TimelineLog = ({ token, isOpenState, timelineState }) => {
|
|
2619
|
-
const timeline = react.useO(timelineState);
|
|
2620
|
-
const isOpen = react.useO(isOpenState);
|
|
2621
|
-
const setIsOpen = react.useI(isOpenState);
|
|
2622
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "node timeline_log", children: [
|
|
1939
|
+
const timeline = react$1.useO(timelineState);
|
|
1940
|
+
const isOpen = react$1.useO(isOpenState);
|
|
1941
|
+
const setIsOpen = react$1.useI(isOpenState);
|
|
1942
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "node timeline_log", "data-testid": `timeline-${token.key}`, children: [
|
|
2623
1943
|
/* @__PURE__ */ jsxRuntime.jsxs("header", { children: [
|
|
2624
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1944
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1945
|
+
button.OpenClose,
|
|
1946
|
+
{
|
|
1947
|
+
isOpen,
|
|
1948
|
+
testid: `open-close-timeline-${token.key}`,
|
|
1949
|
+
setIsOpen
|
|
1950
|
+
}
|
|
1951
|
+
),
|
|
2625
1952
|
/* @__PURE__ */ jsxRuntime.jsxs("label", { children: [
|
|
2626
1953
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { children: token.key }),
|
|
2627
1954
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "detail length", children: [
|
|
@@ -2637,7 +1964,9 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
|
|
|
2637
1964
|
"button",
|
|
2638
1965
|
{
|
|
2639
1966
|
type: "button",
|
|
2640
|
-
onClick: () =>
|
|
1967
|
+
onClick: () => {
|
|
1968
|
+
atom_io.undo(token);
|
|
1969
|
+
},
|
|
2641
1970
|
disabled: timeline.at === 0,
|
|
2642
1971
|
children: "undo"
|
|
2643
1972
|
}
|
|
@@ -2646,7 +1975,9 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
|
|
|
2646
1975
|
"button",
|
|
2647
1976
|
{
|
|
2648
1977
|
type: "button",
|
|
2649
|
-
onClick: () =>
|
|
1978
|
+
onClick: () => {
|
|
1979
|
+
atom_io.redo(token);
|
|
1980
|
+
},
|
|
2650
1981
|
disabled: timeline.at === timeline.history.length,
|
|
2651
1982
|
children: "redo"
|
|
2652
1983
|
}
|
|
@@ -2654,16 +1985,22 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
|
|
|
2654
1985
|
] })
|
|
2655
1986
|
] })
|
|
2656
1987
|
] }),
|
|
2657
|
-
isOpen ? /* @__PURE__ */ jsxRuntime.jsx("main", { children: timeline.history.map((update, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1988
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsx("main", { children: timeline.history.map((update, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
|
|
2658
1989
|
index === timeline.at ? /* @__PURE__ */ jsxRuntime.jsx(YouAreHere, {}) : null,
|
|
2659
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1990
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1991
|
+
article.TimelineUpdate,
|
|
1992
|
+
{
|
|
1993
|
+
timelineUpdate: update,
|
|
1994
|
+
serialNumber: index
|
|
1995
|
+
}
|
|
1996
|
+
),
|
|
2660
1997
|
index === timeline.history.length - 1 && timeline.at === timeline.history.length ? /* @__PURE__ */ jsxRuntime.jsx(YouAreHere, {}) : null
|
|
2661
1998
|
] }, update.key + index + timeline.at)) }) : null
|
|
2662
1999
|
] });
|
|
2663
2000
|
};
|
|
2664
2001
|
var TimelineIndex = () => {
|
|
2665
|
-
const tokenIds = react.useO(timelineIndex);
|
|
2666
|
-
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "index timeline_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
|
|
2002
|
+
const tokenIds = react$1.useO(timelineIndex);
|
|
2003
|
+
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "index timeline_index", "data-testid": "timeline-index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
|
|
2667
2004
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2668
2005
|
TimelineLog,
|
|
2669
2006
|
{
|
|
@@ -2676,34 +2013,48 @@ var TimelineIndex = () => {
|
|
|
2676
2013
|
}) });
|
|
2677
2014
|
};
|
|
2678
2015
|
var TransactionLog = ({ token, isOpenState, logState }) => {
|
|
2679
|
-
const log = react.useO(logState);
|
|
2680
|
-
const isOpen = react.useO(isOpenState);
|
|
2681
|
-
const setIsOpen = react.useI(isOpenState);
|
|
2682
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
2695
|
-
|
|
2696
|
-
|
|
2697
|
-
|
|
2698
|
-
|
|
2699
|
-
|
|
2700
|
-
|
|
2701
|
-
|
|
2702
|
-
|
|
2016
|
+
const log = react$1.useO(logState);
|
|
2017
|
+
const isOpen = react$1.useO(isOpenState);
|
|
2018
|
+
const setIsOpen = react$1.useI(isOpenState);
|
|
2019
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
2020
|
+
"section",
|
|
2021
|
+
{
|
|
2022
|
+
className: "node transaction_log",
|
|
2023
|
+
"data-testid": `transaction-${token.key}`,
|
|
2024
|
+
children: [
|
|
2025
|
+
/* @__PURE__ */ jsxRuntime.jsxs("header", { children: [
|
|
2026
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2027
|
+
button.OpenClose,
|
|
2028
|
+
{
|
|
2029
|
+
isOpen,
|
|
2030
|
+
testid: `open-close-transaction-${token.key}`,
|
|
2031
|
+
setIsOpen
|
|
2032
|
+
}
|
|
2033
|
+
),
|
|
2034
|
+
/* @__PURE__ */ jsxRuntime.jsxs("label", { children: [
|
|
2035
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { children: token.key }),
|
|
2036
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "detail length", children: [
|
|
2037
|
+
"(",
|
|
2038
|
+
log.length,
|
|
2039
|
+
")"
|
|
2040
|
+
] })
|
|
2041
|
+
] })
|
|
2042
|
+
] }),
|
|
2043
|
+
isOpen ? /* @__PURE__ */ jsxRuntime.jsx("main", { children: log.map((update, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2044
|
+
article.TransactionUpdate,
|
|
2045
|
+
{
|
|
2046
|
+
serialNumber: index,
|
|
2047
|
+
transactionUpdate: update
|
|
2048
|
+
},
|
|
2049
|
+
update.key + index
|
|
2050
|
+
)) }) : null
|
|
2051
|
+
]
|
|
2052
|
+
}
|
|
2053
|
+
);
|
|
2703
2054
|
};
|
|
2704
2055
|
var TransactionIndex = () => {
|
|
2705
|
-
const tokenIds = react.useO(transactionIndex);
|
|
2706
|
-
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "index transaction_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
|
|
2056
|
+
const tokenIds = react$1.useO(transactionIndex);
|
|
2057
|
+
return /* @__PURE__ */ jsxRuntime.jsx("article", { className: "index transaction_index", "data-testid": "transaction-index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
|
|
2707
2058
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2708
2059
|
TransactionLog,
|
|
2709
2060
|
{
|
|
@@ -2716,13 +2067,13 @@ var TransactionIndex = () => {
|
|
|
2716
2067
|
}) });
|
|
2717
2068
|
};
|
|
2718
2069
|
var AtomIODevtools = () => {
|
|
2719
|
-
const constraintsRef =
|
|
2720
|
-
const setDevtoolsAreOpen = react.useI(devtoolsAreOpenState);
|
|
2721
|
-
const devtoolsAreOpen = react.useO(devtoolsAreOpenState);
|
|
2722
|
-
const setDevtoolsView = react.useI(devtoolsViewSelectionState);
|
|
2723
|
-
const devtoolsView = react.useO(devtoolsViewSelectionState);
|
|
2724
|
-
const devtoolsViewOptions = react.useO(devtoolsViewOptionsState);
|
|
2725
|
-
const mouseHasMoved =
|
|
2070
|
+
const constraintsRef = react.useRef(null);
|
|
2071
|
+
const setDevtoolsAreOpen = react$1.useI(devtoolsAreOpenState);
|
|
2072
|
+
const devtoolsAreOpen = react$1.useO(devtoolsAreOpenState);
|
|
2073
|
+
const setDevtoolsView = react$1.useI(devtoolsViewSelectionState);
|
|
2074
|
+
const devtoolsView = react$1.useO(devtoolsViewSelectionState);
|
|
2075
|
+
const devtoolsViewOptions = react$1.useO(devtoolsViewOptionsState);
|
|
2076
|
+
const mouseHasMoved = react.useRef(false);
|
|
2726
2077
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
2727
2078
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2728
2079
|
framerMotion.motion.span,
|
|
@@ -2760,8 +2111,11 @@ var AtomIODevtools = () => {
|
|
|
2760
2111
|
"button",
|
|
2761
2112
|
{
|
|
2762
2113
|
type: "button",
|
|
2114
|
+
"data-testid": `view-${viewOption}`,
|
|
2763
2115
|
className: viewOption === devtoolsView ? `active` : ``,
|
|
2764
|
-
onClick: () =>
|
|
2116
|
+
onClick: () => {
|
|
2117
|
+
setDevtoolsView(viewOption);
|
|
2118
|
+
},
|
|
2765
2119
|
disabled: viewOption === devtoolsView,
|
|
2766
2120
|
children: viewOption
|
|
2767
2121
|
},
|