atom.io 0.6.8 → 0.6.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 (130) hide show
  1. package/dist/index.d.mts +226 -258
  2. package/dist/index.d.ts +226 -258
  3. package/dist/index.js +28 -1917
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +5 -1877
  6. package/dist/index.mjs.map +1 -1
  7. package/introspection/dist/index.d.mts +117 -171
  8. package/introspection/dist/index.d.ts +117 -171
  9. package/introspection/dist/index.js +6 -346
  10. package/introspection/dist/index.js.map +1 -1
  11. package/introspection/dist/index.mjs +5 -324
  12. package/introspection/dist/index.mjs.map +1 -1
  13. package/json/dist/index.d.mts +32 -1
  14. package/json/dist/index.d.ts +32 -1
  15. package/json/dist/index.js +31 -48
  16. package/json/dist/index.js.map +1 -1
  17. package/json/dist/index.mjs +6 -14
  18. package/json/dist/index.mjs.map +1 -1
  19. package/package.json +22 -14
  20. package/react/dist/index.js +34 -83
  21. package/react/dist/index.js.map +1 -1
  22. package/react/dist/index.mjs +7 -43
  23. package/react/dist/index.mjs.map +1 -1
  24. package/react-devtools/dist/index.css +1 -50
  25. package/react-devtools/dist/index.css.map +1 -1
  26. package/react-devtools/dist/index.d.mts +124 -188
  27. package/react-devtools/dist/index.d.ts +124 -188
  28. package/react-devtools/dist/index.js +56 -4674
  29. package/react-devtools/dist/index.js.map +1 -1
  30. package/react-devtools/dist/index.mjs +19 -4642
  31. package/react-devtools/dist/index.mjs.map +1 -1
  32. package/realtime/dist/index.d.mts +1 -3
  33. package/realtime/dist/index.d.ts +1 -3
  34. package/realtime/dist/index.js +26 -184
  35. package/realtime/dist/index.js.map +1 -1
  36. package/realtime/dist/index.mjs +4 -148
  37. package/realtime/dist/index.mjs.map +1 -1
  38. package/realtime-react/dist/index.d.mts +2 -4
  39. package/realtime-react/dist/index.d.ts +2 -4
  40. package/realtime-react/dist/index.js +41 -214
  41. package/realtime-react/dist/index.js.map +1 -1
  42. package/realtime-react/dist/index.mjs +9 -169
  43. package/realtime-react/dist/index.mjs.map +1 -1
  44. package/src/atom.ts +4 -3
  45. package/src/index.ts +12 -9
  46. package/src/logger.ts +5 -5
  47. package/src/selector.ts +3 -3
  48. package/src/silo.ts +36 -39
  49. package/src/subscribe.ts +24 -19
  50. package/src/timeline.ts +9 -4
  51. package/src/transaction.ts +3 -4
  52. package/src/internal/atom-internal.ts +0 -54
  53. package/src/internal/families-internal.ts +0 -144
  54. package/src/internal/get.ts +0 -129
  55. package/src/internal/index.ts +0 -15
  56. package/src/internal/is-default.ts +0 -35
  57. package/src/internal/operation.ts +0 -139
  58. package/src/internal/selector/create-read-write-selector.ts +0 -68
  59. package/src/internal/selector/create-readonly-selector.ts +0 -48
  60. package/src/internal/selector/index.ts +0 -4
  61. package/src/internal/selector/lookup-selector-sources.ts +0 -16
  62. package/src/internal/selector/register-selector.ts +0 -57
  63. package/src/internal/selector/trace-selector-atoms.ts +0 -43
  64. package/src/internal/selector/update-selector-atoms.ts +0 -33
  65. package/src/internal/selector-internal.ts +0 -58
  66. package/src/internal/set.ts +0 -99
  67. package/src/internal/store.ts +0 -151
  68. package/src/internal/subscribe-internal.ts +0 -88
  69. package/src/internal/time-travel-internal.ts +0 -91
  70. package/src/internal/timeline/add-atom-to-timeline.ts +0 -168
  71. package/src/internal/timeline/index.ts +0 -1
  72. package/src/internal/timeline-internal.ts +0 -107
  73. package/src/internal/transaction/abort-transaction.ts +0 -12
  74. package/src/internal/transaction/apply-transaction.ts +0 -57
  75. package/src/internal/transaction/build-transaction.ts +0 -33
  76. package/src/internal/transaction/index.ts +0 -25
  77. package/src/internal/transaction/redo-transaction.ts +0 -23
  78. package/src/internal/transaction/undo-transaction.ts +0 -23
  79. package/src/internal/transaction-internal.ts +0 -61
  80. package/src/introspection/attach-atom-index.ts +0 -73
  81. package/src/introspection/attach-introspection-states.ts +0 -42
  82. package/src/introspection/attach-selector-index.ts +0 -77
  83. package/src/introspection/attach-timeline-family.ts +0 -59
  84. package/src/introspection/attach-timeline-index.ts +0 -36
  85. package/src/introspection/attach-transaction-index.ts +0 -38
  86. package/src/introspection/attach-transaction-logs.ts +0 -40
  87. package/src/introspection/index.ts +0 -20
  88. package/src/json/index.ts +0 -1
  89. package/src/json/select-json.ts +0 -18
  90. package/src/react/index.ts +0 -2
  91. package/src/react/store-context.tsx +0 -13
  92. package/src/react/store-hooks.ts +0 -47
  93. package/src/react-devtools/AtomIODevtools.tsx +0 -107
  94. package/src/react-devtools/Button.tsx +0 -24
  95. package/src/react-devtools/StateEditor.tsx +0 -74
  96. package/src/react-devtools/StateIndex.tsx +0 -156
  97. package/src/react-devtools/TimelineIndex.tsx +0 -92
  98. package/src/react-devtools/TransactionIndex.tsx +0 -70
  99. package/src/react-devtools/Updates.tsx +0 -145
  100. package/src/react-devtools/devtools.scss +0 -310
  101. package/src/react-devtools/index.ts +0 -72
  102. package/src/react-explorer/AtomIOExplorer.tsx +0 -218
  103. package/src/react-explorer/explorer-effects.ts +0 -20
  104. package/src/react-explorer/explorer-states.ts +0 -217
  105. package/src/react-explorer/index.ts +0 -23
  106. package/src/react-explorer/space-states.ts +0 -72
  107. package/src/react-explorer/view-states.ts +0 -41
  108. package/src/realtime/README.md +0 -33
  109. package/src/realtime/hook-composition/expose-family.ts +0 -101
  110. package/src/realtime/hook-composition/expose-single.ts +0 -38
  111. package/src/realtime/hook-composition/expose-timeline.ts +0 -60
  112. package/src/realtime/hook-composition/index.ts +0 -12
  113. package/src/realtime/hook-composition/receive-state.ts +0 -29
  114. package/src/realtime/hook-composition/receive-transaction.ts +0 -18
  115. package/src/realtime/index.ts +0 -1
  116. package/src/realtime-react/index.ts +0 -3
  117. package/src/realtime-react/realtime-context.tsx +0 -30
  118. package/src/realtime-react/realtime-hooks.ts +0 -39
  119. package/src/realtime-react/realtime-state.ts +0 -10
  120. package/src/realtime-react/use-pull-family-member.ts +0 -26
  121. package/src/realtime-react/use-pull-family.ts +0 -24
  122. package/src/realtime-react/use-pull.ts +0 -24
  123. package/src/realtime-react/use-push.ts +0 -27
  124. package/src/realtime-react/use-server-action.ts +0 -33
  125. package/src/realtime-testing/index.ts +0 -1
  126. package/src/realtime-testing/setup-realtime-test.tsx +0 -159
  127. package/src/tracker/index.ts +0 -3
  128. package/src/tracker/tracker.ts +0 -61
  129. package/src/web-effects/index.ts +0 -1
  130. package/src/web-effects/storage.ts +0 -30
@@ -1,4675 +1,57 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __defProps = Object.defineProperties;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
- var __getProtoOf = Object.getPrototypeOf;
9
- var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __spreadValues = (a2, b2) => {
13
- for (var prop in b2 || (b2 = {}))
14
- if (__hasOwnProp.call(b2, prop))
15
- __defNormalProp(a2, prop, b2[prop]);
16
- if (__getOwnPropSymbols)
17
- for (var prop of __getOwnPropSymbols(b2)) {
18
- if (__propIsEnum.call(b2, prop))
19
- __defNormalProp(a2, prop, b2[prop]);
20
- }
21
- return a2;
22
- };
23
- var __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));
24
- var __restKey = (key) => typeof key === "symbol" ? key : key + "";
25
- var __objRest = (source, exclude) => {
26
- var target2 = {};
27
- for (var prop in source)
28
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
- target2[prop] = source[prop];
30
- if (source != null && __getOwnPropSymbols)
31
- for (var prop of __getOwnPropSymbols(source)) {
32
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
- target2[prop] = source[prop];
34
- }
35
- return target2;
36
- };
37
- var __export = (target2, all) => {
38
- for (var name in all)
39
- __defProp(target2, name, { get: all[name], enumerable: true });
40
- };
41
- var __copyProps = (to, from, except, desc) => {
42
- if (from && typeof from === "object" || typeof from === "function") {
43
- for (let key of __getOwnPropNames(from))
44
- if (!__hasOwnProp.call(to, key) && key !== except)
45
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
- }
47
- return to;
48
- };
49
- var __toESM = (mod, isNodeMode, target2) => (target2 = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
- // If the importer is in node compatibility mode or this is not an ESM
51
- // file that has been converted to a CommonJS file using a Babel-
52
- // compatible transform (i.e. "__esModule" has not been set), then set
53
- // "default" to the CommonJS "module.exports" for node compatibility.
54
- isNodeMode || !mod || !mod.__esModule ? __defProp(target2, "default", { value: mod, enumerable: true }) : target2,
55
- mod
56
- ));
57
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
58
-
59
- // ../src/react-devtools/index.ts
60
- var react_devtools_exports = {};
61
- __export(react_devtools_exports, {
62
- AtomIODevtools: () => AtomIODevtools,
63
- atomIndex: () => atomIndex,
64
- devtoolsAreOpenState: () => devtoolsAreOpenState,
65
- devtoolsViewOptionsState: () => devtoolsViewOptionsState,
66
- devtoolsViewSelectionState: () => devtoolsViewSelectionState,
67
- findTimelineState: () => findTimelineState,
68
- findTransactionLogState: () => findTransactionLogState,
69
- findViewIsOpenState: () => findViewIsOpenState,
70
- jsonTreeRefinery: () => jsonTreeRefinery,
71
- prettyJson: () => prettyJson,
72
- primitiveRefinery: () => primitiveRefinery,
73
- selectorIndex: () => selectorIndex,
74
- timelineIndex: () => timelineIndex,
75
- transactionIndex: () => transactionIndex
76
- });
77
- module.exports = __toCommonJS(react_devtools_exports);
78
-
79
- // ../../anvl/src/object/index.ts
80
- var import_function4 = require("fp-ts/function");
81
-
82
- // ../../anvl/src/object/refinement.ts
83
- var import_function2 = require("fp-ts/function");
84
-
85
- // ../../anvl/src/object/access.ts
86
- var access = (k) => Object.assign((obj) => obj[k], {
87
- in: (obj) => obj[k]
88
- });
89
-
90
- // ../../anvl/src/object/entries.ts
91
- var recordToEntries = (obj) => Object.entries(obj);
92
- var entriesToRecord = (entries) => Object.fromEntries(entries);
93
-
94
- // ../../anvl/src/object/mapObject.ts
95
- var import_function = require("fp-ts/function");
96
-
97
- // ../../anvl/src/array/venn.ts
98
- var includesAll = (items) => (array) => {
99
- for (const item of items) {
100
- if (!array.includes(item))
101
- return false;
102
- }
103
- return true;
104
- };
105
- var comprises = (items) => (array) => includesAll(items)(array) && includesAll(array)(items);
106
-
107
- // ../../anvl/src/array/index.ts
108
- var isArray = (isType) => (input) => Array.isArray(input) && input.every((item) => isType(item));
109
- var map = (f) => (a2) => a2.map(f);
110
- var every = (f = Boolean) => (a2) => a2.every(f);
111
- var allTrue = every((x) => x === true);
112
- var addTo = (a2) => (x) => a2.includes(x) ? a2 : [...a2, x];
113
- var isEmptyArray = (input) => Array.isArray(input) && input.length === 0;
114
- var isOneOf = (...args) => (input) => args.includes(input);
115
-
116
- // ../../anvl/src/object/mapObject.ts
117
- var mapObject = (obj, fn) => (0, import_function.pipe)(
118
- obj,
119
- recordToEntries,
120
- map(([key, val]) => [key, fn(val, key)]),
121
- entriesToRecord
122
- );
123
- var mob = (fn) => (obj) => mapObject(obj, fn);
124
-
125
- // ../../anvl/src/function/index.ts
126
- var doNothing = () => void 0;
127
- var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(
128
- originalThing instanceof Function ? originalThing() : originalThing
129
- ) : nextVersionOfThing;
130
- var isModifier = (validate) => (sample) => {
131
- const sampleIsValid = validate(sample);
132
- if (!sampleIsValid) {
133
- throw new Error(`Invalid test case: JSON.stringify(${sample})`);
134
- }
135
- return (input) => {
136
- if (typeof input !== `function`)
137
- return false;
138
- const testResult = input(sample);
139
- return validate(testResult);
140
- };
141
- };
142
- var pass = (...params) => (fn) => fn(...params);
143
- var raiseError = (message) => {
144
- throw new Error(message);
145
- };
146
- var fallback = (fn, fallbackValue) => {
147
- try {
148
- return fn();
149
- } catch (_) {
150
- return fallbackValue;
151
- }
152
- };
153
-
154
- // ../../anvl/src/nullish/index.ts
155
- var isUndefined = (input) => input === void 0;
156
- var ifDefined = (validate) => (input) => isUndefined(input) || validate(input);
157
- var ifNullish = (alt) => (input) => input != null ? input : alt;
158
-
159
- // ../../anvl/src/object/refinement.ts
160
- var isNonNullObject = (input) => typeof input === `object` && input !== null;
161
- var isPlainObject = (input) => isNonNullObject(input) && Object.getPrototypeOf(input) === Object.prototype;
162
- var isEmptyObject = (input) => isPlainObject(input) && Object.keys(input).length === 0;
163
- var isRecord = (isKey, isValue) => (input) => isPlainObject(input) && Object.entries(input).every(([k, v]) => isKey(k) && isValue(v));
164
- var hasProperties = (isValue, options = { allowExtraProperties: false }) => {
165
- const name = `{${recordToEntries(
166
- isValue
167
- ).map(([k, v]) => String(k) + `:` + v.name).join(`,`)}}`;
168
- const _ = {
169
- [name]: (input) => isPlainObject(input) && (0, import_function2.pipe)(
170
- isValue,
171
- Object.entries,
172
- every(([key, val]) => key in input || val(void 0))
173
- ) && (0, import_function2.pipe)(
174
- input,
175
- mob(
176
- (val, key) => (0, import_function2.pipe)(
177
- isValue,
178
- access(key),
179
- ifNullish(() => options.allowExtraProperties),
180
- pass(val)
181
- )
182
- ),
183
- Object.values,
184
- allTrue
185
- )
186
- };
187
- return _[name];
188
- };
189
- var doesExtend = (
190
- /* alias for hasExactProperties with allowExtraProperties */
191
- (isValue) => hasProperties(isValue, { allowExtraProperties: true })
192
- );
193
- var hasExactProperties = (
194
- /* alias for hasProperties without allowExtraProperties */
195
- (isValue) => hasProperties(isValue, { allowExtraProperties: false })
196
- );
197
-
198
- // ../../anvl/src/object/sprawl.ts
199
- var sprawl = (tree, inspector) => {
200
- const walk = (path, node) => {
201
- const inspect = (path2, node2) => {
202
- const result2 = inspector(path2, node2);
203
- if (result2)
204
- return result2;
205
- return null;
206
- };
207
- const result = inspect(path, node);
208
- if ((result == null ? void 0 : result.jobComplete) || (result == null ? void 0 : result.pathComplete)) {
209
- return result;
210
- }
211
- const childEntries = Array.isArray(node) ? node.map((v, i) => [i, v]) : isPlainObject(node) ? Object.entries(node) : [];
212
- for (const [k, v] of childEntries) {
213
- const subResult = walk([...path, k], v);
214
- if (subResult == null ? void 0 : subResult.jobComplete) {
215
- return subResult;
216
- }
217
- }
218
- return {};
219
- };
220
- walk([], tree);
221
- };
222
-
223
- // ../../anvl/src/object/index.ts
224
- var treeShake = (shouldDiscard = isUndefined) => (obj) => {
225
- const newObj = {};
226
- const entries = Object.entries(obj);
227
- entries.forEach(
228
- ([key, val]) => !shouldDiscard(val, key) ? newObj[key] = val : null
229
- );
230
- return newObj;
231
- };
232
- var delve = (obj, path) => {
233
- const found = path.reduce((acc, key) => acc == null ? void 0 : acc[key], obj);
234
- return found === void 0 ? new Error(`Not found`) : { found };
235
- };
236
-
237
- // ../../anvl/src/refinement/refinery.ts
238
- var Refinery = class {
239
- constructor(supported) {
240
- this.supported = supported;
241
- }
242
- refine(input) {
243
- for (const [key, refiner] of Object.entries(this.supported)) {
244
- try {
245
- if (
246
- // @ts-expect-error that's the point
247
- refiner(input) === true && refiner !== Boolean
248
- ) {
249
- return { type: key, data: input };
250
- }
251
- } catch (e) {
252
- try {
253
- if (input instanceof refiner) {
254
- return { type: key, data: input };
255
- }
256
- } catch (e2) {
257
- }
258
- }
259
- }
260
- return null;
261
- }
262
- };
263
- var jsonRefinery = new Refinery({
264
- number: (input) => typeof input === `number`,
265
- string: (input) => typeof input === `string`,
266
- boolean: (input) => typeof input === `boolean`,
267
- object: isPlainObject,
268
- array: (input) => Array.isArray(input),
269
- null: (input) => input === null
270
- });
271
- var discoverType = (input) => {
272
- if (input === void 0) {
273
- return `undefined`;
274
- }
275
- const refined = jsonRefinery.refine(input);
276
- if (refined) {
277
- return refined.type;
278
- }
279
- return Object.getPrototypeOf(input).constructor.name;
280
- };
281
-
282
- // ../../anvl/src/tree/differ.ts
283
- function diffNumber(a2, b2) {
284
- const sign = a2 < b2 ? `+` : `-`;
285
- return {
286
- summary: `${sign}${Math.abs(a2 - b2)} (${a2} \u2192 ${b2})`
287
- };
288
- }
289
- function diffString(a2, b2) {
290
- const sign = a2.length < b2.length ? `+` : `-`;
291
- return {
292
- summary: `${sign}${Math.abs(a2.length - b2.length)} ("${a2}" \u2192 "${b2}")`
293
- };
294
- }
295
- function diffBoolean(a2, b2) {
296
- return {
297
- summary: `${a2} \u2192 ${b2}`
298
- };
299
- }
300
- function diffObject(a2, b2, recurse) {
301
- let summary = ``;
302
- const added = [];
303
- const removed = [];
304
- const changed = [];
305
- sprawl(a2, (path, nodeA) => {
306
- let key;
307
- for (key of path) {
308
- const nodeB = b2[key];
309
- if (nodeB === void 0) {
310
- removed.push([key, JSON.stringify(nodeA)]);
311
- } else {
312
- const delta = recurse(nodeA, nodeB);
313
- if (delta.summary !== `No Change`) {
314
- changed.push([key, delta]);
315
- }
316
- }
317
- }
318
- });
319
- sprawl(b2, (path, nodeB) => {
320
- let key;
321
- for (key of path) {
322
- const nodeA = a2[key];
323
- if (nodeA === void 0) {
324
- added.push([key, JSON.stringify(nodeB)]);
325
- }
326
- }
327
- });
328
- summary = `\uFF5E${changed.length} \uFF0B${added.length} \uFF0D${removed.length}`;
329
- return {
330
- summary,
331
- added,
332
- removed,
333
- changed
334
- };
335
- }
336
- function diffArray(a2, b2, recurse) {
337
- return diffObject(a2, b2, recurse);
338
- }
339
- var Differ = class {
340
- constructor(leafRefinery, treeRefinery, diffFunctions) {
341
- this.leafRefinery = leafRefinery;
342
- this.treeRefinery = treeRefinery;
343
- this.leafDiffers = {};
344
- this.treeDiffers = {};
345
- for (const key of Object.keys(leafRefinery.supported)) {
346
- const diffFunction = diffFunctions[key];
347
- this.leafDiffers[key] = diffFunction;
348
- }
349
- for (const key of Object.keys(treeRefinery.supported)) {
350
- const diffFunction = diffFunctions[key];
351
- this.treeDiffers[key] = diffFunction;
352
- }
353
- }
354
- diff(a2, b2) {
355
- var _a2, _b;
356
- if (a2 === b2) {
357
- return { summary: `No Change` };
358
- }
359
- try {
360
- if (JSON.stringify(a2) === JSON.stringify(b2)) {
361
- return { summary: `No Change` };
362
- }
363
- } catch (thrown) {
364
- console.error(`Error stringifying`, a2, b2);
365
- }
366
- const aRefined = (_a2 = this.leafRefinery.refine(a2)) != null ? _a2 : this.treeRefinery.refine(a2);
367
- const bRefined = (_b = this.leafRefinery.refine(b2)) != null ? _b : this.treeRefinery.refine(b2);
368
- if (aRefined !== null && bRefined !== null) {
369
- if (aRefined.type === bRefined.type) {
370
- if (aRefined.type in this.leafDiffers) {
371
- const delta = this.leafDiffers[aRefined.type](
372
- aRefined.data,
373
- bRefined.data
374
- );
375
- return delta;
376
- }
377
- if (aRefined.type in this.treeDiffers) {
378
- const delta = this.treeDiffers[aRefined.type](
379
- aRefined.data,
380
- bRefined.data,
381
- (x, y) => this.diff(x, y)
382
- );
383
- return delta;
384
- }
385
- }
386
- }
387
- const typeA = discoverType(a2);
388
- const typeB = discoverType(b2);
389
- if (typeA === typeB) {
390
- return {
391
- summary: `${typeA} \u2192 ${typeB}`
392
- };
393
- }
394
- return {
395
- summary: `Type change: ${typeA} \u2192 ${typeB}`
396
- };
397
- }
398
- };
399
-
400
- // ../../anvl/src/string/capitalize.ts
401
- var capitalize = (str) => str[0].toUpperCase() + str.slice(1);
402
-
403
- // ../src/internal/get.ts
404
- var computeSelectorState = (selector) => selector.get();
405
- function lookup(key, store) {
406
- const core = target(store);
407
- const type = core.atoms.has(key) ? `atom` : core.selectors.has(key) ? `selector` : `readonly_selector`;
408
- return { key, type };
409
- }
410
- function withdraw(token, store) {
411
- var _a2, _b, _c, _d, _e;
412
- const core = target(store);
413
- return (_e = (_d = (_c = (_b = (_a2 = core.atoms.get(token.key)) != null ? _a2 : core.selectors.get(token.key)) != null ? _b : core.readonlySelectors.get(token.key)) != null ? _c : core.transactions.get(token.key)) != null ? _d : core.timelines.get(token.key)) != null ? _e : null;
414
- }
415
- function deposit(state) {
416
- return __spreadValues({
417
- key: state.key,
418
- type: state.type
419
- }, `family` in state && { family: state.family });
420
- }
421
- var getState__INTERNAL = (state, store = IMPLICIT.STORE) => {
422
- var _a2, _b, _c;
423
- if (isValueCached(state.key, store)) {
424
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(`>> read "${state.key}"`);
425
- return readCachedValue(state.key, store);
426
- }
427
- if (state.type !== `atom`) {
428
- (_b = store.config.logger) == null ? void 0 : _b.info(`-> calc "${state.key}"`);
429
- return computeSelectorState(state);
430
- }
431
- (_c = store.config.logger) == null ? void 0 : _c.error(
432
- `Attempted to get atom "${state.key}", which was never initialized in store "${store.config.name}".`
433
- );
434
- return state.default;
435
- };
436
-
437
- // ../src/internal/is-default.ts
438
- var isAtomDefault = (key, store = IMPLICIT.STORE) => {
439
- const core = target(store);
440
- return core.atomsThatAreDefault.has(key);
441
- };
442
- var markAtomAsDefault = (key, store = IMPLICIT.STORE) => {
443
- const core = target(store);
444
- core.atomsThatAreDefault = new Set(core.atomsThatAreDefault).add(key);
445
- };
446
- var markAtomAsNotDefault = (key, store = IMPLICIT.STORE) => {
447
- const core = target(store);
448
- core.atomsThatAreDefault = new Set(target(store).atomsThatAreDefault);
449
- core.atomsThatAreDefault.delete(key);
450
- };
451
-
452
- // ../../anvl/src/join/core-relation-data.ts
453
- var import_string = require("fp-ts/string");
454
-
455
- // ../../anvl/src/refinement/index.ts
456
- var canExist = (_) => true;
457
- var cannotExist = (_) => false;
458
- var isLiteral = (value) => (input) => input === value;
459
- var isWithin = (args) => (input) => args.includes(input);
460
- var couldBe = (isTypeA, logging = false, refinements = [isTypeA]) => {
461
- const name = `(${refinements.map((r) => r.name || `anon`).join(` | `)})`;
462
- const _ = {
463
- [name]: (input) => refinements.some(
464
- (refinement) => {
465
- var _a2;
466
- return logging && console.log(
467
- refinements.map((r) => r.name || `anon`).join(` | `),
468
- `>`,
469
- (_a2 = refinement.name) != null ? _a2 : `anon`,
470
- `:`,
471
- refinement(input)
472
- ), refinement(input);
473
- }
474
- )
475
- };
476
- const checkTypes = Object.assign(_[name], {
477
- or: (isTypeB) => couldBe(isTypeB, logging, [...refinements, isTypeB])
478
- });
479
- return checkTypes;
480
- };
481
- var isUnion = couldBe(cannotExist);
482
- var mustBe = (isTypeA, logging = false, refinements = [isTypeA]) => {
483
- const name = `(${refinements.map((r) => r.name || `anon`).join(` & `)})`;
484
- const _ = {
485
- [name]: (input) => refinements.every(
486
- (refinement) => (logging && console.log(
487
- refinements.map((r) => r.name || `anon`).join(` & `),
488
- `>`,
489
- refinement.name || `anon`,
490
- `:`,
491
- refinement(input)
492
- ), refinement(input))
493
- )
494
- };
495
- const checkTypes = Object.assign(_[name], {
496
- and: (isTypeB) => mustBe(isTypeB, logging, [...refinements, isTypeB])
497
- });
498
- return checkTypes;
499
- };
500
- var isIntersection = mustBe(canExist);
501
-
502
- // ../../anvl/src/join/core-relation-data.ts
503
- var RELATION_TYPES = [`1:1`, `1:n`, `n:n`];
504
- var isRelationType = (x) => RELATION_TYPES.includes(x);
505
- var EMPTY_RELATION_DATA = {
506
- contents: {},
507
- relations: {},
508
- relationType: `n:n`,
509
- a: `from`,
510
- b: `to`
511
- };
512
- var isRelationData = ({
513
- from: a2 = `from`,
514
- to: b2 = `to`,
515
- isContent
516
- } = {}) => (input) => {
517
- return hasExactProperties({
518
- contents: isContent ? isRecord(import_string.isString, isContent) : hasExactProperties({}),
519
- relations: isRecord(import_string.isString, isArray(import_string.isString)),
520
- relationType: isRelationType,
521
- a: isLiteral(a2),
522
- b: isLiteral(b2)
523
- })(input);
524
- };
525
-
526
- // ../../anvl/src/join/get-related-ids.ts
527
- var getRelatedIds = (relationMap, id) => {
528
- var _a2;
529
- return (_a2 = relationMap.relations[id]) != null ? _a2 : [];
530
- };
531
- var getRelatedId = (relationMap, id) => {
532
- const relations = getRelatedIds(relationMap, id);
533
- if (relations.length > 1) {
534
- console.warn(
535
- `entry with id ${id} was not expected to have multiple relations`
536
- );
537
- }
538
- return relations[0];
539
- };
540
-
541
- // ../../anvl/src/join/make-json-interface.ts
542
- var makeJsonInterface = (join, ...params) => {
543
- const isContent = params[0];
544
- const { a: a2, b: b2 } = join;
545
- const options = {
546
- from: a2,
547
- to: b2,
548
- isContent
549
- };
550
- return {
551
- toJson: (join2) => join2.toJSON(),
552
- fromJson: (json) => Join.fromJSON(json, options)
553
- };
554
- };
555
-
556
- // ../../anvl/src/join/relation-contents.ts
557
- var import_function6 = require("fp-ts/function");
558
-
559
- // ../../anvl/src/join/relation-record.ts
560
- var getRelationEntries = (relationMap, idA) => getRelatedIds(relationMap, idA).map((idB) => [
561
- idB,
562
- getContent(relationMap, idA, idB)
563
- ]);
564
- var getRelationRecord = (relationMap, id) => Object.fromEntries(getRelationEntries(relationMap, id));
565
-
566
- // ../../anvl/src/join/remove-relation.ts
567
- var import_function5 = require("fp-ts/function");
568
- var import_string2 = require("fp-ts/string");
569
-
570
- // ../../anvl/src/string/split.ts
571
- var split = (separator) => (str) => str.split(separator);
572
-
573
- // ../../anvl/src/join/remove-relation.ts
574
- var removeSpecific = (current, idA, idB) => {
575
- const isIdForRemoval = isOneOf(idA, idB);
576
- return __spreadProps(__spreadValues({}, current), {
577
- relations: (0, import_function5.pipe)(
578
- current.relations,
579
- recordToEntries,
580
- map(([id, relations]) => [
581
- id,
582
- isIdForRemoval(id) ? relations.filter((relation) => !isIdForRemoval(relation)) : relations
583
- ]),
584
- entriesToRecord,
585
- treeShake(isEmptyArray)
586
- ),
587
- contents: (0, import_function5.pipe)(
588
- current.contents,
589
- treeShake(
590
- (_, key) => (0, import_string2.isString)(key) && (0, import_function5.pipe)(key, split(`/`), comprises([idA, idB]))
591
- )
592
- )
593
- });
594
- };
595
- var removeAll = (current, idToRemove) => {
596
- const next = __spreadProps(__spreadValues({}, current), {
597
- relations: (0, import_function5.pipe)(
598
- current.relations,
599
- recordToEntries,
600
- map(([id, relations]) => [
601
- id,
602
- relations.filter((relation) => relation !== idToRemove)
603
- ]),
604
- entriesToRecord,
605
- treeShake((val, key) => key === idToRemove || isEmptyArray(val))
606
- ),
607
- contents: (0, import_function5.pipe)(
608
- current.contents,
609
- treeShake(
610
- (_, key) => (0, import_string2.isString)(key) && key.split(`/`).includes(idToRemove)
611
- )
612
- )
613
- });
614
- return next;
615
- };
616
- var removeRelation = (current, relation) => {
617
- const idA = relation[current.a];
618
- const idB = relation[current.b];
619
- return idB ? removeSpecific(current, idA, idB) : removeAll(current, idA);
620
- };
621
-
622
- // ../../anvl/src/join/set-relation.ts
623
- var setManyToMany = (map2, idA, idB, ...rest) => {
624
- var _a2, _b;
625
- const next = __spreadProps(__spreadValues({}, map2), {
626
- relations: __spreadProps(__spreadValues({}, map2.relations), {
627
- [idA]: addTo((_a2 = map2.relations[idA]) != null ? _a2 : [])(idB),
628
- [idB]: addTo((_b = map2.relations[idB]) != null ? _b : [])(idA)
629
- })
630
- });
631
- const content = rest[0];
632
- return content ? setContent(next, idA, idB, content) : next;
633
- };
634
- var removeEmpties = treeShake(isEmptyArray);
635
- var set1ToMany = (current, leaderId, followerId, ...rest) => {
636
- var _a2;
637
- const relations = __spreadValues({}, current.relations);
638
- const prevLeaderId = getRelatedId(current, followerId);
639
- const next = __spreadProps(__spreadValues({}, current), {
640
- relations: removeEmpties(__spreadProps(__spreadValues(__spreadValues({}, relations), prevLeaderId && prevLeaderId !== leaderId && {
641
- [prevLeaderId]: relations[prevLeaderId].filter(
642
- (id) => id !== followerId
643
- )
644
- }), {
645
- [followerId]: [leaderId],
646
- [leaderId]: addTo((_a2 = relations[leaderId]) != null ? _a2 : [])(followerId)
647
- }))
648
- });
649
- const content = rest[0];
650
- return content ? setContent(next, leaderId, followerId, content) : next;
651
- };
652
- var set1To1 = (current, wifeId, husbandId, ...rest) => {
653
- const prevWifeId = getRelatedId(current, husbandId);
654
- const prevHusbandId = getRelatedId(current, wifeId);
655
- const next = __spreadProps(__spreadValues({}, current), {
656
- relations: removeEmpties(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, current.relations), prevWifeId && { [prevWifeId]: [] }), prevHusbandId && { [prevHusbandId]: [] }), {
657
- [wifeId]: [husbandId],
658
- [husbandId]: [wifeId]
659
- }))
660
- });
661
- const content = rest[0];
662
- return content ? setContent(next, wifeId, husbandId, content) : next;
663
- };
664
- var setRelationWithContent = (current, relation, ...rest) => {
665
- const { [current.a]: idA, [current.b]: idB } = relation;
666
- switch (current.relationType) {
667
- case `1:1`:
668
- return set1To1(current, idA, idB, ...rest);
669
- case `1:n`:
670
- return set1ToMany(current, idA, idB, ...rest);
671
- case `n:n`:
672
- return setManyToMany(current, idA, idB, ...rest);
673
- }
674
- };
675
-
676
- // ../../anvl/src/join/relation-contents.ts
677
- var makeContentId = (idA, idB) => [idA, idB].sort().join(`/`);
678
- var getContent = (relationMap, idA, idB) => relationMap.contents[makeContentId(idA, idB)];
679
- var setContent = (map2, idA, idB, content) => __spreadProps(__spreadValues({}, map2), {
680
- contents: __spreadProps(__spreadValues({}, map2.contents), {
681
- [makeContentId(idA, idB)]: content
682
- })
683
- });
684
- var getRelations = (relationMap, id) => getRelationEntries(relationMap, id).map(
685
- ([id2, content]) => __spreadValues({
686
- id: id2
687
- }, content)
688
- );
689
- var setRelations = (current, subject, relations) => {
690
- const idA = subject[current.a];
691
- const idB = subject[current.b];
692
- return (0, import_function6.pipe)(
693
- current,
694
- (relationData) => {
695
- const relatedIds = getRelatedIds(current, idA);
696
- const removedIds = relatedIds.filter(
697
- (id) => !relations.some((r) => r.id === id)
698
- );
699
- let step = relationData;
700
- for (const id of removedIds) {
701
- const remove = {
702
- [current.a]: idA != null ? idA : id,
703
- [current.b]: idB != null ? idB : id
704
- };
705
- step = removeRelation(step, remove);
706
- }
707
- return step;
708
- },
709
- (relationData) => {
710
- let step = relationData;
711
- for (const _a2 of relations) {
712
- const _b = _a2, { id } = _b, rest = __objRest(_b, ["id"]);
713
- const content = isEmptyObject(rest) ? void 0 : rest;
714
- step = setRelationWithContent(
715
- step,
716
- { [current.a]: idA != null ? idA : id, [current.b]: idB != null ? idB : id },
717
- // @ts-expect-error hacky
718
- content
719
- );
720
- }
721
- return step;
722
- },
723
- (relationData) => {
724
- const newlyOrderedIds = relations.map((r) => r.id);
725
- return __spreadProps(__spreadValues({}, relationData), {
726
- relations: __spreadProps(__spreadValues({}, relationData.relations), {
727
- [idA != null ? idA : idB]: newlyOrderedIds
728
- })
729
- });
730
- }
731
- );
732
- };
733
-
734
- // ../../anvl/src/join/index.ts
735
- var Join = class _Join {
736
- constructor(json) {
737
- this.a = `from`;
738
- this.b = `to`;
739
- this.makeJsonInterface = (...params) => {
740
- return makeJsonInterface(this, ...params);
741
- };
742
- Object.assign(this, __spreadProps(__spreadValues(__spreadValues({}, EMPTY_RELATION_DATA), json), {
743
- makeJsonInterface: this.makeJsonInterface
744
- }));
745
- }
746
- toJSON() {
747
- return {
748
- relationType: this.relationType,
749
- relations: this.relations,
750
- contents: this.contents,
751
- a: this.a,
752
- b: this.b
753
- };
754
- }
755
- static fromJSON(json, options) {
756
- const isValid = isRelationData(options)(json);
757
- if (isValid) {
758
- return new _Join(json);
759
- }
760
- throw new Error(
761
- `Saved JSON for this Join is invalid: ${JSON.stringify(json)}`
762
- );
763
- }
764
- from(newA) {
765
- return new _Join(__spreadProps(__spreadValues({}, this), { a: newA }));
766
- }
767
- to(newB) {
768
- return new _Join(__spreadProps(__spreadValues({}, this), { b: newB }));
769
- }
770
- getRelatedId(id) {
771
- return getRelatedId(this, id);
772
- }
773
- getRelatedIds(id) {
774
- return getRelatedIds(this, id);
775
- }
776
- getContent(idA, idB) {
777
- return getContent(this, idA, idB);
778
- }
779
- getRelationEntries(id) {
780
- return getRelationEntries(this, id);
781
- }
782
- getRelationRecord(id) {
783
- return getRelationRecord(this, id);
784
- }
785
- getRelation(id) {
786
- return getRelations(this, id)[0];
787
- }
788
- getRelations(id) {
789
- return getRelations(this, id);
790
- }
791
- setRelations(subject, relations) {
792
- return new _Join(setRelations(this, subject, relations));
793
- }
794
- set(relation, ...rest) {
795
- return new _Join(setRelationWithContent(this, relation, ...rest));
796
- }
797
- remove(relation) {
798
- return new _Join(
799
- removeRelation(this, relation)
800
- );
801
- }
802
- };
803
-
804
- // ../src/internal/store.ts
805
- var createStore = (name, store = null) => {
806
- var _a2;
807
- const created = __spreadProps(__spreadValues({}, store != null ? store : (() => ({
808
- atomsThatAreDefault: /* @__PURE__ */ new Set(),
809
- selectorAtoms: new Join({ relationType: `n:n` }).from(`selectorKey`).to(`atomKey`),
810
- selectorGraph: new Join({ relationType: `n:n` })
811
- }))()), {
812
- valueMap: new Map(store == null ? void 0 : store.valueMap),
813
- atoms: /* @__PURE__ */ new Map(),
814
- readonlySelectors: /* @__PURE__ */ new Map(),
815
- selectors: /* @__PURE__ */ new Map(),
816
- transactions: /* @__PURE__ */ new Map(),
817
- timelines: /* @__PURE__ */ new Map(),
818
- timelineAtoms: new Join({ relationType: `1:n` }).from(`timelineKey`).to(`atomKey`),
819
- subject: {
820
- atomCreation: new Subject(),
821
- selectorCreation: new Subject(),
822
- transactionCreation: new Subject(),
823
- timelineCreation: new Subject(),
824
- operationStatus: new Subject()
825
- },
826
- operation: __spreadValues({
827
- open: false
828
- }, store == null ? void 0 : store.operation),
829
- transactionStatus: __spreadValues({
830
- phase: `idle`
831
- }, store == null ? void 0 : store.transactionStatus),
832
- config: __spreadProps(__spreadValues({
833
- logger: __spreadValues(__spreadProps(__spreadValues({}, console), {
834
- info: doNothing
835
- }), (_a2 = store == null ? void 0 : store.config) == null ? void 0 : _a2.logger),
836
- logger__INTERNAL: console
837
- }, store == null ? void 0 : store.config), {
838
- name
839
- })
840
- });
841
- store == null ? void 0 : store.atoms.forEach((atom2) => {
842
- const copiedAtom = __spreadProps(__spreadValues({}, atom2), { subject: new Subject() });
843
- created.atoms.set(atom2.key, copiedAtom);
844
- });
845
- store == null ? void 0 : store.readonlySelectors.forEach((selector) => {
846
- selector.install(created);
847
- });
848
- store == null ? void 0 : store.selectors.forEach((selector) => {
849
- selector.install(created);
850
- });
851
- store == null ? void 0 : store.transactions.forEach((tx) => {
852
- tx.install(created);
853
- });
854
- store == null ? void 0 : store.timelines.forEach((timeline2) => {
855
- timeline2.install(created);
856
- });
857
- return created;
858
- };
859
- var IMPLICIT = {
860
- STORE_INTERNAL: void 0,
861
- get STORE() {
862
- var _a2;
863
- return (_a2 = this.STORE_INTERNAL) != null ? _a2 : this.STORE_INTERNAL = createStore(`DEFAULT`);
864
- }
865
- };
866
-
867
- // ../src/internal/operation.ts
868
- var openOperation = (token, store) => {
869
- var _a2, _b;
870
- const core = target(store);
871
- if (core.operation.open) {
872
- (_a2 = store.config.logger) == null ? void 0 : _a2.error(
873
- `\u274C failed to setState to "${token.key}" during a setState for "${core.operation.token.key}"`
874
- );
875
- throw Symbol(`violation`);
876
- }
877
- core.operation = {
878
- open: true,
879
- done: /* @__PURE__ */ new Set(),
880
- prev: new Map(store.valueMap),
881
- time: Date.now(),
882
- token
883
- };
884
- (_b = store.config.logger) == null ? void 0 : _b.info(
885
- `\u2B55 operation start from "${token.key}" in store "${store.config.name}"`
886
- );
887
- };
888
- var closeOperation = (store) => {
889
- var _a2;
890
- const core = target(store);
891
- core.operation = { open: false };
892
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(`\u{1F534} operation done`);
893
- store.subject.operationStatus.next(core.operation);
894
- };
895
- var isDone = (key, store = IMPLICIT.STORE) => {
896
- var _a2;
897
- const core = target(store);
898
- if (!core.operation.open) {
899
- (_a2 = store.config.logger) == null ? void 0 : _a2.warn(
900
- `isDone called outside of an operation. This is probably a bug.`
901
- );
902
- return true;
903
- }
904
- return core.operation.done.has(key);
905
- };
906
- var markDone = (key, store = IMPLICIT.STORE) => {
907
- var _a2;
908
- const core = target(store);
909
- if (!core.operation.open) {
910
- (_a2 = store.config.logger) == null ? void 0 : _a2.warn(
911
- `markDone called outside of an operation. This is probably a bug.`
912
- );
913
- return;
914
- }
915
- core.operation.done.add(key);
916
- };
917
- var recallState = (state, store = IMPLICIT.STORE) => {
918
- var _a2;
919
- const core = target(store);
920
- if (!core.operation.open) {
921
- (_a2 = store.config.logger) == null ? void 0 : _a2.warn(
922
- `recall called outside of an operation. This is probably a bug.`
923
- );
924
- return core.valueMap.get(state.key);
925
- }
926
- return core.operation.prev.get(state.key);
927
- };
928
- var cacheValue = (key, value, store = IMPLICIT.STORE) => {
929
- const core = target(store);
930
- core.valueMap.set(key, value);
931
- };
932
- var evictCachedValue = (key, store = IMPLICIT.STORE) => {
933
- const core = target(store);
934
- core.valueMap.delete(key);
935
- };
936
- var readCachedValue = (key, store = IMPLICIT.STORE) => target(store).valueMap.get(key);
937
- var isValueCached = (key, store = IMPLICIT.STORE) => target(store).valueMap.has(key);
938
-
939
- // ../src/internal/transaction-internal.ts
940
- var target = (store = IMPLICIT.STORE) => store.transactionStatus.phase === `building` ? store.transactionStatus.core : store;
941
-
942
- // ../src/internal/atom-internal.ts
943
- function atom__INTERNAL(options, family, store = IMPLICIT.STORE) {
944
- var _a2, _b, _c;
945
- const core = target(store);
946
- const existing = core.atoms.get(options.key);
947
- if (existing) {
948
- (_b = (_a2 = store.config.logger) == null ? void 0 : _a2.error) == null ? void 0 : _b.call(
949
- _a2,
950
- `Key "${options.key}" already exists in the store.`
951
- );
952
- return deposit(existing);
953
- }
954
- const subject = new Subject();
955
- const newAtom = __spreadValues(__spreadProps(__spreadValues({}, options), {
956
- subject,
957
- type: `atom`
958
- }), family && { family });
959
- const initialValue = options.default instanceof Function ? options.default() : options.default;
960
- core.atoms.set(newAtom.key, newAtom);
961
- markAtomAsDefault(options.key, store);
962
- cacheValue(options.key, initialValue, store);
963
- const token = deposit(newAtom);
964
- (_c = options.effects) == null ? void 0 : _c.forEach(
965
- (effect) => effect({
966
- setSelf: (next) => setState(token, next, store),
967
- onSet: (handle) => subscribe(token, handle, store)
968
- })
969
- );
970
- store.subject.atomCreation.next(token);
971
- return token;
972
- }
973
-
974
- // ../../anvl/src/json/index.ts
975
- var stringifyJson = (json) => JSON.stringify(json);
976
- var JSON_TYPE_NAMES = [
977
- `array`,
978
- `boolean`,
979
- `null`,
980
- `number`,
981
- `object`,
982
- `string`
983
- ];
984
- var JSON_DEFAULTS = {
985
- array: [],
986
- boolean: false,
987
- null: null,
988
- number: 0,
989
- object: {},
990
- string: ``
991
- };
992
-
993
- // ../src/internal/families-internal.ts
994
- function atomFamily__INTERNAL(options, store = IMPLICIT.STORE) {
995
- const subject = new Subject();
996
- return Object.assign(
997
- (key) => {
998
- const subKey = stringifyJson(key);
999
- const family = { key: options.key, subKey };
1000
- const fullKey = `${options.key}(${subKey})`;
1001
- const existing = withdraw({ key: fullKey, type: `atom` }, store);
1002
- let token;
1003
- if (existing) {
1004
- token = deposit(existing);
1005
- } else {
1006
- const individualOptions = {
1007
- key: fullKey,
1008
- default: options.default instanceof Function ? options.default(key) : options.default
1009
- };
1010
- if (options.effects) {
1011
- individualOptions.effects = options.effects(key);
1012
- }
1013
- token = atom__INTERNAL(individualOptions, family, store);
1014
- }
1015
- subject.next(token);
1016
- return token;
1017
- },
1018
- {
1019
- key: options.key,
1020
- type: `atom_family`,
1021
- subject
1022
- }
1023
- );
1024
- }
1025
-
1026
- // ../src/internal/selector/lookup-selector-sources.ts
1027
- var lookupSelectorSources = (key, store) => target(store).selectorGraph.getRelations(key).filter(({ source }) => source !== key).map(({ source }) => lookup(source, store));
1028
-
1029
- // ../src/internal/selector/trace-selector-atoms.ts
1030
- var traceSelectorAtoms = (selectorKey, dependency, store) => {
1031
- const roots = [];
1032
- const sources = lookupSelectorSources(dependency.key, store);
1033
- let depth = 0;
1034
- while (sources.length > 0) {
1035
- const source = sources.shift();
1036
- ++depth;
1037
- if (depth > 999) {
1038
- throw new Error(
1039
- `Maximum selector dependency depth exceeded in selector "${selectorKey}".`
1040
- );
1041
- }
1042
- if (source.type !== `atom`) {
1043
- sources.push(...lookupSelectorSources(source.key, store));
1044
- } else {
1045
- roots.push(source);
1046
- }
1047
- }
1048
- return roots;
1049
- };
1050
- var traceAllSelectorAtoms = (selectorKey, store) => {
1051
- const sources = lookupSelectorSources(selectorKey, store);
1052
- return sources.flatMap(
1053
- (source) => source.type === `atom` ? source : traceSelectorAtoms(selectorKey, source, store)
1054
- );
1055
- };
1056
-
1057
- // ../src/internal/set.ts
1058
- var evictDownStream = (state, store = IMPLICIT.STORE) => {
1059
- var _a2, _b;
1060
- const core = target(store);
1061
- const downstream = core.selectorAtoms.getRelations(state.key);
1062
- const downstreamKeys = downstream.map(({ id }) => id);
1063
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(
1064
- ` || ${downstreamKeys.length} downstream:`,
1065
- downstreamKeys
1066
- );
1067
- if (core.operation.open) {
1068
- (_b = store.config.logger) == null ? void 0 : _b.info(` ||`, [...core.operation.done], `already done`);
1069
- }
1070
- downstream.forEach(({ id: stateKey }) => {
1071
- var _a3, _b2, _c, _d;
1072
- if (isDone(stateKey, store)) {
1073
- (_a3 = store.config.logger) == null ? void 0 : _a3.info(` || ${stateKey} already done`);
1074
- return;
1075
- }
1076
- const state2 = (_b2 = core.selectors.get(stateKey)) != null ? _b2 : core.readonlySelectors.get(stateKey);
1077
- if (!state2) {
1078
- (_c = store.config.logger) == null ? void 0 : _c.info(
1079
- ` || ${stateKey} is an atom, and can't be downstream`
1080
- );
1081
- return;
1082
- }
1083
- evictCachedValue(stateKey, store);
1084
- (_d = store.config.logger) == null ? void 0 : _d.info(` xx evicted "${stateKey}"`);
1085
- markDone(stateKey, store);
1086
- });
1087
- };
1088
- var setAtomState = (atom2, next, store = IMPLICIT.STORE) => {
1089
- var _a2, _b;
1090
- const oldValue = getState__INTERNAL(atom2, store);
1091
- const newValue = become(next)(oldValue);
1092
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(`<< setting atom "${atom2.key}" to`, newValue);
1093
- cacheValue(atom2.key, newValue, store);
1094
- if (isAtomDefault(atom2.key, store)) {
1095
- markAtomAsNotDefault(atom2.key, store);
1096
- }
1097
- markDone(atom2.key, store);
1098
- (_b = store.config.logger) == null ? void 0 : _b.info(
1099
- ` || evicting caches downstream from "${atom2.key}"`
1100
- );
1101
- evictDownStream(atom2, store);
1102
- const update = { oldValue, newValue };
1103
- if (store.transactionStatus.phase !== `building`) {
1104
- emitUpdate(atom2, update, store);
1105
- } else {
1106
- stowUpdate(atom2, update, store);
1107
- }
1108
- };
1109
- var setSelectorState = (selector, next, store = IMPLICIT.STORE) => {
1110
- var _a2, _b;
1111
- const oldValue = getState__INTERNAL(selector, store);
1112
- const newValue = become(next)(oldValue);
1113
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(`<< setting selector "${selector.key}" to`, newValue);
1114
- (_b = store.config.logger) == null ? void 0 : _b.info(` || propagating change made to "${selector.key}"`);
1115
- selector.set(newValue);
1116
- };
1117
- var setState__INTERNAL = (state, value, store = IMPLICIT.STORE) => {
1118
- if (`set` in state) {
1119
- setSelectorState(state, value, store);
1120
- } else {
1121
- setAtomState(state, value, store);
1122
- }
1123
- };
1124
-
1125
- // ../../anvl/reactivity/subject.ts
1126
- var Subject = class {
1127
- constructor() {
1128
- this.subscribers = [];
1129
- }
1130
- subscribe(subscriber) {
1131
- this.subscribers.push(subscriber);
1132
- const unsubscribe = () => this.unsubscribe(subscriber);
1133
- return { unsubscribe };
1134
- }
1135
- unsubscribe(subscriber) {
1136
- const subscriberIndex = this.subscribers.indexOf(subscriber);
1137
- if (subscriberIndex !== -1) {
1138
- this.subscribers.splice(subscriberIndex, 1);
1139
- }
1140
- }
1141
- next(value) {
1142
- for (const subscriber of this.subscribers) {
1143
- subscriber(value);
1144
- }
1145
- }
1146
- };
1147
-
1148
- // ../src/internal/subscribe-internal.ts
1149
- var stowUpdate = (state, update, store) => {
1150
- var _a2;
1151
- const { key } = state;
1152
- const { logger } = store.config;
1153
- if (store.transactionStatus.phase !== `building`) {
1154
- (_a2 = store.config.logger) == null ? void 0 : _a2.warn(
1155
- `stowUpdate called outside of a transaction. This is probably a bug.`
1156
- );
1157
- return;
1158
- }
1159
- store.transactionStatus.atomUpdates.push(__spreadValues({ key }, update));
1160
- logger == null ? void 0 : logger.info(`\u{1F4DD} ${key} stowed (`, update.oldValue, `->`, update.newValue, `)`);
1161
- };
1162
- var emitUpdate = (state, update, store) => {
1163
- const { key } = state;
1164
- const { logger } = store.config;
1165
- logger == null ? void 0 : logger.info(
1166
- `\u{1F4E2} ${state.type} "${key}" went (`,
1167
- update.oldValue,
1168
- `->`,
1169
- update.newValue,
1170
- `)`
1171
- );
1172
- state.subject.next(update);
1173
- };
1174
- var subscribeToRootAtoms = (state, store) => {
1175
- const dependencySubscriptions = `default` in state ? null : traceAllSelectorAtoms(state.key, store).map((atomToken) => {
1176
- const atom2 = withdraw(atomToken, store);
1177
- if (atom2 === null) {
1178
- throw new Error(
1179
- `Atom "${atomToken.key}", a dependency of selector "${state.key}", not found in store "${store.config.name}".`
1180
- );
1181
- }
1182
- return atom2.subject.subscribe((atomChange) => {
1183
- var _a2, _b;
1184
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(
1185
- `\u{1F4E2} selector "${state.key}" saw root "${atomToken.key}" go (`,
1186
- atomChange.oldValue,
1187
- `->`,
1188
- atomChange.newValue,
1189
- `)`
1190
- );
1191
- const oldValue = recallState(state, store);
1192
- const newValue = getState__INTERNAL(state, store);
1193
- (_b = store.config.logger) == null ? void 0 : _b.info(
1194
- ` <- "${state.key}" went (`,
1195
- oldValue,
1196
- `->`,
1197
- newValue,
1198
- `)`
1199
- );
1200
- state.subject.next({ newValue, oldValue });
1201
- });
1202
- });
1203
- return dependencySubscriptions;
1204
- };
1205
-
1206
- // ../src/atom.ts
1207
- function atom(options) {
1208
- return atom__INTERNAL(options);
1209
- }
1210
- function atomFamily(options) {
1211
- return atomFamily__INTERNAL(options);
1212
- }
1213
-
1214
- // ../src/subscribe.ts
1215
- var subscribe = (token, handleUpdate, store = IMPLICIT.STORE) => {
1216
- var _a2;
1217
- const state = withdraw(token, store);
1218
- if (state === null) {
1219
- throw new Error(
1220
- `State "${token.key}" not found in this store. Did you forget to initialize with the "atom" or "selector" function?`
1221
- );
1222
- }
1223
- const subscription = state.subject.subscribe(handleUpdate);
1224
- (_a2 = store.config.logger) == null ? void 0 : _a2.info(`\u{1F440} subscribe to "${state.key}"`);
1225
- const dependencySubscriptions = state.type !== `atom` ? subscribeToRootAtoms(state, store) : null;
1226
- const unsubscribe = dependencySubscriptions === null ? () => {
1227
- var _a3;
1228
- (_a3 = store.config.logger) == null ? void 0 : _a3.info(`\u{1F648} unsubscribe from "${state.key}"`);
1229
- subscription.unsubscribe();
1230
- } : () => {
1231
- var _a3;
1232
- (_a3 = store.config.logger) == null ? void 0 : _a3.info(
1233
- `\u{1F648} unsubscribe from "${state.key}" and its dependencies`
1234
- );
1235
- subscription.unsubscribe();
1236
- for (const dependencySubscription of dependencySubscriptions) {
1237
- dependencySubscription.unsubscribe();
1238
- }
1239
- };
1240
- return unsubscribe;
1241
- };
1242
-
1243
- // ../src/index.ts
1244
- var setState = (token, value, store = IMPLICIT.STORE) => {
1245
- try {
1246
- openOperation(token, store);
1247
- } catch (thrown) {
1248
- if (!(typeof thrown === `symbol`)) {
1249
- throw thrown;
1250
- }
1251
- return;
1252
- }
1253
- const state = withdraw(token, store);
1254
- if (state === null) {
1255
- throw new Error(
1256
- `${capitalize(token.type)} "${token.key}" not found in store "${store.config.name}".`
1257
- );
1258
- }
1259
- setState__INTERNAL(state, value, store);
1260
- closeOperation(store);
1261
- };
1262
-
1263
- // ../src/introspection/attach-introspection-states.ts
1264
- var import_atom7 = require("atom.io");
1265
-
1266
- // ../src/introspection/attach-atom-index.ts
1267
- var import_atom = require("atom.io");
1268
- var attachAtomIndex = (store = import_atom.__INTERNAL__.IMPLICIT.STORE) => {
1269
- const atomTokenIndexState__INTERNAL = import_atom.__INTERNAL__.atom__INTERNAL(
1270
- {
1271
- key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index (Internal)`,
1272
- default: () => [...store.atoms].filter(([key]) => !key.includes(`\u{1F441}\u200D\u{1F5E8}`)).reduce((acc, [key]) => {
1273
- acc[key] = { key, type: `atom` };
1274
- return acc;
1275
- }, {}),
1276
- effects: [
1277
- ({ setSelf }) => {
1278
- store.subject.atomCreation.subscribe((atomToken) => {
1279
- if (store.operation.open) {
1280
- return;
1281
- }
1282
- if (atomToken.key.includes(`\u{1F441}\u200D\u{1F5E8}`)) {
1283
- return;
1284
- }
1285
- setSelf((state) => {
1286
- const { key, family } = atomToken;
1287
- if (family) {
1288
- const { key: familyKey, subKey } = family;
1289
- const current = state[familyKey];
1290
- if (current === void 0 || `familyMembers` in current) {
1291
- const familyKeyState = current || {
1292
- key: familyKey,
1293
- familyMembers: {}
1294
- };
1295
- return __spreadProps(__spreadValues({}, state), {
1296
- [familyKey]: __spreadProps(__spreadValues({}, familyKeyState), {
1297
- familyMembers: __spreadProps(__spreadValues({}, familyKeyState.familyMembers), {
1298
- [subKey]: atomToken
1299
- })
1300
- })
1301
- });
1302
- }
1303
- }
1304
- return __spreadProps(__spreadValues({}, state), {
1305
- [key]: atomToken
1306
- });
1307
- });
1308
- });
1309
- }
1310
- ]
1311
- },
1312
- void 0,
1313
- store
1314
- );
1315
- return import_atom.__INTERNAL__.selector__INTERNAL(
1316
- {
1317
- key: `\u{1F441}\u200D\u{1F5E8} Atom Token Index`,
1318
- get: ({ get }) => get(atomTokenIndexState__INTERNAL)
1319
- },
1320
- void 0,
1321
- store
1322
- );
1323
- };
1324
-
1325
- // ../src/introspection/attach-selector-index.ts
1326
- var import_atom2 = require("atom.io");
1327
- var attachSelectorIndex = (store = import_atom2.__INTERNAL__.IMPLICIT.STORE) => {
1328
- const readonlySelectorTokenIndexState__INTERNAL = import_atom2.__INTERNAL__.atom__INTERNAL(
1329
- {
1330
- key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index (Internal)`,
1331
- default: () => Object.assign(
1332
- [...store.readonlySelectors].filter(([key]) => !key.includes(`\u{1F441}\u200D\u{1F5E8}`)).reduce((acc, [key]) => {
1333
- acc[key] = { key, type: `readonly_selector` };
1334
- return acc;
1335
- }, {}),
1336
- [...store.selectors].reduce((acc, [key]) => {
1337
- acc[key] = { key, type: `selector` };
1338
- return acc;
1339
- }, {})
1340
- ),
1341
- effects: [
1342
- ({ setSelf }) => {
1343
- store.subject.selectorCreation.subscribe((selectorToken) => {
1344
- if (store.operation.open) {
1345
- return;
1346
- }
1347
- if (selectorToken.key.includes(`\u{1F441}\u200D\u{1F5E8}`)) {
1348
- return;
1349
- }
1350
- setSelf((state) => {
1351
- const { key, family } = selectorToken;
1352
- if (family) {
1353
- const { key: familyKey, subKey } = family;
1354
- const current = state[familyKey];
1355
- if (current === void 0 || `familyMembers` in current) {
1356
- const familyKeyState = current || {
1357
- key: familyKey,
1358
- familyMembers: {}
1359
- };
1360
- return __spreadProps(__spreadValues({}, state), {
1361
- [familyKey]: __spreadProps(__spreadValues({}, familyKeyState), {
1362
- familyMembers: __spreadProps(__spreadValues({}, familyKeyState.familyMembers), {
1363
- [subKey]: selectorToken
1364
- })
1365
- })
1366
- });
1367
- }
1368
- }
1369
- return __spreadProps(__spreadValues({}, state), {
1370
- [key]: selectorToken
1371
- });
1372
- });
1373
- });
1374
- }
1375
- ]
1376
- },
1377
- void 0,
1378
- store
1379
- );
1380
- return import_atom2.__INTERNAL__.selector__INTERNAL({
1381
- key: `\u{1F441}\u200D\u{1F5E8} Selector Token Index`,
1382
- get: ({ get }) => get(readonlySelectorTokenIndexState__INTERNAL)
1383
- });
1384
- };
1385
-
1386
- // ../src/introspection/attach-timeline-family.ts
1387
- var import_atom3 = require("atom.io");
1388
- var attachTimelineFamily = (store = import_atom3.__INTERNAL__.IMPLICIT.STORE) => {
1389
- const findTimelineLogState__INTERNAL = import_atom3.__INTERNAL__.atomFamily__INTERNAL(
1390
- {
1391
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log (Internal)`,
1392
- default: (key) => {
1393
- var _a2;
1394
- return (_a2 = store.timelines.get(key)) != null ? _a2 : {
1395
- key: ``,
1396
- at: 0,
1397
- timeTraveling: null,
1398
- history: [],
1399
- selectorTime: null,
1400
- transactionKey: null,
1401
- install: () => {
1402
- },
1403
- subject: new Subject()
1404
- };
1405
- },
1406
- effects: (key) => [
1407
- ({ setSelf }) => {
1408
- const tl = store.timelines.get(key);
1409
- tl == null ? void 0 : tl.subject.subscribe((_) => {
1410
- if (store.operation.open === true) {
1411
- const subscription = store.subject.operationStatus.subscribe(
1412
- (operationStatus) => {
1413
- if (operationStatus.open === false) {
1414
- subscription.unsubscribe();
1415
- setSelf(__spreadValues({}, tl));
1416
- }
1417
- }
1418
- );
1419
- } else {
1420
- setSelf(__spreadValues({}, tl));
1421
- }
1422
- });
1423
- }
1424
- ]
1425
- },
1426
- store
1427
- );
1428
- const findTimelineLogState = import_atom3.__INTERNAL__.selectorFamily__INTERNAL(
1429
- {
1430
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log`,
1431
- get: (key) => ({ get }) => get(findTimelineLogState__INTERNAL(key))
1432
- },
1433
- store
1434
- );
1435
- return findTimelineLogState;
1436
- };
1437
-
1438
- // ../src/introspection/attach-timeline-index.ts
1439
- var import_atom4 = require("atom.io");
1440
- var attachTimelineIndex = (store = import_atom4.__INTERNAL__.IMPLICIT.STORE) => {
1441
- const timelineTokenIndexState__INTERNAL = import_atom4.__INTERNAL__.atom__INTERNAL(
1442
- {
1443
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index (Internal)`,
1444
- default: () => [...store.timelines].map(([key]) => {
1445
- return { key, type: `timeline` };
1446
- }),
1447
- effects: [
1448
- ({ setSelf }) => {
1449
- store.subject.timelineCreation.subscribe((timelineToken) => {
1450
- setSelf((state) => [...state, timelineToken]);
1451
- });
1452
- }
1453
- ]
1454
- },
1455
- void 0,
1456
- store
1457
- );
1458
- const timelineTokenIndex = import_atom4.__INTERNAL__.selector__INTERNAL(
1459
- {
1460
- key: `\u{1F441}\u200D\u{1F5E8} Timeline Token Index`,
1461
- get: ({ get }) => get(timelineTokenIndexState__INTERNAL)
1462
- },
1463
- void 0,
1464
- store
1465
- );
1466
- return timelineTokenIndex;
1467
- };
1468
-
1469
- // ../src/introspection/attach-transaction-index.ts
1470
- var import_atom5 = require("atom.io");
1471
- var attachTransactionIndex = (store = import_atom5.__INTERNAL__.IMPLICIT.STORE) => {
1472
- const transactionTokenIndexState__INTERNAL = import_atom5.__INTERNAL__.atom__INTERNAL(
1473
- {
1474
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index (Internal)`,
1475
- default: () => [...store.transactions].map(([key]) => {
1476
- return { key, type: `transaction` };
1477
- }),
1478
- effects: [
1479
- ({ setSelf }) => {
1480
- store.subject.transactionCreation.subscribe((transactionToken) => {
1481
- setSelf((state) => [...state, transactionToken]);
1482
- });
1483
- }
1484
- ]
1485
- },
1486
- void 0,
1487
- store
1488
- );
1489
- const transactionTokenIndex = import_atom5.__INTERNAL__.selector__INTERNAL(
1490
- {
1491
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Token Index`,
1492
- get: ({ get }) => get(transactionTokenIndexState__INTERNAL)
1493
- },
1494
- void 0,
1495
- store
1496
- );
1497
- return transactionTokenIndex;
1498
- };
1499
-
1500
- // ../src/introspection/attach-transaction-logs.ts
1501
- var import_atom6 = require("atom.io");
1502
- var attachTransactionLogs = (store = import_atom6.__INTERNAL__.IMPLICIT.STORE) => {
1503
- const findTransactionUpdateLog = import_atom6.__INTERNAL__.atomFamily__INTERNAL(
1504
- {
1505
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log (Internal)`,
1506
- default: () => [],
1507
- effects: (key) => [
1508
- ({ setSelf }) => {
1509
- const tx = store.transactions.get(key);
1510
- tx == null ? void 0 : tx.subject.subscribe((transactionUpdate) => {
1511
- if (transactionUpdate.key === key) {
1512
- setSelf((state) => [...state, transactionUpdate]);
1513
- }
1514
- });
1515
- }
1516
- ]
1517
- },
1518
- store
1519
- );
1520
- const findTransactionUpdateLogState = import_atom6.__INTERNAL__.selectorFamily__INTERNAL(
1521
- {
1522
- key: `\u{1F441}\u200D\u{1F5E8} Transaction Update Log`,
1523
- get: (key) => ({ get }) => get(findTransactionUpdateLog(key))
1524
- },
1525
- store
1526
- );
1527
- return findTransactionUpdateLogState;
1528
- };
1529
-
1530
- // ../src/introspection/attach-introspection-states.ts
1531
- var attachIntrospectionStates = (store = import_atom7.__INTERNAL__.IMPLICIT.STORE) => {
1532
- return {
1533
- atomIndex: attachAtomIndex(store),
1534
- selectorIndex: attachSelectorIndex(store),
1535
- transactionIndex: attachTransactionIndex(store),
1536
- findTransactionLogState: attachTransactionLogs(store),
1537
- timelineIndex: attachTimelineIndex(store),
1538
- findTimelineState: attachTimelineFamily(store)
1539
- };
1540
- };
1541
-
1542
- // ../src/web-effects/storage.ts
1543
- var persistAtom = (storage) => ({ stringify, parse }) => (key) => ({ setSelf, onSet }) => {
1544
- const savedValue = storage.getItem(key);
1545
- if (savedValue != null)
1546
- setSelf(parse(savedValue));
1547
- onSet(({ newValue }) => {
1548
- if (newValue == null) {
1549
- storage.removeItem(key);
1550
- return;
1551
- }
1552
- storage.setItem(key, stringify(newValue));
1553
- });
1554
- };
1555
- var lazyLocalStorageEffect = persistAtom(localStorage)(JSON);
1556
-
1557
- // ../src/react-devtools/AtomIODevtools.tsx
1558
- var import_react12 = require("atom.io/react");
1559
- var import_framer_motion = require("framer-motion");
1560
- var import_react13 = require("react");
1561
-
1562
- // ../src/react-devtools/StateIndex.tsx
1563
- var import_atom8 = require("atom.io");
1564
- var import_react8 = require("atom.io/react");
1565
-
1566
- // ../../anvl/src/refinement/refine-json.ts
1567
- var import_boolean = require("fp-ts/boolean");
1568
- var import_number = require("fp-ts/number");
1569
- var import_string3 = require("fp-ts/string");
1570
- var JSON_PROTOTYPES = [
1571
- `Array`,
1572
- `Boolean`,
1573
- `Number`,
1574
- `Object`,
1575
- `String`
1576
- ];
1577
- var refineJsonType = (data) => data === null ? { type: `null`, data: null } : (0, import_boolean.isBoolean)(data) ? { type: `boolean`, data } : (0, import_number.isNumber)(data) ? { type: `number`, data } : (0, import_string3.isString)(data) ? { type: `string`, data } : Array.isArray(data) ? { type: `array`, data } : isPlainObject(data) ? { type: `object`, data } : raiseError(
1578
- data === void 0 ? `undefined passed to refineJsonType. This is not valid JSON.` : `${stringifyJson(data)} with prototype "${Object.getPrototypeOf(data).constructor.name}" passed to refineJsonType. This is not valid JSON.`
1579
- );
1580
- var isJson = (input) => {
1581
- var _a2;
1582
- if (input === null)
1583
- return true;
1584
- if (input === void 0)
1585
- return false;
1586
- const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
1587
- const isJson2 = JSON_PROTOTYPES.includes(prototype);
1588
- return isJson2;
1589
- };
1590
-
1591
- // ../src/react-devtools/Button.tsx
1592
- var import_jsx_dev_runtime = require("react/jsx-dev-runtime");
1593
- var OpenClose = ({ isOpen, setIsOpen, disabled }) => {
1594
- return /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(
1595
- "button",
1596
- {
1597
- type: "button",
1598
- className: `carat ${isOpen ? `open` : `closed`}`,
1599
- onClick: () => setIsOpen((isOpen2) => !isOpen2),
1600
- disabled,
1601
- children: "\u25B6"
1602
- },
1603
- void 0,
1604
- false,
1605
- {
1606
- fileName: "../src/react-devtools/Button.tsx",
1607
- lineNumber: 11,
1608
- columnNumber: 3
1609
- },
1610
- this
1611
- );
1612
- };
1613
- var button = {
1614
- OpenClose
1615
- };
1616
-
1617
- // ../src/react-devtools/StateEditor.tsx
1618
- var import_react7 = require("atom.io/react");
1619
-
1620
- // ../../hamr/src/react-json-editor/editors-by-type/utilities/array-elements.ts
1621
- var makeElementSetters = (data, set) => data.map(
1622
- (value, index) => (newValue) => set(() => {
1623
- const newData = [...data];
1624
- newData[index] = become(newValue)(value);
1625
- return newData;
1626
- })
1627
- );
1628
-
1629
- // ../../hamr/src/react-elastic-input/ElasticInput.tsx
1630
- var import_react = require("react");
1631
- var import_jsx_dev_runtime2 = require("react/jsx-dev-runtime");
1632
- var ElasticInput = (0, import_react.forwardRef)(function ElasticInputFC(props, ref) {
1633
- var _a2, _b, _c, _d;
1634
- const inputRef = (0, import_react.useRef)(null);
1635
- const spanRef = (0, import_react.useRef)(null);
1636
- const [inputWidth, setInputWidth] = (0, import_react.useState)(`auto`);
1637
- (0, import_react.useImperativeHandle)(ref, () => ({
1638
- focus: () => {
1639
- var _a3;
1640
- (_a3 = inputRef.current) == null ? void 0 : _a3.focus();
1641
- }
1642
- }));
1643
- const extraWidth = props.type === `number` ? 15 : 0;
1644
- (0, import_react.useLayoutEffect)(() => {
1645
- if (spanRef.current) {
1646
- setInputWidth(`${spanRef.current.offsetWidth + extraWidth}px`);
1647
- const interval = setInterval(() => {
1648
- if (spanRef.current) {
1649
- setInputWidth(`${spanRef.current.offsetWidth + extraWidth}px`);
1650
- }
1651
- }, 1e3);
1652
- return () => clearInterval(interval);
1653
- }
1654
- }, [(_a2 = inputRef.current) == null ? void 0 : _a2.value, props.value]);
1655
- return /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)("div", { style: { display: `inline-block`, position: `relative` }, children: [
1656
- /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(
1657
- "input",
1658
- __spreadProps(__spreadValues({}, props), {
1659
- ref: inputRef,
1660
- style: __spreadValues({
1661
- padding: 0,
1662
- borderRadius: 0,
1663
- border: `none`,
1664
- fontFamily: `inherit`,
1665
- fontSize: `inherit`,
1666
- width: inputWidth
1667
- }, props.style)
1668
- }),
1669
- void 0,
1670
- false,
1671
- {
1672
- fileName: "../../hamr/src/react-elastic-input/ElasticInput.tsx",
1673
- lineNumber: 45,
1674
- columnNumber: 4
1675
- },
1676
- this
1677
- ),
1678
- /* @__PURE__ */ (0, import_jsx_dev_runtime2.jsxDEV)(
1679
- "span",
1680
- {
1681
- ref: spanRef,
1682
- style: {
1683
- padding: (_b = props.style) == null ? void 0 : _b.padding,
1684
- position: `absolute`,
1685
- visibility: `hidden`,
1686
- // color: `red`,
1687
- whiteSpace: `pre`,
1688
- fontFamily: ((_c = props.style) == null ? void 0 : _c.fontFamily) || `inherit`,
1689
- fontSize: ((_d = props.style) == null ? void 0 : _d.fontSize) || `inherit`
1690
- },
1691
- children: props.value
1692
- },
1693
- void 0,
1694
- false,
1695
- {
1696
- fileName: "../../hamr/src/react-elastic-input/ElasticInput.tsx",
1697
- lineNumber: 58,
1698
- columnNumber: 4
1699
- },
1700
- this
1701
- )
1702
- ] }, void 0, true, {
1703
- fileName: "../../hamr/src/react-elastic-input/ElasticInput.tsx",
1704
- lineNumber: 44,
1705
- columnNumber: 3
1706
- }, this);
1707
- });
1708
-
1709
- // ../../hamr/src/react-elastic-input/NumberInput.tsx
1710
- var import_function11 = require("fp-ts/function");
1711
- var import_react2 = require("react");
1712
-
1713
- // ../../anvl/src/number/clamp.ts
1714
- var clampInto = (min, max) => (value) => value < min ? min : value > max ? max : value;
1715
-
1716
- // ../../anvl/src/number/wrap.ts
1717
- var wrapInto = (min, max) => (value) => value < min ? max - (min - value) % (max - min) : min + (value - min) % (max - min);
1718
-
1719
- // ../../hamr/src/react-elastic-input/NumberInput.tsx
1720
- var import_jsx_dev_runtime3 = require("react/jsx-dev-runtime");
1721
- function round(value, decimalPlaces) {
1722
- if (decimalPlaces === void 0)
1723
- return value;
1724
- const factor = 10 ** decimalPlaces;
1725
- return Math.round(value * factor) / factor;
1726
- }
1727
- var VALID_NON_NUMBERS = [``, `-`, `.`, `-.`];
1728
- var isValidNonNumber = (input) => VALID_NON_NUMBERS.includes(input);
1729
- var VALID_NON_NUMBER_INTERPRETATIONS = {
1730
- "": null,
1731
- "-": 0,
1732
- ".": 0,
1733
- "-.": 0
1734
- };
1735
- var isDecimalInProgress = (input) => input === `0` || !isNaN(Number(input)) && input.includes(`.`);
1736
- var textToValue = (input, allowDecimal) => {
1737
- if (isValidNonNumber(input))
1738
- return VALID_NON_NUMBER_INTERPRETATIONS[input];
1739
- return allowDecimal ? parseFloat(input) : Math.round(parseFloat(input));
1740
- };
1741
- var DEFAULT_NUMBER_CONSTRAINTS = {
1742
- max: Infinity,
1743
- min: -Infinity,
1744
- decimalPlaces: 100,
1745
- nullable: true
1746
- };
1747
- var initRefinery = (constraints) => (input) => {
1748
- if (input === null && constraints.nullable === true) {
1749
- return null;
1750
- }
1751
- const { max, min, decimalPlaces } = __spreadValues(__spreadValues({}, DEFAULT_NUMBER_CONSTRAINTS), constraints);
1752
- const constrained = (0, import_function11.pipe)(
1753
- input != null ? input : 0,
1754
- clampInto(min, max),
1755
- (n) => decimalPlaces ? round(n, decimalPlaces) : n
1756
- );
1757
- return constrained;
1758
- };
1759
- var valueToText = (numericValue) => {
1760
- if (numericValue === null || numericValue === void 0) {
1761
- return ``;
1762
- }
1763
- return numericValue.toString();
1764
- };
1765
- var NumberInput = ({
1766
- autoSize = false,
1767
- customCss,
1768
- decimalPlaces,
1769
- disabled = false,
1770
- label,
1771
- max,
1772
- min,
1773
- name,
1774
- onChange,
1775
- onClick,
1776
- placeholder = ``,
1777
- set = () => null,
1778
- testId,
1779
- value = null
1780
- }) => {
1781
- const id = (0, import_react2.useId)();
1782
- const [temporaryEntry, setTemporaryEntry] = (0, import_react2.useState)(null);
1783
- const userHasMadeDeliberateChange = (0, import_react2.useRef)(false);
1784
- const refine = initRefinery({ max, min, decimalPlaces, nullable: true });
1785
- const allowDecimal = decimalPlaces === void 0 || decimalPlaces > 0;
1786
- const handleBlur = () => {
1787
- if (userHasMadeDeliberateChange.current) {
1788
- set(refine(value != null ? value : null));
1789
- setTemporaryEntry(null);
1790
- }
1791
- userHasMadeDeliberateChange.current = false;
1792
- };
1793
- const handleChange = (event) => {
1794
- var _a2;
1795
- if (onChange)
1796
- onChange(event);
1797
- if (set === void 0)
1798
- return;
1799
- userHasMadeDeliberateChange.current = true;
1800
- const input = event.target.value;
1801
- if (isValidNonNumber(input) || isDecimalInProgress(input)) {
1802
- setTemporaryEntry(input);
1803
- const textInterpretation = isDecimalInProgress(input) ? input : (_a2 = min == null ? void 0 : min.toString()) != null ? _a2 : `0`;
1804
- const newValue = textToValue(textInterpretation, allowDecimal);
1805
- set(refine(newValue));
1806
- return;
1807
- }
1808
- setTemporaryEntry(null);
1809
- const inputIsNumeric = !isNaN(Number(input)) && !input.includes(` `) || allowDecimal && input === `.` || allowDecimal && input === `-.` || input === `` || input === `-`;
1810
- const numericValue = textToValue(input, allowDecimal);
1811
- if (inputIsNumeric) {
1812
- set(refine(numericValue));
1813
- }
1814
- };
1815
- const displayValue = temporaryEntry != null ? temporaryEntry : valueToText(value ? refine(value) : value);
1816
- return /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)("span", { css: customCss, children: [
1817
- label && /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)("label", { htmlFor: id, children: label }, void 0, false, {
1818
- fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1819
- lineNumber: 168,
1820
- columnNumber: 14
1821
- }, this),
1822
- autoSize ? /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)(
1823
- ElasticInput,
1824
- {
1825
- type: "text",
1826
- value: displayValue,
1827
- placeholder: placeholder != null ? placeholder : `-`,
1828
- onChange: handleChange,
1829
- onBlur: handleBlur,
1830
- disabled,
1831
- name: name != null ? name : id,
1832
- id,
1833
- onClick,
1834
- "data-testid": `number-input-${testId != null ? testId : id}`
1835
- },
1836
- void 0,
1837
- false,
1838
- {
1839
- fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1840
- lineNumber: 170,
1841
- columnNumber: 5
1842
- },
1843
- this
1844
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)(
1845
- "input",
1846
- {
1847
- type: "text",
1848
- value: displayValue,
1849
- placeholder: placeholder != null ? placeholder : `-`,
1850
- onChange: handleChange,
1851
- onBlur: handleBlur,
1852
- disabled,
1853
- name: name != null ? name : id,
1854
- id,
1855
- onClick,
1856
- "data-testid": `number-input-${testId != null ? testId : id}`
1857
- },
1858
- void 0,
1859
- false,
1860
- {
1861
- fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1862
- lineNumber: 183,
1863
- columnNumber: 5
1864
- },
1865
- this
1866
- )
1867
- ] }, void 0, true, {
1868
- fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1869
- lineNumber: 167,
1870
- columnNumber: 3
1871
- }, this);
1872
- };
1873
-
1874
- // ../../hamr/src/react-elastic-input/TextInput.tsx
1875
- var import_jsx_dev_runtime4 = require("react/jsx-dev-runtime");
1876
- var TextInput = ({
1877
- value,
1878
- set,
1879
- label,
1880
- placeholder,
1881
- customCss,
1882
- autoSize = false
1883
- }) => {
1884
- return /* @__PURE__ */ (0, import_jsx_dev_runtime4.jsxDEV)("span", { css: customCss, children: [
1885
- /* @__PURE__ */ (0, import_jsx_dev_runtime4.jsxDEV)("label", { children: label }, void 0, false, {
1886
- fileName: "../../hamr/src/react-elastic-input/TextInput.tsx",
1887
- lineNumber: 26,
1888
- columnNumber: 4
1889
- }, this),
1890
- autoSize ? /* @__PURE__ */ (0, import_jsx_dev_runtime4.jsxDEV)(
1891
- ElasticInput,
1892
- {
1893
- type: "text",
1894
- value,
1895
- onChange: (e) => set == null ? void 0 : set(e.target.value),
1896
- disabled: set === void 0,
1897
- placeholder
1898
- },
1899
- void 0,
1900
- false,
1901
- {
1902
- fileName: "../../hamr/src/react-elastic-input/TextInput.tsx",
1903
- lineNumber: 28,
1904
- columnNumber: 5
1905
- },
1906
- this
1907
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime4.jsxDEV)(
1908
- "input",
1909
- {
1910
- type: "text",
1911
- value,
1912
- onChange: (e) => set == null ? void 0 : set(e.target.value),
1913
- disabled: set === void 0,
1914
- placeholder
1915
- },
1916
- void 0,
1917
- false,
1918
- {
1919
- fileName: "../../hamr/src/react-elastic-input/TextInput.tsx",
1920
- lineNumber: 36,
1921
- columnNumber: 5
1922
- },
1923
- this
1924
- )
1925
- ] }, void 0, true, {
1926
- fileName: "../../hamr/src/react-elastic-input/TextInput.tsx",
1927
- lineNumber: 25,
1928
- columnNumber: 3
1929
- }, this);
1930
- };
1931
-
1932
- // ../../hamr/src/react-json-editor/editors-by-type/non-json.tsx
1933
- var import_jsx_dev_runtime5 = require("react/jsx-dev-runtime");
1934
- var NonJsonEditor = ({ data }) => {
1935
- return data === void 0 ? /* @__PURE__ */ (0, import_jsx_dev_runtime5.jsxDEV)(ElasticInput, { disabled: true, value: "undefined" }, void 0, false, {
1936
- fileName: "../../hamr/src/react-json-editor/editors-by-type/non-json.tsx",
1937
- lineNumber: 6,
1938
- columnNumber: 3
1939
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime5.jsxDEV)(
1940
- ElasticInput,
1941
- {
1942
- disabled: true,
1943
- value: Object.getPrototypeOf(data).constructor.name + ` ` + JSON.stringify(data)
1944
- },
1945
- void 0,
1946
- false,
1947
- {
1948
- fileName: "../../hamr/src/react-json-editor/editors-by-type/non-json.tsx",
1949
- lineNumber: 8,
1950
- columnNumber: 3
1951
- },
1952
- this
1953
- );
1954
- };
1955
-
1956
- // ../../hamr/src/react-json-editor/json-editor-internal.tsx
1957
- var import_jsx_dev_runtime6 = require("react/jsx-dev-runtime");
1958
- var JsonEditor_INTERNAL = ({
1959
- data,
1960
- set,
1961
- schema,
1962
- name,
1963
- rename,
1964
- remove,
1965
- recast,
1966
- path = [],
1967
- isReadonly = () => false,
1968
- isHidden = () => false,
1969
- className,
1970
- customCss,
1971
- Header: HeaderDisplay,
1972
- Components
1973
- }) => {
1974
- const dataIsJson = isJson(data);
1975
- const refined = dataIsJson ? refineJsonType(data) : { type: `non-json`, data };
1976
- const SubEditor = dataIsJson ? SubEditors[refined.type] : NonJsonEditor;
1977
- const disabled = isReadonly(path);
1978
- return isHidden(path) ? null : /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(Components.ErrorBoundary, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(Components.EditorWrapper, { className, customCss, children: [
1979
- remove && /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(
1980
- Components.Button,
1981
- {
1982
- onClick: disabled ? doNothing : remove,
1983
- disabled,
1984
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(Components.DeleteIcon, {}, void 0, false, {
1985
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1986
- lineNumber: 65,
1987
- columnNumber: 7
1988
- }, this)
1989
- },
1990
- void 0,
1991
- false,
1992
- {
1993
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1994
- lineNumber: 61,
1995
- columnNumber: 6
1996
- },
1997
- this
1998
- ),
1999
- HeaderDisplay && /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(HeaderDisplay, { data, schema }, void 0, false, {
2000
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2001
- lineNumber: 68,
2002
- columnNumber: 23
2003
- }, this),
2004
- rename && /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(Components.KeyWrapper, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(
2005
- ElasticInput,
2006
- {
2007
- value: name,
2008
- onChange: disabled ? doNothing : (e) => rename(e.target.value),
2009
- disabled
2010
- },
2011
- void 0,
2012
- false,
2013
- {
2014
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2015
- lineNumber: 71,
2016
- columnNumber: 7
2017
- },
2018
- this
2019
- ) }, void 0, false, {
2020
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2021
- lineNumber: 70,
2022
- columnNumber: 6
2023
- }, this),
2024
- /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(
2025
- SubEditor,
2026
- {
2027
- data: refined.data,
2028
- set,
2029
- schema,
2030
- remove,
2031
- rename,
2032
- path,
2033
- isReadonly,
2034
- isHidden,
2035
- Components
2036
- },
2037
- void 0,
2038
- false,
2039
- {
2040
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2041
- lineNumber: 78,
2042
- columnNumber: 5
2043
- },
2044
- this
2045
- ),
2046
- recast && dataIsJson ? /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(
2047
- "select",
2048
- {
2049
- onChange: disabled ? doNothing : (e) => recast(e.target.value),
2050
- value: refined.type,
2051
- disabled,
2052
- children: Object.keys(SubEditors).map((type) => /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)("option", { value: type, children: type }, type, false, {
2053
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2054
- lineNumber: 100,
2055
- columnNumber: 8
2056
- }, this))
2057
- },
2058
- void 0,
2059
- false,
2060
- {
2061
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2062
- lineNumber: 90,
2063
- columnNumber: 6
2064
- },
2065
- this
2066
- ) : null
2067
- ] }, void 0, true, {
2068
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2069
- lineNumber: 59,
2070
- columnNumber: 4
2071
- }, this) }, void 0, false, {
2072
- fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2073
- lineNumber: 58,
2074
- columnNumber: 3
2075
- }, this);
2076
- };
2077
-
2078
- // ../../hamr/src/react-json-editor/editors-by-type/array-editor.tsx
2079
- var import_jsx_dev_runtime7 = require("react/jsx-dev-runtime");
2080
- var ArrayEditor = ({
2081
- path = [],
2082
- isReadonly = () => false,
2083
- isHidden = () => false,
2084
- data,
2085
- set,
2086
- Components
2087
- }) => {
2088
- const setElement = makeElementSetters(data, set);
2089
- return /* @__PURE__ */ (0, import_jsx_dev_runtime7.jsxDEV)(import_jsx_dev_runtime7.Fragment, { children: data.map((element, index) => {
2090
- const newPath = [...path, index];
2091
- return /* @__PURE__ */ (0, import_jsx_dev_runtime7.jsxDEV)(
2092
- JsonEditor_INTERNAL,
2093
- {
2094
- path: newPath,
2095
- isReadonly,
2096
- isHidden,
2097
- data: element,
2098
- set: setElement[index],
2099
- Components
2100
- },
2101
- newPath.join(``),
2102
- false,
2103
- {
2104
- fileName: "../../hamr/src/react-json-editor/editors-by-type/array-editor.tsx",
2105
- lineNumber: 23,
2106
- columnNumber: 6
2107
- },
2108
- this
2109
- );
2110
- }) }, void 0, false, {
2111
- fileName: "../../hamr/src/react-json-editor/editors-by-type/array-editor.tsx",
2112
- lineNumber: 19,
2113
- columnNumber: 3
2114
- }, this);
2115
- };
2116
-
2117
- // ../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx
2118
- var import_react3 = require("react");
2119
-
2120
- // ../../anvl/src/json-schema/json-schema.ts
2121
- var import_boolean2 = require("fp-ts/boolean");
2122
- var import_number3 = require("fp-ts/number");
2123
- var import_string6 = require("fp-ts/string");
2124
-
2125
- // ../../anvl/src/json-schema/integer.ts
2126
- var import_function13 = require("fp-ts/function");
2127
- var isInteger = (input) => Number.isInteger(input);
2128
- var parseInteger = (input) => {
2129
- if (isInteger(input))
2130
- return input;
2131
- throw new IntegerParseError(input);
2132
- };
2133
- var _a;
2134
- var Fraction = class extends Number {
2135
- constructor(n, d) {
2136
- super(n / d);
2137
- this[_a] = () => this.numerator / this.denominator;
2138
- if (d === 0) {
2139
- throw new Error(`Denominator cannot be zero`);
2140
- }
2141
- this.numerator = parseInteger(n);
2142
- this.denominator = parseInteger(d);
2143
- }
2144
- };
2145
- _a = Symbol.toPrimitive;
2146
- var IntegerParseError = class extends Error {
2147
- constructor(value) {
2148
- super(`Could not parse integer from ${JSON.stringify(value)}`);
2149
- }
2150
- };
2151
- var Int = Object.assign((input) => parseInteger(input), {
2152
- from: (input) => (0, import_function13.pipe)(
2153
- input,
2154
- String,
2155
- parseFloat,
2156
- (num) => isInteger(num) ? {
2157
- value: num,
2158
- error: null,
2159
- round: null,
2160
- upper: null,
2161
- lower: null,
2162
- ratio: null
2163
- } : {
2164
- value: null,
2165
- error: new IntegerParseError(input),
2166
- round: Math.round(num),
2167
- upper: Math.ceil(num),
2168
- lower: Math.floor(num),
2169
- ratio: null
2170
- }
2171
- ),
2172
- formula: (fm) => {
2173
- return (input) => {
2174
- return fm(
2175
- input
2176
- );
2177
- };
2178
- }
2179
- });
2180
- function asNumber(input) {
2181
- return input;
2182
- }
2183
- var a = asNumber(new Fraction(1, 2));
2184
- var b = asNumber([new Fraction(1, 2)]);
2185
- var c = asNumber({ a: new Fraction(1, 2) });
2186
-
2187
- // ../../anvl/src/json-schema/refs.ts
2188
- var import_string4 = require("fp-ts/string");
2189
- function isJsonSchemaRef(input) {
2190
- return doesExtend({
2191
- $ref: import_string4.isString
2192
- })(input);
2193
- }
2194
- var colorPalette = {
2195
- $defs: {
2196
- colorChannel: {
2197
- type: `integer`,
2198
- minimum: Int(0),
2199
- maximum: Int(255)
2200
- },
2201
- color: {
2202
- type: `object`,
2203
- properties: {
2204
- red: { $ref: `#/$defs/colorChannel` },
2205
- green: { $ref: `#/$defs/colorChannel` },
2206
- blue: { $ref: `#/$defs/colorChannel` }
2207
- }
2208
- }
2209
- },
2210
- type: `array`,
2211
- items: {
2212
- $ref: `#/$defs/color`
2213
- }
2214
- };
2215
- var retrieveRef = ({
2216
- refNode: { $ref },
2217
- refMap = {},
2218
- root
2219
- }) => {
2220
- if (typeof root === `boolean`) {
2221
- throw new TypeError(`The root is a boolean and cannot be indexed`);
2222
- }
2223
- if ($ref in refMap)
2224
- return { node: refMap[$ref], refMap };
2225
- const [_, ...refPath] = $ref.split(`/`);
2226
- const discovery = delve(root, refPath);
2227
- if (discovery instanceof Error)
2228
- throw discovery;
2229
- let node = discovery.found;
2230
- while (isJsonSchemaRef(node)) {
2231
- const result = retrieveRef({ refNode: node, refMap, root });
2232
- node = result.node;
2233
- refMap = result.refMap;
2234
- }
2235
- if (isJsonSchema(node)) {
2236
- return { node, refMap: __spreadProps(__spreadValues({}, refMap), { [$ref]: node }) };
2237
- }
2238
- throw new TypeError(`The refNode is not a JsonSchema`);
2239
- };
2240
-
2241
- // ../../anvl/src/json-schema/string-formats.ts
2242
- var import_string5 = require("fp-ts/string");
2243
- var JSON_SCHEMA_STRING_FORMATS = [
2244
- `date-time`,
2245
- `date`,
2246
- `email`,
2247
- `hostname`,
2248
- `ipv4`,
2249
- `ipv6`,
2250
- `regex`,
2251
- `time`,
2252
- `uri-reference`,
2253
- `uri-template`,
2254
- `uri`,
2255
- `uuid`
2256
- ];
2257
-
2258
- // ../../anvl/src/json-schema/json-schema.ts
2259
- var JSON_SCHEMA_TYPE_NAMES = [...JSON_TYPE_NAMES, `integer`];
2260
- var JSON_SCHEMA_META_TYPE_NAMES = [
2261
- ...JSON_SCHEMA_TYPE_NAMES,
2262
- `any`,
2263
- `never`
2264
- ];
2265
- var JSON_SCHEMA_REFINERY = {
2266
- array: isArraySchema,
2267
- boolean: isBooleanSchema,
2268
- integer: isIntegerSchema,
2269
- null: isNullSchema,
2270
- number: isNumberSchema,
2271
- object: isObjectSchema,
2272
- string: isStringSchema,
2273
- any: isLiteral(true),
2274
- never: isLiteral(false),
2275
- union: isUnionSchema,
2276
- intersection: isIntersectionSchema,
2277
- negation: isNegationSchema,
2278
- conditional: isConditionalSchema
2279
- };
2280
- var stringSchemaStructure = {
2281
- type: isLiteral(`string`),
2282
- enum: ifDefined(isArray(import_string6.isString)),
2283
- minLength: ifDefined(isInteger),
2284
- maxLength: ifDefined(isInteger),
2285
- pattern: ifDefined(import_string6.isString),
2286
- format: ifDefined(isWithin(JSON_SCHEMA_STRING_FORMATS))
2287
- };
2288
- function isStringSchema(input) {
2289
- return doesExtend(stringSchemaStructure)(input);
2290
- }
2291
- var numberSchemaStructure = {
2292
- type: isLiteral(`number`),
2293
- enum: ifDefined(isArray(import_number3.isNumber)),
2294
- minimum: ifDefined(import_number3.isNumber),
2295
- maximum: ifDefined(import_number3.isNumber),
2296
- exclusiveMinimum: ifDefined(import_number3.isNumber),
2297
- exclusiveMaximum: ifDefined(import_number3.isNumber),
2298
- multipleOf: ifDefined(import_number3.isNumber)
2299
- };
2300
- function isNumberSchema(input) {
2301
- return doesExtend(numberSchemaStructure)(input);
2302
- }
2303
- var integerSchemaStructure = {
2304
- type: isLiteral(`integer`),
2305
- enum: ifDefined(isArray(isInteger)),
2306
- minimum: ifDefined(isInteger),
2307
- maximum: ifDefined(isInteger),
2308
- exclusiveMinimum: ifDefined(isInteger),
2309
- exclusiveMaximum: ifDefined(isInteger),
2310
- multipleOf: ifDefined(isInteger)
2311
- };
2312
- function isIntegerSchema(input) {
2313
- return doesExtend(integerSchemaStructure)(input);
2314
- }
2315
- var booleanSchemaStructure = {
2316
- type: isLiteral(`boolean`),
2317
- enum: ifDefined(isArray(import_boolean2.isBoolean))
2318
- };
2319
- function isBooleanSchema(input) {
2320
- return doesExtend(booleanSchemaStructure)(input);
2321
- }
2322
- var nullSchemaStructure = {
2323
- type: isLiteral(`null`)
2324
- };
2325
- function isNullSchema(input) {
2326
- return doesExtend(nullSchemaStructure)(input);
2327
- }
2328
- var objectSchemaStructure = {
2329
- type: isLiteral(`object`),
2330
- properties: ifDefined(isRecord(import_string6.isString, isJsonSchema)),
2331
- required: ifDefined(isArray(import_string6.isString)),
2332
- additionalProperties: ifDefined(isJsonSchema),
2333
- propertyNames: ifDefined(isStringSchema),
2334
- minProperties: ifDefined(isInteger),
2335
- maxProperties: ifDefined(isInteger),
2336
- dependentSchemas: ifDefined(isRecord(import_string6.isString, isJsonSchema))
2337
- };
2338
- function isObjectSchema(input) {
2339
- return doesExtend(objectSchemaStructure)(input);
2340
- }
2341
- var arraySchemaStructure = {
2342
- type: isLiteral(`array`),
2343
- items: ifDefined(couldBe(isJsonSchema).or(isArray(isJsonSchema))),
2344
- minItems: ifDefined(isInteger),
2345
- maxItems: ifDefined(isInteger),
2346
- uniqueItems: ifDefined(import_boolean2.isBoolean)
2347
- };
2348
- function isArraySchema(input) {
2349
- return doesExtend(arraySchemaStructure)(input);
2350
- }
2351
- var unionSchemaStructure = { anyOf: isArray(isJsonSchema) };
2352
- function isUnionSchema(input) {
2353
- return doesExtend(unionSchemaStructure)(input);
2354
- }
2355
- var exclusiveSchemaStructure = { oneOf: isArray(isJsonSchema) };
2356
- function isExclusiveSchema(input) {
2357
- return doesExtend(exclusiveSchemaStructure)(input);
2358
- }
2359
- var intersectionSchemaStructure = { allOf: isArray(isJsonSchema) };
2360
- function isIntersectionSchema(input) {
2361
- return doesExtend(intersectionSchemaStructure)(input);
2362
- }
2363
- var conditionalSchemaStructure = {
2364
- if: isJsonSchema,
2365
- then: ifDefined(isJsonSchema),
2366
- else: ifDefined(isJsonSchema)
2367
- };
2368
- function isConditionalSchema(input) {
2369
- return doesExtend(conditionalSchemaStructure)(input);
2370
- }
2371
- var negationSchemaStructure = { not: isJsonSchema };
2372
- function isNegationSchema(input) {
2373
- return doesExtend(negationSchemaStructure)(input);
2374
- }
2375
- var mixedSchemaStructure = __spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, arraySchemaStructure), booleanSchemaStructure), integerSchemaStructure), nullSchemaStructure), numberSchemaStructure), objectSchemaStructure), stringSchemaStructure), {
2376
- type: isArray(isWithin(JSON_SCHEMA_TYPE_NAMES)),
2377
- enum: ifDefined(
2378
- isArray(isUnion.or(isInteger).or(import_boolean2.isBoolean).or(import_number3.isNumber).or(import_string6.isString))
2379
- )
2380
- });
2381
- function isMixedSchema(input) {
2382
- return doesExtend(mixedSchemaStructure)(input);
2383
- }
2384
- var isJsonSchemaCore = isUnion.or(isArraySchema).or(isBooleanSchema).or(isConditionalSchema).or(isExclusiveSchema).or(isIntegerSchema).or(isIntersectionSchema).or(isMixedSchema).or(isNegationSchema).or(isNullSchema).or(isNumberSchema).or(isObjectSchema).or(isStringSchema).or(isUnionSchema);
2385
- var isJsonSchemaRoot = doesExtend({
2386
- $id: ifDefined(import_string6.isString),
2387
- $schema: ifDefined(import_string6.isString)
2388
- });
2389
- var isJsonSchemaObject = isIntersection.and(isJsonSchemaCore).and(isJsonSchemaRoot);
2390
- function isJsonSchema(input) {
2391
- return couldBe(isJsonSchemaObject).or(import_boolean2.isBoolean).or(isJsonSchemaRef)(input);
2392
- }
2393
-
2394
- // ../../anvl/src/json-schema/path-into.ts
2395
- var expandPathForSchema = (path) => {
2396
- try {
2397
- return path.flatMap((key) => {
2398
- switch (typeof key) {
2399
- case `string`:
2400
- return [`properties`, key];
2401
- case `number`:
2402
- return [`items`, key];
2403
- case `symbol`:
2404
- throw new TypeError(
2405
- `The key ${String(
2406
- key
2407
- )} is not a valid JSON key; expected string or number, got symbol`
2408
- );
2409
- default:
2410
- throw new TypeError(
2411
- `The key ${key} is not a valid JSON key; expected string or number, got ${typeof key}`
2412
- );
2413
- }
2414
- });
2415
- } catch (caught) {
2416
- if (caught instanceof TypeError)
2417
- return caught;
2418
- throw caught;
2419
- }
2420
- };
2421
-
2422
- // ../../anvl/src/json-schema/find-sub-schema.ts
2423
- var findSubSchema = (schema) => {
2424
- if (typeof schema === `boolean`) {
2425
- throw new Error(`The schema does not contain subSchemas`);
2426
- }
2427
- return (path) => {
2428
- const pathIntoSchema = expandPathForSchema(path);
2429
- if (pathIntoSchema instanceof Error)
2430
- return pathIntoSchema;
2431
- if (typeof schema === `boolean`) {
2432
- return new TypeError(`The schema is not a JsonSchema`);
2433
- }
2434
- const { node, refMap } = pathIntoSchema.reduce(
2435
- ({ 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 }),
2436
- { node: schema, refMap: void 0 }
2437
- );
2438
- if (node instanceof Error)
2439
- throw node;
2440
- let subSchema = node;
2441
- while (isJsonSchemaRef(subSchema)) {
2442
- console.log({ subSchema });
2443
- subSchema = retrieveRef({ refNode: subSchema, root: schema, refMap }).node;
2444
- }
2445
- console.log({ subSchema });
2446
- if (isJsonSchema(subSchema)) {
2447
- return subSchema;
2448
- }
2449
- throw new TypeError(`The subSchema is not a JsonSchema`);
2450
- };
2451
- };
2452
-
2453
- // ../../anvl/src/json/cast-json.ts
2454
- var stringToBoolean = (str) => str === `true`;
2455
- var stringToNumber = (str) => Number(str);
2456
- var stringToArray = (str) => str.split(`,`);
2457
- var stringToObject = (str) => {
2458
- try {
2459
- return JSON.parse(str);
2460
- } catch (e) {
2461
- return { [str]: str };
2462
- }
2463
- };
2464
- var objectToString = (obj) => JSON.stringify(obj);
2465
- var objectToBoolean = (obj) => obj.true === true;
2466
- var objectToNumber = (obj) => {
2467
- var _a2, _b, _c;
2468
- return Number((_c = (_b = (_a2 = obj.number) != null ? _a2 : obj.size) != null ? _b : obj.count) != null ? _c : 0);
2469
- };
2470
- var objectToArray = (obj) => Object.entries(obj);
2471
- var booleanToString = (bool) => bool.toString();
2472
- var booleanToNumber = (bool) => +bool;
2473
- var booleanToObject = (bool) => ({
2474
- [bool.toString()]: bool
2475
- });
2476
- var booleanToArray = (bool) => [bool];
2477
- var numberToString = (num) => num.toString();
2478
- var numberToBoolean = (num) => num === 1;
2479
- var numberToObject = (num) => ({
2480
- number: num
2481
- });
2482
- var numberToArray = (num) => Array(num).fill(null);
2483
- var arrayToString = (arr) => arr.join(`,`);
2484
- var arrayToNumber = (arr) => arr.length;
2485
- var arrayToBoolean = (arr) => typeof arr[0] === `boolean` ? arr[0] : arr.length > 0;
2486
- var arrayToObject = (arr) => arr.reduce((acc, cur, idx) => {
2487
- acc[`${idx}`] = cur;
2488
- return acc;
2489
- }, {});
2490
- var nullToString = () => ``;
2491
- var nullToNumber = () => 0;
2492
- var nullToBoolean = () => false;
2493
- var nullToArray = () => [];
2494
- var nullToObject = () => ({});
2495
-
2496
- // ../../anvl/src/refinement/smart-cast-json.ts
2497
- var castToJson = (input) => {
2498
- const json = refineJsonType(input);
2499
- return {
2500
- to: {
2501
- array: () => {
2502
- switch (json.type) {
2503
- case `array`:
2504
- return json.data;
2505
- case `object`:
2506
- return objectToArray(json.data);
2507
- case `string`:
2508
- return stringToArray(json.data);
2509
- case `boolean`:
2510
- return booleanToArray(json.data);
2511
- case `number`:
2512
- return numberToArray(json.data);
2513
- case `null`:
2514
- return nullToArray();
2515
- }
2516
- },
2517
- boolean: () => {
2518
- switch (json.type) {
2519
- case `array`:
2520
- return arrayToBoolean(json.data);
2521
- case `object`:
2522
- return objectToBoolean(json.data);
2523
- case `string`:
2524
- return stringToBoolean(json.data);
2525
- case `boolean`:
2526
- return json.data;
2527
- case `number`:
2528
- return numberToBoolean(json.data);
2529
- case `null`:
2530
- return nullToBoolean();
2531
- }
2532
- },
2533
- number: () => {
2534
- switch (json.type) {
2535
- case `array`:
2536
- return arrayToNumber(json.data);
2537
- case `object`:
2538
- return objectToNumber(json.data);
2539
- case `string`:
2540
- return stringToNumber(json.data);
2541
- case `boolean`:
2542
- return booleanToNumber(json.data);
2543
- case `number`:
2544
- return json.data;
2545
- case `null`:
2546
- return nullToNumber();
2547
- }
2548
- },
2549
- object: () => {
2550
- switch (json.type) {
2551
- case `array`:
2552
- return arrayToObject(json.data);
2553
- case `object`:
2554
- return json.data;
2555
- case `string`:
2556
- return stringToObject(json.data);
2557
- case `boolean`:
2558
- return booleanToObject(json.data);
2559
- case `number`:
2560
- return numberToObject(json.data);
2561
- case `null`:
2562
- return nullToObject();
2563
- }
2564
- },
2565
- string: () => {
2566
- switch (json.type) {
2567
- case `array`:
2568
- return arrayToString(json.data);
2569
- case `object`:
2570
- return objectToString(json.data);
2571
- case `string`:
2572
- return json.data;
2573
- case `boolean`:
2574
- return booleanToString(json.data);
2575
- case `number`:
2576
- return numberToString(json.data);
2577
- case `null`:
2578
- return nullToString();
2579
- }
2580
- },
2581
- null: () => null
2582
- }
2583
- };
2584
- };
2585
-
2586
- // ../../hamr/src/react-json-editor/editors-by-type/utilities/object-properties.ts
2587
- var makePropertySetters = (data, set) => mapObject(
2588
- data,
2589
- (value, key) => (newValue) => set(__spreadProps(__spreadValues({}, data), { [key]: become(newValue)(value[key]) }))
2590
- );
2591
- var makePropertyRenamers = (data, set, stableKeyMapRef) => mapObject(
2592
- data,
2593
- (value, key) => (newKey) => Object.hasOwn(data, newKey) ? null : set(() => {
2594
- const entries = Object.entries(data);
2595
- const index = entries.findIndex(([k]) => k === key);
2596
- entries[index] = [newKey, value];
2597
- const stableKeyMap = stableKeyMapRef.current;
2598
- stableKeyMapRef.current = __spreadProps(__spreadValues({}, stableKeyMap), {
2599
- [newKey]: stableKeyMap[key]
2600
- });
2601
- return Object.fromEntries(entries);
2602
- })
2603
- );
2604
- var makePropertyRemovers = (data, set) => mapObject(
2605
- data,
2606
- (_, key) => () => set(() => {
2607
- const _a2 = data, { [key]: _2 } = _a2, rest = __objRest(_a2, [__restKey(key)]);
2608
- return rest;
2609
- })
2610
- );
2611
- var makePropertyRecasters = (data, set) => mapObject(
2612
- data,
2613
- (value, key) => (newType) => set(() => __spreadProps(__spreadValues({}, data), {
2614
- [key]: castToJson(value).to[newType]()
2615
- }))
2616
- );
2617
- var makePropertyCreationInterface = (data, set) => (key, type) => (value) => set(__spreadProps(__spreadValues({}, data), { [key]: value != null ? value : JSON_DEFAULTS[type] }));
2618
- var makePropertySorter = (data, set, sortFn) => () => {
2619
- const sortedKeys = Object.keys(data).sort(sortFn);
2620
- const sortedObj = {};
2621
- sortedKeys.forEach((key) => sortedObj[key] = data[key]);
2622
- set(sortedObj);
2623
- };
2624
-
2625
- // ../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx
2626
- var import_jsx_dev_runtime8 = require("react/jsx-dev-runtime");
2627
- var PropertyAdder = ({
2628
- addProperty,
2629
- disabled,
2630
- propertyKey,
2631
- Components
2632
- }) => /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(Components.MissingPropertyWrapper, { children: [
2633
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(ElasticInput, { disabled: true, defaultValue: propertyKey }, void 0, false, {
2634
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2635
- lineNumber: 38,
2636
- columnNumber: 3
2637
- }, this),
2638
- ` `,
2639
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(ElasticInput, { disabled: true, defaultValue: "is missing" }, void 0, false, {
2640
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2641
- lineNumber: 40,
2642
- columnNumber: 3
2643
- }, this),
2644
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(Components.Button, { onClick: () => addProperty(), disabled, children: "+" }, void 0, false, {
2645
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2646
- lineNumber: 41,
2647
- columnNumber: 3
2648
- }, this)
2649
- ] }, void 0, true, {
2650
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2651
- lineNumber: 37,
2652
- columnNumber: 2
2653
- }, this);
2654
- var ObjectEditor = ({
2655
- schema,
2656
- path = [],
2657
- isReadonly = () => false,
2658
- isHidden = () => false,
2659
- data,
2660
- set,
2661
- Components
2662
- }) => {
2663
- var _a2;
2664
- const disabled = isReadonly(path);
2665
- const stableKeyMap = (0, import_react3.useRef)(
2666
- Object.keys(data).reduce((acc, key) => {
2667
- acc[key] = key;
2668
- return acc;
2669
- }, {})
2670
- );
2671
- const setProperty = makePropertySetters(data, set);
2672
- const renameProperty = makePropertyRenamers(data, set, stableKeyMap);
2673
- const removeProperty = makePropertyRemovers(data, set);
2674
- const recastProperty = makePropertyRecasters(data, set);
2675
- const sortProperties = makePropertySorter(data, set);
2676
- const makePropertyAdder = makePropertyCreationInterface(data, set);
2677
- const subSchema = isPlainObject(schema) ? findSubSchema(schema)(path) : true;
2678
- const schemaKeys = isLiteral(true)(subSchema) ? true : isObjectSchema(subSchema) ? Object.keys((_a2 = subSchema.properties) != null ? _a2 : {}) : [];
2679
- const dataKeys = Object.keys(data);
2680
- const [unofficialKeys, officialKeys] = dataKeys.reduce(
2681
- ([unofficial, official], key) => {
2682
- const isOfficial = schemaKeys === true || schemaKeys.includes(key);
2683
- return isOfficial ? [unofficial, [...official, key]] : [[...unofficial, key], official];
2684
- },
2685
- [[], []]
2686
- );
2687
- const missingKeys = schemaKeys === true ? [] : schemaKeys.filter((key) => !dataKeys.includes(key));
2688
- return /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(import_jsx_dev_runtime8.Fragment, { children: [
2689
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(Components.Button, { onClick: () => sortProperties(), disabled, children: "Sort" }, void 0, false, {
2690
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2691
- lineNumber: 95,
2692
- columnNumber: 4
2693
- }, this),
2694
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(Components.ObjectWrapper, { children: [
2695
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)("div", { className: "json_editor_properties", children: [...missingKeys, ...officialKeys, ...unofficialKeys].map((key) => {
2696
- const originalKey = stableKeyMap.current[key];
2697
- const newPath = [...path, key];
2698
- const originalPath = [...path, originalKey];
2699
- const isOfficial = schemaKeys === true || schemaKeys.includes(key);
2700
- const isMissing = missingKeys.includes(key);
2701
- return isMissing ? /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(
2702
- PropertyAdder,
2703
- {
2704
- propertyKey: key,
2705
- addProperty: makePropertyAdder(key, `string`),
2706
- disabled,
2707
- Components
2708
- },
2709
- key + `IsMissing`,
2710
- false,
2711
- {
2712
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2713
- lineNumber: 108,
2714
- columnNumber: 8
2715
- },
2716
- this
2717
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(
2718
- JsonEditor_INTERNAL,
2719
- {
2720
- schema,
2721
- path: newPath,
2722
- name: key,
2723
- isReadonly,
2724
- isHidden,
2725
- data: data[key],
2726
- set: setProperty[key],
2727
- rename: renameProperty[key],
2728
- remove: removeProperty[key],
2729
- recast: recastProperty[key],
2730
- className: `json_editor_property ${isOfficial ? `json_editor_official` : `json_editor_unofficial`}`,
2731
- Components
2732
- },
2733
- originalPath.join(`.`),
2734
- false,
2735
- {
2736
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2737
- lineNumber: 116,
2738
- columnNumber: 8
2739
- },
2740
- this
2741
- );
2742
- }) }, void 0, false, {
2743
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2744
- lineNumber: 99,
2745
- columnNumber: 5
2746
- }, this),
2747
- /* @__PURE__ */ (0, import_jsx_dev_runtime8.jsxDEV)(
2748
- Components.Button,
2749
- {
2750
- onClick: disabled ? doNothing : () => makePropertyAdder(`new_property`, `string`)(),
2751
- disabled,
2752
- children: "+"
2753
- },
2754
- void 0,
2755
- false,
2756
- {
2757
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2758
- lineNumber: 136,
2759
- columnNumber: 5
2760
- },
2761
- this
2762
- )
2763
- ] }, void 0, true, {
2764
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2765
- lineNumber: 98,
2766
- columnNumber: 4
2767
- }, this)
2768
- ] }, void 0, true, {
2769
- fileName: "../../hamr/src/react-json-editor/editors-by-type/object-editor.tsx",
2770
- lineNumber: 94,
2771
- columnNumber: 3
2772
- }, this);
2773
- };
2774
-
2775
- // ../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx
2776
- var import_jsx_dev_runtime9 = require("react/jsx-dev-runtime");
2777
- var BooleanEditor = ({
2778
- data,
2779
- set,
2780
- Components
2781
- }) => /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(Components.BooleanWrapper, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(
2782
- "input",
2783
- {
2784
- type: "checkbox",
2785
- checked: data,
2786
- onChange: (event) => set(event.target.checked)
2787
- },
2788
- void 0,
2789
- false,
2790
- {
2791
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2792
- lineNumber: 12,
2793
- columnNumber: 3
2794
- },
2795
- this
2796
- ) }, void 0, false, {
2797
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2798
- lineNumber: 11,
2799
- columnNumber: 2
2800
- }, this);
2801
- var NullEditor = ({
2802
- Components
2803
- }) => /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(Components.NullWrapper, { children: '" "' }, void 0, false, {
2804
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2805
- lineNumber: 23,
2806
- columnNumber: 2
2807
- }, this);
2808
- var NumberEditor = ({
2809
- path = [],
2810
- isReadonly = () => false,
2811
- data,
2812
- set,
2813
- Components
2814
- }) => /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(Components.NumberWrapper, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(
2815
- NumberInput,
2816
- {
2817
- value: data,
2818
- set: isReadonly(path) ? void 0 : (newValue) => set(Number(newValue)),
2819
- autoSize: true
2820
- },
2821
- void 0,
2822
- false,
2823
- {
2824
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2825
- lineNumber: 34,
2826
- columnNumber: 3
2827
- },
2828
- this
2829
- ) }, void 0, false, {
2830
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2831
- lineNumber: 33,
2832
- columnNumber: 2
2833
- }, this);
2834
- var StringEditor = ({
2835
- path = [],
2836
- isReadonly = () => false,
2837
- data,
2838
- set,
2839
- Components
2840
- }) => {
2841
- return /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(Components.StringWrapper, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(
2842
- TextInput,
2843
- {
2844
- value: data,
2845
- set: isReadonly(path) ? void 0 : set,
2846
- autoSize: true
2847
- },
2848
- void 0,
2849
- false,
2850
- {
2851
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2852
- lineNumber: 51,
2853
- columnNumber: 4
2854
- },
2855
- this
2856
- ) }, void 0, false, {
2857
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2858
- lineNumber: 50,
2859
- columnNumber: 3
2860
- }, this);
2861
- };
2862
-
2863
- // ../../hamr/src/react-error-boundary/ReactErrorBoundary.tsx
2864
- var import_react4 = require("react");
2865
-
2866
- // ../../hamr/src/react-error-boundary/DefaultFallback.tsx
2867
- var import_jsx_dev_runtime10 = require("react/jsx-dev-runtime");
2868
- var DefaultFallback = ({ error, errorInfo }) => {
2869
- var _a2, _b;
2870
- const component = errorInfo == null ? void 0 : errorInfo.componentStack.split(` `).filter(Boolean)[2];
2871
- const message = (_b = (_a2 = error == null ? void 0 : error.toString()) != null ? _a2 : errorInfo == null ? void 0 : errorInfo.componentStack) != null ? _b : `Unknown error`;
2872
- return /* @__PURE__ */ (0, import_jsx_dev_runtime10.jsxDEV)(
2873
- "div",
2874
- {
2875
- "data-testid": "error-boundary",
2876
- style: {
2877
- flex: `1`,
2878
- background: `black`,
2879
- backgroundImage: `url(./src/assets/kablooey.gif)`,
2880
- backgroundPosition: `center`,
2881
- // backgroundRepeat: `no-repeat`,
2882
- backgroundSize: `overlay`
2883
- },
2884
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime10.jsxDEV)(
2885
- "div",
2886
- {
2887
- style: {
2888
- margin: `50px`,
2889
- marginTop: `0`,
2890
- padding: `50px`,
2891
- border: `1px solid dashed`
2892
- },
2893
- children: /* @__PURE__ */ (0, import_jsx_dev_runtime10.jsxDEV)(
2894
- "span",
2895
- {
2896
- style: {
2897
- background: `black`,
2898
- color: `white`,
2899
- padding: 10,
2900
- paddingTop: 5
2901
- },
2902
- children: [
2903
- `\u26A0\uFE0F `,
2904
- /* @__PURE__ */ (0, import_jsx_dev_runtime10.jsxDEV)("span", { style: { color: `#fc0`, fontWeight: 700 }, children: component }, void 0, false, {
2905
- fileName: "../../hamr/src/react-error-boundary/DefaultFallback.tsx",
2906
- lineNumber: 42,
2907
- columnNumber: 6
2908
- }, this),
2909
- ` \u26A0\uFE0F `,
2910
- message
2911
- ]
2912
- },
2913
- void 0,
2914
- true,
2915
- {
2916
- fileName: "../../hamr/src/react-error-boundary/DefaultFallback.tsx",
2917
- lineNumber: 33,
2918
- columnNumber: 5
2919
- },
2920
- this
2921
- )
2922
- },
2923
- void 0,
2924
- false,
2925
- {
2926
- fileName: "../../hamr/src/react-error-boundary/DefaultFallback.tsx",
2927
- lineNumber: 25,
2928
- columnNumber: 4
2929
- },
2930
- this
2931
- )
2932
- },
2933
- void 0,
2934
- false,
2935
- {
2936
- fileName: "../../hamr/src/react-error-boundary/DefaultFallback.tsx",
2937
- lineNumber: 13,
2938
- columnNumber: 3
2939
- },
2940
- this
2941
- );
2942
- };
2943
-
2944
- // ../../hamr/src/react-error-boundary/ReactErrorBoundary.tsx
2945
- var import_jsx_dev_runtime11 = require("react/jsx-dev-runtime");
2946
- var ErrorBoundary = class extends import_react4.Component {
2947
- constructor(props) {
2948
- super(props);
2949
- this.state = {};
2950
- }
2951
- componentDidCatch(error, errorInfo) {
2952
- var _a2, _b;
2953
- (_b = (_a2 = this.props).onError) == null ? void 0 : _b.call(_a2, error, errorInfo);
2954
- this.setState({
2955
- error,
2956
- errorInfo
2957
- });
2958
- }
2959
- render() {
2960
- const { error, errorInfo } = this.state;
2961
- const { children, Fallback = DefaultFallback } = this.props;
2962
- return errorInfo ? /* @__PURE__ */ (0, import_jsx_dev_runtime11.jsxDEV)(Fallback, { error, errorInfo }, void 0, false, {
2963
- fileName: "../../hamr/src/react-error-boundary/ReactErrorBoundary.tsx",
2964
- lineNumber: 51,
2965
- columnNumber: 4
2966
- }, this) : children;
2967
- }
2968
- };
2969
-
2970
- // ../../hamr/src/react-json-editor/default-components.tsx
2971
- var import_jsx_dev_runtime12 = require("react/jsx-dev-runtime");
2972
- var DEFAULT_JSON_EDITOR_COMPONENTS = {
2973
- ErrorBoundary: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(ErrorBoundary, { children }, void 0, false, {
2974
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2975
- lineNumber: 49,
2976
- columnNumber: 35
2977
- }, this),
2978
- Button: ({ onClick, children, disabled }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(
2979
- "button",
2980
- {
2981
- type: "button",
2982
- className: "json_editor_button",
2983
- onClick,
2984
- disabled,
2985
- children
2986
- },
2987
- void 0,
2988
- false,
2989
- {
2990
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2991
- lineNumber: 51,
2992
- columnNumber: 3
2993
- },
2994
- this
2995
- ),
2996
- EditorWrapper: ({ children, customCss, className }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: `json_editor ` + className, css: customCss, children }, void 0, false, {
2997
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2998
- lineNumber: 61,
2999
- columnNumber: 3
3000
- }, this),
3001
- EditorLayout: ({
3002
- DeleteButton,
3003
- Header,
3004
- KeyInput,
3005
- TypeSelect,
3006
- ValueEditor,
3007
- Wrapper
3008
- }) => {
3009
- return /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(Wrapper, { children: [
3010
- DeleteButton && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(DeleteButton, {}, void 0, false, {
3011
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3012
- lineNumber: 75,
3013
- columnNumber: 22
3014
- }, this),
3015
- Header && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(Header, {}, void 0, false, {
3016
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3017
- lineNumber: 76,
3018
- columnNumber: 16
3019
- }, this),
3020
- KeyInput && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(KeyInput, {}, void 0, false, {
3021
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3022
- lineNumber: 77,
3023
- columnNumber: 18
3024
- }, this),
3025
- TypeSelect && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(TypeSelect, {}, void 0, false, {
3026
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3027
- lineNumber: 78,
3028
- columnNumber: 20
3029
- }, this),
3030
- /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(ValueEditor, {}, void 0, false, {
3031
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3032
- lineNumber: 79,
3033
- columnNumber: 5
3034
- }, this)
3035
- ] }, void 0, true, {
3036
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3037
- lineNumber: 74,
3038
- columnNumber: 4
3039
- }, this);
3040
- },
3041
- ArrayWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_array", children }, void 0, false, {
3042
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3043
- lineNumber: 84,
3044
- columnNumber: 3
3045
- }, this),
3046
- ObjectWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_object", children }, void 0, false, {
3047
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3048
- lineNumber: 87,
3049
- columnNumber: 3
3050
- }, this),
3051
- StringWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_string", children }, void 0, false, {
3052
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3053
- lineNumber: 90,
3054
- columnNumber: 3
3055
- }, this),
3056
- NumberWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_number", children }, void 0, false, {
3057
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3058
- lineNumber: 93,
3059
- columnNumber: 3
3060
- }, this),
3061
- BooleanWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_boolean", children }, void 0, false, {
3062
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3063
- lineNumber: 96,
3064
- columnNumber: 3
3065
- }, this),
3066
- NullWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_null", children }, void 0, false, {
3067
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3068
- lineNumber: 99,
3069
- columnNumber: 3
3070
- }, this),
3071
- MissingPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_property json_editor_missing", children }, void 0, false, {
3072
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3073
- lineNumber: 102,
3074
- columnNumber: 3
3075
- }, this),
3076
- MiscastPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_property json_editor_miscast", children }, void 0, false, {
3077
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3078
- lineNumber: 105,
3079
- columnNumber: 3
3080
- }, this),
3081
- IllegalPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_property json_editor_illegal", children }, void 0, false, {
3082
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3083
- lineNumber: 108,
3084
- columnNumber: 3
3085
- }, this),
3086
- OfficialPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_property json_editor_official", children }, void 0, false, {
3087
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3088
- lineNumber: 111,
3089
- columnNumber: 3
3090
- }, this),
3091
- UnofficialPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_property json_editor_unofficial", children }, void 0, false, {
3092
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3093
- lineNumber: 114,
3094
- columnNumber: 3
3095
- }, this),
3096
- DeleteIcon: () => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_icon json_editor_delete", children: "x" }, void 0, false, {
3097
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3098
- lineNumber: 119,
3099
- columnNumber: 3
3100
- }, this),
3101
- KeyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_key", children }, void 0, false, {
3102
- fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3103
- lineNumber: 122,
3104
- columnNumber: 3
3105
- }, this)
3106
- };
3107
-
3108
- // ../../hamr/src/react-json-editor/developer-interface.tsx
3109
- var import_ajv = __toESM(require("ajv"));
3110
- var import_react5 = require("react");
3111
- var import_jsx_dev_runtime13 = require("react/jsx-dev-runtime");
3112
- var JsonEditor = ({
3113
- data,
3114
- set,
3115
- schema = true,
3116
- name,
3117
- rename,
3118
- remove,
3119
- isReadonly = () => false,
3120
- isHidden = () => false,
3121
- // isIllegal = () => false,
3122
- className,
3123
- customCss,
3124
- Header,
3125
- Components: CustomComponents = {}
3126
- }) => {
3127
- const Components = __spreadValues(__spreadValues({}, DEFAULT_JSON_EDITOR_COMPONENTS), CustomComponents);
3128
- const ajv = new import_ajv.default({ allErrors: true, verbose: true });
3129
- const validate = (0, import_react5.useMemo)(() => {
3130
- return ajv.compile(schema);
3131
- }, [schema]);
3132
- const validationResults = validate(data);
3133
- return /* @__PURE__ */ (0, import_jsx_dev_runtime13.jsxDEV)(
3134
- JsonEditor_INTERNAL,
3135
- {
3136
- data,
3137
- set,
3138
- name,
3139
- schema,
3140
- rename,
3141
- remove,
3142
- path: [],
3143
- isReadonly,
3144
- isHidden,
3145
- className,
3146
- customCss,
3147
- Header,
3148
- Components
3149
- },
3150
- void 0,
3151
- false,
3152
- {
3153
- fileName: "../../hamr/src/react-json-editor/developer-interface.tsx",
3154
- lineNumber: 77,
3155
- columnNumber: 3
3156
- },
3157
- this
3158
- );
3159
- };
3160
-
3161
- // ../../hamr/src/react-json-editor/index.ts
3162
- var SubEditors = {
3163
- array: ArrayEditor,
3164
- boolean: BooleanEditor,
3165
- null: NullEditor,
3166
- number: NumberEditor,
3167
- object: ObjectEditor,
3168
- string: StringEditor
3169
- };
3170
-
3171
- // ../../hamr/src/react-data-designer/RelationEditor.module.scss
3172
- var RelationEditor_module_default = {};
3173
-
3174
- // ../../hamr/src/react-id/Id.tsx
3175
- var import_react6 = require("@floating-ui/react");
3176
- var import_function22 = require("fp-ts/function");
3177
- var React = __toESM(require("react"));
3178
-
3179
- // ../../anvl/src/string/string-to-color.ts
3180
- function stringToColor(input) {
3181
- let hash = 0;
3182
- for (let i = 0; i < input.length; i++) {
3183
- const char = input.charCodeAt(i);
3184
- hash = (hash << 5) - hash + char;
3185
- hash |= 0;
3186
- }
3187
- let hexColor = (hash & 16777215).toString(16);
3188
- while (hexColor.length < 6) {
3189
- hexColor = `0` + hexColor;
3190
- }
3191
- return `#${hexColor}`;
3192
- }
3193
-
3194
- // ../../luum/src/constants/index.ts
3195
- var CHANNEL_SPECIFIC_LUM = {
3196
- R: 0.3,
3197
- G: 0.5,
3198
- B: 0.2
3199
- };
3200
-
3201
- // ../../luum/src/constants/filters.ts
3202
- var unfiltered = [
3203
- { sat: 255, hue: 0 },
3204
- { sat: 255, hue: 360 }
3205
- ];
3206
-
3207
- // ../../luum/src/export/channelsToHex.ts
3208
- var channelsToHex = (channels) => `#${Object.values(channels).map((channel) => {
3209
- let channelHex = channel.toString(16);
3210
- if (channelHex.length === 1)
3211
- channelHex = 0 + channelHex;
3212
- return channelHex;
3213
- }).join(``)}`;
3214
- var channelsToHex_default = channelsToHex;
3215
-
3216
- // ../../luum/src/import/hueToRelativeChannels.ts
3217
- var hueToRelativeChannels_default = (hue) => {
3218
- const hueWrapped = wrapInto(0, 360)(hue);
3219
- const hueReduced = hueWrapped / 60;
3220
- const hueInteger = Math.floor(hueReduced);
3221
- const hueDecimal = hueReduced - hueInteger;
3222
- const x = hueDecimal;
3223
- const y = 1 - hueDecimal;
3224
- switch (hueInteger) {
3225
- case 0:
3226
- return [1, x, 0];
3227
- case 1:
3228
- return [y, 1, 0];
3229
- case 2:
3230
- return [0, 1, x];
3231
- case 3:
3232
- return [0, y, 1];
3233
- case 4:
3234
- return [x, 0, 1];
3235
- case 5:
3236
- return [1, 0, y];
3237
- default:
3238
- throw new Error(`invalid hue served: ${hue}`);
3239
- }
3240
- };
3241
-
3242
- // ../../luum/src/solveFor/hueFromChannels.ts
3243
- var hueFromChannels = ({ R, G, B }) => {
3244
- let hue = 0;
3245
- if (R > G && G >= B)
3246
- hue = 60 * (0 + (G - B) / (R - B));
3247
- if (G >= R && R > B)
3248
- hue = 60 * (2 - (R - B) / (G - B));
3249
- if (G > B && B >= R)
3250
- hue = 60 * (2 + (B - R) / (G - R));
3251
- if (B >= G && G > R)
3252
- hue = 60 * (4 - (G - R) / (B - R));
3253
- if (B > R && R >= G)
3254
- hue = 60 * (4 + (R - G) / (B - G));
3255
- if (R >= B && B > G)
3256
- hue = 60 * (6 - (B - G) / (R - G));
3257
- return hue;
3258
- };
3259
- var hueFromChannels_default = hueFromChannels;
3260
-
3261
- // ../../luum/src/solveFor/lumFromChannels.ts
3262
- var lumFromChannels = ({ R, G, B }) => {
3263
- const lum = CHANNEL_SPECIFIC_LUM.R * R / 255 + CHANNEL_SPECIFIC_LUM.G * G / 255 + CHANNEL_SPECIFIC_LUM.B * B / 255;
3264
- return lum;
3265
- };
3266
- var lumFromChannels_default = lumFromChannels;
3267
-
3268
- // ../../luum/src/solveFor/maxSatForHueInFilter.ts
3269
- var maxSatForHueInFilter_default = (hue, filter) => {
3270
- let maxSat = 255;
3271
- const hueWrapped = wrapInto(0, 360)(hue);
3272
- for (let a2 = -1, b2 = 0; b2 < filter.length; a2++, b2++) {
3273
- a2 = wrapInto(0, filter.length)(a2);
3274
- const hueDoubleWrapped = a2 > b2 ? wrapInto(-180, 180)(hueWrapped) : void 0;
3275
- const tuningPointA = filter[a2];
3276
- const tuningPointB = filter[b2];
3277
- const hueA = a2 > b2 ? wrapInto(-180, 180)(tuningPointA.hue) : tuningPointA.hue;
3278
- const hueB = tuningPointB.hue;
3279
- if ((hueDoubleWrapped || hueWrapped) >= hueA && (hueDoubleWrapped || hueWrapped) < hueB) {
3280
- let $ = hueDoubleWrapped || hueWrapped;
3281
- $ -= hueA;
3282
- $ /= hueB - hueA;
3283
- $ *= tuningPointB.sat - tuningPointA.sat;
3284
- $ += tuningPointA.sat;
3285
- Math.round($);
3286
- maxSat = $;
3287
- }
3288
- }
3289
- return maxSat;
3290
- };
3291
-
3292
- // ../../luum/src/solveFor/satFromChannels.ts
3293
- var satFromChannels = ({ R, G, B }) => {
3294
- const sat = Math.max(R, G, B) - Math.min(R, G, B);
3295
- return sat;
3296
- };
3297
- var satFromChannels_default = satFromChannels;
3298
-
3299
- // ../../luum/src/solveFor/specificLumFromHue.ts
3300
- var specificLumFromHue_default = (hue) => {
3301
- const [factorR, factorG, factorB] = hueToRelativeChannels_default(hue);
3302
- const lumR = CHANNEL_SPECIFIC_LUM.R * factorR;
3303
- const lumG = CHANNEL_SPECIFIC_LUM.G * factorG;
3304
- const lumB = CHANNEL_SPECIFIC_LUM.B * factorB;
3305
- const specificLum = lumR + lumG + lumB;
3306
- return specificLum;
3307
- };
3308
-
3309
- // ../../luum/src/export/specToChannelsFixLimit.ts
3310
- var minChannelsForSaturationFromHue = (hue) => {
3311
- const relativeChannels = hueToRelativeChannels_default(hue);
3312
- const channelSpreader = (trueSaturation) => {
3313
- const makeMinChannel = (idx) => Math.round(relativeChannels[idx] * trueSaturation);
3314
- return {
3315
- R: makeMinChannel(0),
3316
- G: makeMinChannel(1),
3317
- B: makeMinChannel(2)
3318
- };
3319
- };
3320
- return channelSpreader;
3321
- };
3322
- var channelsFromIlluminationObj = ({
3323
- minChannels,
3324
- trueLuminosity,
3325
- minLum
3326
- }) => {
3327
- const { max, round: round2 } = Math;
3328
- const maxWhite = 255 - max(...Object.values(minChannels));
3329
- const white = clampInto(0, maxWhite)(round2((trueLuminosity - minLum) * 255));
3330
- const channels = {
3331
- R: minChannels.R + white,
3332
- G: minChannels.G + white,
3333
- B: minChannels.B + white
3334
- };
3335
- return channels;
3336
- };
3337
- var specToChannelsFixLimit = ({ hue, sat, lum, prefer = `lum` }, filter = unfiltered) => {
3338
- const minChannelsForSaturation = minChannelsForSaturationFromHue(hue);
3339
- let trueSaturation;
3340
- let trueLuminosity;
3341
- let minChannels;
3342
- let maxChannels;
3343
- let specificLum;
3344
- let minLum = 0;
3345
- let maxLum = 1;
3346
- let maxSat = maxSatForHueInFilter_default(hue, filter);
3347
- switch (prefer) {
3348
- case `sat`:
3349
- trueSaturation = clampInto(0, 255)(Math.min(sat, maxSat));
3350
- minChannels = minChannelsForSaturation(trueSaturation);
3351
- maxChannels = {
3352
- R: minChannels.R + 255 - trueSaturation,
3353
- G: minChannels.G + 255 - trueSaturation,
3354
- B: minChannels.B + 255 - trueSaturation
3355
- };
3356
- minLum = lumFromChannels_default(minChannels);
3357
- maxLum = lumFromChannels_default(maxChannels);
3358
- trueLuminosity = clampInto(minLum, maxLum)(lum);
3359
- break;
3360
- case `lum`:
3361
- trueLuminosity = clampInto(0, 1)(lum);
3362
- specificLum = specificLumFromHue_default(hue);
3363
- maxSat = Math.min(
3364
- maxSat,
3365
- Math.round(
3366
- trueLuminosity <= specificLum ? 255 * (trueLuminosity / specificLum) : 255 * (1 - trueLuminosity) / (1 - specificLum)
3367
- )
3368
- );
3369
- trueSaturation = Math.min(sat, maxSat);
3370
- minChannels = minChannelsForSaturation(trueSaturation);
3371
- minLum = lumFromChannels_default(minChannels);
3372
- break;
3373
- }
3374
- const channels = channelsFromIlluminationObj({
3375
- minChannels,
3376
- trueLuminosity,
3377
- minLum
3378
- });
3379
- return {
3380
- channels,
3381
- fix: {
3382
- sat: trueSaturation,
3383
- lum: trueLuminosity
3384
- },
3385
- limit: {
3386
- sat: [0, maxSat],
3387
- lum: [prefer === `lum` ? 0 : minLum, maxLum]
3388
- }
3389
- };
3390
- };
3391
- var specToChannelsFixLimit_default = specToChannelsFixLimit;
3392
-
3393
- // ../../luum/src/export/specToHexFixLimit.ts
3394
- var specToHexFixLimit = ({ hue, sat, lum, prefer }, filter) => {
3395
- const { channels, fix, limit } = specToChannelsFixLimit_default(
3396
- {
3397
- hue,
3398
- sat,
3399
- lum,
3400
- prefer
3401
- },
3402
- filter
3403
- );
3404
- const { R, G, B } = channels;
3405
- const hex = channelsToHex_default({ R, G, B });
3406
- return { hex, fix, limit };
3407
- };
3408
- var specToHexFixLimit_default = specToHexFixLimit;
3409
-
3410
- // ../../luum/src/export/specToHex.ts
3411
- var specToHex = ({ hue, sat, lum, prefer }, filter) => {
3412
- const { hex } = specToHexFixLimit_default({ hue, sat, lum, prefer }, filter);
3413
- return hex;
3414
- };
3415
- var specToHex_default = specToHex;
3416
-
3417
- // ../../luum/src/import/channelsToSpec.ts
3418
- var channelsToSpec = ({ R, G, B }) => {
3419
- const hue = hueFromChannels_default({ R, G, B });
3420
- const sat = satFromChannels_default({ R, G, B });
3421
- const lum = lumFromChannels_default({ R, G, B });
3422
- return { hue, sat, lum };
3423
- };
3424
- var channelsToSpec_default = channelsToSpec;
3425
-
3426
- // ../../luum/src/import/normalizeHex.ts
3427
- var BASE_16_CHAR_SET = `[a-fA-F0-9]+`;
3428
- var miniHexToHex = (miniHex) => {
3429
- const miniHexArray = miniHex.split(``);
3430
- const hexTemplate = [0, 0, 1, 1, 2, 2];
3431
- return hexTemplate.map((idx) => miniHexArray[idx]).join(``);
3432
- };
3433
- var normalizeHex = (maybeHex) => {
3434
- const hex = maybeHex.replace(/^#/, ``);
3435
- const hexIsCorrectLength = hex.length === 6 || hex.length === 3;
3436
- const hexIsCorrectCharSet = hex.match(new RegExp(`^${BASE_16_CHAR_SET}$`)) !== null;
3437
- const hexIsValid = hexIsCorrectLength && hexIsCorrectCharSet;
3438
- if (!hexIsValid) {
3439
- throw new Error(`${maybeHex} is not a valid hex code`);
3440
- }
3441
- if (hex.length === 3) {
3442
- return miniHexToHex(hex);
3443
- }
3444
- return hex;
3445
- };
3446
- var normalizeHex_default = normalizeHex;
3447
-
3448
- // ../../luum/src/import/hexToChannels.ts
3449
- var hexToChannels_default = (maybeHex) => {
3450
- const hex = normalizeHex_default(maybeHex);
3451
- return {
3452
- R: parseInt(hex.slice(0, 2), 16),
3453
- G: parseInt(hex.slice(2, 4), 16),
3454
- B: parseInt(hex.slice(4, 6), 16)
3455
- };
3456
- };
3457
-
3458
- // ../../luum/src/import/hexToSpec.ts
3459
- var hexToSpec = (hex) => {
3460
- const { R, G, B } = hexToChannels_default(hex);
3461
- const { hue, sat, lum } = channelsToSpec_default({ R, G, B });
3462
- return { hue, sat, lum };
3463
- };
3464
- var hexToSpec_default = hexToSpec;
3465
-
3466
- // ../../luum/src/mixers/lum.ts
3467
- var import_function16 = require("fp-ts/function");
3468
- var resetColor = (color) => (0, import_function16.pipe)(color, specToHex_default, hexToSpec_default, (hsl) => __spreadProps(__spreadValues({}, hsl), {
3469
- prefer: color.prefer
3470
- }));
3471
- var setLum = (newLum) => (currentColor) => {
3472
- const newColor = __spreadProps(__spreadValues({}, currentColor), {
3473
- lum: (0, import_function16.pipe)(currentColor.lum, become(newLum), clampInto(0, 1))
3474
- });
3475
- return newColor;
3476
- };
3477
- var shadeBy = (shadeAmount) => (color) => setLum((lum) => (lum * 100 - shadeAmount) / 100)(resetColor(color));
3478
-
3479
- // ../../luum/src/mixers/sat.ts
3480
- var import_function18 = require("fp-ts/function");
3481
-
3482
- // ../../luum/src/mixers/hue.ts
3483
- var import_function19 = require("fp-ts/function");
3484
-
3485
- // ../../luum/src/mixers/contrast.ts
3486
- var contrastMax = (color) => __spreadProps(__spreadValues({}, color), {
3487
- lum: color.lum > 0.666 ? 0 : 1
3488
- });
3489
- var offset = (offsetAmount) => (color) => __spreadProps(__spreadValues({}, color), {
3490
- lum: color.lum > 0.666 ? color.lum - offsetAmount : color.lum + offsetAmount
3491
- });
3492
-
3493
- // ../../luum/src/scheme/index.ts
3494
- var import_function20 = require("fp-ts/function");
3495
- var import_string7 = require("fp-ts/string");
3496
-
3497
- // ../../luum/src/constants/luum-spec.ts
3498
- var defaultSpec = {
3499
- hue: 0,
3500
- lum: 0,
3501
- sat: 0,
3502
- prefer: `lum`
3503
- };
3504
-
3505
- // ../../luum/src/scheme/index.ts
3506
- 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);
3507
- var isLuumSpecModifier = isModifier(isLuumSpec)(defaultSpec);
3508
- var RED = {
3509
- hue: 0,
3510
- sat: 255,
3511
- lum: 0.5,
3512
- prefer: `sat`
3513
- };
3514
- var WAYFORGE_CORE_COLOR_NAMES = [
3515
- `Red`,
3516
- `Orange`,
3517
- `Yellow`,
3518
- `Lime`,
3519
- `Green`,
3520
- `Teal`,
3521
- `Cyan`,
3522
- `Blue`,
3523
- `Indigo`,
3524
- `Violet`,
3525
- `Magenta`,
3526
- `Pink`
3527
- ];
3528
- var WAYFORGE_CORE_COLORS = WAYFORGE_CORE_COLOR_NAMES.reduce((acc, name, idx) => {
3529
- acc[name] = {
3530
- hue: idx * 30,
3531
- sat: 255,
3532
- lum: 0.5,
3533
- prefer: `sat`
3534
- };
3535
- return acc;
3536
- }, {});
3537
- var PAINT_MY_WAGON_RED = {
3538
- rootSelectors: [`.wagon`],
3539
- root: RED,
3540
- attributes: [`background-color`, shadeBy(5)],
3541
- states: [
3542
- [
3543
- [`:hover`, `:focus`],
3544
- [`background-color`, shadeBy(10)]
3545
- ],
3546
- [`:active`, [`background-color`, shadeBy(15)]]
3547
- ]
3548
- };
3549
-
3550
- // ../../hamr/src/react-id/Id.tsx
3551
- var import_jsx_dev_runtime14 = require("react/jsx-dev-runtime");
3552
- var Id = ({ id }) => {
3553
- const [isOpen, setIsOpen] = React.useState(false);
3554
- const { refs, floatingStyles, context } = (0, import_react6.useFloating)({
3555
- open: isOpen,
3556
- onOpenChange: setIsOpen,
3557
- placement: `bottom-start`
3558
- });
3559
- const click = (0, import_react6.useClick)(context);
3560
- const { getReferenceProps, getFloatingProps } = (0, import_react6.useInteractions)([click]);
3561
- const bgColor = stringToColor(id);
3562
- const contrastColor = (0, import_function22.pipe)(bgColor, hexToSpec_default, contrastMax, specToHex_default);
3563
- const offsetColor = (0, import_function22.pipe)(bgColor, hexToSpec_default, offset(0.25), specToHex_default);
3564
- const contrastOffsetColor = (0, import_function22.pipe)(
3565
- offsetColor,
3566
- hexToSpec_default,
3567
- contrastMax,
3568
- specToHex_default
3569
- );
3570
- return /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(import_jsx_dev_runtime14.Fragment, { children: [
3571
- /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(
3572
- "span",
3573
- __spreadProps(__spreadValues({
3574
- role: "content",
3575
- ref: refs.setReference
3576
- }, getReferenceProps()), {
3577
- style: {
3578
- background: bgColor,
3579
- cursor: `pointer`,
3580
- padding: `0px 4px`,
3581
- color: contrastColor,
3582
- userSelect: `none`,
3583
- whiteSpace: `nowrap`
3584
- },
3585
- children: id.substring(0, 3)
3586
- }),
3587
- void 0,
3588
- false,
3589
- {
3590
- fileName: "../../hamr/src/react-id/Id.tsx",
3591
- lineNumber: 36,
3592
- columnNumber: 4
3593
- },
3594
- this
3595
- ),
3596
- isOpen && /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(import_react6.FloatingPortal, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(
3597
- "span",
3598
- __spreadProps(__spreadValues({
3599
- role: "popup",
3600
- ref: refs.setFloating
3601
- }, getFloatingProps()), {
3602
- style: __spreadProps(__spreadValues({}, floatingStyles), {
3603
- color: contrastOffsetColor,
3604
- background: offsetColor,
3605
- padding: `0px 4px`,
3606
- boxShadow: `0px 2px 10px rgba(0, 0, 0, 0.1)`
3607
- }),
3608
- children: id
3609
- }),
3610
- void 0,
3611
- false,
3612
- {
3613
- fileName: "../../hamr/src/react-id/Id.tsx",
3614
- lineNumber: 53,
3615
- columnNumber: 6
3616
- },
3617
- this
3618
- ) }, void 0, false, {
3619
- fileName: "../../hamr/src/react-id/Id.tsx",
3620
- lineNumber: 52,
3621
- columnNumber: 5
3622
- }, this)
3623
- ] }, void 0, true, {
3624
- fileName: "../../hamr/src/react-id/Id.tsx",
3625
- lineNumber: 35,
3626
- columnNumber: 3
3627
- }, this);
3628
- };
3629
-
3630
- // ../../hamr/src/react-data-designer/RelationEditor.tsx
3631
- var import_jsx_dev_runtime15 = require("react/jsx-dev-runtime");
3632
- var RelationEditor = (props) => {
3633
- const seen = /* @__PURE__ */ new Set();
3634
- const data = Object.entries(props.data.relations).sort(([_, a2], [__, b2]) => b2.length - a2.length).filter(([head, tail]) => {
3635
- if (seen.has(head))
3636
- return false;
3637
- seen.add(head);
3638
- for (const tailElement of tail) {
3639
- seen.add(tailElement);
3640
- }
3641
- return true;
3642
- });
3643
- return /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("article", { className: RelationEditor_module_default.class, children: data.map(([head, tail]) => /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("section", { children: [
3644
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("span", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(Id, { id: head }, void 0, false, {
3645
- fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3646
- lineNumber: 26,
3647
- columnNumber: 7
3648
- }, this) }, void 0, false, {
3649
- fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3650
- lineNumber: 25,
3651
- columnNumber: 6
3652
- }, this),
3653
- ":",
3654
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("span", { children: tail.map((child) => /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(Id, { id: child }, void 0, false, {
3655
- fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3656
- lineNumber: 31,
3657
- columnNumber: 8
3658
- }, this)) }, void 0, false, {
3659
- fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3660
- lineNumber: 29,
3661
- columnNumber: 6
3662
- }, this)
3663
- ] }, void 0, true, {
3664
- fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3665
- lineNumber: 24,
3666
- columnNumber: 5
3667
- }, this)) }, void 0, false, {
3668
- fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3669
- lineNumber: 21,
3670
- columnNumber: 3
3671
- }, this);
3672
- };
3673
-
3674
- // ../src/react-devtools/StateEditor.tsx
3675
- var import_jsx_dev_runtime16 = require("react/jsx-dev-runtime");
3676
- var StateEditor = ({ token }) => {
3677
- const [data, set] = (0, import_react7.useIO)(token);
3678
- return isJson(data) ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(JsonEditor, { data, set, schema: true }, void 0, false, {
3679
- fileName: "../src/react-devtools/StateEditor.tsx",
3680
- lineNumber: 17,
3681
- columnNumber: 3
3682
- }, this) : data instanceof Join ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(RelationEditor, { data, set }, void 0, false, {
3683
- fileName: "../src/react-devtools/StateEditor.tsx",
3684
- lineNumber: 19,
3685
- columnNumber: 3
3686
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("div", { className: "json_editor", children: /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
3687
- ElasticInput,
3688
- {
3689
- value: data instanceof Set ? `Set { ${JSON.stringify([...data]).slice(1, -1)} }` : data instanceof Map ? `Map ` + JSON.stringify([...data]) : Object.getPrototypeOf(data).constructor.name + ` ` + fallback(() => JSON.stringify(data), `?`),
3690
- disabled: true
3691
- },
3692
- void 0,
3693
- false,
3694
- {
3695
- fileName: "../src/react-devtools/StateEditor.tsx",
3696
- lineNumber: 22,
3697
- columnNumber: 4
3698
- },
3699
- this
3700
- ) }, void 0, false, {
3701
- fileName: "../src/react-devtools/StateEditor.tsx",
3702
- lineNumber: 21,
3703
- columnNumber: 3
3704
- }, this);
3705
- };
3706
- var ReadonlySelectorViewer = ({ token }) => {
3707
- const data = (0, import_react7.useO)(token);
3708
- return isJson(data) ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
3709
- JsonEditor,
3710
- {
3711
- data,
3712
- set: () => null,
3713
- schema: true,
3714
- isReadonly: () => true
3715
- },
3716
- void 0,
3717
- false,
3718
- {
3719
- fileName: "../src/react-devtools/StateEditor.tsx",
3720
- lineNumber: 43,
3721
- columnNumber: 3
3722
- },
3723
- this
3724
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("div", { className: "json_editor", children: /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
3725
- ElasticInput,
3726
- {
3727
- value: data instanceof Set ? `Set ` + JSON.stringify([...data]) : data instanceof Map ? `Map ` + JSON.stringify([...data]) : Object.getPrototypeOf(data).constructor.name + ` ` + JSON.stringify(data),
3728
- disabled: true
3729
- },
3730
- void 0,
3731
- false,
3732
- {
3733
- fileName: "../src/react-devtools/StateEditor.tsx",
3734
- lineNumber: 51,
3735
- columnNumber: 4
3736
- },
3737
- this
3738
- ) }, void 0, false, {
3739
- fileName: "../src/react-devtools/StateEditor.tsx",
3740
- lineNumber: 50,
3741
- columnNumber: 3
3742
- }, this);
3743
- };
3744
- var StoreEditor = ({ token }) => {
3745
- if (token.type === `readonly_selector`) {
3746
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(ReadonlySelectorViewer, { token }, void 0, false, {
3747
- fileName: "../src/react-devtools/StateEditor.tsx",
3748
- lineNumber: 71,
3749
- columnNumber: 10
3750
- }, this);
3751
- }
3752
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(StateEditor, { token }, void 0, false, {
3753
- fileName: "../src/react-devtools/StateEditor.tsx",
3754
- lineNumber: 73,
3755
- columnNumber: 9
3756
- }, this);
3757
- };
3758
-
3759
- // ../src/react-devtools/StateIndex.tsx
3760
- var import_jsx_dev_runtime17 = require("react/jsx-dev-runtime");
3761
- var findStateTypeState = (0, import_atom8.selectorFamily)({
3762
- key: `\u{1F441}\u200D\u{1F5E8} State Type`,
3763
- get: (token) => ({ get }) => {
3764
- let state;
3765
- try {
3766
- state = get(token);
3767
- } catch (error) {
3768
- return `error`;
3769
- }
3770
- if (state === void 0)
3771
- return `undefined`;
3772
- if (isJson(state))
3773
- return refineJsonType(state).type;
3774
- return Object.getPrototypeOf(state).constructor.name;
3775
- }
3776
- });
3777
- var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3778
- var _a2, _b;
3779
- const [isOpen, setIsOpen] = (0, import_react8.useIO)(isOpenState);
3780
- const state = (0, import_react8.useO)(node);
3781
- const stateType = (0, import_react8.useO)(typeState);
3782
- const isPrimitive = Boolean(primitiveRefinery.refine(state));
3783
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(import_jsx_dev_runtime17.Fragment, { children: [
3784
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("header", { children: [
3785
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3786
- button.OpenClose,
3787
- {
3788
- isOpen: isOpen && !isPrimitive,
3789
- setIsOpen,
3790
- disabled: isPrimitive
3791
- },
3792
- void 0,
3793
- false,
3794
- {
3795
- fileName: "../src/react-devtools/StateIndex.tsx",
3796
- lineNumber: 48,
3797
- columnNumber: 5
3798
- },
3799
- this
3800
- ),
3801
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3802
- "label",
3803
- {
3804
- onClick: () => console.log(node, (0, import_atom8.getState)(node)),
3805
- onKeyUp: () => console.log(node, (0, import_atom8.getState)(node)),
3806
- children: [
3807
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("h2", { children: (_b = (_a2 = node.family) == null ? void 0 : _a2.subKey) != null ? _b : node.key }, void 0, false, {
3808
- fileName: "../src/react-devtools/StateIndex.tsx",
3809
- lineNumber: 57,
3810
- columnNumber: 6
3811
- }, this),
3812
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "type detail", children: [
3813
- "(",
3814
- stateType,
3815
- ")"
3816
- ] }, void 0, true, {
3817
- fileName: "../src/react-devtools/StateIndex.tsx",
3818
- lineNumber: 58,
3819
- columnNumber: 6
3820
- }, this)
3821
- ]
3822
- },
3823
- void 0,
3824
- true,
3825
- {
3826
- fileName: "../src/react-devtools/StateIndex.tsx",
3827
- lineNumber: 53,
3828
- columnNumber: 5
3829
- },
3830
- this
3831
- ),
3832
- isPrimitive ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(StoreEditor, { token: node }, void 0, false, {
3833
- fileName: "../src/react-devtools/StateIndex.tsx",
3834
- lineNumber: 60,
3835
- columnNumber: 20
3836
- }, this) : null
3837
- ] }, void 0, true, {
3838
- fileName: "../src/react-devtools/StateIndex.tsx",
3839
- lineNumber: 47,
3840
- columnNumber: 4
3841
- }, this),
3842
- isOpen && !isPrimitive ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("main", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(StoreEditor, { token: node }, void 0, false, {
3843
- fileName: "../src/react-devtools/StateIndex.tsx",
3844
- lineNumber: 64,
3845
- columnNumber: 6
3846
- }, this) }, void 0, false, {
3847
- fileName: "../src/react-devtools/StateIndex.tsx",
3848
- lineNumber: 63,
3849
- columnNumber: 5
3850
- }, this) : null
3851
- ] }, void 0, true, {
3852
- fileName: "../src/react-devtools/StateIndex.tsx",
3853
- lineNumber: 46,
3854
- columnNumber: 3
3855
- }, this);
3856
- };
3857
- var StateIndexTreeNode = ({ node, isOpenState }) => {
3858
- const [isOpen, setIsOpen] = (0, import_react8.useIO)(isOpenState);
3859
- Object.entries(node.familyMembers).forEach(([key, childNode]) => {
3860
- findViewIsOpenState(key);
3861
- findStateTypeState(childNode);
3862
- });
3863
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(import_jsx_dev_runtime17.Fragment, { children: [
3864
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("header", { children: [
3865
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
3866
- fileName: "../src/react-devtools/StateIndex.tsx",
3867
- lineNumber: 84,
3868
- columnNumber: 5
3869
- }, this),
3870
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("label", { children: [
3871
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("h2", { children: node.key }, void 0, false, {
3872
- fileName: "../src/react-devtools/StateIndex.tsx",
3873
- lineNumber: 86,
3874
- columnNumber: 6
3875
- }, this),
3876
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "type detail", children: " (family)" }, void 0, false, {
3877
- fileName: "../src/react-devtools/StateIndex.tsx",
3878
- lineNumber: 87,
3879
- columnNumber: 6
3880
- }, this)
3881
- ] }, void 0, true, {
3882
- fileName: "../src/react-devtools/StateIndex.tsx",
3883
- lineNumber: 85,
3884
- columnNumber: 5
3885
- }, this)
3886
- ] }, void 0, true, {
3887
- fileName: "../src/react-devtools/StateIndex.tsx",
3888
- lineNumber: 83,
3889
- columnNumber: 4
3890
- }, this),
3891
- isOpen ? Object.entries(node.familyMembers).map(([key, childNode]) => /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3892
- StateIndexNode,
3893
- {
3894
- node: childNode,
3895
- isOpenState: findViewIsOpenState(childNode.key),
3896
- typeState: findStateTypeState(childNode)
3897
- },
3898
- key,
3899
- false,
3900
- {
3901
- fileName: "../src/react-devtools/StateIndex.tsx",
3902
- lineNumber: 92,
3903
- columnNumber: 7
3904
- },
3905
- this
3906
- )) : null
3907
- ] }, void 0, true, {
3908
- fileName: "../src/react-devtools/StateIndex.tsx",
3909
- lineNumber: 82,
3910
- columnNumber: 3
3911
- }, this);
3912
- };
3913
- var StateIndexNode = ({ node, isOpenState, typeState }) => {
3914
- if (node.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)) {
3915
- return null;
3916
- }
3917
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("section", { className: "node state", children: `type` in node ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3918
- StateIndexLeafNode,
3919
- {
3920
- node,
3921
- isOpenState,
3922
- typeState
3923
- },
3924
- void 0,
3925
- false,
3926
- {
3927
- fileName: "../src/react-devtools/StateIndex.tsx",
3928
- lineNumber: 117,
3929
- columnNumber: 5
3930
- },
3931
- this
3932
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(StateIndexTreeNode, { node, isOpenState }, void 0, false, {
3933
- fileName: "../src/react-devtools/StateIndex.tsx",
3934
- lineNumber: 123,
3935
- columnNumber: 5
3936
- }, this) }, void 0, false, {
3937
- fileName: "../src/react-devtools/StateIndex.tsx",
3938
- lineNumber: 115,
3939
- columnNumber: 3
3940
- }, this);
3941
- };
3942
- var StateIndex = ({ tokenIndex }) => {
3943
- const tokenIds = (0, import_react8.useO)(tokenIndex);
3944
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("article", { className: "index state_index", children: Object.entries(tokenIds).filter(([key]) => !key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).sort().map(([key, node]) => {
3945
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3946
- StateIndexNode,
3947
- {
3948
- node,
3949
- isOpenState: findViewIsOpenState(node.key),
3950
- typeState: findStateTypeState(node)
3951
- },
3952
- key,
3953
- false,
3954
- {
3955
- fileName: "../src/react-devtools/StateIndex.tsx",
3956
- lineNumber: 146,
3957
- columnNumber: 7
3958
- },
3959
- this
3960
- );
3961
- }) }, void 0, false, {
3962
- fileName: "../src/react-devtools/StateIndex.tsx",
3963
- lineNumber: 140,
3964
- columnNumber: 3
3965
- }, this);
3966
- };
3967
-
3968
- // ../src/react-devtools/TimelineIndex.tsx
3969
- var import_atom9 = require("atom.io");
3970
- var import_react9 = require("atom.io/react");
3971
- var import_react10 = require("react");
3972
-
3973
- // ../src/react-devtools/Updates.tsx
3974
- var import_jsx_dev_runtime18 = require("react/jsx-dev-runtime");
3975
- var AtomUpdateFC = ({ atomUpdate }) => {
3976
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
3977
- "article",
3978
- {
3979
- className: "node atom_update",
3980
- onClick: () => console.log(atomUpdate),
3981
- onKeyUp: () => console.log(atomUpdate),
3982
- children: [
3983
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: [
3984
- atomUpdate.key,
3985
- ": "
3986
- ] }, void 0, true, {
3987
- fileName: "../src/react-devtools/Updates.tsx",
3988
- lineNumber: 20,
3989
- columnNumber: 4
3990
- }, this),
3991
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "summary", children: prettyJson.diff(atomUpdate.oldValue, atomUpdate.newValue).summary }, void 0, false, {
3992
- fileName: "../src/react-devtools/Updates.tsx",
3993
- lineNumber: 22,
3994
- columnNumber: 5
3995
- }, this) }, void 0, false, {
3996
- fileName: "../src/react-devtools/Updates.tsx",
3997
- lineNumber: 21,
3998
- columnNumber: 4
3999
- }, this)
4000
- ]
4001
- },
4002
- atomUpdate.key,
4003
- true,
4004
- {
4005
- fileName: "../src/react-devtools/Updates.tsx",
4006
- lineNumber: 14,
4007
- columnNumber: 3
4008
- },
4009
- this
4010
- );
4011
- };
4012
- var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
4013
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("article", { className: "node transaction_update", children: [
4014
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("header", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("h4", { children: serialNumber }, void 0, false, {
4015
- fileName: "../src/react-devtools/Updates.tsx",
4016
- lineNumber: 37,
4017
- columnNumber: 5
4018
- }, this) }, void 0, false, {
4019
- fileName: "../src/react-devtools/Updates.tsx",
4020
- lineNumber: 36,
4021
- columnNumber: 4
4022
- }, this),
4023
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("main", { children: [
4024
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("section", { className: "transaction_params", children: [
4025
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: "params: " }, void 0, false, {
4026
- fileName: "../src/react-devtools/Updates.tsx",
4027
- lineNumber: 41,
4028
- columnNumber: 6
4029
- }, this),
4030
- transactionUpdate.params.map((param, index) => {
4031
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
4032
- "article",
4033
- {
4034
- className: "node transaction_param",
4035
- onClick: () => console.log(transactionUpdate),
4036
- onKeyUp: () => console.log(transactionUpdate),
4037
- children: [
4038
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: [
4039
- discoverType(param),
4040
- ": "
4041
- ] }, void 0, true, {
4042
- fileName: "../src/react-devtools/Updates.tsx",
4043
- lineNumber: 50,
4044
- columnNumber: 9
4045
- }, this),
4046
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "summary", children: typeof param === `object` && `type` in param && `target` in param ? /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(import_jsx_dev_runtime18.Fragment, { children: JSON.stringify(param.type) }, void 0, false, {
4047
- fileName: "../src/react-devtools/Updates.tsx",
4048
- lineNumber: 55,
4049
- columnNumber: 11
4050
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(import_jsx_dev_runtime18.Fragment, { children: JSON.stringify(param) }, void 0, false, {
4051
- fileName: "../src/react-devtools/Updates.tsx",
4052
- lineNumber: 57,
4053
- columnNumber: 11
4054
- }, this) }, void 0, false, {
4055
- fileName: "../src/react-devtools/Updates.tsx",
4056
- lineNumber: 51,
4057
- columnNumber: 9
4058
- }, this)
4059
- ]
4060
- },
4061
- `param` + index,
4062
- true,
4063
- {
4064
- fileName: "../src/react-devtools/Updates.tsx",
4065
- lineNumber: 44,
4066
- columnNumber: 8
4067
- },
4068
- this
4069
- );
4070
- })
4071
- ] }, void 0, true, {
4072
- fileName: "../src/react-devtools/Updates.tsx",
4073
- lineNumber: 40,
4074
- columnNumber: 5
4075
- }, this),
4076
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("section", { className: "node transaction_output", children: [
4077
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: "output: " }, void 0, false, {
4078
- fileName: "../src/react-devtools/Updates.tsx",
4079
- lineNumber: 65,
4080
- columnNumber: 6
4081
- }, this),
4082
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: discoverType(transactionUpdate.output) }, void 0, false, {
4083
- fileName: "../src/react-devtools/Updates.tsx",
4084
- lineNumber: 66,
4085
- columnNumber: 6
4086
- }, this),
4087
- transactionUpdate.output ? /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "summary", children: [
4088
- ": ",
4089
- JSON.stringify(transactionUpdate.output)
4090
- ] }, void 0, true, {
4091
- fileName: "../src/react-devtools/Updates.tsx",
4092
- lineNumber: 70,
4093
- columnNumber: 7
4094
- }, this) : null
4095
- ] }, void 0, true, {
4096
- fileName: "../src/react-devtools/Updates.tsx",
4097
- lineNumber: 64,
4098
- columnNumber: 5
4099
- }, this),
4100
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("section", { className: "transaction_impact", children: [
4101
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: "impact: " }, void 0, false, {
4102
- fileName: "../src/react-devtools/Updates.tsx",
4103
- lineNumber: 76,
4104
- columnNumber: 6
4105
- }, this),
4106
- transactionUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
4107
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
4108
- article.AtomUpdate,
4109
- {
4110
- serialNumber: index,
4111
- atomUpdate
4112
- },
4113
- `${transactionUpdate.key}:${index}:${atomUpdate.key}`,
4114
- false,
4115
- {
4116
- fileName: "../src/react-devtools/Updates.tsx",
4117
- lineNumber: 81,
4118
- columnNumber: 9
4119
- },
4120
- this
4121
- );
4122
- })
4123
- ] }, void 0, true, {
4124
- fileName: "../src/react-devtools/Updates.tsx",
4125
- lineNumber: 75,
4126
- columnNumber: 5
4127
- }, this)
4128
- ] }, void 0, true, {
4129
- fileName: "../src/react-devtools/Updates.tsx",
4130
- lineNumber: 39,
4131
- columnNumber: 4
4132
- }, this)
4133
- ] }, void 0, true, {
4134
- fileName: "../src/react-devtools/Updates.tsx",
4135
- lineNumber: 35,
4136
- columnNumber: 3
4137
- }, this);
4138
- };
4139
- var TimelineUpdateFC = ({ timelineUpdate }) => {
4140
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("article", { className: "node timeline_update", children: [
4141
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("header", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("h4", { children: [
4142
- timelineUpdate.timestamp,
4143
- ": ",
4144
- timelineUpdate.type,
4145
- " (",
4146
- timelineUpdate.key,
4147
- ")"
4148
- ] }, void 0, true, {
4149
- fileName: "../src/react-devtools/Updates.tsx",
4150
- lineNumber: 100,
4151
- columnNumber: 5
4152
- }, this) }, void 0, false, {
4153
- fileName: "../src/react-devtools/Updates.tsx",
4154
- lineNumber: 99,
4155
- columnNumber: 4
4156
- }, this),
4157
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("main", { children: timelineUpdate.type === `transaction_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
4158
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
4159
- article.AtomUpdate,
4160
- {
4161
- serialNumber: index,
4162
- atomUpdate
4163
- },
4164
- `${timelineUpdate.key}:${index}:${atomUpdate.key}`,
4165
- false,
4166
- {
4167
- fileName: "../src/react-devtools/Updates.tsx",
4168
- lineNumber: 111,
4169
- columnNumber: 9
4170
- },
4171
- this
4172
- );
4173
- }) : timelineUpdate.type === `selector_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
4174
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
4175
- article.AtomUpdate,
4176
- {
4177
- serialNumber: index,
4178
- atomUpdate
4179
- },
4180
- `${timelineUpdate.key}:${index}:${atomUpdate.key}`,
4181
- false,
4182
- {
4183
- fileName: "../src/react-devtools/Updates.tsx",
4184
- lineNumber: 123,
4185
- columnNumber: 9
4186
- },
4187
- this
4188
- );
4189
- }) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
4190
- article.AtomUpdate,
4191
- {
4192
- serialNumber: timelineUpdate.timestamp,
4193
- atomUpdate: timelineUpdate
4194
- },
4195
- void 0,
4196
- false,
4197
- {
4198
- fileName: "../src/react-devtools/Updates.tsx",
4199
- lineNumber: 131,
4200
- columnNumber: 6
4201
- },
4202
- this
4203
- ) : null }, void 0, false, {
4204
- fileName: "../src/react-devtools/Updates.tsx",
4205
- lineNumber: 105,
4206
- columnNumber: 4
4207
- }, this)
4208
- ] }, void 0, true, {
4209
- fileName: "../src/react-devtools/Updates.tsx",
4210
- lineNumber: 98,
4211
- columnNumber: 3
4212
- }, this);
4213
- };
4214
- var article = {
4215
- AtomUpdate: AtomUpdateFC,
4216
- TransactionUpdate: TransactionUpdateFC,
4217
- TimelineUpdate: TimelineUpdateFC
4218
- };
4219
-
4220
- // ../src/react-devtools/TimelineIndex.tsx
4221
- var import_jsx_dev_runtime19 = require("react/jsx-dev-runtime");
4222
- var YouAreHere = () => {
4223
- return /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("span", { className: "you_are_here", children: "you are here" }, void 0, false, {
4224
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4225
- lineNumber: 17,
4226
- columnNumber: 9
4227
- }, this);
4228
- };
4229
- var TimelineLog = ({ token, isOpenState, timelineState }) => {
4230
- const timeline2 = (0, import_react9.useO)(timelineState);
4231
- const [isOpen, setIsOpen] = (0, import_react9.useIO)(isOpenState);
4232
- return /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("section", { className: "node timeline_log", children: [
4233
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("header", { children: [
4234
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
4235
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4236
- lineNumber: 31,
4237
- columnNumber: 5
4238
- }, this),
4239
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("label", { children: [
4240
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("h2", { children: token.key }, void 0, false, {
4241
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4242
- lineNumber: 33,
4243
- columnNumber: 6
4244
- }, this),
4245
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("span", { className: "detail length", children: [
4246
- "(",
4247
- timeline2.at,
4248
- "/",
4249
- timeline2.history.length,
4250
- ")"
4251
- ] }, void 0, true, {
4252
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4253
- lineNumber: 34,
4254
- columnNumber: 6
4255
- }, this),
4256
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("span", { className: "gap" }, void 0, false, {
4257
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4258
- lineNumber: 37,
4259
- columnNumber: 6
4260
- }, this),
4261
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("nav", { children: [
4262
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
4263
- "button",
4264
- {
4265
- type: "button",
4266
- onClick: () => (0, import_atom9.undo)(token),
4267
- disabled: timeline2.at === 0,
4268
- children: "undo"
4269
- },
4270
- void 0,
4271
- false,
4272
- {
4273
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4274
- lineNumber: 39,
4275
- columnNumber: 7
4276
- },
4277
- this
4278
- ),
4279
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
4280
- "button",
4281
- {
4282
- type: "button",
4283
- onClick: () => (0, import_atom9.redo)(token),
4284
- disabled: timeline2.at === timeline2.history.length,
4285
- children: "redo"
4286
- },
4287
- void 0,
4288
- false,
4289
- {
4290
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4291
- lineNumber: 46,
4292
- columnNumber: 7
4293
- },
4294
- this
4295
- )
4296
- ] }, void 0, true, {
4297
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4298
- lineNumber: 38,
4299
- columnNumber: 6
4300
- }, this)
4301
- ] }, void 0, true, {
4302
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4303
- lineNumber: 32,
4304
- columnNumber: 5
4305
- }, this)
4306
- ] }, void 0, true, {
4307
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4308
- lineNumber: 30,
4309
- columnNumber: 4
4310
- }, this),
4311
- isOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("main", { children: timeline2.history.map((update, index) => /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(import_react10.Fragment, { children: [
4312
- index === timeline2.at ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(YouAreHere, {}, void 0, false, {
4313
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4314
- lineNumber: 60,
4315
- columnNumber: 33
4316
- }, this) : null,
4317
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(article.TimelineUpdate, { timelineUpdate: update }, void 0, false, {
4318
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4319
- lineNumber: 61,
4320
- columnNumber: 8
4321
- }, this),
4322
- index === timeline2.history.length - 1 && timeline2.at === timeline2.history.length ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(YouAreHere, {}, void 0, false, {
4323
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4324
- lineNumber: 64,
4325
- columnNumber: 9
4326
- }, this) : null
4327
- ] }, update.key + index + timeline2.at, true, {
4328
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4329
- lineNumber: 59,
4330
- columnNumber: 7
4331
- }, this)) }, void 0, false, {
4332
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4333
- lineNumber: 57,
4334
- columnNumber: 5
4335
- }, this) : null
4336
- ] }, void 0, true, {
4337
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4338
- lineNumber: 29,
4339
- columnNumber: 3
4340
- }, this);
4341
- };
4342
- var TimelineIndex = () => {
4343
- const tokenIds = (0, import_react9.useO)(timelineIndex);
4344
- return /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("article", { className: "index timeline_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
4345
- return /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
4346
- TimelineLog,
4347
- {
4348
- token,
4349
- isOpenState: findViewIsOpenState(token.key),
4350
- timelineState: findTimelineState(token.key)
4351
- },
4352
- token.key,
4353
- false,
4354
- {
4355
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4356
- lineNumber: 82,
4357
- columnNumber: 7
4358
- },
4359
- this
4360
- );
4361
- }) }, void 0, false, {
4362
- fileName: "../src/react-devtools/TimelineIndex.tsx",
4363
- lineNumber: 77,
4364
- columnNumber: 3
4365
- }, this);
4366
- };
4367
-
4368
- // ../src/react-devtools/TransactionIndex.tsx
4369
- var import_react11 = require("atom.io/react");
4370
- var import_jsx_dev_runtime20 = require("react/jsx-dev-runtime");
4371
- var TransactionLog = ({ token, isOpenState, logState }) => {
4372
- const log = (0, import_react11.useO)(logState);
4373
- const [isOpen, setIsOpen] = (0, import_react11.useIO)(isOpenState);
4374
- return /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("section", { className: "node transaction_log", children: [
4375
- /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("header", { children: [
4376
- /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
4377
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4378
- lineNumber: 31,
4379
- columnNumber: 5
4380
- }, this),
4381
- /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("label", { children: [
4382
- /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("h2", { children: token.key }, void 0, false, {
4383
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4384
- lineNumber: 33,
4385
- columnNumber: 6
4386
- }, this),
4387
- /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("span", { className: "detail length", children: [
4388
- "(",
4389
- log.length,
4390
- ")"
4391
- ] }, void 0, true, {
4392
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4393
- lineNumber: 34,
4394
- columnNumber: 6
4395
- }, this)
4396
- ] }, void 0, true, {
4397
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4398
- lineNumber: 32,
4399
- columnNumber: 5
4400
- }, this)
4401
- ] }, void 0, true, {
4402
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4403
- lineNumber: 30,
4404
- columnNumber: 4
4405
- }, this),
4406
- isOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("main", { children: log.map((update, index) => /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)(
4407
- article.TransactionUpdate,
4408
- {
4409
- serialNumber: index,
4410
- transactionUpdate: update
4411
- },
4412
- update.key + index,
4413
- false,
4414
- {
4415
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4416
- lineNumber: 40,
4417
- columnNumber: 7
4418
- },
4419
- this
4420
- )) }, void 0, false, {
4421
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4422
- lineNumber: 38,
4423
- columnNumber: 5
4424
- }, this) : null
4425
- ] }, void 0, true, {
4426
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4427
- lineNumber: 29,
4428
- columnNumber: 3
4429
- }, this);
4430
- };
4431
- var TransactionIndex = () => {
4432
- const tokenIds = (0, import_react11.useO)(transactionIndex);
4433
- return /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("article", { className: "index transaction_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
4434
- return /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)(
4435
- TransactionLog,
4436
- {
4437
- token,
4438
- isOpenState: findViewIsOpenState(token.key),
4439
- logState: findTransactionLogState(token.key)
4440
- },
4441
- token.key,
4442
- false,
4443
- {
4444
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4445
- lineNumber: 60,
4446
- columnNumber: 7
4447
- },
4448
- this
4449
- );
4450
- }) }, void 0, false, {
4451
- fileName: "../src/react-devtools/TransactionIndex.tsx",
4452
- lineNumber: 55,
4453
- columnNumber: 3
4454
- }, this);
4455
- };
4456
-
4457
- // ../src/react-devtools/AtomIODevtools.tsx
4458
- var import_jsx_dev_runtime21 = require("react/jsx-dev-runtime");
4459
- var AtomIODevtools = () => {
4460
- const constraintsRef = (0, import_react13.useRef)(null);
4461
- const [devtoolsAreOpen, setDevtoolsAreOpen] = (0, import_react12.useIO)(devtoolsAreOpenState);
4462
- const [devtoolsView, setDevtoolsView] = (0, import_react12.useIO)(devtoolsViewSelectionState);
4463
- const devtoolsViewOptions = (0, import_react12.useO)(devtoolsViewOptionsState);
4464
- const mouseHasMoved = (0, import_react13.useRef)(false);
4465
- return /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(import_jsx_dev_runtime21.Fragment, { children: [
4466
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
4467
- import_framer_motion.motion.span,
4468
- {
4469
- ref: constraintsRef,
4470
- className: "atom_io_devtools_zone",
4471
- style: {
4472
- position: `fixed`,
4473
- top: 0,
4474
- left: 0,
4475
- right: 0,
4476
- bottom: 0,
4477
- pointerEvents: `none`
4478
- }
4479
- },
4480
- void 0,
4481
- false,
4482
- {
4483
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4484
- lineNumber: 29,
4485
- columnNumber: 4
4486
- },
4487
- this
4488
- ),
4489
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
4490
- import_framer_motion.motion.main,
4491
- {
4492
- drag: true,
4493
- dragConstraints: constraintsRef,
4494
- className: "atom_io_devtools",
4495
- transition: import_framer_motion.spring,
4496
- style: devtoolsAreOpen ? {} : {
4497
- backgroundColor: `#0000`,
4498
- borderColor: `#0000`,
4499
- maxHeight: 28,
4500
- maxWidth: 33
4501
- },
4502
- children: [
4503
- devtoolsAreOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(import_jsx_dev_runtime21.Fragment, { children: [
4504
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(import_framer_motion.motion.header, { children: [
4505
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)("h1", { children: "atom.io" }, void 0, false, {
4506
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4507
- lineNumber: 60,
4508
- columnNumber: 8
4509
- }, this),
4510
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)("nav", { children: devtoolsViewOptions.map((viewOption) => /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
4511
- "button",
4512
- {
4513
- type: "button",
4514
- className: viewOption === devtoolsView ? `active` : ``,
4515
- onClick: () => setDevtoolsView(viewOption),
4516
- disabled: viewOption === devtoolsView,
4517
- children: viewOption
4518
- },
4519
- viewOption,
4520
- false,
4521
- {
4522
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4523
- lineNumber: 63,
4524
- columnNumber: 10
4525
- },
4526
- this
4527
- )) }, void 0, false, {
4528
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4529
- lineNumber: 61,
4530
- columnNumber: 8
4531
- }, this)
4532
- ] }, void 0, true, {
4533
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4534
- lineNumber: 59,
4535
- columnNumber: 7
4536
- }, this),
4537
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(import_framer_motion.motion.main, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(import_framer_motion.LayoutGroup, { children: devtoolsView === `atoms` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(StateIndex, { tokenIndex: atomIndex }, void 0, false, {
4538
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4539
- lineNumber: 78,
4540
- columnNumber: 10
4541
- }, this) : devtoolsView === `selectors` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(StateIndex, { tokenIndex: selectorIndex }, void 0, false, {
4542
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4543
- lineNumber: 80,
4544
- columnNumber: 10
4545
- }, this) : devtoolsView === `transactions` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(TransactionIndex, {}, void 0, false, {
4546
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4547
- lineNumber: 82,
4548
- columnNumber: 10
4549
- }, this) : devtoolsView === `timelines` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(TimelineIndex, {}, void 0, false, {
4550
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4551
- lineNumber: 84,
4552
- columnNumber: 10
4553
- }, this) : null }, void 0, false, {
4554
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4555
- lineNumber: 76,
4556
- columnNumber: 8
4557
- }, this) }, void 0, false, {
4558
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4559
- lineNumber: 75,
4560
- columnNumber: 7
4561
- }, this)
4562
- ] }, void 0, true, {
4563
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4564
- lineNumber: 58,
4565
- columnNumber: 6
4566
- }, this) : null,
4567
- /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)("footer", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
4568
- "button",
4569
- {
4570
- type: "button",
4571
- onMouseDown: () => mouseHasMoved.current = false,
4572
- onMouseMove: () => mouseHasMoved.current = true,
4573
- onMouseUp: () => {
4574
- if (!mouseHasMoved.current) {
4575
- setDevtoolsAreOpen((open) => !open);
4576
- }
4577
- },
4578
- children: "\u{1F441}\u200D\u{1F5E8}"
4579
- },
4580
- void 0,
4581
- false,
4582
- {
4583
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4584
- lineNumber: 91,
4585
- columnNumber: 6
4586
- },
4587
- this
4588
- ) }, void 0, false, {
4589
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4590
- lineNumber: 90,
4591
- columnNumber: 5
4592
- }, this)
4593
- ]
4594
- },
4595
- void 0,
4596
- true,
4597
- {
4598
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4599
- lineNumber: 41,
4600
- columnNumber: 4
4601
- },
4602
- this
4603
- )
4604
- ] }, void 0, true, {
4605
- fileName: "../src/react-devtools/AtomIODevtools.tsx",
4606
- lineNumber: 28,
4607
- columnNumber: 3
4608
- }, this);
4609
- };
4610
-
4611
- // ../src/react-devtools/index.ts
4612
- var {
4613
- atomIndex,
4614
- selectorIndex,
4615
- transactionIndex,
4616
- findTransactionLogState,
4617
- timelineIndex,
4618
- findTimelineState
4619
- } = attachIntrospectionStates();
4620
- var devtoolsAreOpenState = atom({
4621
- key: `\u{1F441}\u200D\u{1F5E8} Devtools Are Open`,
4622
- default: true,
4623
- effects: [lazyLocalStorageEffect(`\u{1F441}\u200D\u{1F5E8} Devtools Are Open`)]
4624
- });
4625
- var devtoolsViewSelectionState = atom({
4626
- key: `\u{1F441}\u200D\u{1F5E8} Devtools View Selection`,
4627
- default: `atoms`,
4628
- effects: [lazyLocalStorageEffect(`\u{1F441}\u200D\u{1F5E8} Devtools View`)]
4629
- });
4630
- var devtoolsViewOptionsState = atom({
4631
- key: `\u{1F441}\u200D\u{1F5E8} Devtools View Options`,
4632
- default: [`atoms`, `selectors`, `transactions`, `timelines`],
4633
- effects: [lazyLocalStorageEffect(`\u{1F441}\u200D\u{1F5E8} Devtools View Options`)]
4634
- });
4635
- var findViewIsOpenState = atomFamily({
4636
- key: `\u{1F441}\u200D\u{1F5E8} Devtools View Is Open`,
4637
- default: false,
4638
- effects: (key) => [lazyLocalStorageEffect(key + `:view-is-open`)]
4639
- });
4640
- var primitiveRefinery = new Refinery({
4641
- number: (input) => typeof input === `number`,
4642
- string: (input) => typeof input === `string`,
4643
- boolean: (input) => typeof input === `boolean`,
4644
- null: (input) => input === null
4645
- });
4646
- var jsonTreeRefinery = new Refinery({
4647
- object: isPlainObject,
4648
- array: (input) => Array.isArray(input)
4649
- });
4650
- var prettyJson = new Differ(primitiveRefinery, jsonTreeRefinery, {
4651
- number: diffNumber,
4652
- string: diffString,
4653
- boolean: diffBoolean,
4654
- null: () => ({ summary: `No Change` }),
4655
- object: diffObject,
4656
- array: diffArray
4657
- });
4658
- // Annotate the CommonJS export names for ESM import in node:
4659
- 0 && (module.exports = {
4660
- AtomIODevtools,
4661
- atomIndex,
4662
- devtoolsAreOpenState,
4663
- devtoolsViewOptionsState,
4664
- devtoolsViewSelectionState,
4665
- findTimelineState,
4666
- findTransactionLogState,
4667
- findViewIsOpenState,
4668
- jsonTreeRefinery,
4669
- prettyJson,
4670
- primitiveRefinery,
4671
- selectorIndex,
4672
- timelineIndex,
4673
- transactionIndex
4674
- });
1
+ 'use strict';
2
+
3
+ var atom_io = require('atom.io');
4
+ var introspection = require('atom.io/introspection');
5
+ var webEffects = require('atom.io/web-effects');
6
+ var _function = require('fp-ts/function');
7
+ var react = require('atom.io/react');
8
+ var framerMotion = require('framer-motion');
9
+ var Wo = require('react');
10
+ var boolean = require('fp-ts/boolean');
11
+ var number = require('fp-ts/number');
12
+ var string = require('fp-ts/string');
13
+ var jsxRuntime = require('react/jsx-runtime');
14
+ var Rs = require('ajv');
15
+ var react$1 = require('@floating-ui/react');
16
+
17
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
18
+
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n.default = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var Wo__namespace = /*#__PURE__*/_interopNamespace(Wo);
38
+ var Rs__default = /*#__PURE__*/_interopDefault(Rs);
39
+
40
+ var br=Object.defineProperty,xr=Object.defineProperties;var gr=Object.getOwnPropertyDescriptors;var Je=Object.getOwnPropertySymbols;var Lt=Object.prototype.hasOwnProperty,_t=Object.prototype.propertyIsEnumerable;var jt=(e,t,n)=>t in e?br(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,c=(e,t)=>{for(var n in t||(t={}))Lt.call(t,n)&&jt(e,n,t[n]);if(Je)for(var n of Je(t))_t.call(t,n)&&jt(e,n,t[n]);return e},u=(e,t)=>xr(e,gr(t));var Pt=e=>typeof e=="symbol"?e:e+"",ve=(e,t)=>{var n={};for(var o in e)Lt.call(e,o)&&t.indexOf(o)<0&&(n[o]=e[o]);if(e!=null&&Je)for(var o of Je(e))t.indexOf(o)<0&&_t.call(e,o)&&(n[o]=e[o]);return n};var Bt=e=>t=>{for(let n of e)if(!t.includes(n))return !1;return !0};var Ft=e=>t=>Bt(e)(t)&&Bt(t)(e);var w=e=>t=>Array.isArray(t)&&t.every(n=>e(n));var Te=e=>t=>t.map(e);var Xe=(e=Boolean)=>t=>t.every(e),Mt=Xe(e=>e===!0),Ie=e=>t=>e.includes(t)?e:[...e,t],Se=e=>Array.isArray(e)&&e.length===0,Dt=(...e)=>t=>e.includes(t);var Ge=e=>e===void 0,f=e=>t=>Ge(t)||e(t);var Kt=e=>t=>t!=null?t:e;var se=()=>{},ie=e=>t=>e instanceof Function?e(t instanceof Function?t():t):e,Wt=e=>t=>{if(!e(t))throw new Error(`Invalid test case: JSON.stringify(${t})`);return o=>{if(typeof o!="function")return !1;let r=o(t);return e(r)}},Ht=(...e)=>t=>t(...e);var $t=e=>{throw new Error(e)};var Vt=(e,t)=>{try{return e()}catch(n){return t}};var Ut=e=>Object.assign(t=>t[e],{in:t=>t[e]});var z=e=>Object.entries(e),Oe=e=>Object.fromEntries(e);var ae=(e,t)=>_function.pipe(e,z,Te(([n,o])=>[n,t(o,n)]),Oe),zt=e=>t=>ae(t,e);var Tr=e=>typeof e=="object"&&e!==null,v=e=>Tr(e)&&Object.getPrototypeOf(e)===Object.prototype,Yt=e=>v(e)&&Object.keys(e).length===0,pe=(e,t)=>n=>v(n)&&Object.entries(n).every(([o,r])=>e(o)&&t(r)),qt=(e,t={allowExtraProperties:!1})=>{let n=`{${z(e).map(([r,s])=>String(r)+":"+s.name).join(",")}}`;return {[n]:r=>v(r)&&_function.pipe(e,Object.entries,Xe(([s,i])=>s in r||i(void 0)))&&_function.pipe(r,zt((s,i)=>_function.pipe(e,Ut(i),Kt(()=>t.allowExtraProperties),Ht(s))),Object.values,Mt)}[n]},T=e=>qt(e,{allowExtraProperties:!0}),Qe=e=>qt(e,{allowExtraProperties:!1});var et=(e,t)=>{let n=(o,r)=>{let i=((p,l)=>{let m=t(p,l);return m||null})(o,r);if(i!=null&&i.jobComplete||i!=null&&i.pathComplete)return i;let a=Array.isArray(r)?r.map((p,l)=>[l,p]):v(r)?Object.entries(r):[];for(let[p,l]of a){let m=n([...o,p],l);if(m!=null&&m.jobComplete)return m}return {}};n([],e);};var Y=(e=Ge)=>t=>{let n={};return Object.entries(t).forEach(([r,s])=>e(s,r)?null:n[r]=s),n};var Xt=(e,t)=>{let n=t.reduce((o,r)=>o==null?void 0:o[r],e);return n===void 0?new Error("Not found"):{found:n}};var le=class{constructor(t){this.supported=t;}refine(t){for(let[n,o]of Object.entries(this.supported))try{if(o(t)===!0&&o!==Boolean)return {type:n,data:t}}catch(r){try{if(t instanceof o)return {type:n,data:t}}catch(s){}}return null}},Sr=new le({number:e=>typeof e=="number",string:e=>typeof e=="string",boolean:e=>typeof e=="boolean",object:v,array:e=>Array.isArray(e),null:e=>e===null}),ce=e=>{if(e===void 0)return "undefined";let t=Sr.refine(e);return t?t.type:Object.getPrototypeOf(e).constructor.name};function Gt(e,t){return {summary:`${e<t?"+":"-"}${Math.abs(e-t)} (${e} \u2192 ${t})`}}function Zt(e,t){return {summary:`${e.length<t.length?"+":"-"}${Math.abs(e.length-t.length)} ("${e}" \u2192 "${t}")`}}function Qt(e,t){return {summary:`${e} \u2192 ${t}`}}function tt(e,t,n){let o="",r=[],s=[],i=[];return et(e,(a,p)=>{let l;for(l of a){let m=t[l];if(m===void 0)s.push([l,JSON.stringify(p)]);else {let d=n(p,m);d.summary!=="No Change"&&i.push([l,d]);}}}),et(t,(a,p)=>{let l;for(l of a)e[l]===void 0&&r.push([l,JSON.stringify(p)]);}),o=`\uFF5E${i.length} \uFF0B${r.length} \uFF0D${s.length}`,{summary:o,added:r,removed:s,changed:i}}function en(e,t,n){return tt(e,t,n)}var je=class{constructor(t,n,o){this.leafRefinery=t,this.treeRefinery=n,this.leafDiffers={},this.treeDiffers={};for(let r of Object.keys(t.supported)){let s=o[r];this.leafDiffers[r]=s;}for(let r of Object.keys(n.supported)){let s=o[r];this.treeDiffers[r]=s;}}diff(t,n){var a,p;if(t===n)return {summary:"No Change"};try{if(JSON.stringify(t)===JSON.stringify(n))return {summary:"No Change"}}catch(l){console.error("Error stringifying",t,n);}let o=(a=this.leafRefinery.refine(t))!=null?a:this.treeRefinery.refine(t),r=(p=this.leafRefinery.refine(n))!=null?p:this.treeRefinery.refine(n);if(o!==null&&r!==null&&o.type===r.type){if(o.type in this.leafDiffers)return this.leafDiffers[o.type](o.data,r.data);if(o.type in this.treeDiffers)return this.treeDiffers[o.type](o.data,r.data,(m,d)=>this.diff(m,d))}let s=ce(t),i=ce(n);return s===i?{summary:`${s} \u2192 ${i}`}:{summary:`Type change: ${s} \u2192 ${i}`}}};var tn=e=>JSON.stringify(e),nn=["array","boolean","null","number","object","string"],on={array:[],boolean:!1,null:null,number:0,object:{},string:""};var Rr=["Array","Boolean","Number","Object","String"],me=e=>e===null?{type:"null",data:null}:boolean.isBoolean(e)?{type:"boolean",data:e}:number.isNumber(e)?{type:"number",data:e}:string.isString(e)?{type:"string",data:e}:Array.isArray(e)?{type:"array",data:e}:v(e)?{type:"object",data:e}:$t(e===void 0?"undefined passed to refineJsonType. This is not valid JSON.":`${tn(e)} with prototype "${Object.getPrototypeOf(e).constructor.name}" passed to refineJsonType. This is not valid JSON.`),q=e=>{var o;if(e===null)return !0;if(e===void 0)return !1;let t=(o=Object.getPrototypeOf(e))==null?void 0:o.constructor.name;return Rr.includes(t)};var Cr=({isOpen:e,setIsOpen:t,disabled:n})=>jsxRuntime.jsx("button",{type:"button",className:`carat ${e?"open":"closed"}`,onClick:()=>t(o=>!o),disabled:n,children:"\u25B6"}),X={OpenClose:Cr};var wr=e=>!0,Ar=e=>!1,R=e=>t=>t===e,nt=e=>t=>e.includes(t);var Ne=(e,t=!1,n=[e])=>{let o=`(${n.map(i=>i.name||"anon").join(" | ")})`,r={[o]:i=>n.some(a=>{var p;return t&&console.log(n.map(l=>l.name||"anon").join(" | "),">",(p=a.name)!=null?p:"anon",":",a(i)),a(i)})};return Object.assign(r[o],{or:i=>Ne(i,t,[...n,i])})},ot=Ne(Ar),rn=(e,t=!1,n=[e])=>{let o=`(${n.map(i=>i.name||"anon").join(" & ")})`,r={[o]:i=>n.every(a=>(t&&console.log(n.map(p=>p.name||"anon").join(" & "),">",a.name||"anon",":",a(i)),a(i)))};return Object.assign(r[o],{and:i=>rn(i,t,[...n,i])})},sn=rn(wr);var Jr=["1:1","1:n","n:n"],vr=e=>Jr.includes(e),an={contents:{},relations:{},relationType:"n:n",a:"from",b:"to"},pn=({from:e="from",to:t="to",isContent:n}={})=>o=>Qe({contents:n?pe(string.isString,n):Qe({}),relations:pe(string.isString,w(string.isString)),relationType:vr,a:R(e),b:R(t)})(o);var G=(e,t)=>{var n;return (n=e.relations[t])!=null?n:[]},ue=(e,t)=>{let n=G(e,t);return n.length>1&&console.warn(`entry with id ${t} was not expected to have multiple relations`),n[0]};var ln=(e,...t)=>{let n=t[0],{a:o,b:r}=e,s={from:o,to:r,isContent:n};return {toJson:i=>i.toJSON(),fromJson:i=>de.fromJSON(i,s)}};var ke=(e,t)=>G(e,t).map(n=>[n,Le(e,t,n)]),cn=(e,t)=>Object.fromEntries(ke(e,t));var mn=e=>t=>t.split(e);var Ir=(e,t,n)=>{let o=Dt(t,n);return u(c({},e),{relations:_function.pipe(e.relations,z,Te(([r,s])=>[r,o(r)?s.filter(i=>!o(i)):s]),Oe,Y(Se)),contents:_function.pipe(e.contents,Y((r,s)=>string.isString(s)&&_function.pipe(s,mn("/"),Ft([t,n]))))})},jr=(e,t)=>u(c({},e),{relations:_function.pipe(e.relations,z,Te(([o,r])=>[o,r.filter(s=>s!==t)]),Oe,Y((o,r)=>r===t||Se(o))),contents:_function.pipe(e.contents,Y((o,r)=>string.isString(r)&&r.split("/").includes(t)))}),_e=(e,t)=>{let n=t[e.a],o=t[e.b];return o?Ir(e,n,o):jr(e,n)};var Lr=(e,t,n,...o)=>{var i,a;let r=u(c({},e),{relations:u(c({},e.relations),{[t]:Ie((i=e.relations[t])!=null?i:[])(n),[n]:Ie((a=e.relations[n])!=null?a:[])(t)})}),s=o[0];return s?Be(r,t,n,s):r},dn=Y(Se),_r=(e,t,n,...o)=>{var p;let r=c({},e.relations),s=ue(e,n),i=u(c({},e),{relations:dn(u(c(c({},r),s&&s!==t&&{[s]:r[s].filter(l=>l!==n)}),{[n]:[t],[t]:Ie((p=r[t])!=null?p:[])(n)}))}),a=o[0];return a?Be(i,t,n,a):i},Pr=(e,t,n,...o)=>{let r=ue(e,n),s=ue(e,t),i=u(c({},e),{relations:dn(u(c(c(c({},e.relations),r&&{[r]:[]}),s&&{[s]:[]}),{[t]:[n],[n]:[t]}))}),a=o[0];return a?Be(i,t,n,a):i},Pe=(e,t,...n)=>{let{[e.a]:o,[e.b]:r}=t;switch(e.relationType){case"1:1":return Pr(e,o,r,...n);case"1:n":return _r(e,o,r,...n);case"n:n":return Lr(e,o,r,...n)}};var fn=(e,t)=>[e,t].sort().join("/"),Le=(e,t,n)=>e.contents[fn(t,n)],Be=(e,t,n,o)=>u(c({},e),{contents:u(c({},e.contents),{[fn(t,n)]:o})}),st=(e,t)=>ke(e,t).map(([n,o])=>c({id:n},o)),yn=(e,t,n)=>{let o=t[e.a],r=t[e.b];return _function.pipe(e,s=>{let a=G(e,o).filter(l=>!n.some(m=>m.id===l)),p=s;for(let l of a){let m={[e.a]:o!=null?o:l,[e.b]:r!=null?r:l};p=_e(p,m);}return p},s=>{let i=s;for(let a of n){let p=a,{id:l}=p,m=ve(p,["id"]);let d=Yt(m)?void 0:m;i=Pe(i,{[e.a]:o!=null?o:l,[e.b]:r!=null?r:l},d);}return i},s=>{let i=n.map(a=>a.id);return u(c({},s),{relations:u(c({},s.relations),{[o!=null?o:r]:i})})})};var de=class e{constructor(t){this.a="from";this.b="to";this.makeJsonInterface=(...t)=>ln(this,...t);Object.assign(this,u(c(c({},an),t),{makeJsonInterface:this.makeJsonInterface}));}toJSON(){return {relationType:this.relationType,relations:this.relations,contents:this.contents,a:this.a,b:this.b}}static fromJSON(t,n){if(pn(n)(t))return new e(t);throw new Error(`Saved JSON for this Join is invalid: ${JSON.stringify(t)}`)}from(t){return new e(u(c({},this),{a:t}))}to(t){return new e(u(c({},this),{b:t}))}getRelatedId(t){return ue(this,t)}getRelatedIds(t){return G(this,t)}getContent(t,n){return Le(this,t,n)}getRelationEntries(t){return ke(this,t)}getRelationRecord(t){return cn(this,t)}getRelation(t){return st(this,t)[0]}getRelations(t){return st(this,t)}setRelations(t,n){return new e(yn(this,t,n))}set(t,...n){return new e(Pe(this,t,...n))}remove(t){return new e(_e(this,t))}};var C=Wo.forwardRef(function(t,n){var p,l,m,d;let o=Wo.useRef(null),r=Wo.useRef(null),[s,i]=Wo.useState("auto");Wo.useImperativeHandle(n,()=>({focus:()=>{var y;(y=o.current)==null||y.focus();}}));let a=t.type==="number"?15:0;return Wo.useLayoutEffect(()=>{if(r.current){i(`${r.current.offsetWidth+a}px`);let y=setInterval(()=>{r.current&&i(`${r.current.offsetWidth+a}px`);},1e3);return ()=>clearInterval(y)}},[(p=o.current)==null?void 0:p.value,t.value]),jsxRuntime.jsxs("div",{style:{display:"inline-block",position:"relative"},children:[jsxRuntime.jsx("input",u(c({},t),{ref:o,style:c({padding:0,borderRadius:0,border:"none",fontFamily:"inherit",fontSize:"inherit",width:s},t.style)})),jsxRuntime.jsx("span",{ref:r,style:{padding:(l=t.style)==null?void 0:l.padding,position:"absolute",visibility:"hidden",whiteSpace:"pre",fontFamily:((m=t.style)==null?void 0:m.fontFamily)||"inherit",fontSize:((d=t.style)==null?void 0:d.fontSize)||"inherit"},children:t.value})]})});var F=(e,t)=>n=>n<e?e:n>t?t:n;var Z=(e,t)=>n=>n<e?t-(e-n)%(t-e):e+(n-e)%(t-e);function zr(e,t){if(t===void 0)return e;let n=10**t;return Math.round(e*n)/n}var Yr=["","-",".","-."],Tn=e=>Yr.includes(e),qr={"":null,"-":0,".":0,"-.":0},gn=e=>e==="0"||!isNaN(Number(e))&&e.includes("."),hn=(e,t)=>Tn(e)?qr[e]:t?parseFloat(e):Math.round(parseFloat(e)),Xr={max:1/0,min:-1/0,decimalPlaces:100,nullable:!0},Gr=e=>t=>{if(t===null&&e.nullable===!0)return null;let{max:n,min:o,decimalPlaces:r}=c(c({},Xr),e);return _function.pipe(t!=null?t:0,F(o,n),i=>r?zr(i,r):i)},Zr=e=>e==null?"":e.toString(),Sn=({autoSize:e=!1,customCss:t,decimalPlaces:n,disabled:o=!1,label:r,max:s,min:i,name:a,onChange:p,onClick:l,placeholder:m="",set:d=()=>null,testId:y,value:x=null})=>{let O=Wo.useId(),[I,j]=Wo.useState(null),J=Wo.useRef(!1),E=Gr({max:s,min:i,decimalPlaces:n,nullable:!0}),re=n===void 0||n>0,ge=()=>{J.current&&(d(E(x!=null?x:null)),j(null)),J.current=!1;},he=B=>{var qe;if(p&&p(B),d===void 0)return;J.current=!0;let h=B.target.value;if(Tn(h)||gn(h)){j(h);let fr=gn(h)?h:(qe=i==null?void 0:i.toString())!=null?qe:"0",yr=hn(fr,re);d(E(yr));return}j(null);let Ae=!isNaN(Number(h))&&!h.includes(" ")||re&&h==="."||re&&h==="-."||h===""||h==="-",Ye=hn(h,re);Ae&&d(E(Ye));},b=I!=null?I:Zr(x&&E(x));return jsxRuntime.jsxs("span",{css:t,children:[r&&jsxRuntime.jsx("label",{htmlFor:O,children:r}),e?jsxRuntime.jsx(C,{type:"text",value:b,placeholder:m!=null?m:"-",onChange:he,onBlur:ge,disabled:o,name:a!=null?a:O,id:O,onClick:l,"data-testid":`number-input-${y!=null?y:O}`}):jsxRuntime.jsx("input",{type:"text",value:b,placeholder:m!=null?m:"-",onChange:he,onBlur:ge,disabled:o,name:a!=null?a:O,id:O,onClick:l,"data-testid":`number-input-${y!=null?y:O}`})]})};var On=({value:e,set:t,label:n,placeholder:o,customCss:r,autoSize:s=!1})=>jsxRuntime.jsxs("span",{css:r,children:[jsxRuntime.jsx("label",{children:n}),s?jsxRuntime.jsx(C,{type:"text",value:e,onChange:i=>t==null?void 0:t(i.target.value),disabled:t===void 0,placeholder:o}):jsxRuntime.jsx("input",{type:"text",value:e,onChange:i=>t==null?void 0:t(i.target.value),disabled:t===void 0,placeholder:o})]});var kn=({data:e})=>e===void 0?jsxRuntime.jsx(C,{disabled:!0,value:"undefined"}):jsxRuntime.jsx(C,{disabled:!0,value:Object.getPrototypeOf(e).constructor.name+" "+JSON.stringify(e)});var fe=({data:e,set:t,schema:n,name:o,rename:r,remove:s,recast:i,path:a=[],isReadonly:p=()=>!1,isHidden:l=()=>!1,className:m,customCss:d,Header:y,Components:x})=>{let O=q(e),I=O?me(e):{type:"non-json",data:e},j=O?pt[I.type]:kn,J=p(a);return l(a)?null:jsxRuntime.jsx(x.ErrorBoundary,{children:jsxRuntime.jsxs(x.EditorWrapper,{className:m,customCss:d,children:[s&&jsxRuntime.jsx(x.Button,{onClick:J?se:s,disabled:J,children:jsxRuntime.jsx(x.DeleteIcon,{})}),y&&jsxRuntime.jsx(y,{data:e,schema:n}),r&&jsxRuntime.jsx(x.KeyWrapper,{children:jsxRuntime.jsx(C,{value:o,onChange:J?se:E=>r(E.target.value),disabled:J})}),jsxRuntime.jsx(j,{data:I.data,set:t,schema:n,remove:s,rename:r,path:a,isReadonly:p,isHidden:l,Components:x}),i&&O?jsxRuntime.jsx("select",{onChange:J?se:E=>i(E.target.value),value:I.type,disabled:J,children:Object.keys(pt).map(E=>jsxRuntime.jsx("option",{value:E,children:E},E))}):null]})})};var Rn=(e,t)=>e.map((n,o)=>r=>t(()=>{let s=[...e];return s[o]=ie(r)(n),s}));var En=({path:e=[],isReadonly:t=()=>!1,isHidden:n=()=>!1,data:o,set:r,Components:s})=>{let i=Rn(o,r);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:o.map((a,p)=>{let l=[...e,p];return jsxRuntime.jsx(fe,{path:l,isReadonly:t,isHidden:n,data:a,set:i[p],Components:s},l.join(""))})})};var N=e=>Number.isInteger(e),lt=e=>{if(N(e))return e;throw new Fe(e)},rs,Ce=class extends Number{constructor(n,o){super(n/o);this[rs]=()=>this.numerator/this.denominator;if(o===0)throw new Error("Denominator cannot be zero");this.numerator=lt(n),this.denominator=lt(o);}};rs=Symbol.toPrimitive;var Fe=class extends Error{constructor(t){super(`Could not parse integer from ${JSON.stringify(t)}`);}},ct=Object.assign(e=>lt(e),{from:e=>_function.pipe(e,String,parseFloat,t=>N(t)?{value:t,error:null,round:null,upper:null,lower:null,ratio:null}:{value:null,error:new Fe(e),round:Math.round(t),upper:Math.ceil(t),lower:Math.floor(t),ratio:null}),formula:e=>t=>e(t)});new Ce(1,2);[new Ce(1,2)];({a:new Ce(1,2)});function ye(e){return T({$ref:string.isString})(e)}({$defs:{colorChannel:{type:"integer",minimum:ct(0),maximum:ct(255)},color:{type:"object",properties:{red:{$ref:"#/$defs/colorChannel"},green:{$ref:"#/$defs/colorChannel"},blue:{$ref:"#/$defs/colorChannel"}}}},type:"array",items:{$ref:"#/$defs/color"}});var Me=({refNode:{$ref:e},refMap:t={},root:n})=>{if(typeof n=="boolean")throw new TypeError("The root is a boolean and cannot be indexed");if(e in t)return {node:t[e],refMap:t};let[o,...r]=e.split("/"),s=Xt(n,r);if(s instanceof Error)throw s;let i=s.found;for(;ye(i);){let a=Me({refNode:i,refMap:t,root:n});i=a.node,t=a.refMap;}if(k(i))return {node:i,refMap:u(c({},t),{[e]:i})};throw new TypeError("The refNode is not a JsonSchema")};var wn=["date-time","date","email","hostname","ipv4","ipv6","regex","time","uri-reference","uri-template","uri","uuid"];var An=[...nn,"integer"];[...An,"any","never"];var Jn={type:R("string"),enum:f(w(string.isString)),minLength:f(N),maxLength:f(N),pattern:f(string.isString),format:f(nt(wn))};function mt(e){return T(Jn)(e)}var vn={type:R("number"),enum:f(w(number.isNumber)),minimum:f(number.isNumber),maximum:f(number.isNumber),exclusiveMinimum:f(number.isNumber),exclusiveMaximum:f(number.isNumber),multipleOf:f(number.isNumber)};function In(e){return T(vn)(e)}var jn={type:R("integer"),enum:f(w(N)),minimum:f(N),maximum:f(N),exclusiveMinimum:f(N),exclusiveMaximum:f(N),multipleOf:f(N)};function Ln(e){return T(jn)(e)}var _n={type:R("boolean"),enum:f(w(boolean.isBoolean))};function Pn(e){return T(_n)(e)}var Bn={type:R("null")};function Fn(e){return T(Bn)(e)}var Mn={type:R("object"),properties:f(pe(string.isString,k)),required:f(w(string.isString)),additionalProperties:f(k),propertyNames:f(mt),minProperties:f(N),maxProperties:f(N),dependentSchemas:f(pe(string.isString,k))};function Ke(e){return T(Mn)(e)}var Dn={type:R("array"),items:f(Ne(k).or(w(k))),minItems:f(N),maxItems:f(N),uniqueItems:f(boolean.isBoolean)};function Kn(e){return T(Dn)(e)}var is={anyOf:w(k)};function Wn(e){return T(is)(e)}var as={oneOf:w(k)};function ps(e){return T(as)(e)}var ls={allOf:w(k)};function Hn(e){return T(ls)(e)}var cs={if:k,then:f(k),else:f(k)};function $n(e){return T(cs)(e)}var ms={not:k};function Vn(e){return T(ms)(e)}var us=u(c(c(c(c(c(c(c({},Dn),_n),jn),Bn),vn),Mn),Jn),{type:w(nt(An)),enum:f(w(ot.or(N).or(boolean.isBoolean).or(number.isNumber).or(string.isString)))});function ds(e){return T(us)(e)}var fs=ot.or(Kn).or(Pn).or($n).or(ps).or(Ln).or(Hn).or(ds).or(Vn).or(Fn).or(In).or(Ke).or(mt).or(Wn);var ys=T({$id:f(string.isString),$schema:f(string.isString)}),bs=sn.and(fs).and(ys);function k(e){return Ne(bs).or(boolean.isBoolean).or(ye)(e)}var Un=e=>{try{return e.flatMap(t=>{switch(typeof t){case"string":return ["properties",t];case"number":return ["items",t];case"symbol":throw new TypeError(`The key ${String(t)} is not a valid JSON key; expected string or number, got symbol`);default:throw new TypeError(`The key ${t} is not a valid JSON key; expected string or number, got ${typeof t}`)}})}catch(t){if(t instanceof TypeError)return t;throw t}};var zn=e=>{if(typeof e=="boolean")throw new Error("The schema does not contain subSchemas");return t=>{let n=Un(t);if(n instanceof Error)return n;if(typeof e=="boolean")return new TypeError("The schema is not a JsonSchema");let{node:o,refMap:r}=n.reduce(({node:i,refMap:a=void 0},p)=>(console.log({node:i,key:p}),ye(i)?Me({refNode:i,root:e,refMap:a}):{node:i[p],refMap:a}),{node:e,refMap:void 0});if(o instanceof Error)throw o;let s=o;for(;ye(s);)console.log({subSchema:s}),s=Me({refNode:s,root:e,refMap:r}).node;if(console.log({subSchema:s}),k(s))return s;throw new TypeError("The subSchema is not a JsonSchema")}};var Yn=e=>e==="true",qn=e=>Number(e),Xn=e=>e.split(","),Gn=e=>{try{return JSON.parse(e)}catch(t){return {[e]:e}}},Zn=e=>JSON.stringify(e),Qn=e=>e.true===!0,eo=e=>{var t,n,o;return Number((o=(n=(t=e.number)!=null?t:e.size)!=null?n:e.count)!=null?o:0)},to=e=>Object.entries(e),no=e=>e.toString(),oo=e=>+e,ro=e=>({[e.toString()]:e}),so=e=>[e],io=e=>e.toString(),ao=e=>e===1,po=e=>({number:e}),lo=e=>Array(e).fill(null),co=e=>e.join(","),mo=e=>e.length,uo=e=>typeof e[0]=="boolean"?e[0]:e.length>0,fo=e=>e.reduce((t,n,o)=>(t[`${o}`]=n,t),{}),yo=()=>"",bo=()=>0,xo=()=>!1,go=()=>[],ho=()=>({});var To=e=>{let t=me(e);return {to:{array:()=>{switch(t.type){case"array":return t.data;case"object":return to(t.data);case"string":return Xn(t.data);case"boolean":return so(t.data);case"number":return lo(t.data);case"null":return go()}},boolean:()=>{switch(t.type){case"array":return uo(t.data);case"object":return Qn(t.data);case"string":return Yn(t.data);case"boolean":return t.data;case"number":return ao(t.data);case"null":return xo()}},number:()=>{switch(t.type){case"array":return mo(t.data);case"object":return eo(t.data);case"string":return qn(t.data);case"boolean":return oo(t.data);case"number":return t.data;case"null":return bo()}},object:()=>{switch(t.type){case"array":return fo(t.data);case"object":return t.data;case"string":return Gn(t.data);case"boolean":return ro(t.data);case"number":return po(t.data);case"null":return ho()}},string:()=>{switch(t.type){case"array":return co(t.data);case"object":return Zn(t.data);case"string":return t.data;case"boolean":return no(t.data);case"number":return io(t.data);case"null":return yo()}},null:()=>null}}};var So=(e,t)=>ae(e,(n,o)=>r=>t(u(c({},e),{[o]:ie(r)(n[o])}))),Oo=(e,t,n)=>ae(e,(o,r)=>s=>Object.hasOwn(e,s)?null:t(()=>{let i=Object.entries(e),a=i.findIndex(([l])=>l===r);i[a]=[s,o];let p=n.current;return n.current=u(c({},p),{[s]:p[r]}),Object.fromEntries(i)})),No=(e,t)=>ae(e,(n,o)=>()=>t(()=>{let i=e;return ve(i,[Pt(o)])})),ko=(e,t)=>ae(e,(n,o)=>r=>t(()=>u(c({},e),{[o]:To(n).to[r]()}))),Ro=(e,t)=>(n,o)=>r=>t(u(c({},e),{[n]:r!=null?r:on[o]})),Co=(e,t,n)=>()=>{let o=Object.keys(e).sort(n),r={};o.forEach(s=>r[s]=e[s]),t(r);};var hs=({addProperty:e,disabled:t,propertyKey:n,Components:o})=>jsxRuntime.jsxs(o.MissingPropertyWrapper,{children:[jsxRuntime.jsx(C,{disabled:!0,defaultValue:n})," ",jsxRuntime.jsx(C,{disabled:!0,defaultValue:"is missing"}),jsxRuntime.jsx(o.Button,{onClick:()=>e(),disabled:t,children:"+"})]}),Eo=({schema:e,path:t=[],isReadonly:n=()=>!1,isHidden:o=()=>!1,data:r,set:s,Components:i})=>{var he;let a=n(t),p=Wo.useRef(Object.keys(r).reduce((b,B)=>(b[B]=B,b),{})),l=So(r,s),m=Oo(r,s,p),d=No(r,s),y=ko(r,s),x=Co(r,s),O=Ro(r,s),I=v(e)?zn(e)(t):!0,j=R(!0)(I)?!0:Ke(I)?Object.keys((he=I.properties)!=null?he:{}):[],J=Object.keys(r),[E,re]=J.reduce(([b,B],h)=>j===!0||j.includes(h)?[b,[...B,h]]:[[...b,h],B],[[],[]]),ge=j===!0?[]:j.filter(b=>!J.includes(b));return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(i.Button,{onClick:()=>x(),disabled:a,children:"Sort"}),jsxRuntime.jsxs(i.ObjectWrapper,{children:[jsxRuntime.jsx("div",{className:"json_editor_properties",children:[...ge,...re,...E].map(b=>{let B=p.current[b],h=[...t,b],Ae=[...t,B],Ye=j===!0||j.includes(b);return ge.includes(b)?jsxRuntime.jsx(hs,{propertyKey:b,addProperty:O(b,"string"),disabled:a,Components:i},b+"IsMissing"):jsxRuntime.jsx(fe,{schema:e,path:h,name:b,isReadonly:n,isHidden:o,data:r[b],set:l[b],rename:m[b],remove:d[b],recast:y[b],className:`json_editor_property ${Ye?"json_editor_official":"json_editor_unofficial"}`,Components:i},Ae.join("."))})}),jsxRuntime.jsx(i.Button,{onClick:a?se:()=>O("new_property","string")(),disabled:a,children:"+"})]})]})};var wo=({data:e,set:t,Components:n})=>jsxRuntime.jsx(n.BooleanWrapper,{children:jsxRuntime.jsx("input",{type:"checkbox",checked:e,onChange:o=>t(o.target.checked)})}),Ao=({Components:e})=>jsxRuntime.jsx(e.NullWrapper,{children:'" "'}),Jo=({path:e=[],isReadonly:t=()=>!1,data:n,set:o,Components:r})=>jsxRuntime.jsx(r.NumberWrapper,{children:jsxRuntime.jsx(Sn,{value:n,set:t(e)?void 0:s=>o(Number(s)),autoSize:!0})}),vo=({path:e=[],isReadonly:t=()=>!1,data:n,set:o,Components:r})=>jsxRuntime.jsx(r.StringWrapper,{children:jsxRuntime.jsx(On,{value:n,set:t(e)?void 0:o,autoSize:!0})});var Io=({error:e,errorInfo:t})=>{var r,s;let n=t==null?void 0:t.componentStack.split(" ").filter(Boolean)[2],o=(s=(r=e==null?void 0:e.toString())!=null?r:t==null?void 0:t.componentStack)!=null?s:"Unknown error";return jsxRuntime.jsx("div",{"data-testid":"error-boundary",style:{flex:"1",background:"black",backgroundImage:"url(./src/assets/kablooey.gif)",backgroundPosition:"center",backgroundSize:"overlay"},children:jsxRuntime.jsx("div",{style:{margin:"50px",marginTop:"0",padding:"50px",border:"1px solid dashed"},children:jsxRuntime.jsxs("span",{style:{background:"black",color:"white",padding:10,paddingTop:5},children:["\u26A0\uFE0F ",jsxRuntime.jsx("span",{style:{color:"#fc0",fontWeight:700},children:n})," \u26A0\uFE0F ",o]})})})};var We=class extends Wo.Component{constructor(t){super(t),this.state={};}componentDidCatch(t,n){var o,r;(r=(o=this.props).onError)==null||r.call(o,t,n),this.setState({error:t,errorInfo:n});}render(){let{error:t,errorInfo:n}=this.state,{children:o,Fallback:r=Io}=this.props;return n?jsxRuntime.jsx(r,{error:t,errorInfo:n}):o}};var jo={ErrorBoundary:({children:e})=>jsxRuntime.jsx(We,{children:e}),Button:({onClick:e,children:t,disabled:n})=>jsxRuntime.jsx("button",{type:"button",className:"json_editor_button",onClick:e,disabled:n,children:t}),EditorWrapper:({children:e,customCss:t,className:n})=>jsxRuntime.jsx("div",{className:"json_editor "+n,css:t,children:e}),EditorLayout:({DeleteButton:e,Header:t,KeyInput:n,TypeSelect:o,ValueEditor:r,Wrapper:s})=>jsxRuntime.jsxs(s,{children:[e&&jsxRuntime.jsx(e,{}),t&&jsxRuntime.jsx(t,{}),n&&jsxRuntime.jsx(n,{}),o&&jsxRuntime.jsx(o,{}),jsxRuntime.jsx(r,{})]}),ArrayWrapper:({children:e})=>jsxRuntime.jsx("div",{className:"json_editor_array",children:e}),ObjectWrapper:({children:e})=>jsxRuntime.jsx("div",{className:"json_editor_object",children:e}),StringWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_string",children:e}),NumberWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_number",children:e}),BooleanWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_boolean",children:e}),NullWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_null",children:e}),MissingPropertyWrapper:({children:e})=>jsxRuntime.jsx("div",{className:"json_editor_property json_editor_missing",children:e}),MiscastPropertyWrapper:({children:e})=>jsxRuntime.jsx("div",{className:"json_editor_property json_editor_miscast",children:e}),IllegalPropertyWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_property json_editor_illegal",children:e}),OfficialPropertyWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_property json_editor_official",children:e}),UnofficialPropertyWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_property json_editor_unofficial",children:e}),DeleteIcon:()=>jsxRuntime.jsx("span",{className:"json_editor_icon json_editor_delete",children:"x"}),KeyWrapper:({children:e})=>jsxRuntime.jsx("span",{className:"json_editor_key",children:e})};var ft=({data:e,set:t,schema:n=!0,name:o,rename:r,remove:s,isReadonly:i=()=>!1,isHidden:a=()=>!1,className:p,customCss:l,Header:m,Components:d={}})=>{let y=c(c({},jo),d),x=new Rs__default.default({allErrors:!0,verbose:!0});Wo.useMemo(()=>x.compile(n),[n])(e);return jsxRuntime.jsx(fe,{data:e,set:t,name:o,schema:n,rename:r,remove:s,path:[],isReadonly:i,isHidden:a,className:p,customCss:l,Header:m,Components:y})};var pt={array:En,boolean:wo,null:Ao,number:Jo,object:Eo,string:vo};function Lo(e){let t=0;for(let o=0;o<e.length;o++){let r=e.charCodeAt(o);t=(t<<5)-t+r,t|=0;}let n=(t&16777215).toString(16);for(;n.length<6;)n="0"+n;return `#${n}`}var $={R:.3,G:.5,B:.2};var _o=[{sat:255,hue:0},{sat:255,hue:360}];var ws=e=>`#${Object.values(e).map(t=>{let n=t.toString(16);return n.length===1&&(n=0+n),n}).join("")}`,Po=ws;var Ee=e=>{let n=Z(0,360)(e)/60,o=Math.floor(n),r=n-o,s=r,i=1-r;switch(o){case 0:return [1,s,0];case 1:return [i,1,0];case 2:return [0,1,s];case 3:return [0,i,1];case 4:return [s,0,1];case 5:return [1,0,i];default:throw new Error(`invalid hue served: ${e}`)}};var As=({R:e,G:t,B:n})=>{let o=0;return e>t&&t>=n&&(o=60*(0+(t-n)/(e-n))),t>=e&&e>n&&(o=60*(2-(e-n)/(t-n))),t>n&&n>=e&&(o=60*(2+(n-e)/(t-e))),n>=t&&t>e&&(o=60*(4-(t-e)/(n-e))),n>e&&e>=t&&(o=60*(4+(e-t)/(n-t))),e>=n&&n>t&&(o=60*(6-(n-t)/(e-t))),o},yt=As;var Js=({R:e,G:t,B:n})=>$.R*e/255+$.G*t/255+$.B*n/255,te=Js;var bt=(e,t)=>{let n=255,o=Z(0,360)(e);for(let r=-1,s=0;s<t.length;r++,s++){r=Z(0,t.length)(r);let i=r>s?Z(-180,180)(o):void 0,a=t[r],p=t[s],l=r>s?Z(-180,180)(a.hue):a.hue,m=p.hue;if((i||o)>=l&&(i||o)<m){let d=i||o;d-=l,d/=m-l,d*=p.sat-a.sat,d+=a.sat,n=d;}}return n};var vs=({R:e,G:t,B:n})=>Math.max(e,t,n)-Math.min(e,t,n),xt=vs;var gt=e=>{let[t,n,o]=Ee(e),r=$.R*t,s=$.G*n,i=$.B*o;return r+s+i};var Is=e=>{let t=Ee(e);return o=>{let r=s=>Math.round(t[s]*o);return {R:r(0),G:r(1),B:r(2)}}},js=({minChannels:e,trueLuminosity:t,minLum:n})=>{let{max:o,round:r}=Math,s=255-o(...Object.values(e)),i=F(0,s)(r((t-n)*255));return {R:e.R+i,G:e.G+i,B:e.B+i}},Ls=({hue:e,sat:t,lum:n,prefer:o="lum"},r=_o)=>{let s=Is(e),i,a,p,l,m,d=0,y=1,x=bt(e,r);switch(o){case"sat":i=F(0,255)(Math.min(t,x)),p=s(i),l={R:p.R+255-i,G:p.G+255-i,B:p.B+255-i},d=te(p),y=te(l),a=F(d,y)(n);break;case"lum":a=F(0,1)(n),m=gt(e),x=Math.min(x,Math.round(a<=m?255*(a/m):255*(1-a)/(1-m))),i=Math.min(t,x),p=s(i),d=te(p);break}return {channels:js({minChannels:p,trueLuminosity:a,minLum:d}),fix:{sat:i,lum:a},limit:{sat:[0,x],lum:[o==="lum"?0:d,y]}}},Bo=Ls;var _s=({hue:e,sat:t,lum:n,prefer:o},r)=>{let{channels:s,fix:i,limit:a}=Bo({hue:e,sat:t,lum:n,prefer:o},r),{R:p,G:l,B:m}=s;return {hex:Po({R:p,G:l,B:m}),fix:i,limit:a}},ht=_s;var Ps=({hue:e,sat:t,lum:n,prefer:o},r)=>{let{hex:s}=ht({hue:e,sat:t,lum:n,prefer:o},r);return s},D=Ps;var Bs=({R:e,G:t,B:n})=>{let o=yt({R:e,G:t,B:n}),r=xt({R:e,G:t,B:n}),s=te({R:e,G:t,B:n});return {hue:o,sat:r,lum:s}},Tt=Bs;var Fs="[a-fA-F0-9]+",Ms=e=>{let t=e.split("");return [0,0,1,1,2,2].map(o=>t[o]).join("")},Ds=e=>{let t=e.replace(/^#/,""),n=t.length===6||t.length===3,o=t.match(new RegExp(`^${Fs}$`))!==null;if(!(n&&o))throw new Error(`${e} is not a valid hex code`);return t.length===3?Ms(t):t},St=Ds;var Ot=e=>{let t=St(e);return {R:parseInt(t.slice(0,2),16),G:parseInt(t.slice(2,4),16),B:parseInt(t.slice(4,6),16)}};var Ks=e=>{let{R:t,G:n,B:o}=Ot(e),{hue:r,sat:s,lum:i}=Tt({R:t,G:n,B:o});return {hue:r,sat:s,lum:i}},ne=Ks;var Nt=e=>u(c({},e),{lum:e.lum>.666?0:1});var Do=e=>t=>u(c({},t),{lum:t.lum>.666?t.lum-e:t.lum+e});var Ko={hue:0,lum:0,sat:0,prefer:"lum"};var Mo=e=>typeof e=="object"&&e!==null&&typeof e.hue=="number"&&typeof e.sat=="number"&&typeof e.lum=="number"&&["sat","lum"].includes(e.prefer);Wt(Mo)(Ko);var Vs=["Red","Orange","Yellow","Lime","Green","Teal","Cyan","Blue","Indigo","Violet","Magenta","Pink"];Vs.reduce((e,t,n)=>(e[t]={hue:n*30,sat:255,lum:.5,prefer:"sat"},e),{});var Ct=({id:e})=>{let[t,n]=Wo__namespace.useState(!1),{refs:o,floatingStyles:r,context:s}=react$1.useFloating({open:t,onOpenChange:n,placement:"bottom-start"}),i=react$1.useClick(s),{getReferenceProps:a,getFloatingProps:p}=react$1.useInteractions([i]),l=Lo(e),m=_function.pipe(l,ne,Nt,D),d=_function.pipe(l,ne,Do(.25),D),y=_function.pipe(d,ne,Nt,D);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",u(c({role:"content",ref:o.setReference},a()),{style:{background:l,cursor:"pointer",padding:"0px 4px",color:m,userSelect:"none",whiteSpace:"nowrap"},children:e.substring(0,3)})),t&&jsxRuntime.jsx(react$1.FloatingPortal,{children:jsxRuntime.jsx("span",u(c({role:"popup",ref:o.setFloating},p()),{style:u(c({},r),{color:y,background:d,padding:"0px 4px",boxShadow:"0px 2px 10px rgba(0, 0, 0, 0.1)"}),children:e}))})]})};var Ho={};var $o=e=>{let t=new Set,n=Object.entries(e.data.relations).sort(([o,r],[s,i])=>i.length-r.length).filter(([o,r])=>{if(t.has(o))return !1;t.add(o);for(let s of r)t.add(s);return !0});return jsxRuntime.jsx("article",{className:Ho.class,children:n.map(([o,r])=>jsxRuntime.jsxs("section",{children:[jsxRuntime.jsx("span",{children:jsxRuntime.jsx(Ct,{id:o})}),":",jsxRuntime.jsx("span",{children:r.map(s=>jsxRuntime.jsx(Ct,{id:s}))})]}))})};var ni=({token:e})=>{let[t,n]=react.useIO(e);return q(t)?jsxRuntime.jsx(ft,{data:t,set:n,schema:!0}):t instanceof de?jsxRuntime.jsx($o,{data:t,set:n}):jsxRuntime.jsx("div",{className:"json_editor",children:jsxRuntime.jsx(C,{value:t instanceof Set?`Set { ${JSON.stringify([...t]).slice(1,-1)} }`:t instanceof Map?"Map "+JSON.stringify([...t]):Object.getPrototypeOf(t).constructor.name+" "+Vt(()=>JSON.stringify(t),"?"),disabled:!0})})},oi=({token:e})=>{let t=react.useO(e);return q(t)?jsxRuntime.jsx(ft,{data:t,set:()=>null,schema:!0,isReadonly:()=>!0}):jsxRuntime.jsx("div",{className:"json_editor",children:jsxRuntime.jsx(C,{value:t instanceof Set?"Set "+JSON.stringify([...t]):t instanceof Map?"Map "+JSON.stringify([...t]):Object.getPrototypeOf(t).constructor.name+" "+JSON.stringify(t),disabled:!0})})},Et=({token:e})=>e.type==="readonly_selector"?jsxRuntime.jsx(oi,{token:e}):jsxRuntime.jsx(ni,{token:e});var At=atom_io.selectorFamily({key:"\u{1F441}\u200D\u{1F5E8} State Type",get:e=>({get:t})=>{let n;try{n=t(e);}catch(o){return "error"}return n===void 0?"undefined":q(n)?me(n).type:Object.getPrototypeOf(n).constructor.name}}),si=({node:e,isOpenState:t,typeState:n})=>{var p,l;let[o,r]=react.useIO(t),s=react.useO(e),i=react.useO(n),a=!!vt.refine(s);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("header",{children:[jsxRuntime.jsx(X.OpenClose,{isOpen:o&&!a,setIsOpen:r,disabled:a}),jsxRuntime.jsxs("label",{onClick:()=>console.log(e,atom_io.getState(e)),onKeyUp:()=>console.log(e,atom_io.getState(e)),children:[jsxRuntime.jsx("h2",{children:(l=(p=e.family)==null?void 0:p.subKey)!=null?l:e.key}),jsxRuntime.jsxs("span",{className:"type detail",children:["(",i,")"]})]}),a?jsxRuntime.jsx(Et,{token:e}):null]}),o&&!a?jsxRuntime.jsx("main",{children:jsxRuntime.jsx(Et,{token:e})}):null]})},ii=({node:e,isOpenState:t})=>{let[n,o]=react.useIO(t);return Object.entries(e.familyMembers).forEach(([r,s])=>{V(r),At(s);}),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("header",{children:[jsxRuntime.jsx(X.OpenClose,{isOpen:n,setIsOpen:o}),jsxRuntime.jsxs("label",{children:[jsxRuntime.jsx("h2",{children:e.key}),jsxRuntime.jsx("span",{className:"type detail",children:" (family)"})]})]}),n?Object.entries(e.familyMembers).map(([r,s])=>jsxRuntime.jsx(zo,{node:s,isOpenState:V(s.key),typeState:At(s)},r)):null]})},zo=({node:e,isOpenState:t,typeState:n})=>e.key.startsWith("\u{1F441}\u200D\u{1F5E8}")?null:jsxRuntime.jsx("section",{className:"node state",children:"type"in e?jsxRuntime.jsx(si,{node:e,isOpenState:t,typeState:n}):jsxRuntime.jsx(ii,{node:e,isOpenState:t})}),Jt=({tokenIndex:e})=>{let t=react.useO(e);return jsxRuntime.jsx("article",{className:"index state_index",children:Object.entries(t).filter(([n])=>!n.startsWith("\u{1F441}\u200D\u{1F5E8}")).sort().map(([n,o])=>jsxRuntime.jsx(zo,{node:o,isOpenState:V(o.key),typeState:At(o)},n))})};var ai=({atomUpdate:e})=>jsxRuntime.jsxs("article",{className:"node atom_update",onClick:()=>console.log(e),onKeyUp:()=>console.log(e),children:[jsxRuntime.jsxs("span",{className:"detail",children:[e.key,": "]}),jsxRuntime.jsx("span",{children:jsxRuntime.jsx("span",{className:"summary",children:Xo.diff(e.oldValue,e.newValue).summary})})]},e.key),pi=({serialNumber:e,transactionUpdate:t})=>jsxRuntime.jsxs("article",{className:"node transaction_update",children:[jsxRuntime.jsx("header",{children:jsxRuntime.jsx("h4",{children:e})}),jsxRuntime.jsxs("main",{children:[jsxRuntime.jsxs("section",{className:"transaction_params",children:[jsxRuntime.jsx("span",{className:"detail",children:"params: "}),t.params.map((n,o)=>jsxRuntime.jsxs("article",{className:"node transaction_param",onClick:()=>console.log(t),onKeyUp:()=>console.log(t),children:[jsxRuntime.jsxs("span",{className:"detail",children:[ce(n),": "]}),jsxRuntime.jsx("span",{className:"summary",children:typeof n=="object"&&n!==null&&"type"in n&&"target"in n?jsxRuntime.jsx(jsxRuntime.Fragment,{children:JSON.stringify(n.type)}):jsxRuntime.jsx(jsxRuntime.Fragment,{children:JSON.stringify(n)})})]},"param"+o))]}),jsxRuntime.jsxs("section",{className:"node transaction_output",children:[jsxRuntime.jsx("span",{className:"detail",children:"output: "}),jsxRuntime.jsx("span",{className:"detail",children:ce(t.output)}),t.output?jsxRuntime.jsxs("span",{className:"summary",children:[": ",JSON.stringify(t.output)]}):null]}),jsxRuntime.jsxs("section",{className:"transaction_impact",children:[jsxRuntime.jsx("span",{className:"detail",children:"impact: "}),t.atomUpdates.filter(n=>!n.key.startsWith("\u{1F441}\u200D\u{1F5E8}")).map((n,o)=>jsxRuntime.jsx(U.AtomUpdate,{serialNumber:o,atomUpdate:n},`${t.key}:${o}:${n.key}`))]})]})]}),li=({timelineUpdate:e})=>jsxRuntime.jsxs("article",{className:"node timeline_update",children:[jsxRuntime.jsx("header",{children:jsxRuntime.jsxs("h4",{children:[e.timestamp,": ",e.type," (",e.key,")"]})}),jsxRuntime.jsx("main",{children:e.type==="transaction_update"?e.atomUpdates.filter(t=>!t.key.startsWith("\u{1F441}\u200D\u{1F5E8}")).map((t,n)=>jsxRuntime.jsx(U.AtomUpdate,{serialNumber:n,atomUpdate:t},`${e.key}:${n}:${t.key}`)):e.type==="selector_update"?e.atomUpdates.filter(t=>!t.key.startsWith("\u{1F441}\u200D\u{1F5E8}")).map((t,n)=>jsxRuntime.jsx(U.AtomUpdate,{serialNumber:n,atomUpdate:t},`${e.key}:${n}:${t.key}`)):e.type==="atom_update"?jsxRuntime.jsx(U.AtomUpdate,{serialNumber:e.timestamp,atomUpdate:e}):null})]}),U={AtomUpdate:ai,TransactionUpdate:pi,TimelineUpdate:li};var Go=()=>jsxRuntime.jsx("span",{className:"you_are_here",children:"you are here"}),fi=({token:e,isOpenState:t,timelineState:n})=>{let o=react.useO(n),[r,s]=react.useIO(t);return jsxRuntime.jsxs("section",{className:"node timeline_log",children:[jsxRuntime.jsxs("header",{children:[jsxRuntime.jsx(X.OpenClose,{isOpen:r,setIsOpen:s}),jsxRuntime.jsxs("label",{children:[jsxRuntime.jsx("h2",{children:e.key}),jsxRuntime.jsxs("span",{className:"detail length",children:["(",o.at,"/",o.history.length,")"]}),jsxRuntime.jsx("span",{className:"gap"}),jsxRuntime.jsxs("nav",{children:[jsxRuntime.jsx("button",{type:"button",onClick:()=>atom_io.undo(e),disabled:o.at===0,children:"undo"}),jsxRuntime.jsx("button",{type:"button",onClick:()=>atom_io.redo(e),disabled:o.at===o.history.length,children:"redo"})]})]})]}),r?jsxRuntime.jsx("main",{children:o.history.map((i,a)=>jsxRuntime.jsxs(Wo.Fragment,{children:[a===o.at?jsxRuntime.jsx(Go,{}):null,jsxRuntime.jsx(U.TimelineUpdate,{timelineUpdate:i}),a===o.history.length-1&&o.at===o.history.length?jsxRuntime.jsx(Go,{}):null]},i.key+a+o.at))}):null]})},Qo=()=>{let e=react.useO(er);return jsxRuntime.jsx("article",{className:"index timeline_index",children:e.filter(t=>!t.key.startsWith("\u{1F441}\u200D\u{1F5E8}")).map(t=>jsxRuntime.jsx(fi,{token:t,isOpenState:V(t.key),timelineState:tr(t.key)},t.key))})};var bi=({token:e,isOpenState:t,logState:n})=>{let o=react.useO(n),[r,s]=react.useIO(t);return jsxRuntime.jsxs("section",{className:"node transaction_log",children:[jsxRuntime.jsxs("header",{children:[jsxRuntime.jsx(X.OpenClose,{isOpen:r,setIsOpen:s}),jsxRuntime.jsxs("label",{children:[jsxRuntime.jsx("h2",{children:e.key}),jsxRuntime.jsxs("span",{className:"detail length",children:["(",o.length,")"]})]})]}),r?jsxRuntime.jsx("main",{children:o.map((i,a)=>jsxRuntime.jsx(U.TransactionUpdate,{serialNumber:a,transactionUpdate:i},i.key+a))}):null]})},or=()=>{let e=react.useO(rr);return jsxRuntime.jsx("article",{className:"index transaction_index",children:e.filter(t=>!t.key.startsWith("\u{1F441}\u200D\u{1F5E8}")).map(t=>jsxRuntime.jsx(bi,{token:t,isOpenState:V(t.key),logState:sr(t.key)},t.key))})};var Ed=()=>{let e=Wo.useRef(null),[t,n]=react.useIO(mr),[o,r]=react.useIO(ur),s=react.useO(dr),i=Wo.useRef(!1);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(framerMotion.motion.span,{ref:e,className:"atom_io_devtools_zone",style:{position:"fixed",top:0,left:0,right:0,bottom:0,pointerEvents:"none"}}),jsxRuntime.jsxs(framerMotion.motion.main,{drag:!0,dragConstraints:e,className:"atom_io_devtools",transition:framerMotion.spring,style:t?{}:{backgroundColor:"#0000",borderColor:"#0000",maxHeight:28,maxWidth:33},children:[t?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(framerMotion.motion.header,{children:[jsxRuntime.jsx("h1",{children:"atom.io"}),jsxRuntime.jsx("nav",{children:s.map(a=>jsxRuntime.jsx("button",{type:"button",className:a===o?"active":"",onClick:()=>r(a),disabled:a===o,children:a},a))})]}),jsxRuntime.jsx(framerMotion.motion.main,{children:jsxRuntime.jsx(framerMotion.LayoutGroup,{children:o==="atoms"?jsxRuntime.jsx(Jt,{tokenIndex:lr}):o==="selectors"?jsxRuntime.jsx(Jt,{tokenIndex:cr}):o==="transactions"?jsxRuntime.jsx(or,{}):o==="timelines"?jsxRuntime.jsx(Qo,{}):null})})]}):null,jsxRuntime.jsx("footer",{children:jsxRuntime.jsx("button",{type:"button",onMouseDown:()=>i.current=!1,onMouseMove:()=>i.current=!0,onMouseUp:()=>{i.current||n(a=>!a);},children:"\u{1F441}\u200D\u{1F5E8}"})})]})]})};var {atomIndex:lr,selectorIndex:cr,transactionIndex:rr,findTransactionLogState:sr,timelineIndex:er,findTimelineState:tr}=introspection.attachIntrospectionStates(),mr=atom_io.atom({key:"\u{1F441}\u200D\u{1F5E8} Devtools Are Open",default:!0,effects:[webEffects.lazyLocalStorageEffect("\u{1F441}\u200D\u{1F5E8} Devtools Are Open")]}),ur=atom_io.atom({key:"\u{1F441}\u200D\u{1F5E8} Devtools View Selection",default:"atoms",effects:[webEffects.lazyLocalStorageEffect("\u{1F441}\u200D\u{1F5E8} Devtools View")]}),dr=atom_io.atom({key:"\u{1F441}\u200D\u{1F5E8} Devtools View Options",default:["atoms","selectors","transactions","timelines"],effects:[webEffects.lazyLocalStorageEffect("\u{1F441}\u200D\u{1F5E8} Devtools View Options")]}),V=atom_io.atomFamily({key:"\u{1F441}\u200D\u{1F5E8} Devtools View Is Open",default:!1,effects:e=>[webEffects.lazyLocalStorageEffect(e+":view-is-open")]}),vt=new le({number:e=>typeof e=="number",string:e=>typeof e=="string",boolean:e=>typeof e=="boolean",null:e=>e===null}),Oi=new le({object:v,array:e=>Array.isArray(e)}),Xo=new je(vt,Oi,{number:Gt,string:Zt,boolean:Qt,null:()=>({summary:"No Change"}),object:tt,array:en});
41
+
42
+ exports.AtomIODevtools = Ed;
43
+ exports.atomIndex = lr;
44
+ exports.devtoolsAreOpenState = mr;
45
+ exports.devtoolsViewOptionsState = dr;
46
+ exports.devtoolsViewSelectionState = ur;
47
+ exports.findTimelineState = tr;
48
+ exports.findTransactionLogState = sr;
49
+ exports.findViewIsOpenState = V;
50
+ exports.jsonTreeRefinery = Oi;
51
+ exports.prettyJson = Xo;
52
+ exports.primitiveRefinery = vt;
53
+ exports.selectorIndex = cr;
54
+ exports.timelineIndex = er;
55
+ exports.transactionIndex = rr;
56
+ //# sourceMappingURL=out.js.map
4675
57
  //# sourceMappingURL=index.js.map