atom.io 0.6.6 → 0.6.8

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 (76) hide show
  1. package/dist/index.d.mts +34 -25
  2. package/dist/index.d.ts +34 -25
  3. package/dist/index.js +94 -115
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +94 -105
  6. package/dist/index.mjs.map +1 -1
  7. package/introspection/dist/index.d.mts +272 -0
  8. package/introspection/dist/index.d.ts +272 -0
  9. package/introspection/dist/index.js +41 -3
  10. package/introspection/dist/index.js.map +1 -1
  11. package/introspection/dist/index.mjs +41 -3
  12. package/introspection/dist/index.mjs.map +1 -1
  13. package/json/dist/index.d.mts +5 -7
  14. package/json/dist/index.d.ts +5 -7
  15. package/json/dist/index.js.map +1 -1
  16. package/json/dist/index.mjs.map +1 -1
  17. package/package.json +22 -14
  18. package/react-devtools/dist/index.css +9 -1
  19. package/react-devtools/dist/index.css.map +1 -1
  20. package/react-devtools/dist/index.d.mts +22 -25
  21. package/react-devtools/dist/index.d.ts +22 -25
  22. package/react-devtools/dist/index.js +845 -326
  23. package/react-devtools/dist/index.js.map +1 -1
  24. package/react-devtools/dist/index.mjs +830 -306
  25. package/react-devtools/dist/index.mjs.map +1 -1
  26. package/realtime/dist/index.d.mts +6 -8
  27. package/realtime/dist/index.d.ts +6 -8
  28. package/realtime/dist/index.js +0 -1
  29. package/realtime/dist/index.js.map +1 -1
  30. package/realtime/dist/index.mjs +0 -1
  31. package/realtime/dist/index.mjs.map +1 -1
  32. package/realtime-react/dist/index.d.mts +11 -13
  33. package/realtime-react/dist/index.d.ts +11 -13
  34. package/realtime-react/dist/index.js.map +1 -1
  35. package/realtime-react/dist/index.mjs.map +1 -1
  36. package/src/atom.ts +4 -4
  37. package/src/index.ts +1 -1
  38. package/src/internal/atom-internal.ts +5 -6
  39. package/src/internal/families-internal.ts +23 -20
  40. package/src/internal/get.ts +7 -9
  41. package/src/internal/index.ts +1 -1
  42. package/src/internal/operation.ts +14 -21
  43. package/src/internal/selector/create-read-write-selector.ts +11 -5
  44. package/src/internal/selector/create-readonly-selector.ts +4 -8
  45. package/src/internal/selector-internal.ts +1 -3
  46. package/src/internal/set.ts +1 -4
  47. package/src/internal/store.ts +19 -22
  48. package/src/internal/subscribe-internal.ts +7 -1
  49. package/src/internal/time-travel-internal.ts +4 -4
  50. package/src/internal/timeline/add-atom-to-timeline.ts +2 -2
  51. package/src/internal/timeline-internal.ts +3 -5
  52. package/src/internal/transaction/apply-transaction.ts +9 -6
  53. package/src/internal/transaction/build-transaction.ts +6 -6
  54. package/src/internal/transaction-internal.ts +1 -7
  55. package/src/introspection/attach-timeline-family.ts +14 -4
  56. package/src/introspection/attach-transaction-logs.ts +1 -1
  57. package/src/json/select-json.ts +1 -1
  58. package/src/react-devtools/AtomIODevtools.tsx +1 -2
  59. package/src/react-devtools/StateEditor.tsx +5 -1
  60. package/src/react-devtools/StateIndex.tsx +4 -1
  61. package/src/react-devtools/devtools.scss +0 -1
  62. package/src/react-explorer/AtomIOExplorer.tsx +3 -3
  63. package/src/realtime/hook-composition/expose-family.ts +2 -2
  64. package/src/realtime/hook-composition/expose-single.ts +1 -1
  65. package/src/realtime/hook-composition/receive-state.ts +1 -1
  66. package/src/realtime-react/realtime-hooks.ts +4 -4
  67. package/src/realtime-react/use-pull-family-member.ts +2 -2
  68. package/src/realtime-react/use-pull-family.ts +2 -2
  69. package/src/realtime-react/use-pull.ts +3 -1
  70. package/src/realtime-react/use-push.ts +3 -1
  71. package/src/selector.ts +14 -12
  72. package/src/subscribe.ts +1 -1
  73. package/src/tracker/index.ts +3 -0
  74. package/src/tracker/tracker.ts +61 -0
  75. package/src/web-effects/storage.ts +1 -1
  76. package/src/internal/subject.ts +0 -24
@@ -127,6 +127,18 @@ var doNothing = () => void 0;
127
127
  var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(
128
128
  originalThing instanceof Function ? originalThing() : originalThing
129
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
+ };
130
142
  var pass = (...params) => (fn) => fn(...params);
131
143
  var raiseError = (message) => {
132
144
  throw new Error(message);
@@ -388,21 +400,17 @@ var Differ = class {
388
400
  // ../../anvl/src/string/capitalize.ts
389
401
  var capitalize = (str) => str[0].toUpperCase() + str.slice(1);
390
402
 
391
- // ../src/internal/atom-internal.ts
392
- var import_hamt_plus5 = __toESM(require("hamt_plus"));
393
-
394
403
  // ../src/internal/get.ts
395
- var import_hamt_plus = __toESM(require("hamt_plus"));
396
404
  var computeSelectorState = (selector) => selector.get();
397
405
  function lookup(key, store) {
398
406
  const core = target(store);
399
- const type = import_hamt_plus.default.has(key, core.atoms) ? `atom` : import_hamt_plus.default.has(key, core.selectors) ? `selector` : `readonly_selector`;
407
+ const type = core.atoms.has(key) ? `atom` : core.selectors.has(key) ? `selector` : `readonly_selector`;
400
408
  return { key, type };
401
409
  }
402
410
  function withdraw(token, store) {
403
411
  var _a2, _b, _c, _d, _e;
404
412
  const core = target(store);
405
- return (_e = (_d = (_c = (_b = (_a2 = import_hamt_plus.default.get(token.key, core.atoms)) != null ? _a2 : import_hamt_plus.default.get(token.key, core.selectors)) != null ? _b : import_hamt_plus.default.get(token.key, core.readonlySelectors)) != null ? _c : import_hamt_plus.default.get(token.key, core.transactions)) != null ? _d : import_hamt_plus.default.get(token.key, core.timelines)) != null ? _e : null;
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;
406
414
  }
407
415
  function deposit(state) {
408
416
  return __spreadValues({
@@ -441,12 +449,6 @@ var markAtomAsNotDefault = (key, store = IMPLICIT.STORE) => {
441
449
  core.atomsThatAreDefault.delete(key);
442
450
  };
443
451
 
444
- // ../src/internal/operation.ts
445
- var import_hamt_plus3 = __toESM(require("hamt_plus"));
446
-
447
- // ../src/internal/store.ts
448
- var import_hamt_plus2 = __toESM(require("hamt_plus"));
449
-
450
452
  // ../../anvl/src/join/core-relation-data.ts
451
453
  var import_string = require("fp-ts/string");
452
454
 
@@ -802,17 +804,17 @@ var Join = class _Join {
802
804
  // ../src/internal/store.ts
803
805
  var createStore = (name, store = null) => {
804
806
  var _a2;
805
- const copiedStore = __spreadProps(__spreadValues({}, store != null ? store : (() => ({
807
+ const created = __spreadProps(__spreadValues({}, store != null ? store : (() => ({
806
808
  atomsThatAreDefault: /* @__PURE__ */ new Set(),
807
809
  selectorAtoms: new Join({ relationType: `n:n` }).from(`selectorKey`).to(`atomKey`),
808
- selectorGraph: new Join({ relationType: `n:n` }),
809
- valueMap: import_hamt_plus2.default.make()
810
+ selectorGraph: new Join({ relationType: `n:n` })
810
811
  }))()), {
811
- atoms: import_hamt_plus2.default.make(),
812
- readonlySelectors: import_hamt_plus2.default.make(),
813
- selectors: import_hamt_plus2.default.make(),
814
- transactions: import_hamt_plus2.default.make(),
815
- timelines: import_hamt_plus2.default.make(),
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(),
816
818
  timelineAtoms: new Join({ relationType: `1:n` }).from(`timelineKey`).to(`atomKey`),
817
819
  subject: {
818
820
  atomCreation: new Subject(),
@@ -838,21 +840,21 @@ var createStore = (name, store = null) => {
838
840
  });
839
841
  store == null ? void 0 : store.atoms.forEach((atom2) => {
840
842
  const copiedAtom = __spreadProps(__spreadValues({}, atom2), { subject: new Subject() });
841
- copiedStore.atoms = import_hamt_plus2.default.set(atom2.key, copiedAtom, copiedStore.atoms);
843
+ created.atoms.set(atom2.key, copiedAtom);
842
844
  });
843
845
  store == null ? void 0 : store.readonlySelectors.forEach((selector) => {
844
- selector.install(copiedStore);
846
+ selector.install(created);
845
847
  });
846
848
  store == null ? void 0 : store.selectors.forEach((selector) => {
847
- selector.install(copiedStore);
849
+ selector.install(created);
848
850
  });
849
851
  store == null ? void 0 : store.transactions.forEach((tx) => {
850
- tx.install(copiedStore);
852
+ tx.install(created);
851
853
  });
852
- store == null ? void 0 : store.timelines.forEach((timeline) => {
853
- timeline.install(copiedStore);
854
+ store == null ? void 0 : store.timelines.forEach((timeline2) => {
855
+ timeline2.install(created);
854
856
  });
855
- return copiedStore;
857
+ return created;
856
858
  };
857
859
  var IMPLICIT = {
858
860
  STORE_INTERNAL: void 0,
@@ -875,7 +877,7 @@ var openOperation = (token, store) => {
875
877
  core.operation = {
876
878
  open: true,
877
879
  done: /* @__PURE__ */ new Set(),
878
- prev: store.valueMap,
880
+ prev: new Map(store.valueMap),
879
881
  time: Date.now(),
880
882
  token
881
883
  };
@@ -919,39 +921,35 @@ var recallState = (state, store = IMPLICIT.STORE) => {
919
921
  (_a2 = store.config.logger) == null ? void 0 : _a2.warn(
920
922
  `recall called outside of an operation. This is probably a bug.`
921
923
  );
922
- return import_hamt_plus3.default.get(state.key, core.valueMap);
924
+ return core.valueMap.get(state.key);
923
925
  }
924
- return import_hamt_plus3.default.get(state.key, core.operation.prev);
926
+ return core.operation.prev.get(state.key);
925
927
  };
926
928
  var cacheValue = (key, value, store = IMPLICIT.STORE) => {
927
929
  const core = target(store);
928
- core.valueMap = import_hamt_plus3.default.set(key, value, core.valueMap);
930
+ core.valueMap.set(key, value);
929
931
  };
930
932
  var evictCachedValue = (key, store = IMPLICIT.STORE) => {
931
933
  const core = target(store);
932
- core.valueMap = import_hamt_plus3.default.remove(key, core.valueMap);
933
- };
934
- var readCachedValue = (key, store = IMPLICIT.STORE) => import_hamt_plus3.default.get(key, target(store).valueMap);
935
- var isValueCached = (key, store = IMPLICIT.STORE) => import_hamt_plus3.default.has(key, target(store).valueMap);
936
- var hasKeyBeenUsed = (key, store = IMPLICIT.STORE) => {
937
- const core = target(store);
938
- return import_hamt_plus3.default.has(key, core.atoms) || import_hamt_plus3.default.has(key, core.selectors) || import_hamt_plus3.default.has(key, core.readonlySelectors);
934
+ core.valueMap.delete(key);
939
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);
940
938
 
941
939
  // ../src/internal/transaction-internal.ts
942
- var import_hamt_plus4 = __toESM(require("hamt_plus"));
943
940
  var target = (store = IMPLICIT.STORE) => store.transactionStatus.phase === `building` ? store.transactionStatus.core : store;
944
941
 
945
942
  // ../src/internal/atom-internal.ts
946
943
  function atom__INTERNAL(options, family, store = IMPLICIT.STORE) {
947
944
  var _a2, _b, _c;
948
945
  const core = target(store);
949
- if (hasKeyBeenUsed(options.key, store)) {
946
+ const existing = core.atoms.get(options.key);
947
+ if (existing) {
950
948
  (_b = (_a2 = store.config.logger) == null ? void 0 : _a2.error) == null ? void 0 : _b.call(
951
949
  _a2,
952
950
  `Key "${options.key}" already exists in the store.`
953
951
  );
954
- return deposit(core.atoms.get(options.key));
952
+ return deposit(existing);
955
953
  }
956
954
  const subject = new Subject();
957
955
  const newAtom = __spreadValues(__spreadProps(__spreadValues({}, options), {
@@ -959,7 +957,7 @@ function atom__INTERNAL(options, family, store = IMPLICIT.STORE) {
959
957
  type: `atom`
960
958
  }), family && { family });
961
959
  const initialValue = options.default instanceof Function ? options.default() : options.default;
962
- core.atoms = import_hamt_plus5.default.set(newAtom.key, newAtom, core.atoms);
960
+ core.atoms.set(newAtom.key, newAtom);
963
961
  markAtomAsDefault(options.key, store);
964
962
  cacheValue(options.key, initialValue, store);
965
963
  const token = deposit(newAtom);
@@ -973,34 +971,6 @@ function atom__INTERNAL(options, family, store = IMPLICIT.STORE) {
973
971
  return token;
974
972
  }
975
973
 
976
- // ../../anvl/src/json/index.ts
977
- var import_function9 = require("fp-ts/function");
978
-
979
- // ../../anvl/src/json/refine.ts
980
- var import_boolean = require("fp-ts/boolean");
981
- var import_number = require("fp-ts/number");
982
- var import_string3 = require("fp-ts/string");
983
- var JSON_PROTOTYPES = [
984
- `Array`,
985
- `Boolean`,
986
- `Number`,
987
- `Object`,
988
- `String`
989
- ];
990
- 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(
991
- 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.`
992
- );
993
- var isJson = (input) => {
994
- var _a2;
995
- if (input === null)
996
- return true;
997
- if (input === void 0)
998
- return false;
999
- const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
1000
- const isJson2 = JSON_PROTOTYPES.includes(prototype);
1001
- return isJson2;
1002
- };
1003
-
1004
974
  // ../../anvl/src/json/index.ts
1005
975
  var stringifyJson = (json) => JSON.stringify(json);
1006
976
  var JSON_TYPE_NAMES = [
@@ -1025,20 +995,23 @@ function atomFamily__INTERNAL(options, store = IMPLICIT.STORE) {
1025
995
  const subject = new Subject();
1026
996
  return Object.assign(
1027
997
  (key) => {
1028
- var _a2;
1029
998
  const subKey = stringifyJson(key);
1030
999
  const family = { key: options.key, subKey };
1031
1000
  const fullKey = `${options.key}(${subKey})`;
1032
1001
  const existing = withdraw({ key: fullKey, type: `atom` }, store);
1033
- const token = existing ? deposit(existing) : atom__INTERNAL(
1034
- {
1002
+ let token;
1003
+ if (existing) {
1004
+ token = deposit(existing);
1005
+ } else {
1006
+ const individualOptions = {
1035
1007
  key: fullKey,
1036
- default: options.default instanceof Function ? options.default(key) : options.default,
1037
- effects: (_a2 = options.effects) == null ? void 0 : _a2.call(options, key)
1038
- },
1039
- family,
1040
- store
1041
- );
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
+ }
1042
1015
  subject.next(token);
1043
1016
  return token;
1044
1017
  },
@@ -1082,7 +1055,6 @@ var traceAllSelectorAtoms = (selectorKey, store) => {
1082
1055
  };
1083
1056
 
1084
1057
  // ../src/internal/set.ts
1085
- var import_hamt_plus6 = __toESM(require("hamt_plus"));
1086
1058
  var evictDownStream = (state, store = IMPLICIT.STORE) => {
1087
1059
  var _a2, _b;
1088
1060
  const core = target(store);
@@ -1101,7 +1073,7 @@ var evictDownStream = (state, store = IMPLICIT.STORE) => {
1101
1073
  (_a3 = store.config.logger) == null ? void 0 : _a3.info(` || ${stateKey} already done`);
1102
1074
  return;
1103
1075
  }
1104
- const state2 = (_b2 = import_hamt_plus6.default.get(stateKey, core.selectors)) != null ? _b2 : import_hamt_plus6.default.get(stateKey, core.readonlySelectors);
1076
+ const state2 = (_b2 = core.selectors.get(stateKey)) != null ? _b2 : core.readonlySelectors.get(stateKey);
1105
1077
  if (!state2) {
1106
1078
  (_c = store.config.logger) == null ? void 0 : _c.info(
1107
1079
  ` || ${stateKey} is an atom, and can't be downstream`
@@ -1150,7 +1122,7 @@ var setState__INTERNAL = (state, value, store = IMPLICIT.STORE) => {
1150
1122
  }
1151
1123
  };
1152
1124
 
1153
- // ../src/internal/subject.ts
1125
+ // ../../anvl/reactivity/subject.ts
1154
1126
  var Subject = class {
1155
1127
  constructor() {
1156
1128
  this.subscribers = [];
@@ -1218,7 +1190,13 @@ var subscribeToRootAtoms = (state, store) => {
1218
1190
  );
1219
1191
  const oldValue = recallState(state, store);
1220
1192
  const newValue = getState__INTERNAL(state, store);
1221
- (_b = store.config.logger) == null ? void 0 : _b.info(` <- ${state.key} became`, newValue);
1193
+ (_b = store.config.logger) == null ? void 0 : _b.info(
1194
+ ` <- "${state.key}" went (`,
1195
+ oldValue,
1196
+ `->`,
1197
+ newValue,
1198
+ `)`
1199
+ );
1222
1200
  state.subject.next({ newValue, oldValue });
1223
1201
  });
1224
1202
  });
@@ -1411,11 +1389,24 @@ var attachTimelineFamily = (store = import_atom3.__INTERNAL__.IMPLICIT.STORE) =>
1411
1389
  const findTimelineLogState__INTERNAL = import_atom3.__INTERNAL__.atomFamily__INTERNAL(
1412
1390
  {
1413
1391
  key: `\u{1F441}\u200D\u{1F5E8} Timeline Update Log (Internal)`,
1414
- default: (key) => store.timelines.get(key),
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
+ },
1415
1406
  effects: (key) => [
1416
1407
  ({ setSelf }) => {
1417
1408
  const tl = store.timelines.get(key);
1418
- tl.subject.subscribe((_) => {
1409
+ tl == null ? void 0 : tl.subject.subscribe((_) => {
1419
1410
  if (store.operation.open === true) {
1420
1411
  const subscription = store.subject.operationStatus.subscribe(
1421
1412
  (operationStatus) => {
@@ -1516,7 +1507,7 @@ var attachTransactionLogs = (store = import_atom6.__INTERNAL__.IMPLICIT.STORE) =
1516
1507
  effects: (key) => [
1517
1508
  ({ setSelf }) => {
1518
1509
  const tx = store.transactions.get(key);
1519
- tx.subject.subscribe((transactionUpdate) => {
1510
+ tx == null ? void 0 : tx.subject.subscribe((transactionUpdate) => {
1520
1511
  if (transactionUpdate.key === key) {
1521
1512
  setSelf((state) => [...state, transactionUpdate]);
1522
1513
  }
@@ -1564,13 +1555,38 @@ var persistAtom = (storage) => ({ stringify, parse }) => (key) => ({ setSelf, on
1564
1555
  var lazyLocalStorageEffect = persistAtom(localStorage)(JSON);
1565
1556
 
1566
1557
  // ../src/react-devtools/AtomIODevtools.tsx
1567
- var import_react11 = require("atom.io/react");
1558
+ var import_react12 = require("atom.io/react");
1568
1559
  var import_framer_motion = require("framer-motion");
1569
- var import_react12 = require("react");
1560
+ var import_react13 = require("react");
1570
1561
 
1571
1562
  // ../src/react-devtools/StateIndex.tsx
1572
1563
  var import_atom8 = require("atom.io");
1573
- var import_react7 = require("atom.io/react");
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
+ };
1574
1590
 
1575
1591
  // ../src/react-devtools/Button.tsx
1576
1592
  var import_jsx_dev_runtime = require("react/jsx-dev-runtime");
@@ -1599,7 +1615,16 @@ var button = {
1599
1615
  };
1600
1616
 
1601
1617
  // ../src/react-devtools/StateEditor.tsx
1602
- var import_react6 = require("atom.io/react");
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
+ );
1603
1628
 
1604
1629
  // ../../hamr/src/react-elastic-input/ElasticInput.tsx
1605
1630
  var import_react = require("react");
@@ -1688,12 +1713,15 @@ var import_react2 = require("react");
1688
1713
  // ../../anvl/src/number/clamp.ts
1689
1714
  var clampInto = (min, max) => (value) => value < min ? min : value > max ? max : value;
1690
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
+
1691
1719
  // ../../hamr/src/react-elastic-input/NumberInput.tsx
1692
1720
  var import_jsx_dev_runtime3 = require("react/jsx-dev-runtime");
1693
1721
  function round(value, decimalPlaces) {
1694
1722
  if (decimalPlaces === void 0)
1695
1723
  return value;
1696
- const factor = Math.pow(10, decimalPlaces);
1724
+ const factor = 10 ** decimalPlaces;
1697
1725
  return Math.round(value * factor) / factor;
1698
1726
  }
1699
1727
  var VALID_NON_NUMBERS = [``, `-`, `.`, `-.`];
@@ -1788,7 +1816,7 @@ var NumberInput = ({
1788
1816
  return /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)("span", { css: customCss, children: [
1789
1817
  label && /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)("label", { htmlFor: id, children: label }, void 0, false, {
1790
1818
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1791
- lineNumber: 166,
1819
+ lineNumber: 168,
1792
1820
  columnNumber: 14
1793
1821
  }, this),
1794
1822
  autoSize ? /* @__PURE__ */ (0, import_jsx_dev_runtime3.jsxDEV)(
@@ -1809,7 +1837,7 @@ var NumberInput = ({
1809
1837
  false,
1810
1838
  {
1811
1839
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1812
- lineNumber: 168,
1840
+ lineNumber: 170,
1813
1841
  columnNumber: 5
1814
1842
  },
1815
1843
  this
@@ -1831,14 +1859,14 @@ var NumberInput = ({
1831
1859
  false,
1832
1860
  {
1833
1861
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1834
- lineNumber: 181,
1862
+ lineNumber: 183,
1835
1863
  columnNumber: 5
1836
1864
  },
1837
1865
  this
1838
1866
  )
1839
1867
  ] }, void 0, true, {
1840
1868
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1841
- lineNumber: 165,
1869
+ lineNumber: 167,
1842
1870
  columnNumber: 3
1843
1871
  }, this);
1844
1872
  };
@@ -1901,15 +1929,6 @@ var TextInput = ({
1901
1929
  }, this);
1902
1930
  };
1903
1931
 
1904
- // ../../hamr/src/react-json-editor/editors-by-type/utilities/array-elements.ts
1905
- var makeElementSetters = (data, set) => data.map(
1906
- (value, index) => (newValue) => set(() => {
1907
- const newData = [...data];
1908
- newData[index] = become(newValue)(value);
1909
- return newData;
1910
- })
1911
- );
1912
-
1913
1932
  // ../../hamr/src/react-json-editor/editors-by-type/non-json.tsx
1914
1933
  var import_jsx_dev_runtime5 = require("react/jsx-dev-runtime");
1915
1934
  var NonJsonEditor = ({ data }) => {
@@ -1964,7 +1983,7 @@ var JsonEditor_INTERNAL = ({
1964
1983
  disabled,
1965
1984
  children: /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(Components.DeleteIcon, {}, void 0, false, {
1966
1985
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1967
- lineNumber: 63,
1986
+ lineNumber: 65,
1968
1987
  columnNumber: 7
1969
1988
  }, this)
1970
1989
  },
@@ -1972,14 +1991,14 @@ var JsonEditor_INTERNAL = ({
1972
1991
  false,
1973
1992
  {
1974
1993
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1975
- lineNumber: 59,
1994
+ lineNumber: 61,
1976
1995
  columnNumber: 6
1977
1996
  },
1978
1997
  this
1979
1998
  ),
1980
1999
  HeaderDisplay && /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(HeaderDisplay, { data, schema }, void 0, false, {
1981
2000
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1982
- lineNumber: 66,
2001
+ lineNumber: 68,
1983
2002
  columnNumber: 23
1984
2003
  }, this),
1985
2004
  rename && /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(Components.KeyWrapper, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(
@@ -1993,13 +2012,13 @@ var JsonEditor_INTERNAL = ({
1993
2012
  false,
1994
2013
  {
1995
2014
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1996
- lineNumber: 69,
2015
+ lineNumber: 71,
1997
2016
  columnNumber: 7
1998
2017
  },
1999
2018
  this
2000
2019
  ) }, void 0, false, {
2001
2020
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2002
- lineNumber: 68,
2021
+ lineNumber: 70,
2003
2022
  columnNumber: 6
2004
2023
  }, this),
2005
2024
  /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)(
@@ -2019,7 +2038,7 @@ var JsonEditor_INTERNAL = ({
2019
2038
  false,
2020
2039
  {
2021
2040
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2022
- lineNumber: 76,
2041
+ lineNumber: 78,
2023
2042
  columnNumber: 5
2024
2043
  },
2025
2044
  this
@@ -2032,7 +2051,7 @@ var JsonEditor_INTERNAL = ({
2032
2051
  disabled,
2033
2052
  children: Object.keys(SubEditors).map((type) => /* @__PURE__ */ (0, import_jsx_dev_runtime6.jsxDEV)("option", { value: type, children: type }, type, false, {
2034
2053
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2035
- lineNumber: 98,
2054
+ lineNumber: 100,
2036
2055
  columnNumber: 8
2037
2056
  }, this))
2038
2057
  },
@@ -2040,18 +2059,18 @@ var JsonEditor_INTERNAL = ({
2040
2059
  false,
2041
2060
  {
2042
2061
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2043
- lineNumber: 88,
2062
+ lineNumber: 90,
2044
2063
  columnNumber: 6
2045
2064
  },
2046
2065
  this
2047
2066
  ) : null
2048
2067
  ] }, void 0, true, {
2049
2068
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2050
- lineNumber: 57,
2069
+ lineNumber: 59,
2051
2070
  columnNumber: 4
2052
2071
  }, this) }, void 0, false, {
2053
2072
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2054
- lineNumber: 56,
2073
+ lineNumber: 58,
2055
2074
  columnNumber: 3
2056
2075
  }, this);
2057
2076
  };
@@ -2104,7 +2123,7 @@ var import_number3 = require("fp-ts/number");
2104
2123
  var import_string6 = require("fp-ts/string");
2105
2124
 
2106
2125
  // ../../anvl/src/json-schema/integer.ts
2107
- var import_function14 = require("fp-ts/function");
2126
+ var import_function13 = require("fp-ts/function");
2108
2127
  var isInteger = (input) => Number.isInteger(input);
2109
2128
  var parseInteger = (input) => {
2110
2129
  if (isInteger(input))
@@ -2130,7 +2149,7 @@ var IntegerParseError = class extends Error {
2130
2149
  }
2131
2150
  };
2132
2151
  var Int = Object.assign((input) => parseInteger(input), {
2133
- from: (input) => (0, import_function14.pipe)(
2152
+ from: (input) => (0, import_function13.pipe)(
2134
2153
  input,
2135
2154
  String,
2136
2155
  parseFloat,
@@ -2431,7 +2450,7 @@ var findSubSchema = (schema) => {
2431
2450
  };
2432
2451
  };
2433
2452
 
2434
- // ../../anvl/src/json/cast.ts
2453
+ // ../../anvl/src/json/cast-json.ts
2435
2454
  var stringToBoolean = (str) => str === `true`;
2436
2455
  var stringToNumber = (str) => Number(str);
2437
2456
  var stringToArray = (str) => str.split(`,`);
@@ -2473,7 +2492,9 @@ var nullToNumber = () => 0;
2473
2492
  var nullToBoolean = () => false;
2474
2493
  var nullToArray = () => [];
2475
2494
  var nullToObject = () => ({});
2476
- var cast = (input) => {
2495
+
2496
+ // ../../anvl/src/refinement/smart-cast-json.ts
2497
+ var castToJson = (input) => {
2477
2498
  const json = refineJsonType(input);
2478
2499
  return {
2479
2500
  to: {
@@ -2590,7 +2611,7 @@ var makePropertyRemovers = (data, set) => mapObject(
2590
2611
  var makePropertyRecasters = (data, set) => mapObject(
2591
2612
  data,
2592
2613
  (value, key) => (newType) => set(() => __spreadProps(__spreadValues({}, data), {
2593
- [key]: cast(value).to[newType]()
2614
+ [key]: castToJson(value).to[newType]()
2594
2615
  }))
2595
2616
  );
2596
2617
  var makePropertyCreationInterface = (data, set) => (key, type) => (value) => set(__spreadProps(__spreadValues({}, data), { [key]: value != null ? value : JSON_DEFAULTS[type] }));
@@ -2779,11 +2800,7 @@ var BooleanEditor = ({
2779
2800
  }, this);
2780
2801
  var NullEditor = ({
2781
2802
  Components
2782
- }) => /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(Components.NullWrapper, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(import_jsx_dev_runtime9.Fragment, {}, void 0, false, {
2783
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2784
- lineNumber: 24,
2785
- columnNumber: 3
2786
- }, this) }, void 0, false, {
2803
+ }) => /* @__PURE__ */ (0, import_jsx_dev_runtime9.jsxDEV)(Components.NullWrapper, { children: '" "' }, void 0, false, {
2787
2804
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2788
2805
  lineNumber: 23,
2789
2806
  columnNumber: 2
@@ -2805,13 +2822,13 @@ var NumberEditor = ({
2805
2822
  false,
2806
2823
  {
2807
2824
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2808
- lineNumber: 36,
2825
+ lineNumber: 34,
2809
2826
  columnNumber: 3
2810
2827
  },
2811
2828
  this
2812
2829
  ) }, void 0, false, {
2813
2830
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2814
- lineNumber: 35,
2831
+ lineNumber: 33,
2815
2832
  columnNumber: 2
2816
2833
  }, this);
2817
2834
  var StringEditor = ({
@@ -2832,20 +2849,19 @@ var StringEditor = ({
2832
2849
  false,
2833
2850
  {
2834
2851
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2835
- lineNumber: 53,
2852
+ lineNumber: 51,
2836
2853
  columnNumber: 4
2837
2854
  },
2838
2855
  this
2839
2856
  ) }, void 0, false, {
2840
2857
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2841
- lineNumber: 52,
2858
+ lineNumber: 50,
2842
2859
  columnNumber: 3
2843
2860
  }, this);
2844
2861
  };
2845
2862
 
2846
- // ../../hamr/src/react-error-boundary/ErrorBoundary.tsx
2863
+ // ../../hamr/src/react-error-boundary/ReactErrorBoundary.tsx
2847
2864
  var import_react4 = require("react");
2848
- var import_recoil = require("recoil");
2849
2865
 
2850
2866
  // ../../hamr/src/react-error-boundary/DefaultFallback.tsx
2851
2867
  var import_jsx_dev_runtime10 = require("react/jsx-dev-runtime");
@@ -2925,12 +2941,12 @@ var DefaultFallback = ({ error, errorInfo }) => {
2925
2941
  );
2926
2942
  };
2927
2943
 
2928
- // ../../hamr/src/react-error-boundary/ErrorBoundary.tsx
2944
+ // ../../hamr/src/react-error-boundary/ReactErrorBoundary.tsx
2929
2945
  var import_jsx_dev_runtime11 = require("react/jsx-dev-runtime");
2930
2946
  var ErrorBoundary = class extends import_react4.Component {
2931
2947
  constructor(props) {
2932
2948
  super(props);
2933
- this.state = { error: void 0, errorInfo: void 0 };
2949
+ this.state = {};
2934
2950
  }
2935
2951
  componentDidCatch(error, errorInfo) {
2936
2952
  var _a2, _b;
@@ -2944,23 +2960,19 @@ var ErrorBoundary = class extends import_react4.Component {
2944
2960
  const { error, errorInfo } = this.state;
2945
2961
  const { children, Fallback = DefaultFallback } = this.props;
2946
2962
  return errorInfo ? /* @__PURE__ */ (0, import_jsx_dev_runtime11.jsxDEV)(Fallback, { error, errorInfo }, void 0, false, {
2947
- fileName: "../../hamr/src/react-error-boundary/ErrorBoundary.tsx",
2948
- lineNumber: 43,
2963
+ fileName: "../../hamr/src/react-error-boundary/ReactErrorBoundary.tsx",
2964
+ lineNumber: 51,
2949
2965
  columnNumber: 4
2950
2966
  }, this) : children;
2951
2967
  }
2952
2968
  };
2953
- var findErrorBoundaryState = (0, import_recoil.atomFamily)({
2954
- key: `errorBoundary`,
2955
- default: { error: void 0, errorInfo: void 0 }
2956
- });
2957
2969
 
2958
2970
  // ../../hamr/src/react-json-editor/default-components.tsx
2959
2971
  var import_jsx_dev_runtime12 = require("react/jsx-dev-runtime");
2960
2972
  var DEFAULT_JSON_EDITOR_COMPONENTS = {
2961
2973
  ErrorBoundary: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(ErrorBoundary, { children }, void 0, false, {
2962
2974
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2963
- lineNumber: 47,
2975
+ lineNumber: 49,
2964
2976
  columnNumber: 35
2965
2977
  }, this),
2966
2978
  Button: ({ onClick, children, disabled }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(
@@ -2976,14 +2988,14 @@ var DEFAULT_JSON_EDITOR_COMPONENTS = {
2976
2988
  false,
2977
2989
  {
2978
2990
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2979
- lineNumber: 49,
2991
+ lineNumber: 51,
2980
2992
  columnNumber: 3
2981
2993
  },
2982
2994
  this
2983
2995
  ),
2984
2996
  EditorWrapper: ({ children, customCss, className }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: `json_editor ` + className, css: customCss, children }, void 0, false, {
2985
2997
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2986
- lineNumber: 59,
2998
+ lineNumber: 61,
2987
2999
  columnNumber: 3
2988
3000
  }, this),
2989
3001
  EditorLayout: ({
@@ -2997,98 +3009,98 @@ var DEFAULT_JSON_EDITOR_COMPONENTS = {
2997
3009
  return /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(Wrapper, { children: [
2998
3010
  DeleteButton && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(DeleteButton, {}, void 0, false, {
2999
3011
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3000
- lineNumber: 73,
3012
+ lineNumber: 75,
3001
3013
  columnNumber: 22
3002
3014
  }, this),
3003
3015
  Header && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(Header, {}, void 0, false, {
3004
3016
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3005
- lineNumber: 74,
3017
+ lineNumber: 76,
3006
3018
  columnNumber: 16
3007
3019
  }, this),
3008
3020
  KeyInput && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(KeyInput, {}, void 0, false, {
3009
3021
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3010
- lineNumber: 75,
3022
+ lineNumber: 77,
3011
3023
  columnNumber: 18
3012
3024
  }, this),
3013
3025
  TypeSelect && /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(TypeSelect, {}, void 0, false, {
3014
3026
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3015
- lineNumber: 76,
3027
+ lineNumber: 78,
3016
3028
  columnNumber: 20
3017
3029
  }, this),
3018
3030
  /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)(ValueEditor, {}, void 0, false, {
3019
3031
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3020
- lineNumber: 77,
3032
+ lineNumber: 79,
3021
3033
  columnNumber: 5
3022
3034
  }, this)
3023
3035
  ] }, void 0, true, {
3024
3036
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3025
- lineNumber: 72,
3037
+ lineNumber: 74,
3026
3038
  columnNumber: 4
3027
3039
  }, this);
3028
3040
  },
3029
3041
  ArrayWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_array", children }, void 0, false, {
3030
3042
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3031
- lineNumber: 82,
3043
+ lineNumber: 84,
3032
3044
  columnNumber: 3
3033
3045
  }, this),
3034
3046
  ObjectWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_object", children }, void 0, false, {
3035
3047
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3036
- lineNumber: 85,
3048
+ lineNumber: 87,
3037
3049
  columnNumber: 3
3038
3050
  }, this),
3039
3051
  StringWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_string", children }, void 0, false, {
3040
3052
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3041
- lineNumber: 88,
3053
+ lineNumber: 90,
3042
3054
  columnNumber: 3
3043
3055
  }, this),
3044
3056
  NumberWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_number", children }, void 0, false, {
3045
3057
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3046
- lineNumber: 91,
3058
+ lineNumber: 93,
3047
3059
  columnNumber: 3
3048
3060
  }, this),
3049
3061
  BooleanWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_boolean", children }, void 0, false, {
3050
3062
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3051
- lineNumber: 94,
3063
+ lineNumber: 96,
3052
3064
  columnNumber: 3
3053
3065
  }, this),
3054
3066
  NullWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_null", children }, void 0, false, {
3055
3067
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3056
- lineNumber: 97,
3068
+ lineNumber: 99,
3057
3069
  columnNumber: 3
3058
3070
  }, this),
3059
3071
  MissingPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_property json_editor_missing", children }, void 0, false, {
3060
3072
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3061
- lineNumber: 100,
3073
+ lineNumber: 102,
3062
3074
  columnNumber: 3
3063
3075
  }, this),
3064
3076
  MiscastPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("div", { className: "json_editor_property json_editor_miscast", children }, void 0, false, {
3065
3077
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3066
- lineNumber: 103,
3078
+ lineNumber: 105,
3067
3079
  columnNumber: 3
3068
3080
  }, this),
3069
3081
  IllegalPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_property json_editor_illegal", children }, void 0, false, {
3070
3082
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3071
- lineNumber: 106,
3083
+ lineNumber: 108,
3072
3084
  columnNumber: 3
3073
3085
  }, this),
3074
3086
  OfficialPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_property json_editor_official", children }, void 0, false, {
3075
3087
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3076
- lineNumber: 109,
3088
+ lineNumber: 111,
3077
3089
  columnNumber: 3
3078
3090
  }, this),
3079
3091
  UnofficialPropertyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_property json_editor_unofficial", children }, void 0, false, {
3080
3092
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3081
- lineNumber: 112,
3093
+ lineNumber: 114,
3082
3094
  columnNumber: 3
3083
3095
  }, this),
3084
3096
  DeleteIcon: () => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_icon json_editor_delete", children: "x" }, void 0, false, {
3085
3097
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3086
- lineNumber: 117,
3098
+ lineNumber: 119,
3087
3099
  columnNumber: 3
3088
3100
  }, this),
3089
3101
  KeyWrapper: ({ children }) => /* @__PURE__ */ (0, import_jsx_dev_runtime12.jsxDEV)("span", { className: "json_editor_key", children }, void 0, false, {
3090
3102
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3091
- lineNumber: 120,
3103
+ lineNumber: 122,
3092
3104
  columnNumber: 3
3093
3105
  }, this)
3094
3106
  };
@@ -3139,7 +3151,7 @@ var JsonEditor = ({
3139
3151
  false,
3140
3152
  {
3141
3153
  fileName: "../../hamr/src/react-json-editor/developer-interface.tsx",
3142
- lineNumber: 79,
3154
+ lineNumber: 77,
3143
3155
  columnNumber: 3
3144
3156
  },
3145
3157
  this
@@ -3156,15 +3168,522 @@ var SubEditors = {
3156
3168
  string: StringEditor
3157
3169
  };
3158
3170
 
3159
- // ../src/react-devtools/StateEditor.tsx
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
3160
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");
3161
3676
  var StateEditor = ({ token }) => {
3162
- const [data, set] = (0, import_react6.useIO)(token);
3163
- return isJson(data) ? /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(JsonEditor, { data, set, schema: true }, void 0, false, {
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, {
3164
3679
  fileName: "../src/react-devtools/StateEditor.tsx",
3165
- lineNumber: 15,
3680
+ lineNumber: 17,
3166
3681
  columnNumber: 3
3167
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)("div", { className: "json_editor", children: /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(
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)(
3168
3687
  ElasticInput,
3169
3688
  {
3170
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), `?`),
@@ -3174,19 +3693,19 @@ var StateEditor = ({ token }) => {
3174
3693
  false,
3175
3694
  {
3176
3695
  fileName: "../src/react-devtools/StateEditor.tsx",
3177
- lineNumber: 18,
3696
+ lineNumber: 22,
3178
3697
  columnNumber: 4
3179
3698
  },
3180
3699
  this
3181
3700
  ) }, void 0, false, {
3182
3701
  fileName: "../src/react-devtools/StateEditor.tsx",
3183
- lineNumber: 17,
3702
+ lineNumber: 21,
3184
3703
  columnNumber: 3
3185
3704
  }, this);
3186
3705
  };
3187
3706
  var ReadonlySelectorViewer = ({ token }) => {
3188
- const data = (0, import_react6.useO)(token);
3189
- return isJson(data) ? /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(
3707
+ const data = (0, import_react7.useO)(token);
3708
+ return isJson(data) ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
3190
3709
  JsonEditor,
3191
3710
  {
3192
3711
  data,
@@ -3198,11 +3717,11 @@ var ReadonlySelectorViewer = ({ token }) => {
3198
3717
  false,
3199
3718
  {
3200
3719
  fileName: "../src/react-devtools/StateEditor.tsx",
3201
- lineNumber: 39,
3720
+ lineNumber: 43,
3202
3721
  columnNumber: 3
3203
3722
  },
3204
3723
  this
3205
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)("div", { className: "json_editor", children: /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(
3724
+ ) : /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("div", { className: "json_editor", children: /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
3206
3725
  ElasticInput,
3207
3726
  {
3208
3727
  value: data instanceof Set ? `Set ` + JSON.stringify([...data]) : data instanceof Map ? `Map ` + JSON.stringify([...data]) : Object.getPrototypeOf(data).constructor.name + ` ` + JSON.stringify(data),
@@ -3212,33 +3731,33 @@ var ReadonlySelectorViewer = ({ token }) => {
3212
3731
  false,
3213
3732
  {
3214
3733
  fileName: "../src/react-devtools/StateEditor.tsx",
3215
- lineNumber: 47,
3734
+ lineNumber: 51,
3216
3735
  columnNumber: 4
3217
3736
  },
3218
3737
  this
3219
3738
  ) }, void 0, false, {
3220
3739
  fileName: "../src/react-devtools/StateEditor.tsx",
3221
- lineNumber: 46,
3740
+ lineNumber: 50,
3222
3741
  columnNumber: 3
3223
3742
  }, this);
3224
3743
  };
3225
3744
  var StoreEditor = ({ token }) => {
3226
3745
  if (token.type === `readonly_selector`) {
3227
- return /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(ReadonlySelectorViewer, { token }, void 0, false, {
3746
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(ReadonlySelectorViewer, { token }, void 0, false, {
3228
3747
  fileName: "../src/react-devtools/StateEditor.tsx",
3229
- lineNumber: 67,
3748
+ lineNumber: 71,
3230
3749
  columnNumber: 10
3231
3750
  }, this);
3232
3751
  }
3233
- return /* @__PURE__ */ (0, import_jsx_dev_runtime14.jsxDEV)(StateEditor, { token }, void 0, false, {
3752
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(StateEditor, { token }, void 0, false, {
3234
3753
  fileName: "../src/react-devtools/StateEditor.tsx",
3235
- lineNumber: 69,
3754
+ lineNumber: 73,
3236
3755
  columnNumber: 9
3237
3756
  }, this);
3238
3757
  };
3239
3758
 
3240
3759
  // ../src/react-devtools/StateIndex.tsx
3241
- var import_jsx_dev_runtime15 = require("react/jsx-dev-runtime");
3760
+ var import_jsx_dev_runtime17 = require("react/jsx-dev-runtime");
3242
3761
  var findStateTypeState = (0, import_atom8.selectorFamily)({
3243
3762
  key: `\u{1F441}\u200D\u{1F5E8} State Type`,
3244
3763
  get: (token) => ({ get }) => {
@@ -3257,13 +3776,13 @@ var findStateTypeState = (0, import_atom8.selectorFamily)({
3257
3776
  });
3258
3777
  var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3259
3778
  var _a2, _b;
3260
- const [isOpen, setIsOpen] = (0, import_react7.useIO)(isOpenState);
3261
- const state = (0, import_react7.useO)(node);
3262
- const stateType = (0, import_react7.useO)(typeState);
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);
3263
3782
  const isPrimitive = Boolean(primitiveRefinery.refine(state));
3264
- return /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(import_jsx_dev_runtime15.Fragment, { children: [
3265
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("header", { children: [
3266
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(
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)(
3267
3786
  button.OpenClose,
3268
3787
  {
3269
3788
  isOpen: isOpen && !isPrimitive,
@@ -3274,29 +3793,29 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3274
3793
  false,
3275
3794
  {
3276
3795
  fileName: "../src/react-devtools/StateIndex.tsx",
3277
- lineNumber: 45,
3796
+ lineNumber: 48,
3278
3797
  columnNumber: 5
3279
3798
  },
3280
3799
  this
3281
3800
  ),
3282
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(
3801
+ /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3283
3802
  "label",
3284
3803
  {
3285
3804
  onClick: () => console.log(node, (0, import_atom8.getState)(node)),
3286
3805
  onKeyUp: () => console.log(node, (0, import_atom8.getState)(node)),
3287
3806
  children: [
3288
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("h2", { children: (_b = (_a2 = node.family) == null ? void 0 : _a2.subKey) != null ? _b : node.key }, void 0, false, {
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, {
3289
3808
  fileName: "../src/react-devtools/StateIndex.tsx",
3290
- lineNumber: 54,
3809
+ lineNumber: 57,
3291
3810
  columnNumber: 6
3292
3811
  }, this),
3293
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("span", { className: "type detail", children: [
3812
+ /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "type detail", children: [
3294
3813
  "(",
3295
3814
  stateType,
3296
3815
  ")"
3297
3816
  ] }, void 0, true, {
3298
3817
  fileName: "../src/react-devtools/StateIndex.tsx",
3299
- lineNumber: 55,
3818
+ lineNumber: 58,
3300
3819
  columnNumber: 6
3301
3820
  }, this)
3302
3821
  ]
@@ -3305,71 +3824,71 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3305
3824
  true,
3306
3825
  {
3307
3826
  fileName: "../src/react-devtools/StateIndex.tsx",
3308
- lineNumber: 50,
3827
+ lineNumber: 53,
3309
3828
  columnNumber: 5
3310
3829
  },
3311
3830
  this
3312
3831
  ),
3313
- isPrimitive ? /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(StoreEditor, { token: node }, void 0, false, {
3832
+ isPrimitive ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(StoreEditor, { token: node }, void 0, false, {
3314
3833
  fileName: "../src/react-devtools/StateIndex.tsx",
3315
- lineNumber: 57,
3834
+ lineNumber: 60,
3316
3835
  columnNumber: 20
3317
3836
  }, this) : null
3318
3837
  ] }, void 0, true, {
3319
3838
  fileName: "../src/react-devtools/StateIndex.tsx",
3320
- lineNumber: 44,
3839
+ lineNumber: 47,
3321
3840
  columnNumber: 4
3322
3841
  }, this),
3323
- isOpen && !isPrimitive ? /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("main", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(StoreEditor, { token: node }, void 0, false, {
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, {
3324
3843
  fileName: "../src/react-devtools/StateIndex.tsx",
3325
- lineNumber: 61,
3844
+ lineNumber: 64,
3326
3845
  columnNumber: 6
3327
3846
  }, this) }, void 0, false, {
3328
3847
  fileName: "../src/react-devtools/StateIndex.tsx",
3329
- lineNumber: 60,
3848
+ lineNumber: 63,
3330
3849
  columnNumber: 5
3331
3850
  }, this) : null
3332
3851
  ] }, void 0, true, {
3333
3852
  fileName: "../src/react-devtools/StateIndex.tsx",
3334
- lineNumber: 43,
3853
+ lineNumber: 46,
3335
3854
  columnNumber: 3
3336
3855
  }, this);
3337
3856
  };
3338
3857
  var StateIndexTreeNode = ({ node, isOpenState }) => {
3339
- const [isOpen, setIsOpen] = (0, import_react7.useIO)(isOpenState);
3858
+ const [isOpen, setIsOpen] = (0, import_react8.useIO)(isOpenState);
3340
3859
  Object.entries(node.familyMembers).forEach(([key, childNode]) => {
3341
3860
  findViewIsOpenState(key);
3342
3861
  findStateTypeState(childNode);
3343
3862
  });
3344
- return /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(import_jsx_dev_runtime15.Fragment, { children: [
3345
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("header", { children: [
3346
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
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, {
3347
3866
  fileName: "../src/react-devtools/StateIndex.tsx",
3348
- lineNumber: 81,
3867
+ lineNumber: 84,
3349
3868
  columnNumber: 5
3350
3869
  }, this),
3351
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("label", { children: [
3352
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("h2", { children: node.key }, void 0, false, {
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, {
3353
3872
  fileName: "../src/react-devtools/StateIndex.tsx",
3354
- lineNumber: 83,
3873
+ lineNumber: 86,
3355
3874
  columnNumber: 6
3356
3875
  }, this),
3357
- /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("span", { className: "type detail", children: " (family)" }, void 0, false, {
3876
+ /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "type detail", children: " (family)" }, void 0, false, {
3358
3877
  fileName: "../src/react-devtools/StateIndex.tsx",
3359
- lineNumber: 84,
3878
+ lineNumber: 87,
3360
3879
  columnNumber: 6
3361
3880
  }, this)
3362
3881
  ] }, void 0, true, {
3363
3882
  fileName: "../src/react-devtools/StateIndex.tsx",
3364
- lineNumber: 82,
3883
+ lineNumber: 85,
3365
3884
  columnNumber: 5
3366
3885
  }, this)
3367
3886
  ] }, void 0, true, {
3368
3887
  fileName: "../src/react-devtools/StateIndex.tsx",
3369
- lineNumber: 80,
3888
+ lineNumber: 83,
3370
3889
  columnNumber: 4
3371
3890
  }, this),
3372
- isOpen ? Object.entries(node.familyMembers).map(([key, childNode]) => /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(
3891
+ isOpen ? Object.entries(node.familyMembers).map(([key, childNode]) => /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3373
3892
  StateIndexNode,
3374
3893
  {
3375
3894
  node: childNode,
@@ -3380,14 +3899,14 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
3380
3899
  false,
3381
3900
  {
3382
3901
  fileName: "../src/react-devtools/StateIndex.tsx",
3383
- lineNumber: 89,
3902
+ lineNumber: 92,
3384
3903
  columnNumber: 7
3385
3904
  },
3386
3905
  this
3387
3906
  )) : null
3388
3907
  ] }, void 0, true, {
3389
3908
  fileName: "../src/react-devtools/StateIndex.tsx",
3390
- lineNumber: 79,
3909
+ lineNumber: 82,
3391
3910
  columnNumber: 3
3392
3911
  }, this);
3393
3912
  };
@@ -3395,7 +3914,7 @@ var StateIndexNode = ({ node, isOpenState, typeState }) => {
3395
3914
  if (node.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)) {
3396
3915
  return null;
3397
3916
  }
3398
- return /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("section", { className: "node state", children: `type` in node ? /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(
3917
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("section", { className: "node state", children: `type` in node ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
3399
3918
  StateIndexLeafNode,
3400
3919
  {
3401
3920
  node,
@@ -3406,24 +3925,24 @@ var StateIndexNode = ({ node, isOpenState, typeState }) => {
3406
3925
  false,
3407
3926
  {
3408
3927
  fileName: "../src/react-devtools/StateIndex.tsx",
3409
- lineNumber: 114,
3928
+ lineNumber: 117,
3410
3929
  columnNumber: 5
3411
3930
  },
3412
3931
  this
3413
- ) : /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(StateIndexTreeNode, { node, isOpenState }, void 0, false, {
3932
+ ) : /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(StateIndexTreeNode, { node, isOpenState }, void 0, false, {
3414
3933
  fileName: "../src/react-devtools/StateIndex.tsx",
3415
- lineNumber: 120,
3934
+ lineNumber: 123,
3416
3935
  columnNumber: 5
3417
3936
  }, this) }, void 0, false, {
3418
3937
  fileName: "../src/react-devtools/StateIndex.tsx",
3419
- lineNumber: 112,
3938
+ lineNumber: 115,
3420
3939
  columnNumber: 3
3421
3940
  }, this);
3422
3941
  };
3423
3942
  var StateIndex = ({ tokenIndex }) => {
3424
- const tokenIds = (0, import_react7.useO)(tokenIndex);
3425
- return /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)("article", { className: "index state_index", children: Object.entries(tokenIds).filter(([key]) => !key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).sort().map(([key, node]) => {
3426
- return /* @__PURE__ */ (0, import_jsx_dev_runtime15.jsxDEV)(
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)(
3427
3946
  StateIndexNode,
3428
3947
  {
3429
3948
  node,
@@ -3434,34 +3953,34 @@ var StateIndex = ({ tokenIndex }) => {
3434
3953
  false,
3435
3954
  {
3436
3955
  fileName: "../src/react-devtools/StateIndex.tsx",
3437
- lineNumber: 143,
3956
+ lineNumber: 146,
3438
3957
  columnNumber: 7
3439
3958
  },
3440
3959
  this
3441
3960
  );
3442
3961
  }) }, void 0, false, {
3443
3962
  fileName: "../src/react-devtools/StateIndex.tsx",
3444
- lineNumber: 137,
3963
+ lineNumber: 140,
3445
3964
  columnNumber: 3
3446
3965
  }, this);
3447
3966
  };
3448
3967
 
3449
3968
  // ../src/react-devtools/TimelineIndex.tsx
3450
3969
  var import_atom9 = require("atom.io");
3451
- var import_react8 = require("atom.io/react");
3452
- var import_react9 = require("react");
3970
+ var import_react9 = require("atom.io/react");
3971
+ var import_react10 = require("react");
3453
3972
 
3454
3973
  // ../src/react-devtools/Updates.tsx
3455
- var import_jsx_dev_runtime16 = require("react/jsx-dev-runtime");
3974
+ var import_jsx_dev_runtime18 = require("react/jsx-dev-runtime");
3456
3975
  var AtomUpdateFC = ({ atomUpdate }) => {
3457
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
3976
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
3458
3977
  "article",
3459
3978
  {
3460
3979
  className: "node atom_update",
3461
3980
  onClick: () => console.log(atomUpdate),
3462
3981
  onKeyUp: () => console.log(atomUpdate),
3463
3982
  children: [
3464
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "detail", children: [
3983
+ /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: [
3465
3984
  atomUpdate.key,
3466
3985
  ": "
3467
3986
  ] }, void 0, true, {
@@ -3469,7 +3988,7 @@ var AtomUpdateFC = ({ atomUpdate }) => {
3469
3988
  lineNumber: 20,
3470
3989
  columnNumber: 4
3471
3990
  }, this),
3472
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "summary", children: prettyJson.diff(atomUpdate.oldValue, atomUpdate.newValue).summary }, void 0, false, {
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, {
3473
3992
  fileName: "../src/react-devtools/Updates.tsx",
3474
3993
  lineNumber: 22,
3475
3994
  columnNumber: 5
@@ -3491,8 +4010,8 @@ var AtomUpdateFC = ({ atomUpdate }) => {
3491
4010
  );
3492
4011
  };
3493
4012
  var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3494
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("article", { className: "node transaction_update", children: [
3495
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("header", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("h4", { children: serialNumber }, void 0, false, {
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, {
3496
4015
  fileName: "../src/react-devtools/Updates.tsx",
3497
4016
  lineNumber: 37,
3498
4017
  columnNumber: 5
@@ -3501,22 +4020,22 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3501
4020
  lineNumber: 36,
3502
4021
  columnNumber: 4
3503
4022
  }, this),
3504
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("main", { children: [
3505
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("section", { className: "transaction_params", children: [
3506
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "detail", children: "params: " }, void 0, false, {
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, {
3507
4026
  fileName: "../src/react-devtools/Updates.tsx",
3508
4027
  lineNumber: 41,
3509
4028
  columnNumber: 6
3510
4029
  }, this),
3511
4030
  transactionUpdate.params.map((param, index) => {
3512
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
4031
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
3513
4032
  "article",
3514
4033
  {
3515
4034
  className: "node transaction_param",
3516
4035
  onClick: () => console.log(transactionUpdate),
3517
4036
  onKeyUp: () => console.log(transactionUpdate),
3518
4037
  children: [
3519
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "detail", children: [
4038
+ /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: [
3520
4039
  discoverType(param),
3521
4040
  ": "
3522
4041
  ] }, void 0, true, {
@@ -3524,11 +4043,11 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3524
4043
  lineNumber: 50,
3525
4044
  columnNumber: 9
3526
4045
  }, this),
3527
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "summary", children: typeof param === `object` && `type` in param && `target` in param ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(import_jsx_dev_runtime16.Fragment, { children: JSON.stringify(param.type) }, void 0, false, {
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, {
3528
4047
  fileName: "../src/react-devtools/Updates.tsx",
3529
4048
  lineNumber: 55,
3530
4049
  columnNumber: 11
3531
- }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(import_jsx_dev_runtime16.Fragment, { children: JSON.stringify(param) }, void 0, false, {
4050
+ }, this) : /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(import_jsx_dev_runtime18.Fragment, { children: JSON.stringify(param) }, void 0, false, {
3532
4051
  fileName: "../src/react-devtools/Updates.tsx",
3533
4052
  lineNumber: 57,
3534
4053
  columnNumber: 11
@@ -3554,18 +4073,18 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3554
4073
  lineNumber: 40,
3555
4074
  columnNumber: 5
3556
4075
  }, this),
3557
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("section", { className: "node transaction_output", children: [
3558
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "detail", children: "output: " }, void 0, false, {
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, {
3559
4078
  fileName: "../src/react-devtools/Updates.tsx",
3560
4079
  lineNumber: 65,
3561
4080
  columnNumber: 6
3562
4081
  }, this),
3563
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "detail", children: discoverType(transactionUpdate.output) }, void 0, false, {
4082
+ /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail", children: discoverType(transactionUpdate.output) }, void 0, false, {
3564
4083
  fileName: "../src/react-devtools/Updates.tsx",
3565
4084
  lineNumber: 66,
3566
4085
  columnNumber: 6
3567
4086
  }, this),
3568
- transactionUpdate.output ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "summary", children: [
4087
+ transactionUpdate.output ? /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "summary", children: [
3569
4088
  ": ",
3570
4089
  JSON.stringify(transactionUpdate.output)
3571
4090
  ] }, void 0, true, {
@@ -3578,14 +4097,14 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3578
4097
  lineNumber: 64,
3579
4098
  columnNumber: 5
3580
4099
  }, this),
3581
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("section", { className: "transaction_impact", children: [
3582
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("span", { className: "detail", children: "impact: " }, void 0, false, {
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, {
3583
4102
  fileName: "../src/react-devtools/Updates.tsx",
3584
4103
  lineNumber: 76,
3585
4104
  columnNumber: 6
3586
4105
  }, this),
3587
4106
  transactionUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
3588
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
4107
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
3589
4108
  article.AtomUpdate,
3590
4109
  {
3591
4110
  serialNumber: index,
@@ -3618,8 +4137,8 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3618
4137
  }, this);
3619
4138
  };
3620
4139
  var TimelineUpdateFC = ({ timelineUpdate }) => {
3621
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("article", { className: "node timeline_update", children: [
3622
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("header", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("h4", { children: [
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: [
3623
4142
  timelineUpdate.timestamp,
3624
4143
  ": ",
3625
4144
  timelineUpdate.type,
@@ -3635,8 +4154,8 @@ var TimelineUpdateFC = ({ timelineUpdate }) => {
3635
4154
  lineNumber: 99,
3636
4155
  columnNumber: 4
3637
4156
  }, this),
3638
- /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)("main", { children: timelineUpdate.type === `transaction_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
3639
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
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)(
3640
4159
  article.AtomUpdate,
3641
4160
  {
3642
4161
  serialNumber: index,
@@ -3652,7 +4171,7 @@ var TimelineUpdateFC = ({ timelineUpdate }) => {
3652
4171
  this
3653
4172
  );
3654
4173
  }) : timelineUpdate.type === `selector_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
3655
- return /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
4174
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
3656
4175
  article.AtomUpdate,
3657
4176
  {
3658
4177
  serialNumber: index,
@@ -3667,7 +4186,7 @@ var TimelineUpdateFC = ({ timelineUpdate }) => {
3667
4186
  },
3668
4187
  this
3669
4188
  );
3670
- }) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ (0, import_jsx_dev_runtime16.jsxDEV)(
4189
+ }) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
3671
4190
  article.AtomUpdate,
3672
4191
  {
3673
4192
  serialNumber: timelineUpdate.timestamp,
@@ -3699,53 +4218,53 @@ var article = {
3699
4218
  };
3700
4219
 
3701
4220
  // ../src/react-devtools/TimelineIndex.tsx
3702
- var import_jsx_dev_runtime17 = require("react/jsx-dev-runtime");
4221
+ var import_jsx_dev_runtime19 = require("react/jsx-dev-runtime");
3703
4222
  var YouAreHere = () => {
3704
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "you_are_here", children: "you are here" }, void 0, false, {
4223
+ return /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("span", { className: "you_are_here", children: "you are here" }, void 0, false, {
3705
4224
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3706
4225
  lineNumber: 17,
3707
4226
  columnNumber: 9
3708
4227
  }, this);
3709
4228
  };
3710
4229
  var TimelineLog = ({ token, isOpenState, timelineState }) => {
3711
- const timeline = (0, import_react8.useO)(timelineState);
3712
- const [isOpen, setIsOpen] = (0, import_react8.useIO)(isOpenState);
3713
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("section", { className: "node timeline_log", children: [
3714
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("header", { children: [
3715
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
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, {
3716
4235
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3717
4236
  lineNumber: 31,
3718
4237
  columnNumber: 5
3719
4238
  }, this),
3720
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("label", { children: [
3721
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("h2", { children: token.key }, void 0, false, {
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, {
3722
4241
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3723
4242
  lineNumber: 33,
3724
4243
  columnNumber: 6
3725
4244
  }, this),
3726
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "detail length", children: [
4245
+ /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("span", { className: "detail length", children: [
3727
4246
  "(",
3728
- timeline.at,
4247
+ timeline2.at,
3729
4248
  "/",
3730
- timeline.history.length,
4249
+ timeline2.history.length,
3731
4250
  ")"
3732
4251
  ] }, void 0, true, {
3733
4252
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3734
4253
  lineNumber: 34,
3735
4254
  columnNumber: 6
3736
4255
  }, this),
3737
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("span", { className: "gap" }, void 0, false, {
4256
+ /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("span", { className: "gap" }, void 0, false, {
3738
4257
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3739
4258
  lineNumber: 37,
3740
4259
  columnNumber: 6
3741
4260
  }, this),
3742
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("nav", { children: [
3743
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
4261
+ /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("nav", { children: [
4262
+ /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
3744
4263
  "button",
3745
4264
  {
3746
4265
  type: "button",
3747
4266
  onClick: () => (0, import_atom9.undo)(token),
3748
- disabled: timeline.at === 0,
4267
+ disabled: timeline2.at === 0,
3749
4268
  children: "undo"
3750
4269
  },
3751
4270
  void 0,
@@ -3757,12 +4276,12 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3757
4276
  },
3758
4277
  this
3759
4278
  ),
3760
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
4279
+ /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
3761
4280
  "button",
3762
4281
  {
3763
4282
  type: "button",
3764
4283
  onClick: () => (0, import_atom9.redo)(token),
3765
- disabled: timeline.at === timeline.history.length,
4284
+ disabled: timeline2.at === timeline2.history.length,
3766
4285
  children: "redo"
3767
4286
  },
3768
4287
  void 0,
@@ -3789,23 +4308,23 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3789
4308
  lineNumber: 30,
3790
4309
  columnNumber: 4
3791
4310
  }, this),
3792
- isOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("main", { children: timeline.history.map((update, index) => /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(import_react9.Fragment, { children: [
3793
- index === timeline.at ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(YouAreHere, {}, void 0, false, {
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, {
3794
4313
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3795
4314
  lineNumber: 60,
3796
4315
  columnNumber: 33
3797
4316
  }, this) : null,
3798
- /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(article.TimelineUpdate, { timelineUpdate: update }, void 0, false, {
4317
+ /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(article.TimelineUpdate, { timelineUpdate: update }, void 0, false, {
3799
4318
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3800
4319
  lineNumber: 61,
3801
4320
  columnNumber: 8
3802
4321
  }, this),
3803
- index === timeline.history.length - 1 && timeline.at === timeline.history.length ? /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(YouAreHere, {}, void 0, false, {
4322
+ index === timeline2.history.length - 1 && timeline2.at === timeline2.history.length ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(YouAreHere, {}, void 0, false, {
3804
4323
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3805
4324
  lineNumber: 64,
3806
4325
  columnNumber: 9
3807
4326
  }, this) : null
3808
- ] }, update.key + index + timeline.at, true, {
4327
+ ] }, update.key + index + timeline2.at, true, {
3809
4328
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3810
4329
  lineNumber: 59,
3811
4330
  columnNumber: 7
@@ -3821,9 +4340,9 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3821
4340
  }, this);
3822
4341
  };
3823
4342
  var TimelineIndex = () => {
3824
- const tokenIds = (0, import_react8.useO)(timelineIndex);
3825
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)("article", { className: "index timeline_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
3826
- return /* @__PURE__ */ (0, import_jsx_dev_runtime17.jsxDEV)(
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)(
3827
4346
  TimelineLog,
3828
4347
  {
3829
4348
  token,
@@ -3847,25 +4366,25 @@ var TimelineIndex = () => {
3847
4366
  };
3848
4367
 
3849
4368
  // ../src/react-devtools/TransactionIndex.tsx
3850
- var import_react10 = require("atom.io/react");
3851
- var import_jsx_dev_runtime18 = require("react/jsx-dev-runtime");
4369
+ var import_react11 = require("atom.io/react");
4370
+ var import_jsx_dev_runtime20 = require("react/jsx-dev-runtime");
3852
4371
  var TransactionLog = ({ token, isOpenState, logState }) => {
3853
- const log = (0, import_react10.useO)(logState);
3854
- const [isOpen, setIsOpen] = (0, import_react10.useIO)(isOpenState);
3855
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("section", { className: "node transaction_log", children: [
3856
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("header", { children: [
3857
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
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, {
3858
4377
  fileName: "../src/react-devtools/TransactionIndex.tsx",
3859
4378
  lineNumber: 31,
3860
4379
  columnNumber: 5
3861
4380
  }, this),
3862
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("label", { children: [
3863
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("h2", { children: token.key }, void 0, false, {
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, {
3864
4383
  fileName: "../src/react-devtools/TransactionIndex.tsx",
3865
4384
  lineNumber: 33,
3866
4385
  columnNumber: 6
3867
4386
  }, this),
3868
- /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("span", { className: "detail length", children: [
4387
+ /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("span", { className: "detail length", children: [
3869
4388
  "(",
3870
4389
  log.length,
3871
4390
  ")"
@@ -3884,7 +4403,7 @@ var TransactionLog = ({ token, isOpenState, logState }) => {
3884
4403
  lineNumber: 30,
3885
4404
  columnNumber: 4
3886
4405
  }, this),
3887
- isOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("main", { children: log.map((update, index) => /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
4406
+ isOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)("main", { children: log.map((update, index) => /* @__PURE__ */ (0, import_jsx_dev_runtime20.jsxDEV)(
3888
4407
  article.TransactionUpdate,
3889
4408
  {
3890
4409
  serialNumber: index,
@@ -3910,9 +4429,9 @@ var TransactionLog = ({ token, isOpenState, logState }) => {
3910
4429
  }, this);
3911
4430
  };
3912
4431
  var TransactionIndex = () => {
3913
- const tokenIds = (0, import_react10.useO)(transactionIndex);
3914
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)("article", { className: "index transaction_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
3915
- return /* @__PURE__ */ (0, import_jsx_dev_runtime18.jsxDEV)(
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)(
3916
4435
  TransactionLog,
3917
4436
  {
3918
4437
  token,
@@ -3936,15 +4455,15 @@ var TransactionIndex = () => {
3936
4455
  };
3937
4456
 
3938
4457
  // ../src/react-devtools/AtomIODevtools.tsx
3939
- var import_jsx_dev_runtime19 = require("react/jsx-dev-runtime");
4458
+ var import_jsx_dev_runtime21 = require("react/jsx-dev-runtime");
3940
4459
  var AtomIODevtools = () => {
3941
- const constraintsRef = (0, import_react12.useRef)(null);
3942
- const [devtoolsAreOpen, setDevtoolsAreOpen] = (0, import_react11.useIO)(devtoolsAreOpenState);
3943
- const [devtoolsView, setDevtoolsView] = (0, import_react11.useIO)(devtoolsViewSelectionState);
3944
- const devtoolsViewOptions = (0, import_react11.useO)(devtoolsViewOptionsState);
3945
- const mouseHasMoved = (0, import_react12.useRef)(false);
3946
- return /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(import_jsx_dev_runtime19.Fragment, { children: [
3947
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
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)(
3948
4467
  import_framer_motion.motion.span,
3949
4468
  {
3950
4469
  ref: constraintsRef,
@@ -3962,12 +4481,12 @@ var AtomIODevtools = () => {
3962
4481
  false,
3963
4482
  {
3964
4483
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3965
- lineNumber: 30,
4484
+ lineNumber: 29,
3966
4485
  columnNumber: 4
3967
4486
  },
3968
4487
  this
3969
4488
  ),
3970
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
4489
+ /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
3971
4490
  import_framer_motion.motion.main,
3972
4491
  {
3973
4492
  drag: true,
@@ -3981,14 +4500,14 @@ var AtomIODevtools = () => {
3981
4500
  maxWidth: 33
3982
4501
  },
3983
4502
  children: [
3984
- devtoolsAreOpen ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(import_jsx_dev_runtime19.Fragment, { children: [
3985
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(import_framer_motion.motion.header, { children: [
3986
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("h1", { children: "atom.io" }, void 0, false, {
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, {
3987
4506
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3988
- lineNumber: 61,
4507
+ lineNumber: 60,
3989
4508
  columnNumber: 8
3990
4509
  }, this),
3991
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("nav", { children: devtoolsViewOptions.map((viewOption) => /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
4510
+ /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)("nav", { children: devtoolsViewOptions.map((viewOption) => /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
3992
4511
  "button",
3993
4512
  {
3994
4513
  type: "button",
@@ -4001,51 +4520,51 @@ var AtomIODevtools = () => {
4001
4520
  false,
4002
4521
  {
4003
4522
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4004
- lineNumber: 64,
4523
+ lineNumber: 63,
4005
4524
  columnNumber: 10
4006
4525
  },
4007
4526
  this
4008
4527
  )) }, void 0, false, {
4009
4528
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4010
- lineNumber: 62,
4529
+ lineNumber: 61,
4011
4530
  columnNumber: 8
4012
4531
  }, this)
4013
4532
  ] }, void 0, true, {
4014
4533
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4015
- lineNumber: 60,
4534
+ lineNumber: 59,
4016
4535
  columnNumber: 7
4017
4536
  }, this),
4018
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(import_framer_motion.motion.main, { children: /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(import_framer_motion.LayoutGroup, { children: devtoolsView === `atoms` ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(StateIndex, { tokenIndex: atomIndex }, void 0, false, {
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, {
4019
4538
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4020
- lineNumber: 79,
4539
+ lineNumber: 78,
4021
4540
  columnNumber: 10
4022
- }, this) : devtoolsView === `selectors` ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(StateIndex, { tokenIndex: selectorIndex }, void 0, false, {
4541
+ }, this) : devtoolsView === `selectors` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(StateIndex, { tokenIndex: selectorIndex }, void 0, false, {
4023
4542
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4024
- lineNumber: 81,
4543
+ lineNumber: 80,
4025
4544
  columnNumber: 10
4026
- }, this) : devtoolsView === `transactions` ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(TransactionIndex, {}, void 0, false, {
4545
+ }, this) : devtoolsView === `transactions` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(TransactionIndex, {}, void 0, false, {
4027
4546
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4028
- lineNumber: 83,
4547
+ lineNumber: 82,
4029
4548
  columnNumber: 10
4030
- }, this) : devtoolsView === `timelines` ? /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(TimelineIndex, {}, void 0, false, {
4549
+ }, this) : devtoolsView === `timelines` ? /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(TimelineIndex, {}, void 0, false, {
4031
4550
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4032
- lineNumber: 85,
4551
+ lineNumber: 84,
4033
4552
  columnNumber: 10
4034
4553
  }, this) : null }, void 0, false, {
4035
4554
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4036
- lineNumber: 77,
4555
+ lineNumber: 76,
4037
4556
  columnNumber: 8
4038
4557
  }, this) }, void 0, false, {
4039
4558
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4040
- lineNumber: 76,
4559
+ lineNumber: 75,
4041
4560
  columnNumber: 7
4042
4561
  }, this)
4043
4562
  ] }, void 0, true, {
4044
4563
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4045
- lineNumber: 59,
4564
+ lineNumber: 58,
4046
4565
  columnNumber: 6
4047
4566
  }, this) : null,
4048
- /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)("footer", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime19.jsxDEV)(
4567
+ /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)("footer", { children: /* @__PURE__ */ (0, import_jsx_dev_runtime21.jsxDEV)(
4049
4568
  "button",
4050
4569
  {
4051
4570
  type: "button",
@@ -4062,13 +4581,13 @@ var AtomIODevtools = () => {
4062
4581
  false,
4063
4582
  {
4064
4583
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4065
- lineNumber: 92,
4584
+ lineNumber: 91,
4066
4585
  columnNumber: 6
4067
4586
  },
4068
4587
  this
4069
4588
  ) }, void 0, false, {
4070
4589
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4071
- lineNumber: 91,
4590
+ lineNumber: 90,
4072
4591
  columnNumber: 5
4073
4592
  }, this)
4074
4593
  ]
@@ -4077,14 +4596,14 @@ var AtomIODevtools = () => {
4077
4596
  true,
4078
4597
  {
4079
4598
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4080
- lineNumber: 42,
4599
+ lineNumber: 41,
4081
4600
  columnNumber: 4
4082
4601
  },
4083
4602
  this
4084
4603
  )
4085
4604
  ] }, void 0, true, {
4086
4605
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
4087
- lineNumber: 29,
4606
+ lineNumber: 28,
4088
4607
  columnNumber: 3
4089
4608
  }, this);
4090
4609
  };