atom.io 0.6.7 → 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 (63) hide show
  1. package/dist/index.d.mts +27 -17
  2. package/dist/index.d.ts +27 -17
  3. package/dist/index.js +28 -22
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +28 -22
  6. package/dist/index.mjs.map +1 -1
  7. package/introspection/dist/index.d.mts +14 -15
  8. package/introspection/dist/index.d.ts +14 -15
  9. package/introspection/dist/index.js +2 -2
  10. package/introspection/dist/index.js.map +1 -1
  11. package/introspection/dist/index.mjs +2 -2
  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 +15 -7
  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 +14 -15
  21. package/react-devtools/dist/index.d.ts +14 -15
  22. package/react-devtools/dist/index.js +769 -249
  23. package/react-devtools/dist/index.js.map +1 -1
  24. package/react-devtools/dist/index.mjs +752 -227
  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/families-internal.ts +23 -20
  39. package/src/internal/index.ts +1 -1
  40. package/src/internal/selector/create-read-write-selector.ts +3 -1
  41. package/src/internal/selector/create-readonly-selector.ts +3 -1
  42. package/src/internal/time-travel-internal.ts +4 -4
  43. package/src/internal/timeline/add-atom-to-timeline.ts +2 -2
  44. package/src/internal/timeline-internal.ts +2 -2
  45. package/src/introspection/attach-timeline-family.ts +1 -1
  46. package/src/json/select-json.ts +1 -1
  47. package/src/react-devtools/StateEditor.tsx +5 -1
  48. package/src/react-devtools/StateIndex.tsx +4 -1
  49. package/src/react-devtools/devtools.scss +0 -1
  50. package/src/realtime/hook-composition/expose-family.ts +2 -2
  51. package/src/realtime/hook-composition/expose-single.ts +1 -1
  52. package/src/realtime/hook-composition/receive-state.ts +1 -1
  53. package/src/realtime-react/realtime-hooks.ts +4 -4
  54. package/src/realtime-react/use-pull-family-member.ts +2 -2
  55. package/src/realtime-react/use-pull-family.ts +2 -2
  56. package/src/realtime-react/use-pull.ts +3 -1
  57. package/src/realtime-react/use-push.ts +3 -1
  58. package/src/selector.ts +14 -12
  59. package/src/subscribe.ts +1 -1
  60. package/src/tracker/index.ts +3 -0
  61. package/src/tracker/tracker.ts +61 -0
  62. package/src/web-effects/storage.ts +1 -1
  63. package/src/internal/subject.ts +0 -24
@@ -82,6 +82,18 @@ var doNothing = () => void 0;
82
82
  var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing instanceof Function ? nextVersionOfThing(
83
83
  originalThing instanceof Function ? originalThing() : originalThing
84
84
  ) : nextVersionOfThing;
85
+ var isModifier = (validate) => (sample) => {
86
+ const sampleIsValid = validate(sample);
87
+ if (!sampleIsValid) {
88
+ throw new Error(`Invalid test case: JSON.stringify(${sample})`);
89
+ }
90
+ return (input) => {
91
+ if (typeof input !== `function`)
92
+ return false;
93
+ const testResult = input(sample);
94
+ return validate(testResult);
95
+ };
96
+ };
85
97
  var pass = (...params) => (fn) => fn(...params);
86
98
  var raiseError = (message) => {
87
99
  throw new Error(message);
@@ -914,34 +926,6 @@ function atom__INTERNAL(options, family, store = IMPLICIT.STORE) {
914
926
  return token;
915
927
  }
916
928
 
917
- // ../../anvl/src/json/index.ts
918
- import { pipe as pipe6 } from "fp-ts/function";
919
-
920
- // ../../anvl/src/json/refine.ts
921
- import { isBoolean } from "fp-ts/boolean";
922
- import { isNumber } from "fp-ts/number";
923
- import { isString as isString3 } from "fp-ts/string";
924
- var JSON_PROTOTYPES = [
925
- `Array`,
926
- `Boolean`,
927
- `Number`,
928
- `Object`,
929
- `String`
930
- ];
931
- var refineJsonType = (data) => data === null ? { type: `null`, data: null } : isBoolean(data) ? { type: `boolean`, data } : isNumber(data) ? { type: `number`, data } : isString3(data) ? { type: `string`, data } : Array.isArray(data) ? { type: `array`, data } : isPlainObject(data) ? { type: `object`, data } : raiseError(
932
- 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.`
933
- );
934
- var isJson = (input) => {
935
- var _a2;
936
- if (input === null)
937
- return true;
938
- if (input === void 0)
939
- return false;
940
- const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
941
- const isJson2 = JSON_PROTOTYPES.includes(prototype);
942
- return isJson2;
943
- };
944
-
945
929
  // ../../anvl/src/json/index.ts
946
930
  var stringifyJson = (json) => JSON.stringify(json);
947
931
  var JSON_TYPE_NAMES = [
@@ -966,20 +950,23 @@ function atomFamily__INTERNAL(options, store = IMPLICIT.STORE) {
966
950
  const subject = new Subject();
967
951
  return Object.assign(
968
952
  (key) => {
969
- var _a2;
970
953
  const subKey = stringifyJson(key);
971
954
  const family = { key: options.key, subKey };
972
955
  const fullKey = `${options.key}(${subKey})`;
973
956
  const existing = withdraw({ key: fullKey, type: `atom` }, store);
974
- const token = existing ? deposit(existing) : atom__INTERNAL(
975
- {
957
+ let token;
958
+ if (existing) {
959
+ token = deposit(existing);
960
+ } else {
961
+ const individualOptions = {
976
962
  key: fullKey,
977
- default: options.default instanceof Function ? options.default(key) : options.default,
978
- effects: (_a2 = options.effects) == null ? void 0 : _a2.call(options, key)
979
- },
980
- family,
981
- store
982
- );
963
+ default: options.default instanceof Function ? options.default(key) : options.default
964
+ };
965
+ if (options.effects) {
966
+ individualOptions.effects = options.effects(key);
967
+ }
968
+ token = atom__INTERNAL(individualOptions, family, store);
969
+ }
983
970
  subject.next(token);
984
971
  return token;
985
972
  },
@@ -1090,7 +1077,7 @@ var setState__INTERNAL = (state, value, store = IMPLICIT.STORE) => {
1090
1077
  }
1091
1078
  };
1092
1079
 
1093
- // ../src/internal/subject.ts
1080
+ // ../../anvl/reactivity/subject.ts
1094
1081
  var Subject = class {
1095
1082
  constructor() {
1096
1083
  this.subscribers = [];
@@ -1362,7 +1349,7 @@ var attachTimelineFamily = (store = __INTERNAL__3.IMPLICIT.STORE) => {
1362
1349
  return (_a2 = store.timelines.get(key)) != null ? _a2 : {
1363
1350
  key: ``,
1364
1351
  at: 0,
1365
- timeTraveling: false,
1352
+ timeTraveling: null,
1366
1353
  history: [],
1367
1354
  selectorTime: null,
1368
1355
  transactionKey: null,
@@ -1531,6 +1518,31 @@ import { useRef as useRef4 } from "react";
1531
1518
  import { getState, selectorFamily } from "atom.io";
1532
1519
  import { useO as useO2, useIO as useIO2 } from "atom.io/react";
1533
1520
 
1521
+ // ../../anvl/src/refinement/refine-json.ts
1522
+ import { isBoolean } from "fp-ts/boolean";
1523
+ import { isNumber } from "fp-ts/number";
1524
+ import { isString as isString3 } from "fp-ts/string";
1525
+ var JSON_PROTOTYPES = [
1526
+ `Array`,
1527
+ `Boolean`,
1528
+ `Number`,
1529
+ `Object`,
1530
+ `String`
1531
+ ];
1532
+ var refineJsonType = (data) => data === null ? { type: `null`, data: null } : isBoolean(data) ? { type: `boolean`, data } : isNumber(data) ? { type: `number`, data } : isString3(data) ? { type: `string`, data } : Array.isArray(data) ? { type: `array`, data } : isPlainObject(data) ? { type: `object`, data } : raiseError(
1533
+ 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.`
1534
+ );
1535
+ var isJson = (input) => {
1536
+ var _a2;
1537
+ if (input === null)
1538
+ return true;
1539
+ if (input === void 0)
1540
+ return false;
1541
+ const prototype = (_a2 = Object.getPrototypeOf(input)) == null ? void 0 : _a2.constructor.name;
1542
+ const isJson2 = JSON_PROTOTYPES.includes(prototype);
1543
+ return isJson2;
1544
+ };
1545
+
1534
1546
  // ../src/react-devtools/Button.tsx
1535
1547
  import { jsxDEV } from "react/jsx-dev-runtime";
1536
1548
  var OpenClose = ({ isOpen, setIsOpen, disabled }) => {
@@ -1560,6 +1572,15 @@ var button = {
1560
1572
  // ../src/react-devtools/StateEditor.tsx
1561
1573
  import { useO, useIO } from "atom.io/react";
1562
1574
 
1575
+ // ../../hamr/src/react-json-editor/editors-by-type/utilities/array-elements.ts
1576
+ var makeElementSetters = (data, set) => data.map(
1577
+ (value, index) => (newValue) => set(() => {
1578
+ const newData = [...data];
1579
+ newData[index] = become(newValue)(value);
1580
+ return newData;
1581
+ })
1582
+ );
1583
+
1563
1584
  // ../../hamr/src/react-elastic-input/ElasticInput.tsx
1564
1585
  import {
1565
1586
  useLayoutEffect,
@@ -1647,18 +1668,21 @@ var ElasticInput = forwardRef(function ElasticInputFC(props, ref) {
1647
1668
  });
1648
1669
 
1649
1670
  // ../../hamr/src/react-elastic-input/NumberInput.tsx
1650
- import { pipe as pipe7 } from "fp-ts/function";
1671
+ import { pipe as pipe6 } from "fp-ts/function";
1651
1672
  import { useState as useState2, useId, useRef as useRef2 } from "react";
1652
1673
 
1653
1674
  // ../../anvl/src/number/clamp.ts
1654
1675
  var clampInto = (min, max) => (value) => value < min ? min : value > max ? max : value;
1655
1676
 
1677
+ // ../../anvl/src/number/wrap.ts
1678
+ var wrapInto = (min, max) => (value) => value < min ? max - (min - value) % (max - min) : min + (value - min) % (max - min);
1679
+
1656
1680
  // ../../hamr/src/react-elastic-input/NumberInput.tsx
1657
1681
  import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
1658
1682
  function round(value, decimalPlaces) {
1659
1683
  if (decimalPlaces === void 0)
1660
1684
  return value;
1661
- const factor = Math.pow(10, decimalPlaces);
1685
+ const factor = 10 ** decimalPlaces;
1662
1686
  return Math.round(value * factor) / factor;
1663
1687
  }
1664
1688
  var VALID_NON_NUMBERS = [``, `-`, `.`, `-.`];
@@ -1686,7 +1710,7 @@ var initRefinery = (constraints) => (input) => {
1686
1710
  return null;
1687
1711
  }
1688
1712
  const { max, min, decimalPlaces } = __spreadValues(__spreadValues({}, DEFAULT_NUMBER_CONSTRAINTS), constraints);
1689
- const constrained = pipe7(
1713
+ const constrained = pipe6(
1690
1714
  input != null ? input : 0,
1691
1715
  clampInto(min, max),
1692
1716
  (n) => decimalPlaces ? round(n, decimalPlaces) : n
@@ -1753,7 +1777,7 @@ var NumberInput = ({
1753
1777
  return /* @__PURE__ */ jsxDEV3("span", { css: customCss, children: [
1754
1778
  label && /* @__PURE__ */ jsxDEV3("label", { htmlFor: id, children: label }, void 0, false, {
1755
1779
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1756
- lineNumber: 166,
1780
+ lineNumber: 168,
1757
1781
  columnNumber: 14
1758
1782
  }, this),
1759
1783
  autoSize ? /* @__PURE__ */ jsxDEV3(
@@ -1774,7 +1798,7 @@ var NumberInput = ({
1774
1798
  false,
1775
1799
  {
1776
1800
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1777
- lineNumber: 168,
1801
+ lineNumber: 170,
1778
1802
  columnNumber: 5
1779
1803
  },
1780
1804
  this
@@ -1796,14 +1820,14 @@ var NumberInput = ({
1796
1820
  false,
1797
1821
  {
1798
1822
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1799
- lineNumber: 181,
1823
+ lineNumber: 183,
1800
1824
  columnNumber: 5
1801
1825
  },
1802
1826
  this
1803
1827
  )
1804
1828
  ] }, void 0, true, {
1805
1829
  fileName: "../../hamr/src/react-elastic-input/NumberInput.tsx",
1806
- lineNumber: 165,
1830
+ lineNumber: 167,
1807
1831
  columnNumber: 3
1808
1832
  }, this);
1809
1833
  };
@@ -1866,15 +1890,6 @@ var TextInput = ({
1866
1890
  }, this);
1867
1891
  };
1868
1892
 
1869
- // ../../hamr/src/react-json-editor/editors-by-type/utilities/array-elements.ts
1870
- var makeElementSetters = (data, set) => data.map(
1871
- (value, index) => (newValue) => set(() => {
1872
- const newData = [...data];
1873
- newData[index] = become(newValue)(value);
1874
- return newData;
1875
- })
1876
- );
1877
-
1878
1893
  // ../../hamr/src/react-json-editor/editors-by-type/non-json.tsx
1879
1894
  import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
1880
1895
  var NonJsonEditor = ({ data }) => {
@@ -1929,7 +1944,7 @@ var JsonEditor_INTERNAL = ({
1929
1944
  disabled,
1930
1945
  children: /* @__PURE__ */ jsxDEV6(Components.DeleteIcon, {}, void 0, false, {
1931
1946
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1932
- lineNumber: 63,
1947
+ lineNumber: 65,
1933
1948
  columnNumber: 7
1934
1949
  }, this)
1935
1950
  },
@@ -1937,14 +1952,14 @@ var JsonEditor_INTERNAL = ({
1937
1952
  false,
1938
1953
  {
1939
1954
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1940
- lineNumber: 59,
1955
+ lineNumber: 61,
1941
1956
  columnNumber: 6
1942
1957
  },
1943
1958
  this
1944
1959
  ),
1945
1960
  HeaderDisplay && /* @__PURE__ */ jsxDEV6(HeaderDisplay, { data, schema }, void 0, false, {
1946
1961
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1947
- lineNumber: 66,
1962
+ lineNumber: 68,
1948
1963
  columnNumber: 23
1949
1964
  }, this),
1950
1965
  rename && /* @__PURE__ */ jsxDEV6(Components.KeyWrapper, { children: /* @__PURE__ */ jsxDEV6(
@@ -1958,13 +1973,13 @@ var JsonEditor_INTERNAL = ({
1958
1973
  false,
1959
1974
  {
1960
1975
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1961
- lineNumber: 69,
1976
+ lineNumber: 71,
1962
1977
  columnNumber: 7
1963
1978
  },
1964
1979
  this
1965
1980
  ) }, void 0, false, {
1966
1981
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1967
- lineNumber: 68,
1982
+ lineNumber: 70,
1968
1983
  columnNumber: 6
1969
1984
  }, this),
1970
1985
  /* @__PURE__ */ jsxDEV6(
@@ -1984,7 +1999,7 @@ var JsonEditor_INTERNAL = ({
1984
1999
  false,
1985
2000
  {
1986
2001
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
1987
- lineNumber: 76,
2002
+ lineNumber: 78,
1988
2003
  columnNumber: 5
1989
2004
  },
1990
2005
  this
@@ -1997,7 +2012,7 @@ var JsonEditor_INTERNAL = ({
1997
2012
  disabled,
1998
2013
  children: Object.keys(SubEditors).map((type) => /* @__PURE__ */ jsxDEV6("option", { value: type, children: type }, type, false, {
1999
2014
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2000
- lineNumber: 98,
2015
+ lineNumber: 100,
2001
2016
  columnNumber: 8
2002
2017
  }, this))
2003
2018
  },
@@ -2005,18 +2020,18 @@ var JsonEditor_INTERNAL = ({
2005
2020
  false,
2006
2021
  {
2007
2022
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2008
- lineNumber: 88,
2023
+ lineNumber: 90,
2009
2024
  columnNumber: 6
2010
2025
  },
2011
2026
  this
2012
2027
  ) : null
2013
2028
  ] }, void 0, true, {
2014
2029
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2015
- lineNumber: 57,
2030
+ lineNumber: 59,
2016
2031
  columnNumber: 4
2017
2032
  }, this) }, void 0, false, {
2018
2033
  fileName: "../../hamr/src/react-json-editor/json-editor-internal.tsx",
2019
- lineNumber: 56,
2034
+ lineNumber: 58,
2020
2035
  columnNumber: 3
2021
2036
  }, this);
2022
2037
  };
@@ -2069,7 +2084,7 @@ import { isNumber as isNumber2 } from "fp-ts/number";
2069
2084
  import { isString as isString6 } from "fp-ts/string";
2070
2085
 
2071
2086
  // ../../anvl/src/json-schema/integer.ts
2072
- import { pipe as pipe8 } from "fp-ts/function";
2087
+ import { pipe as pipe7 } from "fp-ts/function";
2073
2088
  var isInteger = (input) => Number.isInteger(input);
2074
2089
  var parseInteger = (input) => {
2075
2090
  if (isInteger(input))
@@ -2095,7 +2110,7 @@ var IntegerParseError = class extends Error {
2095
2110
  }
2096
2111
  };
2097
2112
  var Int = Object.assign((input) => parseInteger(input), {
2098
- from: (input) => pipe8(
2113
+ from: (input) => pipe7(
2099
2114
  input,
2100
2115
  String,
2101
2116
  parseFloat,
@@ -2396,7 +2411,7 @@ var findSubSchema = (schema) => {
2396
2411
  };
2397
2412
  };
2398
2413
 
2399
- // ../../anvl/src/json/cast.ts
2414
+ // ../../anvl/src/json/cast-json.ts
2400
2415
  var stringToBoolean = (str) => str === `true`;
2401
2416
  var stringToNumber = (str) => Number(str);
2402
2417
  var stringToArray = (str) => str.split(`,`);
@@ -2438,7 +2453,9 @@ var nullToNumber = () => 0;
2438
2453
  var nullToBoolean = () => false;
2439
2454
  var nullToArray = () => [];
2440
2455
  var nullToObject = () => ({});
2441
- var cast = (input) => {
2456
+
2457
+ // ../../anvl/src/refinement/smart-cast-json.ts
2458
+ var castToJson = (input) => {
2442
2459
  const json = refineJsonType(input);
2443
2460
  return {
2444
2461
  to: {
@@ -2555,7 +2572,7 @@ var makePropertyRemovers = (data, set) => mapObject(
2555
2572
  var makePropertyRecasters = (data, set) => mapObject(
2556
2573
  data,
2557
2574
  (value, key) => (newType) => set(() => __spreadProps(__spreadValues({}, data), {
2558
- [key]: cast(value).to[newType]()
2575
+ [key]: castToJson(value).to[newType]()
2559
2576
  }))
2560
2577
  );
2561
2578
  var makePropertyCreationInterface = (data, set) => (key, type) => (value) => set(__spreadProps(__spreadValues({}, data), { [key]: value != null ? value : JSON_DEFAULTS[type] }));
@@ -2717,7 +2734,7 @@ var ObjectEditor = ({
2717
2734
  };
2718
2735
 
2719
2736
  // ../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx
2720
- import { Fragment as Fragment3, jsxDEV as jsxDEV9 } from "react/jsx-dev-runtime";
2737
+ import { jsxDEV as jsxDEV9 } from "react/jsx-dev-runtime";
2721
2738
  var BooleanEditor = ({
2722
2739
  data,
2723
2740
  set,
@@ -2744,11 +2761,7 @@ var BooleanEditor = ({
2744
2761
  }, this);
2745
2762
  var NullEditor = ({
2746
2763
  Components
2747
- }) => /* @__PURE__ */ jsxDEV9(Components.NullWrapper, { children: /* @__PURE__ */ jsxDEV9(Fragment3, {}, void 0, false, {
2748
- fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2749
- lineNumber: 24,
2750
- columnNumber: 3
2751
- }, this) }, void 0, false, {
2764
+ }) => /* @__PURE__ */ jsxDEV9(Components.NullWrapper, { children: '" "' }, void 0, false, {
2752
2765
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2753
2766
  lineNumber: 23,
2754
2767
  columnNumber: 2
@@ -2770,13 +2783,13 @@ var NumberEditor = ({
2770
2783
  false,
2771
2784
  {
2772
2785
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2773
- lineNumber: 36,
2786
+ lineNumber: 34,
2774
2787
  columnNumber: 3
2775
2788
  },
2776
2789
  this
2777
2790
  ) }, void 0, false, {
2778
2791
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2779
- lineNumber: 35,
2792
+ lineNumber: 33,
2780
2793
  columnNumber: 2
2781
2794
  }, this);
2782
2795
  var StringEditor = ({
@@ -2797,13 +2810,13 @@ var StringEditor = ({
2797
2810
  false,
2798
2811
  {
2799
2812
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2800
- lineNumber: 53,
2813
+ lineNumber: 51,
2801
2814
  columnNumber: 4
2802
2815
  },
2803
2816
  this
2804
2817
  ) }, void 0, false, {
2805
2818
  fileName: "../../hamr/src/react-json-editor/editors-by-type/primitive-editors.tsx",
2806
- lineNumber: 52,
2819
+ lineNumber: 50,
2807
2820
  columnNumber: 3
2808
2821
  }, this);
2809
2822
  };
@@ -2894,7 +2907,7 @@ import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
2894
2907
  var ErrorBoundary = class extends Component {
2895
2908
  constructor(props) {
2896
2909
  super(props);
2897
- this.state = { error: void 0, errorInfo: void 0 };
2910
+ this.state = {};
2898
2911
  }
2899
2912
  componentDidCatch(error, errorInfo) {
2900
2913
  var _a2, _b;
@@ -2920,7 +2933,7 @@ import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
2920
2933
  var DEFAULT_JSON_EDITOR_COMPONENTS = {
2921
2934
  ErrorBoundary: ({ children }) => /* @__PURE__ */ jsxDEV12(ErrorBoundary, { children }, void 0, false, {
2922
2935
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2923
- lineNumber: 46,
2936
+ lineNumber: 49,
2924
2937
  columnNumber: 35
2925
2938
  }, this),
2926
2939
  Button: ({ onClick, children, disabled }) => /* @__PURE__ */ jsxDEV12(
@@ -2936,14 +2949,14 @@ var DEFAULT_JSON_EDITOR_COMPONENTS = {
2936
2949
  false,
2937
2950
  {
2938
2951
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2939
- lineNumber: 48,
2952
+ lineNumber: 51,
2940
2953
  columnNumber: 3
2941
2954
  },
2942
2955
  this
2943
2956
  ),
2944
2957
  EditorWrapper: ({ children, customCss, className }) => /* @__PURE__ */ jsxDEV12("div", { className: `json_editor ` + className, css: customCss, children }, void 0, false, {
2945
2958
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2946
- lineNumber: 58,
2959
+ lineNumber: 61,
2947
2960
  columnNumber: 3
2948
2961
  }, this),
2949
2962
  EditorLayout: ({
@@ -2957,98 +2970,98 @@ var DEFAULT_JSON_EDITOR_COMPONENTS = {
2957
2970
  return /* @__PURE__ */ jsxDEV12(Wrapper, { children: [
2958
2971
  DeleteButton && /* @__PURE__ */ jsxDEV12(DeleteButton, {}, void 0, false, {
2959
2972
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2960
- lineNumber: 72,
2973
+ lineNumber: 75,
2961
2974
  columnNumber: 22
2962
2975
  }, this),
2963
2976
  Header && /* @__PURE__ */ jsxDEV12(Header, {}, void 0, false, {
2964
2977
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2965
- lineNumber: 73,
2978
+ lineNumber: 76,
2966
2979
  columnNumber: 16
2967
2980
  }, this),
2968
2981
  KeyInput && /* @__PURE__ */ jsxDEV12(KeyInput, {}, void 0, false, {
2969
2982
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2970
- lineNumber: 74,
2983
+ lineNumber: 77,
2971
2984
  columnNumber: 18
2972
2985
  }, this),
2973
2986
  TypeSelect && /* @__PURE__ */ jsxDEV12(TypeSelect, {}, void 0, false, {
2974
2987
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2975
- lineNumber: 75,
2988
+ lineNumber: 78,
2976
2989
  columnNumber: 20
2977
2990
  }, this),
2978
2991
  /* @__PURE__ */ jsxDEV12(ValueEditor, {}, void 0, false, {
2979
2992
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2980
- lineNumber: 76,
2993
+ lineNumber: 79,
2981
2994
  columnNumber: 5
2982
2995
  }, this)
2983
2996
  ] }, void 0, true, {
2984
2997
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2985
- lineNumber: 71,
2998
+ lineNumber: 74,
2986
2999
  columnNumber: 4
2987
3000
  }, this);
2988
3001
  },
2989
3002
  ArrayWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("div", { className: "json_editor_array", children }, void 0, false, {
2990
3003
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2991
- lineNumber: 81,
3004
+ lineNumber: 84,
2992
3005
  columnNumber: 3
2993
3006
  }, this),
2994
3007
  ObjectWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("div", { className: "json_editor_object", children }, void 0, false, {
2995
3008
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
2996
- lineNumber: 84,
3009
+ lineNumber: 87,
2997
3010
  columnNumber: 3
2998
3011
  }, this),
2999
3012
  StringWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_string", children }, void 0, false, {
3000
3013
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3001
- lineNumber: 87,
3014
+ lineNumber: 90,
3002
3015
  columnNumber: 3
3003
3016
  }, this),
3004
3017
  NumberWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_number", children }, void 0, false, {
3005
3018
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3006
- lineNumber: 90,
3019
+ lineNumber: 93,
3007
3020
  columnNumber: 3
3008
3021
  }, this),
3009
3022
  BooleanWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_boolean", children }, void 0, false, {
3010
3023
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3011
- lineNumber: 93,
3024
+ lineNumber: 96,
3012
3025
  columnNumber: 3
3013
3026
  }, this),
3014
3027
  NullWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_null", children }, void 0, false, {
3015
3028
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3016
- lineNumber: 96,
3029
+ lineNumber: 99,
3017
3030
  columnNumber: 3
3018
3031
  }, this),
3019
3032
  MissingPropertyWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("div", { className: "json_editor_property json_editor_missing", children }, void 0, false, {
3020
3033
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3021
- lineNumber: 99,
3034
+ lineNumber: 102,
3022
3035
  columnNumber: 3
3023
3036
  }, this),
3024
3037
  MiscastPropertyWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("div", { className: "json_editor_property json_editor_miscast", children }, void 0, false, {
3025
3038
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3026
- lineNumber: 102,
3039
+ lineNumber: 105,
3027
3040
  columnNumber: 3
3028
3041
  }, this),
3029
3042
  IllegalPropertyWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_property json_editor_illegal", children }, void 0, false, {
3030
3043
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3031
- lineNumber: 105,
3044
+ lineNumber: 108,
3032
3045
  columnNumber: 3
3033
3046
  }, this),
3034
3047
  OfficialPropertyWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_property json_editor_official", children }, void 0, false, {
3035
3048
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3036
- lineNumber: 108,
3049
+ lineNumber: 111,
3037
3050
  columnNumber: 3
3038
3051
  }, this),
3039
3052
  UnofficialPropertyWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_property json_editor_unofficial", children }, void 0, false, {
3040
3053
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3041
- lineNumber: 111,
3054
+ lineNumber: 114,
3042
3055
  columnNumber: 3
3043
3056
  }, this),
3044
3057
  DeleteIcon: () => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_icon json_editor_delete", children: "x" }, void 0, false, {
3045
3058
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3046
- lineNumber: 116,
3059
+ lineNumber: 119,
3047
3060
  columnNumber: 3
3048
3061
  }, this),
3049
3062
  KeyWrapper: ({ children }) => /* @__PURE__ */ jsxDEV12("span", { className: "json_editor_key", children }, void 0, false, {
3050
3063
  fileName: "../../hamr/src/react-json-editor/default-components.tsx",
3051
- lineNumber: 119,
3064
+ lineNumber: 122,
3052
3065
  columnNumber: 3
3053
3066
  }, this)
3054
3067
  };
@@ -3099,7 +3112,7 @@ var JsonEditor = ({
3099
3112
  false,
3100
3113
  {
3101
3114
  fileName: "../../hamr/src/react-json-editor/developer-interface.tsx",
3102
- lineNumber: 78,
3115
+ lineNumber: 77,
3103
3116
  columnNumber: 3
3104
3117
  },
3105
3118
  this
@@ -3116,15 +3129,527 @@ var SubEditors = {
3116
3129
  string: StringEditor
3117
3130
  };
3118
3131
 
3132
+ // ../../hamr/src/react-data-designer/RelationEditor.module.scss
3133
+ var RelationEditor_module_default = {};
3134
+
3135
+ // ../../hamr/src/react-id/Id.tsx
3136
+ import {
3137
+ FloatingPortal,
3138
+ useClick,
3139
+ useFloating,
3140
+ useInteractions
3141
+ } from "@floating-ui/react";
3142
+ import { pipe as pipe12 } from "fp-ts/function";
3143
+ import * as React from "react";
3144
+
3145
+ // ../../anvl/src/string/string-to-color.ts
3146
+ function stringToColor(input) {
3147
+ let hash = 0;
3148
+ for (let i = 0; i < input.length; i++) {
3149
+ const char = input.charCodeAt(i);
3150
+ hash = (hash << 5) - hash + char;
3151
+ hash |= 0;
3152
+ }
3153
+ let hexColor = (hash & 16777215).toString(16);
3154
+ while (hexColor.length < 6) {
3155
+ hexColor = `0` + hexColor;
3156
+ }
3157
+ return `#${hexColor}`;
3158
+ }
3159
+
3160
+ // ../../luum/src/constants/index.ts
3161
+ var CHANNEL_SPECIFIC_LUM = {
3162
+ R: 0.3,
3163
+ G: 0.5,
3164
+ B: 0.2
3165
+ };
3166
+
3167
+ // ../../luum/src/constants/filters.ts
3168
+ var unfiltered = [
3169
+ { sat: 255, hue: 0 },
3170
+ { sat: 255, hue: 360 }
3171
+ ];
3172
+
3173
+ // ../../luum/src/export/channelsToHex.ts
3174
+ var channelsToHex = (channels) => `#${Object.values(channels).map((channel) => {
3175
+ let channelHex = channel.toString(16);
3176
+ if (channelHex.length === 1)
3177
+ channelHex = 0 + channelHex;
3178
+ return channelHex;
3179
+ }).join(``)}`;
3180
+ var channelsToHex_default = channelsToHex;
3181
+
3182
+ // ../../luum/src/import/hueToRelativeChannels.ts
3183
+ var hueToRelativeChannels_default = (hue) => {
3184
+ const hueWrapped = wrapInto(0, 360)(hue);
3185
+ const hueReduced = hueWrapped / 60;
3186
+ const hueInteger = Math.floor(hueReduced);
3187
+ const hueDecimal = hueReduced - hueInteger;
3188
+ const x = hueDecimal;
3189
+ const y = 1 - hueDecimal;
3190
+ switch (hueInteger) {
3191
+ case 0:
3192
+ return [1, x, 0];
3193
+ case 1:
3194
+ return [y, 1, 0];
3195
+ case 2:
3196
+ return [0, 1, x];
3197
+ case 3:
3198
+ return [0, y, 1];
3199
+ case 4:
3200
+ return [x, 0, 1];
3201
+ case 5:
3202
+ return [1, 0, y];
3203
+ default:
3204
+ throw new Error(`invalid hue served: ${hue}`);
3205
+ }
3206
+ };
3207
+
3208
+ // ../../luum/src/solveFor/hueFromChannels.ts
3209
+ var hueFromChannels = ({ R, G, B }) => {
3210
+ let hue = 0;
3211
+ if (R > G && G >= B)
3212
+ hue = 60 * (0 + (G - B) / (R - B));
3213
+ if (G >= R && R > B)
3214
+ hue = 60 * (2 - (R - B) / (G - B));
3215
+ if (G > B && B >= R)
3216
+ hue = 60 * (2 + (B - R) / (G - R));
3217
+ if (B >= G && G > R)
3218
+ hue = 60 * (4 - (G - R) / (B - R));
3219
+ if (B > R && R >= G)
3220
+ hue = 60 * (4 + (R - G) / (B - G));
3221
+ if (R >= B && B > G)
3222
+ hue = 60 * (6 - (B - G) / (R - G));
3223
+ return hue;
3224
+ };
3225
+ var hueFromChannels_default = hueFromChannels;
3226
+
3227
+ // ../../luum/src/solveFor/lumFromChannels.ts
3228
+ var lumFromChannels = ({ R, G, B }) => {
3229
+ const lum = CHANNEL_SPECIFIC_LUM.R * R / 255 + CHANNEL_SPECIFIC_LUM.G * G / 255 + CHANNEL_SPECIFIC_LUM.B * B / 255;
3230
+ return lum;
3231
+ };
3232
+ var lumFromChannels_default = lumFromChannels;
3233
+
3234
+ // ../../luum/src/solveFor/maxSatForHueInFilter.ts
3235
+ var maxSatForHueInFilter_default = (hue, filter) => {
3236
+ let maxSat = 255;
3237
+ const hueWrapped = wrapInto(0, 360)(hue);
3238
+ for (let a2 = -1, b2 = 0; b2 < filter.length; a2++, b2++) {
3239
+ a2 = wrapInto(0, filter.length)(a2);
3240
+ const hueDoubleWrapped = a2 > b2 ? wrapInto(-180, 180)(hueWrapped) : void 0;
3241
+ const tuningPointA = filter[a2];
3242
+ const tuningPointB = filter[b2];
3243
+ const hueA = a2 > b2 ? wrapInto(-180, 180)(tuningPointA.hue) : tuningPointA.hue;
3244
+ const hueB = tuningPointB.hue;
3245
+ if ((hueDoubleWrapped || hueWrapped) >= hueA && (hueDoubleWrapped || hueWrapped) < hueB) {
3246
+ let $ = hueDoubleWrapped || hueWrapped;
3247
+ $ -= hueA;
3248
+ $ /= hueB - hueA;
3249
+ $ *= tuningPointB.sat - tuningPointA.sat;
3250
+ $ += tuningPointA.sat;
3251
+ Math.round($);
3252
+ maxSat = $;
3253
+ }
3254
+ }
3255
+ return maxSat;
3256
+ };
3257
+
3258
+ // ../../luum/src/solveFor/satFromChannels.ts
3259
+ var satFromChannels = ({ R, G, B }) => {
3260
+ const sat = Math.max(R, G, B) - Math.min(R, G, B);
3261
+ return sat;
3262
+ };
3263
+ var satFromChannels_default = satFromChannels;
3264
+
3265
+ // ../../luum/src/solveFor/specificLumFromHue.ts
3266
+ var specificLumFromHue_default = (hue) => {
3267
+ const [factorR, factorG, factorB] = hueToRelativeChannels_default(hue);
3268
+ const lumR = CHANNEL_SPECIFIC_LUM.R * factorR;
3269
+ const lumG = CHANNEL_SPECIFIC_LUM.G * factorG;
3270
+ const lumB = CHANNEL_SPECIFIC_LUM.B * factorB;
3271
+ const specificLum = lumR + lumG + lumB;
3272
+ return specificLum;
3273
+ };
3274
+
3275
+ // ../../luum/src/export/specToChannelsFixLimit.ts
3276
+ var minChannelsForSaturationFromHue = (hue) => {
3277
+ const relativeChannels = hueToRelativeChannels_default(hue);
3278
+ const channelSpreader = (trueSaturation) => {
3279
+ const makeMinChannel = (idx) => Math.round(relativeChannels[idx] * trueSaturation);
3280
+ return {
3281
+ R: makeMinChannel(0),
3282
+ G: makeMinChannel(1),
3283
+ B: makeMinChannel(2)
3284
+ };
3285
+ };
3286
+ return channelSpreader;
3287
+ };
3288
+ var channelsFromIlluminationObj = ({
3289
+ minChannels,
3290
+ trueLuminosity,
3291
+ minLum
3292
+ }) => {
3293
+ const { max, round: round2 } = Math;
3294
+ const maxWhite = 255 - max(...Object.values(minChannels));
3295
+ const white = clampInto(0, maxWhite)(round2((trueLuminosity - minLum) * 255));
3296
+ const channels = {
3297
+ R: minChannels.R + white,
3298
+ G: minChannels.G + white,
3299
+ B: minChannels.B + white
3300
+ };
3301
+ return channels;
3302
+ };
3303
+ var specToChannelsFixLimit = ({ hue, sat, lum, prefer = `lum` }, filter = unfiltered) => {
3304
+ const minChannelsForSaturation = minChannelsForSaturationFromHue(hue);
3305
+ let trueSaturation;
3306
+ let trueLuminosity;
3307
+ let minChannels;
3308
+ let maxChannels;
3309
+ let specificLum;
3310
+ let minLum = 0;
3311
+ let maxLum = 1;
3312
+ let maxSat = maxSatForHueInFilter_default(hue, filter);
3313
+ switch (prefer) {
3314
+ case `sat`:
3315
+ trueSaturation = clampInto(0, 255)(Math.min(sat, maxSat));
3316
+ minChannels = minChannelsForSaturation(trueSaturation);
3317
+ maxChannels = {
3318
+ R: minChannels.R + 255 - trueSaturation,
3319
+ G: minChannels.G + 255 - trueSaturation,
3320
+ B: minChannels.B + 255 - trueSaturation
3321
+ };
3322
+ minLum = lumFromChannels_default(minChannels);
3323
+ maxLum = lumFromChannels_default(maxChannels);
3324
+ trueLuminosity = clampInto(minLum, maxLum)(lum);
3325
+ break;
3326
+ case `lum`:
3327
+ trueLuminosity = clampInto(0, 1)(lum);
3328
+ specificLum = specificLumFromHue_default(hue);
3329
+ maxSat = Math.min(
3330
+ maxSat,
3331
+ Math.round(
3332
+ trueLuminosity <= specificLum ? 255 * (trueLuminosity / specificLum) : 255 * (1 - trueLuminosity) / (1 - specificLum)
3333
+ )
3334
+ );
3335
+ trueSaturation = Math.min(sat, maxSat);
3336
+ minChannels = minChannelsForSaturation(trueSaturation);
3337
+ minLum = lumFromChannels_default(minChannels);
3338
+ break;
3339
+ }
3340
+ const channels = channelsFromIlluminationObj({
3341
+ minChannels,
3342
+ trueLuminosity,
3343
+ minLum
3344
+ });
3345
+ return {
3346
+ channels,
3347
+ fix: {
3348
+ sat: trueSaturation,
3349
+ lum: trueLuminosity
3350
+ },
3351
+ limit: {
3352
+ sat: [0, maxSat],
3353
+ lum: [prefer === `lum` ? 0 : minLum, maxLum]
3354
+ }
3355
+ };
3356
+ };
3357
+ var specToChannelsFixLimit_default = specToChannelsFixLimit;
3358
+
3359
+ // ../../luum/src/export/specToHexFixLimit.ts
3360
+ var specToHexFixLimit = ({ hue, sat, lum, prefer }, filter) => {
3361
+ const { channels, fix, limit } = specToChannelsFixLimit_default(
3362
+ {
3363
+ hue,
3364
+ sat,
3365
+ lum,
3366
+ prefer
3367
+ },
3368
+ filter
3369
+ );
3370
+ const { R, G, B } = channels;
3371
+ const hex = channelsToHex_default({ R, G, B });
3372
+ return { hex, fix, limit };
3373
+ };
3374
+ var specToHexFixLimit_default = specToHexFixLimit;
3375
+
3376
+ // ../../luum/src/export/specToHex.ts
3377
+ var specToHex = ({ hue, sat, lum, prefer }, filter) => {
3378
+ const { hex } = specToHexFixLimit_default({ hue, sat, lum, prefer }, filter);
3379
+ return hex;
3380
+ };
3381
+ var specToHex_default = specToHex;
3382
+
3383
+ // ../../luum/src/import/channelsToSpec.ts
3384
+ var channelsToSpec = ({ R, G, B }) => {
3385
+ const hue = hueFromChannels_default({ R, G, B });
3386
+ const sat = satFromChannels_default({ R, G, B });
3387
+ const lum = lumFromChannels_default({ R, G, B });
3388
+ return { hue, sat, lum };
3389
+ };
3390
+ var channelsToSpec_default = channelsToSpec;
3391
+
3392
+ // ../../luum/src/import/normalizeHex.ts
3393
+ var BASE_16_CHAR_SET = `[a-fA-F0-9]+`;
3394
+ var miniHexToHex = (miniHex) => {
3395
+ const miniHexArray = miniHex.split(``);
3396
+ const hexTemplate = [0, 0, 1, 1, 2, 2];
3397
+ return hexTemplate.map((idx) => miniHexArray[idx]).join(``);
3398
+ };
3399
+ var normalizeHex = (maybeHex) => {
3400
+ const hex = maybeHex.replace(/^#/, ``);
3401
+ const hexIsCorrectLength = hex.length === 6 || hex.length === 3;
3402
+ const hexIsCorrectCharSet = hex.match(new RegExp(`^${BASE_16_CHAR_SET}$`)) !== null;
3403
+ const hexIsValid = hexIsCorrectLength && hexIsCorrectCharSet;
3404
+ if (!hexIsValid) {
3405
+ throw new Error(`${maybeHex} is not a valid hex code`);
3406
+ }
3407
+ if (hex.length === 3) {
3408
+ return miniHexToHex(hex);
3409
+ }
3410
+ return hex;
3411
+ };
3412
+ var normalizeHex_default = normalizeHex;
3413
+
3414
+ // ../../luum/src/import/hexToChannels.ts
3415
+ var hexToChannels_default = (maybeHex) => {
3416
+ const hex = normalizeHex_default(maybeHex);
3417
+ return {
3418
+ R: parseInt(hex.slice(0, 2), 16),
3419
+ G: parseInt(hex.slice(2, 4), 16),
3420
+ B: parseInt(hex.slice(4, 6), 16)
3421
+ };
3422
+ };
3423
+
3424
+ // ../../luum/src/import/hexToSpec.ts
3425
+ var hexToSpec = (hex) => {
3426
+ const { R, G, B } = hexToChannels_default(hex);
3427
+ const { hue, sat, lum } = channelsToSpec_default({ R, G, B });
3428
+ return { hue, sat, lum };
3429
+ };
3430
+ var hexToSpec_default = hexToSpec;
3431
+
3432
+ // ../../luum/src/mixers/lum.ts
3433
+ import { pipe as pipe8 } from "fp-ts/function";
3434
+ var resetColor = (color) => pipe8(color, specToHex_default, hexToSpec_default, (hsl) => __spreadProps(__spreadValues({}, hsl), {
3435
+ prefer: color.prefer
3436
+ }));
3437
+ var setLum = (newLum) => (currentColor) => {
3438
+ const newColor = __spreadProps(__spreadValues({}, currentColor), {
3439
+ lum: pipe8(currentColor.lum, become(newLum), clampInto(0, 1))
3440
+ });
3441
+ return newColor;
3442
+ };
3443
+ var shadeBy = (shadeAmount) => (color) => setLum((lum) => (lum * 100 - shadeAmount) / 100)(resetColor(color));
3444
+
3445
+ // ../../luum/src/mixers/sat.ts
3446
+ import { pipe as pipe9 } from "fp-ts/function";
3447
+
3448
+ // ../../luum/src/mixers/hue.ts
3449
+ import { pipe as pipe10 } from "fp-ts/function";
3450
+
3451
+ // ../../luum/src/mixers/contrast.ts
3452
+ var contrastMax = (color) => __spreadProps(__spreadValues({}, color), {
3453
+ lum: color.lum > 0.666 ? 0 : 1
3454
+ });
3455
+ var offset = (offsetAmount) => (color) => __spreadProps(__spreadValues({}, color), {
3456
+ lum: color.lum > 0.666 ? color.lum - offsetAmount : color.lum + offsetAmount
3457
+ });
3458
+
3459
+ // ../../luum/src/scheme/index.ts
3460
+ import { pipe as pipe11 } from "fp-ts/function";
3461
+ import { isString as isString7 } from "fp-ts/string";
3462
+
3463
+ // ../../luum/src/constants/luum-spec.ts
3464
+ var defaultSpec = {
3465
+ hue: 0,
3466
+ lum: 0,
3467
+ sat: 0,
3468
+ prefer: `lum`
3469
+ };
3470
+
3471
+ // ../../luum/src/scheme/index.ts
3472
+ 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);
3473
+ var isLuumSpecModifier = isModifier(isLuumSpec)(defaultSpec);
3474
+ var RED = {
3475
+ hue: 0,
3476
+ sat: 255,
3477
+ lum: 0.5,
3478
+ prefer: `sat`
3479
+ };
3480
+ var WAYFORGE_CORE_COLOR_NAMES = [
3481
+ `Red`,
3482
+ `Orange`,
3483
+ `Yellow`,
3484
+ `Lime`,
3485
+ `Green`,
3486
+ `Teal`,
3487
+ `Cyan`,
3488
+ `Blue`,
3489
+ `Indigo`,
3490
+ `Violet`,
3491
+ `Magenta`,
3492
+ `Pink`
3493
+ ];
3494
+ var WAYFORGE_CORE_COLORS = WAYFORGE_CORE_COLOR_NAMES.reduce((acc, name, idx) => {
3495
+ acc[name] = {
3496
+ hue: idx * 30,
3497
+ sat: 255,
3498
+ lum: 0.5,
3499
+ prefer: `sat`
3500
+ };
3501
+ return acc;
3502
+ }, {});
3503
+ var PAINT_MY_WAGON_RED = {
3504
+ rootSelectors: [`.wagon`],
3505
+ root: RED,
3506
+ attributes: [`background-color`, shadeBy(5)],
3507
+ states: [
3508
+ [
3509
+ [`:hover`, `:focus`],
3510
+ [`background-color`, shadeBy(10)]
3511
+ ],
3512
+ [`:active`, [`background-color`, shadeBy(15)]]
3513
+ ]
3514
+ };
3515
+
3516
+ // ../../hamr/src/react-id/Id.tsx
3517
+ import { Fragment as Fragment3, jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
3518
+ var Id = ({ id }) => {
3519
+ const [isOpen, setIsOpen] = React.useState(false);
3520
+ const { refs, floatingStyles, context } = useFloating({
3521
+ open: isOpen,
3522
+ onOpenChange: setIsOpen,
3523
+ placement: `bottom-start`
3524
+ });
3525
+ const click = useClick(context);
3526
+ const { getReferenceProps, getFloatingProps } = useInteractions([click]);
3527
+ const bgColor = stringToColor(id);
3528
+ const contrastColor = pipe12(bgColor, hexToSpec_default, contrastMax, specToHex_default);
3529
+ const offsetColor = pipe12(bgColor, hexToSpec_default, offset(0.25), specToHex_default);
3530
+ const contrastOffsetColor = pipe12(
3531
+ offsetColor,
3532
+ hexToSpec_default,
3533
+ contrastMax,
3534
+ specToHex_default
3535
+ );
3536
+ return /* @__PURE__ */ jsxDEV14(Fragment3, { children: [
3537
+ /* @__PURE__ */ jsxDEV14(
3538
+ "span",
3539
+ __spreadProps(__spreadValues({
3540
+ role: "content",
3541
+ ref: refs.setReference
3542
+ }, getReferenceProps()), {
3543
+ style: {
3544
+ background: bgColor,
3545
+ cursor: `pointer`,
3546
+ padding: `0px 4px`,
3547
+ color: contrastColor,
3548
+ userSelect: `none`,
3549
+ whiteSpace: `nowrap`
3550
+ },
3551
+ children: id.substring(0, 3)
3552
+ }),
3553
+ void 0,
3554
+ false,
3555
+ {
3556
+ fileName: "../../hamr/src/react-id/Id.tsx",
3557
+ lineNumber: 36,
3558
+ columnNumber: 4
3559
+ },
3560
+ this
3561
+ ),
3562
+ isOpen && /* @__PURE__ */ jsxDEV14(FloatingPortal, { children: /* @__PURE__ */ jsxDEV14(
3563
+ "span",
3564
+ __spreadProps(__spreadValues({
3565
+ role: "popup",
3566
+ ref: refs.setFloating
3567
+ }, getFloatingProps()), {
3568
+ style: __spreadProps(__spreadValues({}, floatingStyles), {
3569
+ color: contrastOffsetColor,
3570
+ background: offsetColor,
3571
+ padding: `0px 4px`,
3572
+ boxShadow: `0px 2px 10px rgba(0, 0, 0, 0.1)`
3573
+ }),
3574
+ children: id
3575
+ }),
3576
+ void 0,
3577
+ false,
3578
+ {
3579
+ fileName: "../../hamr/src/react-id/Id.tsx",
3580
+ lineNumber: 53,
3581
+ columnNumber: 6
3582
+ },
3583
+ this
3584
+ ) }, void 0, false, {
3585
+ fileName: "../../hamr/src/react-id/Id.tsx",
3586
+ lineNumber: 52,
3587
+ columnNumber: 5
3588
+ }, this)
3589
+ ] }, void 0, true, {
3590
+ fileName: "../../hamr/src/react-id/Id.tsx",
3591
+ lineNumber: 35,
3592
+ columnNumber: 3
3593
+ }, this);
3594
+ };
3595
+
3596
+ // ../../hamr/src/react-data-designer/RelationEditor.tsx
3597
+ import { jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
3598
+ var RelationEditor = (props) => {
3599
+ const seen = /* @__PURE__ */ new Set();
3600
+ const data = Object.entries(props.data.relations).sort(([_, a2], [__, b2]) => b2.length - a2.length).filter(([head, tail]) => {
3601
+ if (seen.has(head))
3602
+ return false;
3603
+ seen.add(head);
3604
+ for (const tailElement of tail) {
3605
+ seen.add(tailElement);
3606
+ }
3607
+ return true;
3608
+ });
3609
+ return /* @__PURE__ */ jsxDEV15("article", { className: RelationEditor_module_default.class, children: data.map(([head, tail]) => /* @__PURE__ */ jsxDEV15("section", { children: [
3610
+ /* @__PURE__ */ jsxDEV15("span", { children: /* @__PURE__ */ jsxDEV15(Id, { id: head }, void 0, false, {
3611
+ fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3612
+ lineNumber: 26,
3613
+ columnNumber: 7
3614
+ }, this) }, void 0, false, {
3615
+ fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3616
+ lineNumber: 25,
3617
+ columnNumber: 6
3618
+ }, this),
3619
+ ":",
3620
+ /* @__PURE__ */ jsxDEV15("span", { children: tail.map((child) => /* @__PURE__ */ jsxDEV15(Id, { id: child }, void 0, false, {
3621
+ fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3622
+ lineNumber: 31,
3623
+ columnNumber: 8
3624
+ }, this)) }, void 0, false, {
3625
+ fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3626
+ lineNumber: 29,
3627
+ columnNumber: 6
3628
+ }, this)
3629
+ ] }, void 0, true, {
3630
+ fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3631
+ lineNumber: 24,
3632
+ columnNumber: 5
3633
+ }, this)) }, void 0, false, {
3634
+ fileName: "../../hamr/src/react-data-designer/RelationEditor.tsx",
3635
+ lineNumber: 21,
3636
+ columnNumber: 3
3637
+ }, this);
3638
+ };
3639
+
3119
3640
  // ../src/react-devtools/StateEditor.tsx
3120
- import { jsxDEV as jsxDEV14 } from "react/jsx-dev-runtime";
3641
+ import { jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
3121
3642
  var StateEditor = ({ token }) => {
3122
3643
  const [data, set] = useIO(token);
3123
- return isJson(data) ? /* @__PURE__ */ jsxDEV14(JsonEditor, { data, set, schema: true }, void 0, false, {
3644
+ return isJson(data) ? /* @__PURE__ */ jsxDEV16(JsonEditor, { data, set, schema: true }, void 0, false, {
3124
3645
  fileName: "../src/react-devtools/StateEditor.tsx",
3125
- lineNumber: 15,
3646
+ lineNumber: 17,
3126
3647
  columnNumber: 3
3127
- }, this) : /* @__PURE__ */ jsxDEV14("div", { className: "json_editor", children: /* @__PURE__ */ jsxDEV14(
3648
+ }, this) : data instanceof Join ? /* @__PURE__ */ jsxDEV16(RelationEditor, { data, set }, void 0, false, {
3649
+ fileName: "../src/react-devtools/StateEditor.tsx",
3650
+ lineNumber: 19,
3651
+ columnNumber: 3
3652
+ }, this) : /* @__PURE__ */ jsxDEV16("div", { className: "json_editor", children: /* @__PURE__ */ jsxDEV16(
3128
3653
  ElasticInput,
3129
3654
  {
3130
3655
  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), `?`),
@@ -3134,19 +3659,19 @@ var StateEditor = ({ token }) => {
3134
3659
  false,
3135
3660
  {
3136
3661
  fileName: "../src/react-devtools/StateEditor.tsx",
3137
- lineNumber: 18,
3662
+ lineNumber: 22,
3138
3663
  columnNumber: 4
3139
3664
  },
3140
3665
  this
3141
3666
  ) }, void 0, false, {
3142
3667
  fileName: "../src/react-devtools/StateEditor.tsx",
3143
- lineNumber: 17,
3668
+ lineNumber: 21,
3144
3669
  columnNumber: 3
3145
3670
  }, this);
3146
3671
  };
3147
3672
  var ReadonlySelectorViewer = ({ token }) => {
3148
3673
  const data = useO(token);
3149
- return isJson(data) ? /* @__PURE__ */ jsxDEV14(
3674
+ return isJson(data) ? /* @__PURE__ */ jsxDEV16(
3150
3675
  JsonEditor,
3151
3676
  {
3152
3677
  data,
@@ -3158,11 +3683,11 @@ var ReadonlySelectorViewer = ({ token }) => {
3158
3683
  false,
3159
3684
  {
3160
3685
  fileName: "../src/react-devtools/StateEditor.tsx",
3161
- lineNumber: 39,
3686
+ lineNumber: 43,
3162
3687
  columnNumber: 3
3163
3688
  },
3164
3689
  this
3165
- ) : /* @__PURE__ */ jsxDEV14("div", { className: "json_editor", children: /* @__PURE__ */ jsxDEV14(
3690
+ ) : /* @__PURE__ */ jsxDEV16("div", { className: "json_editor", children: /* @__PURE__ */ jsxDEV16(
3166
3691
  ElasticInput,
3167
3692
  {
3168
3693
  value: data instanceof Set ? `Set ` + JSON.stringify([...data]) : data instanceof Map ? `Map ` + JSON.stringify([...data]) : Object.getPrototypeOf(data).constructor.name + ` ` + JSON.stringify(data),
@@ -3172,33 +3697,33 @@ var ReadonlySelectorViewer = ({ token }) => {
3172
3697
  false,
3173
3698
  {
3174
3699
  fileName: "../src/react-devtools/StateEditor.tsx",
3175
- lineNumber: 47,
3700
+ lineNumber: 51,
3176
3701
  columnNumber: 4
3177
3702
  },
3178
3703
  this
3179
3704
  ) }, void 0, false, {
3180
3705
  fileName: "../src/react-devtools/StateEditor.tsx",
3181
- lineNumber: 46,
3706
+ lineNumber: 50,
3182
3707
  columnNumber: 3
3183
3708
  }, this);
3184
3709
  };
3185
3710
  var StoreEditor = ({ token }) => {
3186
3711
  if (token.type === `readonly_selector`) {
3187
- return /* @__PURE__ */ jsxDEV14(ReadonlySelectorViewer, { token }, void 0, false, {
3712
+ return /* @__PURE__ */ jsxDEV16(ReadonlySelectorViewer, { token }, void 0, false, {
3188
3713
  fileName: "../src/react-devtools/StateEditor.tsx",
3189
- lineNumber: 67,
3714
+ lineNumber: 71,
3190
3715
  columnNumber: 10
3191
3716
  }, this);
3192
3717
  }
3193
- return /* @__PURE__ */ jsxDEV14(StateEditor, { token }, void 0, false, {
3718
+ return /* @__PURE__ */ jsxDEV16(StateEditor, { token }, void 0, false, {
3194
3719
  fileName: "../src/react-devtools/StateEditor.tsx",
3195
- lineNumber: 69,
3720
+ lineNumber: 73,
3196
3721
  columnNumber: 9
3197
3722
  }, this);
3198
3723
  };
3199
3724
 
3200
3725
  // ../src/react-devtools/StateIndex.tsx
3201
- import { Fragment as Fragment4, jsxDEV as jsxDEV15 } from "react/jsx-dev-runtime";
3726
+ import { Fragment as Fragment4, jsxDEV as jsxDEV17 } from "react/jsx-dev-runtime";
3202
3727
  var findStateTypeState = selectorFamily({
3203
3728
  key: `\u{1F441}\u200D\u{1F5E8} State Type`,
3204
3729
  get: (token) => ({ get }) => {
@@ -3221,9 +3746,9 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3221
3746
  const state = useO2(node);
3222
3747
  const stateType = useO2(typeState);
3223
3748
  const isPrimitive = Boolean(primitiveRefinery.refine(state));
3224
- return /* @__PURE__ */ jsxDEV15(Fragment4, { children: [
3225
- /* @__PURE__ */ jsxDEV15("header", { children: [
3226
- /* @__PURE__ */ jsxDEV15(
3749
+ return /* @__PURE__ */ jsxDEV17(Fragment4, { children: [
3750
+ /* @__PURE__ */ jsxDEV17("header", { children: [
3751
+ /* @__PURE__ */ jsxDEV17(
3227
3752
  button.OpenClose,
3228
3753
  {
3229
3754
  isOpen: isOpen && !isPrimitive,
@@ -3234,29 +3759,29 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3234
3759
  false,
3235
3760
  {
3236
3761
  fileName: "../src/react-devtools/StateIndex.tsx",
3237
- lineNumber: 45,
3762
+ lineNumber: 48,
3238
3763
  columnNumber: 5
3239
3764
  },
3240
3765
  this
3241
3766
  ),
3242
- /* @__PURE__ */ jsxDEV15(
3767
+ /* @__PURE__ */ jsxDEV17(
3243
3768
  "label",
3244
3769
  {
3245
3770
  onClick: () => console.log(node, getState(node)),
3246
3771
  onKeyUp: () => console.log(node, getState(node)),
3247
3772
  children: [
3248
- /* @__PURE__ */ jsxDEV15("h2", { children: (_b = (_a2 = node.family) == null ? void 0 : _a2.subKey) != null ? _b : node.key }, void 0, false, {
3773
+ /* @__PURE__ */ jsxDEV17("h2", { children: (_b = (_a2 = node.family) == null ? void 0 : _a2.subKey) != null ? _b : node.key }, void 0, false, {
3249
3774
  fileName: "../src/react-devtools/StateIndex.tsx",
3250
- lineNumber: 54,
3775
+ lineNumber: 57,
3251
3776
  columnNumber: 6
3252
3777
  }, this),
3253
- /* @__PURE__ */ jsxDEV15("span", { className: "type detail", children: [
3778
+ /* @__PURE__ */ jsxDEV17("span", { className: "type detail", children: [
3254
3779
  "(",
3255
3780
  stateType,
3256
3781
  ")"
3257
3782
  ] }, void 0, true, {
3258
3783
  fileName: "../src/react-devtools/StateIndex.tsx",
3259
- lineNumber: 55,
3784
+ lineNumber: 58,
3260
3785
  columnNumber: 6
3261
3786
  }, this)
3262
3787
  ]
@@ -3265,33 +3790,33 @@ var StateIndexLeafNode = ({ node, isOpenState, typeState }) => {
3265
3790
  true,
3266
3791
  {
3267
3792
  fileName: "../src/react-devtools/StateIndex.tsx",
3268
- lineNumber: 50,
3793
+ lineNumber: 53,
3269
3794
  columnNumber: 5
3270
3795
  },
3271
3796
  this
3272
3797
  ),
3273
- isPrimitive ? /* @__PURE__ */ jsxDEV15(StoreEditor, { token: node }, void 0, false, {
3798
+ isPrimitive ? /* @__PURE__ */ jsxDEV17(StoreEditor, { token: node }, void 0, false, {
3274
3799
  fileName: "../src/react-devtools/StateIndex.tsx",
3275
- lineNumber: 57,
3800
+ lineNumber: 60,
3276
3801
  columnNumber: 20
3277
3802
  }, this) : null
3278
3803
  ] }, void 0, true, {
3279
3804
  fileName: "../src/react-devtools/StateIndex.tsx",
3280
- lineNumber: 44,
3805
+ lineNumber: 47,
3281
3806
  columnNumber: 4
3282
3807
  }, this),
3283
- isOpen && !isPrimitive ? /* @__PURE__ */ jsxDEV15("main", { children: /* @__PURE__ */ jsxDEV15(StoreEditor, { token: node }, void 0, false, {
3808
+ isOpen && !isPrimitive ? /* @__PURE__ */ jsxDEV17("main", { children: /* @__PURE__ */ jsxDEV17(StoreEditor, { token: node }, void 0, false, {
3284
3809
  fileName: "../src/react-devtools/StateIndex.tsx",
3285
- lineNumber: 61,
3810
+ lineNumber: 64,
3286
3811
  columnNumber: 6
3287
3812
  }, this) }, void 0, false, {
3288
3813
  fileName: "../src/react-devtools/StateIndex.tsx",
3289
- lineNumber: 60,
3814
+ lineNumber: 63,
3290
3815
  columnNumber: 5
3291
3816
  }, this) : null
3292
3817
  ] }, void 0, true, {
3293
3818
  fileName: "../src/react-devtools/StateIndex.tsx",
3294
- lineNumber: 43,
3819
+ lineNumber: 46,
3295
3820
  columnNumber: 3
3296
3821
  }, this);
3297
3822
  };
@@ -3301,35 +3826,35 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
3301
3826
  findViewIsOpenState(key);
3302
3827
  findStateTypeState(childNode);
3303
3828
  });
3304
- return /* @__PURE__ */ jsxDEV15(Fragment4, { children: [
3305
- /* @__PURE__ */ jsxDEV15("header", { children: [
3306
- /* @__PURE__ */ jsxDEV15(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
3829
+ return /* @__PURE__ */ jsxDEV17(Fragment4, { children: [
3830
+ /* @__PURE__ */ jsxDEV17("header", { children: [
3831
+ /* @__PURE__ */ jsxDEV17(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
3307
3832
  fileName: "../src/react-devtools/StateIndex.tsx",
3308
- lineNumber: 81,
3833
+ lineNumber: 84,
3309
3834
  columnNumber: 5
3310
3835
  }, this),
3311
- /* @__PURE__ */ jsxDEV15("label", { children: [
3312
- /* @__PURE__ */ jsxDEV15("h2", { children: node.key }, void 0, false, {
3836
+ /* @__PURE__ */ jsxDEV17("label", { children: [
3837
+ /* @__PURE__ */ jsxDEV17("h2", { children: node.key }, void 0, false, {
3313
3838
  fileName: "../src/react-devtools/StateIndex.tsx",
3314
- lineNumber: 83,
3839
+ lineNumber: 86,
3315
3840
  columnNumber: 6
3316
3841
  }, this),
3317
- /* @__PURE__ */ jsxDEV15("span", { className: "type detail", children: " (family)" }, void 0, false, {
3842
+ /* @__PURE__ */ jsxDEV17("span", { className: "type detail", children: " (family)" }, void 0, false, {
3318
3843
  fileName: "../src/react-devtools/StateIndex.tsx",
3319
- lineNumber: 84,
3844
+ lineNumber: 87,
3320
3845
  columnNumber: 6
3321
3846
  }, this)
3322
3847
  ] }, void 0, true, {
3323
3848
  fileName: "../src/react-devtools/StateIndex.tsx",
3324
- lineNumber: 82,
3849
+ lineNumber: 85,
3325
3850
  columnNumber: 5
3326
3851
  }, this)
3327
3852
  ] }, void 0, true, {
3328
3853
  fileName: "../src/react-devtools/StateIndex.tsx",
3329
- lineNumber: 80,
3854
+ lineNumber: 83,
3330
3855
  columnNumber: 4
3331
3856
  }, this),
3332
- isOpen ? Object.entries(node.familyMembers).map(([key, childNode]) => /* @__PURE__ */ jsxDEV15(
3857
+ isOpen ? Object.entries(node.familyMembers).map(([key, childNode]) => /* @__PURE__ */ jsxDEV17(
3333
3858
  StateIndexNode,
3334
3859
  {
3335
3860
  node: childNode,
@@ -3340,14 +3865,14 @@ var StateIndexTreeNode = ({ node, isOpenState }) => {
3340
3865
  false,
3341
3866
  {
3342
3867
  fileName: "../src/react-devtools/StateIndex.tsx",
3343
- lineNumber: 89,
3868
+ lineNumber: 92,
3344
3869
  columnNumber: 7
3345
3870
  },
3346
3871
  this
3347
3872
  )) : null
3348
3873
  ] }, void 0, true, {
3349
3874
  fileName: "../src/react-devtools/StateIndex.tsx",
3350
- lineNumber: 79,
3875
+ lineNumber: 82,
3351
3876
  columnNumber: 3
3352
3877
  }, this);
3353
3878
  };
@@ -3355,7 +3880,7 @@ var StateIndexNode = ({ node, isOpenState, typeState }) => {
3355
3880
  if (node.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)) {
3356
3881
  return null;
3357
3882
  }
3358
- return /* @__PURE__ */ jsxDEV15("section", { className: "node state", children: `type` in node ? /* @__PURE__ */ jsxDEV15(
3883
+ return /* @__PURE__ */ jsxDEV17("section", { className: "node state", children: `type` in node ? /* @__PURE__ */ jsxDEV17(
3359
3884
  StateIndexLeafNode,
3360
3885
  {
3361
3886
  node,
@@ -3366,24 +3891,24 @@ var StateIndexNode = ({ node, isOpenState, typeState }) => {
3366
3891
  false,
3367
3892
  {
3368
3893
  fileName: "../src/react-devtools/StateIndex.tsx",
3369
- lineNumber: 114,
3894
+ lineNumber: 117,
3370
3895
  columnNumber: 5
3371
3896
  },
3372
3897
  this
3373
- ) : /* @__PURE__ */ jsxDEV15(StateIndexTreeNode, { node, isOpenState }, void 0, false, {
3898
+ ) : /* @__PURE__ */ jsxDEV17(StateIndexTreeNode, { node, isOpenState }, void 0, false, {
3374
3899
  fileName: "../src/react-devtools/StateIndex.tsx",
3375
- lineNumber: 120,
3900
+ lineNumber: 123,
3376
3901
  columnNumber: 5
3377
3902
  }, this) }, void 0, false, {
3378
3903
  fileName: "../src/react-devtools/StateIndex.tsx",
3379
- lineNumber: 112,
3904
+ lineNumber: 115,
3380
3905
  columnNumber: 3
3381
3906
  }, this);
3382
3907
  };
3383
3908
  var StateIndex = ({ tokenIndex }) => {
3384
3909
  const tokenIds = useO2(tokenIndex);
3385
- return /* @__PURE__ */ jsxDEV15("article", { className: "index state_index", children: Object.entries(tokenIds).filter(([key]) => !key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).sort().map(([key, node]) => {
3386
- return /* @__PURE__ */ jsxDEV15(
3910
+ return /* @__PURE__ */ jsxDEV17("article", { className: "index state_index", children: Object.entries(tokenIds).filter(([key]) => !key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).sort().map(([key, node]) => {
3911
+ return /* @__PURE__ */ jsxDEV17(
3387
3912
  StateIndexNode,
3388
3913
  {
3389
3914
  node,
@@ -3394,14 +3919,14 @@ var StateIndex = ({ tokenIndex }) => {
3394
3919
  false,
3395
3920
  {
3396
3921
  fileName: "../src/react-devtools/StateIndex.tsx",
3397
- lineNumber: 143,
3922
+ lineNumber: 146,
3398
3923
  columnNumber: 7
3399
3924
  },
3400
3925
  this
3401
3926
  );
3402
3927
  }) }, void 0, false, {
3403
3928
  fileName: "../src/react-devtools/StateIndex.tsx",
3404
- lineNumber: 137,
3929
+ lineNumber: 140,
3405
3930
  columnNumber: 3
3406
3931
  }, this);
3407
3932
  };
@@ -3415,16 +3940,16 @@ import { useIO as useIO3, useO as useO3 } from "atom.io/react";
3415
3940
  import { Fragment as Fragment6 } from "react";
3416
3941
 
3417
3942
  // ../src/react-devtools/Updates.tsx
3418
- import { Fragment as Fragment5, jsxDEV as jsxDEV16 } from "react/jsx-dev-runtime";
3943
+ import { Fragment as Fragment5, jsxDEV as jsxDEV18 } from "react/jsx-dev-runtime";
3419
3944
  var AtomUpdateFC = ({ atomUpdate }) => {
3420
- return /* @__PURE__ */ jsxDEV16(
3945
+ return /* @__PURE__ */ jsxDEV18(
3421
3946
  "article",
3422
3947
  {
3423
3948
  className: "node atom_update",
3424
3949
  onClick: () => console.log(atomUpdate),
3425
3950
  onKeyUp: () => console.log(atomUpdate),
3426
3951
  children: [
3427
- /* @__PURE__ */ jsxDEV16("span", { className: "detail", children: [
3952
+ /* @__PURE__ */ jsxDEV18("span", { className: "detail", children: [
3428
3953
  atomUpdate.key,
3429
3954
  ": "
3430
3955
  ] }, void 0, true, {
@@ -3432,7 +3957,7 @@ var AtomUpdateFC = ({ atomUpdate }) => {
3432
3957
  lineNumber: 20,
3433
3958
  columnNumber: 4
3434
3959
  }, this),
3435
- /* @__PURE__ */ jsxDEV16("span", { children: /* @__PURE__ */ jsxDEV16("span", { className: "summary", children: prettyJson.diff(atomUpdate.oldValue, atomUpdate.newValue).summary }, void 0, false, {
3960
+ /* @__PURE__ */ jsxDEV18("span", { children: /* @__PURE__ */ jsxDEV18("span", { className: "summary", children: prettyJson.diff(atomUpdate.oldValue, atomUpdate.newValue).summary }, void 0, false, {
3436
3961
  fileName: "../src/react-devtools/Updates.tsx",
3437
3962
  lineNumber: 22,
3438
3963
  columnNumber: 5
@@ -3454,8 +3979,8 @@ var AtomUpdateFC = ({ atomUpdate }) => {
3454
3979
  );
3455
3980
  };
3456
3981
  var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3457
- return /* @__PURE__ */ jsxDEV16("article", { className: "node transaction_update", children: [
3458
- /* @__PURE__ */ jsxDEV16("header", { children: /* @__PURE__ */ jsxDEV16("h4", { children: serialNumber }, void 0, false, {
3982
+ return /* @__PURE__ */ jsxDEV18("article", { className: "node transaction_update", children: [
3983
+ /* @__PURE__ */ jsxDEV18("header", { children: /* @__PURE__ */ jsxDEV18("h4", { children: serialNumber }, void 0, false, {
3459
3984
  fileName: "../src/react-devtools/Updates.tsx",
3460
3985
  lineNumber: 37,
3461
3986
  columnNumber: 5
@@ -3464,22 +3989,22 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3464
3989
  lineNumber: 36,
3465
3990
  columnNumber: 4
3466
3991
  }, this),
3467
- /* @__PURE__ */ jsxDEV16("main", { children: [
3468
- /* @__PURE__ */ jsxDEV16("section", { className: "transaction_params", children: [
3469
- /* @__PURE__ */ jsxDEV16("span", { className: "detail", children: "params: " }, void 0, false, {
3992
+ /* @__PURE__ */ jsxDEV18("main", { children: [
3993
+ /* @__PURE__ */ jsxDEV18("section", { className: "transaction_params", children: [
3994
+ /* @__PURE__ */ jsxDEV18("span", { className: "detail", children: "params: " }, void 0, false, {
3470
3995
  fileName: "../src/react-devtools/Updates.tsx",
3471
3996
  lineNumber: 41,
3472
3997
  columnNumber: 6
3473
3998
  }, this),
3474
3999
  transactionUpdate.params.map((param, index) => {
3475
- return /* @__PURE__ */ jsxDEV16(
4000
+ return /* @__PURE__ */ jsxDEV18(
3476
4001
  "article",
3477
4002
  {
3478
4003
  className: "node transaction_param",
3479
4004
  onClick: () => console.log(transactionUpdate),
3480
4005
  onKeyUp: () => console.log(transactionUpdate),
3481
4006
  children: [
3482
- /* @__PURE__ */ jsxDEV16("span", { className: "detail", children: [
4007
+ /* @__PURE__ */ jsxDEV18("span", { className: "detail", children: [
3483
4008
  discoverType(param),
3484
4009
  ": "
3485
4010
  ] }, void 0, true, {
@@ -3487,11 +4012,11 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3487
4012
  lineNumber: 50,
3488
4013
  columnNumber: 9
3489
4014
  }, this),
3490
- /* @__PURE__ */ jsxDEV16("span", { className: "summary", children: typeof param === `object` && `type` in param && `target` in param ? /* @__PURE__ */ jsxDEV16(Fragment5, { children: JSON.stringify(param.type) }, void 0, false, {
4015
+ /* @__PURE__ */ jsxDEV18("span", { className: "summary", children: typeof param === `object` && `type` in param && `target` in param ? /* @__PURE__ */ jsxDEV18(Fragment5, { children: JSON.stringify(param.type) }, void 0, false, {
3491
4016
  fileName: "../src/react-devtools/Updates.tsx",
3492
4017
  lineNumber: 55,
3493
4018
  columnNumber: 11
3494
- }, this) : /* @__PURE__ */ jsxDEV16(Fragment5, { children: JSON.stringify(param) }, void 0, false, {
4019
+ }, this) : /* @__PURE__ */ jsxDEV18(Fragment5, { children: JSON.stringify(param) }, void 0, false, {
3495
4020
  fileName: "../src/react-devtools/Updates.tsx",
3496
4021
  lineNumber: 57,
3497
4022
  columnNumber: 11
@@ -3517,18 +4042,18 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3517
4042
  lineNumber: 40,
3518
4043
  columnNumber: 5
3519
4044
  }, this),
3520
- /* @__PURE__ */ jsxDEV16("section", { className: "node transaction_output", children: [
3521
- /* @__PURE__ */ jsxDEV16("span", { className: "detail", children: "output: " }, void 0, false, {
4045
+ /* @__PURE__ */ jsxDEV18("section", { className: "node transaction_output", children: [
4046
+ /* @__PURE__ */ jsxDEV18("span", { className: "detail", children: "output: " }, void 0, false, {
3522
4047
  fileName: "../src/react-devtools/Updates.tsx",
3523
4048
  lineNumber: 65,
3524
4049
  columnNumber: 6
3525
4050
  }, this),
3526
- /* @__PURE__ */ jsxDEV16("span", { className: "detail", children: discoverType(transactionUpdate.output) }, void 0, false, {
4051
+ /* @__PURE__ */ jsxDEV18("span", { className: "detail", children: discoverType(transactionUpdate.output) }, void 0, false, {
3527
4052
  fileName: "../src/react-devtools/Updates.tsx",
3528
4053
  lineNumber: 66,
3529
4054
  columnNumber: 6
3530
4055
  }, this),
3531
- transactionUpdate.output ? /* @__PURE__ */ jsxDEV16("span", { className: "summary", children: [
4056
+ transactionUpdate.output ? /* @__PURE__ */ jsxDEV18("span", { className: "summary", children: [
3532
4057
  ": ",
3533
4058
  JSON.stringify(transactionUpdate.output)
3534
4059
  ] }, void 0, true, {
@@ -3541,14 +4066,14 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3541
4066
  lineNumber: 64,
3542
4067
  columnNumber: 5
3543
4068
  }, this),
3544
- /* @__PURE__ */ jsxDEV16("section", { className: "transaction_impact", children: [
3545
- /* @__PURE__ */ jsxDEV16("span", { className: "detail", children: "impact: " }, void 0, false, {
4069
+ /* @__PURE__ */ jsxDEV18("section", { className: "transaction_impact", children: [
4070
+ /* @__PURE__ */ jsxDEV18("span", { className: "detail", children: "impact: " }, void 0, false, {
3546
4071
  fileName: "../src/react-devtools/Updates.tsx",
3547
4072
  lineNumber: 76,
3548
4073
  columnNumber: 6
3549
4074
  }, this),
3550
4075
  transactionUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
3551
- return /* @__PURE__ */ jsxDEV16(
4076
+ return /* @__PURE__ */ jsxDEV18(
3552
4077
  article.AtomUpdate,
3553
4078
  {
3554
4079
  serialNumber: index,
@@ -3581,8 +4106,8 @@ var TransactionUpdateFC = ({ serialNumber, transactionUpdate }) => {
3581
4106
  }, this);
3582
4107
  };
3583
4108
  var TimelineUpdateFC = ({ timelineUpdate }) => {
3584
- return /* @__PURE__ */ jsxDEV16("article", { className: "node timeline_update", children: [
3585
- /* @__PURE__ */ jsxDEV16("header", { children: /* @__PURE__ */ jsxDEV16("h4", { children: [
4109
+ return /* @__PURE__ */ jsxDEV18("article", { className: "node timeline_update", children: [
4110
+ /* @__PURE__ */ jsxDEV18("header", { children: /* @__PURE__ */ jsxDEV18("h4", { children: [
3586
4111
  timelineUpdate.timestamp,
3587
4112
  ": ",
3588
4113
  timelineUpdate.type,
@@ -3598,8 +4123,8 @@ var TimelineUpdateFC = ({ timelineUpdate }) => {
3598
4123
  lineNumber: 99,
3599
4124
  columnNumber: 4
3600
4125
  }, this),
3601
- /* @__PURE__ */ jsxDEV16("main", { children: timelineUpdate.type === `transaction_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
3602
- return /* @__PURE__ */ jsxDEV16(
4126
+ /* @__PURE__ */ jsxDEV18("main", { children: timelineUpdate.type === `transaction_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
4127
+ return /* @__PURE__ */ jsxDEV18(
3603
4128
  article.AtomUpdate,
3604
4129
  {
3605
4130
  serialNumber: index,
@@ -3615,7 +4140,7 @@ var TimelineUpdateFC = ({ timelineUpdate }) => {
3615
4140
  this
3616
4141
  );
3617
4142
  }) : timelineUpdate.type === `selector_update` ? timelineUpdate.atomUpdates.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((atomUpdate, index) => {
3618
- return /* @__PURE__ */ jsxDEV16(
4143
+ return /* @__PURE__ */ jsxDEV18(
3619
4144
  article.AtomUpdate,
3620
4145
  {
3621
4146
  serialNumber: index,
@@ -3630,7 +4155,7 @@ var TimelineUpdateFC = ({ timelineUpdate }) => {
3630
4155
  },
3631
4156
  this
3632
4157
  );
3633
- }) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ jsxDEV16(
4158
+ }) : timelineUpdate.type === `atom_update` ? /* @__PURE__ */ jsxDEV18(
3634
4159
  article.AtomUpdate,
3635
4160
  {
3636
4161
  serialNumber: timelineUpdate.timestamp,
@@ -3662,9 +4187,9 @@ var article = {
3662
4187
  };
3663
4188
 
3664
4189
  // ../src/react-devtools/TimelineIndex.tsx
3665
- import { jsxDEV as jsxDEV17 } from "react/jsx-dev-runtime";
4190
+ import { jsxDEV as jsxDEV19 } from "react/jsx-dev-runtime";
3666
4191
  var YouAreHere = () => {
3667
- return /* @__PURE__ */ jsxDEV17("span", { className: "you_are_here", children: "you are here" }, void 0, false, {
4192
+ return /* @__PURE__ */ jsxDEV19("span", { className: "you_are_here", children: "you are here" }, void 0, false, {
3668
4193
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3669
4194
  lineNumber: 17,
3670
4195
  columnNumber: 9
@@ -3673,20 +4198,20 @@ var YouAreHere = () => {
3673
4198
  var TimelineLog = ({ token, isOpenState, timelineState }) => {
3674
4199
  const timeline2 = useO3(timelineState);
3675
4200
  const [isOpen, setIsOpen] = useIO3(isOpenState);
3676
- return /* @__PURE__ */ jsxDEV17("section", { className: "node timeline_log", children: [
3677
- /* @__PURE__ */ jsxDEV17("header", { children: [
3678
- /* @__PURE__ */ jsxDEV17(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
4201
+ return /* @__PURE__ */ jsxDEV19("section", { className: "node timeline_log", children: [
4202
+ /* @__PURE__ */ jsxDEV19("header", { children: [
4203
+ /* @__PURE__ */ jsxDEV19(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
3679
4204
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3680
4205
  lineNumber: 31,
3681
4206
  columnNumber: 5
3682
4207
  }, this),
3683
- /* @__PURE__ */ jsxDEV17("label", { children: [
3684
- /* @__PURE__ */ jsxDEV17("h2", { children: token.key }, void 0, false, {
4208
+ /* @__PURE__ */ jsxDEV19("label", { children: [
4209
+ /* @__PURE__ */ jsxDEV19("h2", { children: token.key }, void 0, false, {
3685
4210
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3686
4211
  lineNumber: 33,
3687
4212
  columnNumber: 6
3688
4213
  }, this),
3689
- /* @__PURE__ */ jsxDEV17("span", { className: "detail length", children: [
4214
+ /* @__PURE__ */ jsxDEV19("span", { className: "detail length", children: [
3690
4215
  "(",
3691
4216
  timeline2.at,
3692
4217
  "/",
@@ -3697,13 +4222,13 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3697
4222
  lineNumber: 34,
3698
4223
  columnNumber: 6
3699
4224
  }, this),
3700
- /* @__PURE__ */ jsxDEV17("span", { className: "gap" }, void 0, false, {
4225
+ /* @__PURE__ */ jsxDEV19("span", { className: "gap" }, void 0, false, {
3701
4226
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3702
4227
  lineNumber: 37,
3703
4228
  columnNumber: 6
3704
4229
  }, this),
3705
- /* @__PURE__ */ jsxDEV17("nav", { children: [
3706
- /* @__PURE__ */ jsxDEV17(
4230
+ /* @__PURE__ */ jsxDEV19("nav", { children: [
4231
+ /* @__PURE__ */ jsxDEV19(
3707
4232
  "button",
3708
4233
  {
3709
4234
  type: "button",
@@ -3720,7 +4245,7 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3720
4245
  },
3721
4246
  this
3722
4247
  ),
3723
- /* @__PURE__ */ jsxDEV17(
4248
+ /* @__PURE__ */ jsxDEV19(
3724
4249
  "button",
3725
4250
  {
3726
4251
  type: "button",
@@ -3752,18 +4277,18 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3752
4277
  lineNumber: 30,
3753
4278
  columnNumber: 4
3754
4279
  }, this),
3755
- isOpen ? /* @__PURE__ */ jsxDEV17("main", { children: timeline2.history.map((update, index) => /* @__PURE__ */ jsxDEV17(Fragment6, { children: [
3756
- index === timeline2.at ? /* @__PURE__ */ jsxDEV17(YouAreHere, {}, void 0, false, {
4280
+ isOpen ? /* @__PURE__ */ jsxDEV19("main", { children: timeline2.history.map((update, index) => /* @__PURE__ */ jsxDEV19(Fragment6, { children: [
4281
+ index === timeline2.at ? /* @__PURE__ */ jsxDEV19(YouAreHere, {}, void 0, false, {
3757
4282
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3758
4283
  lineNumber: 60,
3759
4284
  columnNumber: 33
3760
4285
  }, this) : null,
3761
- /* @__PURE__ */ jsxDEV17(article.TimelineUpdate, { timelineUpdate: update }, void 0, false, {
4286
+ /* @__PURE__ */ jsxDEV19(article.TimelineUpdate, { timelineUpdate: update }, void 0, false, {
3762
4287
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3763
4288
  lineNumber: 61,
3764
4289
  columnNumber: 8
3765
4290
  }, this),
3766
- index === timeline2.history.length - 1 && timeline2.at === timeline2.history.length ? /* @__PURE__ */ jsxDEV17(YouAreHere, {}, void 0, false, {
4291
+ index === timeline2.history.length - 1 && timeline2.at === timeline2.history.length ? /* @__PURE__ */ jsxDEV19(YouAreHere, {}, void 0, false, {
3767
4292
  fileName: "../src/react-devtools/TimelineIndex.tsx",
3768
4293
  lineNumber: 64,
3769
4294
  columnNumber: 9
@@ -3785,8 +4310,8 @@ var TimelineLog = ({ token, isOpenState, timelineState }) => {
3785
4310
  };
3786
4311
  var TimelineIndex = () => {
3787
4312
  const tokenIds = useO3(timelineIndex);
3788
- return /* @__PURE__ */ jsxDEV17("article", { className: "index timeline_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
3789
- return /* @__PURE__ */ jsxDEV17(
4313
+ return /* @__PURE__ */ jsxDEV19("article", { className: "index timeline_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
4314
+ return /* @__PURE__ */ jsxDEV19(
3790
4315
  TimelineLog,
3791
4316
  {
3792
4317
  token,
@@ -3811,24 +4336,24 @@ var TimelineIndex = () => {
3811
4336
 
3812
4337
  // ../src/react-devtools/TransactionIndex.tsx
3813
4338
  import { useIO as useIO4, useO as useO4 } from "atom.io/react";
3814
- import { jsxDEV as jsxDEV18 } from "react/jsx-dev-runtime";
4339
+ import { jsxDEV as jsxDEV20 } from "react/jsx-dev-runtime";
3815
4340
  var TransactionLog = ({ token, isOpenState, logState }) => {
3816
4341
  const log = useO4(logState);
3817
4342
  const [isOpen, setIsOpen] = useIO4(isOpenState);
3818
- return /* @__PURE__ */ jsxDEV18("section", { className: "node transaction_log", children: [
3819
- /* @__PURE__ */ jsxDEV18("header", { children: [
3820
- /* @__PURE__ */ jsxDEV18(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
4343
+ return /* @__PURE__ */ jsxDEV20("section", { className: "node transaction_log", children: [
4344
+ /* @__PURE__ */ jsxDEV20("header", { children: [
4345
+ /* @__PURE__ */ jsxDEV20(button.OpenClose, { isOpen, setIsOpen }, void 0, false, {
3821
4346
  fileName: "../src/react-devtools/TransactionIndex.tsx",
3822
4347
  lineNumber: 31,
3823
4348
  columnNumber: 5
3824
4349
  }, this),
3825
- /* @__PURE__ */ jsxDEV18("label", { children: [
3826
- /* @__PURE__ */ jsxDEV18("h2", { children: token.key }, void 0, false, {
4350
+ /* @__PURE__ */ jsxDEV20("label", { children: [
4351
+ /* @__PURE__ */ jsxDEV20("h2", { children: token.key }, void 0, false, {
3827
4352
  fileName: "../src/react-devtools/TransactionIndex.tsx",
3828
4353
  lineNumber: 33,
3829
4354
  columnNumber: 6
3830
4355
  }, this),
3831
- /* @__PURE__ */ jsxDEV18("span", { className: "detail length", children: [
4356
+ /* @__PURE__ */ jsxDEV20("span", { className: "detail length", children: [
3832
4357
  "(",
3833
4358
  log.length,
3834
4359
  ")"
@@ -3847,7 +4372,7 @@ var TransactionLog = ({ token, isOpenState, logState }) => {
3847
4372
  lineNumber: 30,
3848
4373
  columnNumber: 4
3849
4374
  }, this),
3850
- isOpen ? /* @__PURE__ */ jsxDEV18("main", { children: log.map((update, index) => /* @__PURE__ */ jsxDEV18(
4375
+ isOpen ? /* @__PURE__ */ jsxDEV20("main", { children: log.map((update, index) => /* @__PURE__ */ jsxDEV20(
3851
4376
  article.TransactionUpdate,
3852
4377
  {
3853
4378
  serialNumber: index,
@@ -3874,8 +4399,8 @@ var TransactionLog = ({ token, isOpenState, logState }) => {
3874
4399
  };
3875
4400
  var TransactionIndex = () => {
3876
4401
  const tokenIds = useO4(transactionIndex);
3877
- return /* @__PURE__ */ jsxDEV18("article", { className: "index transaction_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
3878
- return /* @__PURE__ */ jsxDEV18(
4402
+ return /* @__PURE__ */ jsxDEV20("article", { className: "index transaction_index", children: tokenIds.filter((token) => !token.key.startsWith(`\u{1F441}\u200D\u{1F5E8}`)).map((token) => {
4403
+ return /* @__PURE__ */ jsxDEV20(
3879
4404
  TransactionLog,
3880
4405
  {
3881
4406
  token,
@@ -3899,15 +4424,15 @@ var TransactionIndex = () => {
3899
4424
  };
3900
4425
 
3901
4426
  // ../src/react-devtools/AtomIODevtools.tsx
3902
- import { Fragment as Fragment7, jsxDEV as jsxDEV19 } from "react/jsx-dev-runtime";
4427
+ import { Fragment as Fragment7, jsxDEV as jsxDEV21 } from "react/jsx-dev-runtime";
3903
4428
  var AtomIODevtools = () => {
3904
4429
  const constraintsRef = useRef4(null);
3905
4430
  const [devtoolsAreOpen, setDevtoolsAreOpen] = useIO5(devtoolsAreOpenState);
3906
4431
  const [devtoolsView, setDevtoolsView] = useIO5(devtoolsViewSelectionState);
3907
4432
  const devtoolsViewOptions = useO5(devtoolsViewOptionsState);
3908
4433
  const mouseHasMoved = useRef4(false);
3909
- return /* @__PURE__ */ jsxDEV19(Fragment7, { children: [
3910
- /* @__PURE__ */ jsxDEV19(
4434
+ return /* @__PURE__ */ jsxDEV21(Fragment7, { children: [
4435
+ /* @__PURE__ */ jsxDEV21(
3911
4436
  motion.span,
3912
4437
  {
3913
4438
  ref: constraintsRef,
@@ -3930,7 +4455,7 @@ var AtomIODevtools = () => {
3930
4455
  },
3931
4456
  this
3932
4457
  ),
3933
- /* @__PURE__ */ jsxDEV19(
4458
+ /* @__PURE__ */ jsxDEV21(
3934
4459
  motion.main,
3935
4460
  {
3936
4461
  drag: true,
@@ -3944,14 +4469,14 @@ var AtomIODevtools = () => {
3944
4469
  maxWidth: 33
3945
4470
  },
3946
4471
  children: [
3947
- devtoolsAreOpen ? /* @__PURE__ */ jsxDEV19(Fragment7, { children: [
3948
- /* @__PURE__ */ jsxDEV19(motion.header, { children: [
3949
- /* @__PURE__ */ jsxDEV19("h1", { children: "atom.io" }, void 0, false, {
4472
+ devtoolsAreOpen ? /* @__PURE__ */ jsxDEV21(Fragment7, { children: [
4473
+ /* @__PURE__ */ jsxDEV21(motion.header, { children: [
4474
+ /* @__PURE__ */ jsxDEV21("h1", { children: "atom.io" }, void 0, false, {
3950
4475
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3951
4476
  lineNumber: 60,
3952
4477
  columnNumber: 8
3953
4478
  }, this),
3954
- /* @__PURE__ */ jsxDEV19("nav", { children: devtoolsViewOptions.map((viewOption) => /* @__PURE__ */ jsxDEV19(
4479
+ /* @__PURE__ */ jsxDEV21("nav", { children: devtoolsViewOptions.map((viewOption) => /* @__PURE__ */ jsxDEV21(
3955
4480
  "button",
3956
4481
  {
3957
4482
  type: "button",
@@ -3978,19 +4503,19 @@ var AtomIODevtools = () => {
3978
4503
  lineNumber: 59,
3979
4504
  columnNumber: 7
3980
4505
  }, this),
3981
- /* @__PURE__ */ jsxDEV19(motion.main, { children: /* @__PURE__ */ jsxDEV19(LayoutGroup, { children: devtoolsView === `atoms` ? /* @__PURE__ */ jsxDEV19(StateIndex, { tokenIndex: atomIndex }, void 0, false, {
4506
+ /* @__PURE__ */ jsxDEV21(motion.main, { children: /* @__PURE__ */ jsxDEV21(LayoutGroup, { children: devtoolsView === `atoms` ? /* @__PURE__ */ jsxDEV21(StateIndex, { tokenIndex: atomIndex }, void 0, false, {
3982
4507
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3983
4508
  lineNumber: 78,
3984
4509
  columnNumber: 10
3985
- }, this) : devtoolsView === `selectors` ? /* @__PURE__ */ jsxDEV19(StateIndex, { tokenIndex: selectorIndex }, void 0, false, {
4510
+ }, this) : devtoolsView === `selectors` ? /* @__PURE__ */ jsxDEV21(StateIndex, { tokenIndex: selectorIndex }, void 0, false, {
3986
4511
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3987
4512
  lineNumber: 80,
3988
4513
  columnNumber: 10
3989
- }, this) : devtoolsView === `transactions` ? /* @__PURE__ */ jsxDEV19(TransactionIndex, {}, void 0, false, {
4514
+ }, this) : devtoolsView === `transactions` ? /* @__PURE__ */ jsxDEV21(TransactionIndex, {}, void 0, false, {
3990
4515
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3991
4516
  lineNumber: 82,
3992
4517
  columnNumber: 10
3993
- }, this) : devtoolsView === `timelines` ? /* @__PURE__ */ jsxDEV19(TimelineIndex, {}, void 0, false, {
4518
+ }, this) : devtoolsView === `timelines` ? /* @__PURE__ */ jsxDEV21(TimelineIndex, {}, void 0, false, {
3994
4519
  fileName: "../src/react-devtools/AtomIODevtools.tsx",
3995
4520
  lineNumber: 84,
3996
4521
  columnNumber: 10
@@ -4008,7 +4533,7 @@ var AtomIODevtools = () => {
4008
4533
  lineNumber: 58,
4009
4534
  columnNumber: 6
4010
4535
  }, this) : null,
4011
- /* @__PURE__ */ jsxDEV19("footer", { children: /* @__PURE__ */ jsxDEV19(
4536
+ /* @__PURE__ */ jsxDEV21("footer", { children: /* @__PURE__ */ jsxDEV21(
4012
4537
  "button",
4013
4538
  {
4014
4539
  type: "button",