jazz-tools 0.18.5 → 0.18.7

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 (111) hide show
  1. package/.turbo/turbo-build.log +57 -57
  2. package/CHANGELOG.md +33 -0
  3. package/dist/better-auth/auth/client.d.ts.map +1 -1
  4. package/dist/better-auth/auth/client.js +7 -1
  5. package/dist/better-auth/auth/client.js.map +1 -1
  6. package/dist/better-auth/auth/react.d.ts +0 -2145
  7. package/dist/better-auth/auth/react.d.ts.map +1 -1
  8. package/dist/better-auth/auth/react.js +2 -14
  9. package/dist/better-auth/auth/react.js.map +1 -1
  10. package/dist/better-auth/auth/server.d.ts.map +1 -1
  11. package/dist/better-auth/auth/server.js +77 -22
  12. package/dist/better-auth/auth/server.js.map +1 -1
  13. package/dist/better-auth/auth/tests/react.test.d.ts +2 -0
  14. package/dist/better-auth/auth/tests/react.test.d.ts.map +1 -0
  15. package/dist/{chunk-3LE7N6TH.js → chunk-CFAY3FMQ.js} +192 -101
  16. package/dist/chunk-CFAY3FMQ.js.map +1 -0
  17. package/dist/index.js +1 -1
  18. package/dist/inspector/{custom-element-WCY6D3QJ.js → custom-element-G6SPZEBR.js} +308 -97
  19. package/dist/inspector/custom-element-G6SPZEBR.js.map +1 -0
  20. package/dist/inspector/index.d.ts +5 -1
  21. package/dist/inspector/index.d.ts.map +1 -1
  22. package/dist/inspector/index.js +318 -56
  23. package/dist/inspector/index.js.map +1 -1
  24. package/dist/inspector/register-custom-element.js +1 -1
  25. package/dist/inspector/ui/button.d.ts +1 -1
  26. package/dist/inspector/ui/button.d.ts.map +1 -1
  27. package/dist/inspector/ui/heading.d.ts +2 -1
  28. package/dist/inspector/ui/heading.d.ts.map +1 -1
  29. package/dist/inspector/ui/input.d.ts.map +1 -1
  30. package/dist/inspector/ui/modal.d.ts +16 -0
  31. package/dist/inspector/ui/modal.d.ts.map +1 -0
  32. package/dist/inspector/viewer/delete-local-data.d.ts +2 -0
  33. package/dist/inspector/viewer/delete-local-data.d.ts.map +1 -0
  34. package/dist/inspector/viewer/{inpsector-button.d.ts → inspector-button.d.ts} +1 -1
  35. package/dist/inspector/viewer/{inpsector-button.d.ts.map → inspector-button.d.ts.map} +1 -1
  36. package/dist/inspector/viewer/new-app.d.ts +1 -4
  37. package/dist/inspector/viewer/new-app.d.ts.map +1 -1
  38. package/dist/react/hooks.d.ts +1 -1
  39. package/dist/react/hooks.d.ts.map +1 -1
  40. package/dist/react/index.d.ts +1 -1
  41. package/dist/react/index.d.ts.map +1 -1
  42. package/dist/react/index.js +3 -1
  43. package/dist/react/index.js.map +1 -1
  44. package/dist/react-core/hooks.d.ts +133 -0
  45. package/dist/react-core/hooks.d.ts.map +1 -1
  46. package/dist/react-core/index.js +83 -17
  47. package/dist/react-core/index.js.map +1 -1
  48. package/dist/react-core/tests/useCoStateWithSelector.test.d.ts +2 -0
  49. package/dist/react-core/tests/useCoStateWithSelector.test.d.ts.map +1 -0
  50. package/dist/react-native-core/hooks.d.ts +1 -1
  51. package/dist/react-native-core/hooks.d.ts.map +1 -1
  52. package/dist/react-native-core/index.js +3 -1
  53. package/dist/react-native-core/index.js.map +1 -1
  54. package/dist/testing.js +2 -2
  55. package/dist/testing.js.map +1 -1
  56. package/dist/tools/coValues/CoValueBase.d.ts +14 -0
  57. package/dist/tools/coValues/CoValueBase.d.ts.map +1 -1
  58. package/dist/tools/coValues/coMap.d.ts +0 -12
  59. package/dist/tools/coValues/coMap.d.ts.map +1 -1
  60. package/dist/tools/coValues/inbox.d.ts +5 -5
  61. package/dist/tools/coValues/inbox.d.ts.map +1 -1
  62. package/dist/tools/implementation/createContext.d.ts +2 -1
  63. package/dist/tools/implementation/createContext.d.ts.map +1 -1
  64. package/dist/tools/tests/utils.d.ts.map +1 -1
  65. package/dist/worker/index.d.ts +12 -2
  66. package/dist/worker/index.d.ts.map +1 -1
  67. package/dist/worker/index.js +10 -4
  68. package/dist/worker/index.js.map +1 -1
  69. package/package.json +6 -4
  70. package/src/better-auth/auth/client.ts +8 -2
  71. package/src/better-auth/auth/react.tsx +2 -51
  72. package/src/better-auth/auth/server.ts +98 -24
  73. package/src/better-auth/auth/tests/client.test.ts +92 -4
  74. package/src/better-auth/auth/tests/react.test.tsx +43 -0
  75. package/src/better-auth/auth/tests/server.test.ts +276 -98
  76. package/src/inspector/custom-element.tsx +1 -1
  77. package/src/inspector/index.tsx +44 -0
  78. package/src/inspector/ui/button.tsx +15 -1
  79. package/src/inspector/ui/heading.tsx +7 -2
  80. package/src/inspector/ui/input.tsx +6 -2
  81. package/src/inspector/ui/modal.tsx +158 -0
  82. package/src/inspector/viewer/delete-local-data.tsx +101 -0
  83. package/src/inspector/viewer/new-app.tsx +3 -19
  84. package/src/react/hooks.tsx +1 -0
  85. package/src/react/index.ts +1 -0
  86. package/src/react-core/hooks.ts +162 -0
  87. package/src/react-core/tests/useCoStateWithSelector.test.ts +149 -0
  88. package/src/react-native-core/hooks.tsx +1 -0
  89. package/src/tools/coValues/CoValueBase.ts +32 -0
  90. package/src/tools/coValues/coList.ts +35 -0
  91. package/src/tools/coValues/coMap.ts +0 -18
  92. package/src/tools/coValues/inbox.ts +190 -108
  93. package/src/tools/implementation/createContext.ts +9 -2
  94. package/src/tools/testing.ts +1 -1
  95. package/src/tools/tests/coFeed.test.ts +33 -22
  96. package/src/tools/tests/coList.test.ts +47 -4
  97. package/src/tools/tests/coMap.test.ts +13 -5
  98. package/src/tools/tests/coPlainText.test.ts +24 -0
  99. package/src/tools/tests/createContext.test.ts +24 -0
  100. package/src/tools/tests/deepLoading.test.ts +2 -0
  101. package/src/tools/tests/exportImport.test.ts +3 -1
  102. package/src/tools/tests/groupsAndAccounts.test.ts +56 -44
  103. package/src/tools/tests/inbox.test.ts +293 -31
  104. package/src/tools/tests/patterns/requestToJoin.test.ts +14 -6
  105. package/src/tools/tests/utils.ts +1 -0
  106. package/src/worker/index.ts +21 -5
  107. package/tsup.config.ts +1 -1
  108. package/dist/chunk-3LE7N6TH.js.map +0 -1
  109. package/dist/inspector/custom-element-WCY6D3QJ.js.map +0 -1
  110. package/src/inspector/index.ts +0 -23
  111. /package/src/inspector/viewer/{inpsector-button.tsx → inspector-button.tsx} +0 -0
package/dist/index.js CHANGED
@@ -37,7 +37,7 @@ import {
37
37
  randomSessionProvider,
38
38
  subscribeToCoValue,
39
39
  zodReExport_exports
40
- } from "./chunk-3LE7N6TH.js";
40
+ } from "./chunk-CFAY3FMQ.js";
41
41
 
42
42
  // src/tools/auth/clerk/index.ts
43
43
  import {
@@ -1970,7 +1970,7 @@ var require_react = __commonJS({
1970
1970
  var require_react_dom_production = __commonJS({
1971
1971
  "../../node_modules/react-dom/cjs/react-dom.production.js"(exports) {
1972
1972
  "use strict";
1973
- var React8 = require_react();
1973
+ var React7 = require_react();
1974
1974
  function formatProdErrorMessage(code) {
1975
1975
  var url = "https://react.dev/errors/" + code;
1976
1976
  if (1 < arguments.length) {
@@ -2010,7 +2010,7 @@ var require_react_dom_production = __commonJS({
2010
2010
  implementation
2011
2011
  };
2012
2012
  }
2013
- var ReactSharedInternals = React8.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2013
+ var ReactSharedInternals = React7.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2014
2014
  function getCrossOriginStringAs(as, input) {
2015
2015
  if ("font" === as) return "";
2016
2016
  if ("string" === typeof input)
@@ -2164,7 +2164,7 @@ var require_react_dom_development = __commonJS({
2164
2164
  return dispatcher;
2165
2165
  }
2166
2166
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
2167
- var React8 = require_react(), Internals = {
2167
+ var React7 = require_react(), Internals = {
2168
2168
  d: {
2169
2169
  f: noop,
2170
2170
  r: function() {
@@ -2182,7 +2182,7 @@ var require_react_dom_development = __commonJS({
2182
2182
  },
2183
2183
  p: 0,
2184
2184
  findDOMNode: null
2185
- }, REACT_PORTAL_TYPE = Symbol.for("react.portal"), ReactSharedInternals = React8.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2185
+ }, REACT_PORTAL_TYPE = Symbol.for("react.portal"), ReactSharedInternals = React7.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2186
2186
  "function" === typeof Map && null != Map.prototype && "function" === typeof Map.prototype.forEach && "function" === typeof Set && null != Set.prototype && "function" === typeof Set.prototype.clear && "function" === typeof Set.prototype.forEach || console.error(
2187
2187
  "React depends on Map and Set built-in types. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills"
2188
2188
  );
@@ -2390,7 +2390,7 @@ var require_react_dom_client_production = __commonJS({
2390
2390
  "../../node_modules/react-dom/cjs/react-dom-client.production.js"(exports) {
2391
2391
  "use strict";
2392
2392
  var Scheduler = require_scheduler();
2393
- var React8 = require_react();
2393
+ var React7 = require_react();
2394
2394
  var ReactDOM = require_react_dom();
2395
2395
  function formatProdErrorMessage(code) {
2396
2396
  var url = "https://react.dev/errors/" + code;
@@ -2578,7 +2578,7 @@ var require_react_dom_client_production = __commonJS({
2578
2578
  return null;
2579
2579
  }
2580
2580
  var isArrayImpl = Array.isArray;
2581
- var ReactSharedInternals = React8.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2581
+ var ReactSharedInternals = React7.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2582
2582
  var ReactDOMSharedInternals = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;
2583
2583
  var sharedNotPendingObject = {
2584
2584
  pending: false,
@@ -13570,7 +13570,7 @@ var require_react_dom_client_production = __commonJS({
13570
13570
  0 === i && attemptExplicitHydrationTarget(target);
13571
13571
  }
13572
13572
  };
13573
- var isomorphicReactPackageVersion$jscomp$inline_1785 = React8.version;
13573
+ var isomorphicReactPackageVersion$jscomp$inline_1785 = React7.version;
13574
13574
  if ("19.1.0" !== isomorphicReactPackageVersion$jscomp$inline_1785)
13575
13575
  throw Error(
13576
13576
  formatProdErrorMessage(
@@ -15021,7 +15021,7 @@ var require_react_dom_client_development = __commonJS({
15021
15021
  "number" === type && getActiveElement(node.ownerDocument) === node || node.defaultValue === "" + value || (node.defaultValue = "" + value);
15022
15022
  }
15023
15023
  function validateOptionProps(element, props) {
15024
- null == props.value && ("object" === typeof props.children && null !== props.children ? React8.Children.forEach(props.children, function(child) {
15024
+ null == props.value && ("object" === typeof props.children && null !== props.children ? React7.Children.forEach(props.children, function(child) {
15025
15025
  null == child || "string" === typeof child || "number" === typeof child || "bigint" === typeof child || didWarnInvalidChild || (didWarnInvalidChild = true, console.error(
15026
15026
  "Cannot infer the option value of complex children. Pass a `value` prop or use a plain string as children to <option>."
15027
15027
  ));
@@ -28603,14 +28603,14 @@ var require_react_dom_client_development = __commonJS({
28603
28603
  ));
28604
28604
  }
28605
28605
  "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart && __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());
28606
- var Scheduler = require_scheduler(), React8 = require_react(), ReactDOM = require_react_dom(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_PROVIDER_TYPE = Symbol.for("react.provider"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy");
28606
+ var Scheduler = require_scheduler(), React7 = require_react(), ReactDOM = require_react_dom(), assign = Object.assign, REACT_LEGACY_ELEMENT_TYPE = Symbol.for("react.element"), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_PROVIDER_TYPE = Symbol.for("react.provider"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy");
28607
28607
  Symbol.for("react.scope");
28608
28608
  var REACT_ACTIVITY_TYPE = Symbol.for("react.activity");
28609
28609
  Symbol.for("react.legacy_hidden");
28610
28610
  Symbol.for("react.tracing_marker");
28611
28611
  var REACT_MEMO_CACHE_SENTINEL = Symbol.for("react.memo_cache_sentinel");
28612
28612
  Symbol.for("react.view_transition");
28613
- var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React8.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ReactDOMSharedInternals = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, NotPending = Object.freeze({
28613
+ var MAYBE_ITERATOR_SYMBOL = Symbol.iterator, REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), isArrayImpl = Array.isArray, ReactSharedInternals = React7.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ReactDOMSharedInternals = ReactDOM.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, NotPending = Object.freeze({
28614
28614
  pending: false,
28615
28615
  data: null,
28616
28616
  method: null,
@@ -31324,7 +31324,7 @@ var require_react_dom_client_development = __commonJS({
31324
31324
  }
31325
31325
  };
31326
31326
  (function() {
31327
- var isomorphicReactPackageVersion = React8.version;
31327
+ var isomorphicReactPackageVersion = React7.version;
31328
31328
  if ("19.1.0" !== isomorphicReactPackageVersion)
31329
31329
  throw Error(
31330
31330
  'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + "\n - react-dom: 19.1.0\nLearn more: https://react.dev/warnings/version-mismatch")
@@ -31720,20 +31720,20 @@ var require_react_jsx_runtime_development = __commonJS({
31720
31720
  function validateChildKeys(node) {
31721
31721
  "object" === typeof node && null !== node && node.$$typeof === REACT_ELEMENT_TYPE && node._store && (node._store.validated = 1);
31722
31722
  }
31723
- var React8 = require_react(), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler");
31723
+ var React7 = require_react(), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler");
31724
31724
  Symbol.for("react.provider");
31725
- var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React8.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
31725
+ var REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React7.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
31726
31726
  return null;
31727
31727
  };
31728
- React8 = {
31728
+ React7 = {
31729
31729
  "react-stack-bottom-frame": function(callStackForError) {
31730
31730
  return callStackForError();
31731
31731
  }
31732
31732
  };
31733
31733
  var specialPropKeyWarningShown;
31734
31734
  var didWarnAboutElementRef = {};
31735
- var unknownOwnerDebugStack = React8["react-stack-bottom-frame"].bind(
31736
- React8,
31735
+ var unknownOwnerDebugStack = React7["react-stack-bottom-frame"].bind(
31736
+ React7,
31737
31737
  UnknownOwner
31738
31738
  )();
31739
31739
  var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
@@ -31785,13 +31785,9 @@ var require_jsx_runtime = __commonJS({
31785
31785
  var import_client = __toESM(require_client(), 1);
31786
31786
  import { Account } from "jazz-tools";
31787
31787
 
31788
- // src/inspector/index.ts
31789
- var import_react17 = __toESM(require_react(), 1);
31790
-
31791
31788
  // src/inspector/viewer/new-app.tsx
31792
- var import_react15 = __toESM(require_react(), 1);
31793
- import { styled as styled18 } from "goober";
31794
- import { useJazzContext } from "jazz-tools/react-core";
31789
+ var import_react17 = __toESM(require_react(), 1);
31790
+ import { styled as styled19 } from "goober";
31795
31791
 
31796
31792
  // src/inspector/ui/button.tsx
31797
31793
  var import_react = __toESM(require_react(), 1);
@@ -31818,6 +31814,9 @@ var StyledButton = styled("button")`
31818
31814
  border-color: var(--j-primary-color);
31819
31815
  color: white;
31820
31816
  font-weight: 500;
31817
+ &:hover {
31818
+ opacity: 0.8;
31819
+ }
31821
31820
  `;
31822
31821
  case "secondary":
31823
31822
  return `
@@ -31836,6 +31835,17 @@ var StyledButton = styled("button")`
31836
31835
  text-decoration: underline;
31837
31836
  }
31838
31837
  `;
31838
+ case "destructive":
31839
+ return `
31840
+ padding: 0.375rem 0.75rem;
31841
+ background-color: var(--j-destructive-color);
31842
+ border-color: var(--j-destructive-color);
31843
+ color: white;
31844
+ font-weight: 500;
31845
+ &:hover {
31846
+ opacity: 0.8;
31847
+ }
31848
+ `;
31839
31849
  default:
31840
31850
  return "";
31841
31851
  }
@@ -31881,7 +31891,7 @@ var StyledInput = styled2("input")`
31881
31891
  box-shadow: var(--j-shadow-sm);
31882
31892
  font-weight: 500;
31883
31893
  background-color: white;
31884
- color: var(--text-color-strong);
31894
+ color: var(--j-text-color-strong);
31885
31895
 
31886
31896
  @media (prefers-color-scheme: dark) {
31887
31897
  background-color: var(--j-foreground);
@@ -31892,7 +31902,15 @@ var Input = (0, import_react2.forwardRef)(
31892
31902
  const generatedId = (0, import_react2.useId)();
31893
31903
  const id = customId || generatedId;
31894
31904
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(Container, { className, children: [
31895
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("label", { htmlFor: id, className: hideLabel ? "j-sr-only" : "", children: label }),
31905
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
31906
+ "label",
31907
+ {
31908
+ htmlFor: id,
31909
+ className: hideLabel ? "j-sr-only" : "",
31910
+ style: { color: "var(--j-text-color)" },
31911
+ children: label
31912
+ }
31913
+ ),
31896
31914
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(StyledInput, { ref, ...inputProps, id })
31897
31915
  ] });
31898
31916
  }
@@ -31982,9 +32000,10 @@ var StyledHeading = styled5("h1")`
31982
32000
  `;
31983
32001
  function Heading({
31984
32002
  children,
31985
- className
32003
+ className,
32004
+ id
31986
32005
  }) {
31987
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledHeading, { className, children });
32006
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledHeading, { className, id, children });
31988
32007
  }
31989
32008
 
31990
32009
  // src/inspector/ui/text.tsx
@@ -33583,7 +33602,7 @@ var GlobalStyles = styled16("div")`
33583
33602
  }
33584
33603
  `;
33585
33604
 
33586
- // src/inspector/viewer/inpsector-button.tsx
33605
+ // src/inspector/viewer/inspector-button.tsx
33587
33606
  var import_jsx_runtime26 = __toESM(require_jsx_runtime(), 1);
33588
33607
  import { styled as styled17 } from "goober";
33589
33608
  var StyledInspectorButton = styled17("button")`
@@ -33682,9 +33701,246 @@ function useOpenInspector() {
33682
33701
  return [open, setOpen];
33683
33702
  }
33684
33703
 
33685
- // src/inspector/viewer/new-app.tsx
33704
+ // src/inspector/ui/modal.tsx
33705
+ var import_react15 = __toESM(require_react(), 1);
33706
+ import { styled as styled18 } from "goober";
33686
33707
  var import_jsx_runtime27 = __toESM(require_jsx_runtime(), 1);
33687
- var InspectorContainer = styled18("div")`
33708
+ var ModalContent = styled18("dialog")`
33709
+ background-color: var(--j-background);
33710
+ border-radius: var(--j-radius-lg);
33711
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
33712
+ border: 1px solid var(--j-border-color);
33713
+ max-width: 32rem;
33714
+ margin-block: auto;
33715
+ margin-inline: auto;
33716
+ &::backdrop {
33717
+ background-color: rgba(0, 0, 0, 0.7);
33718
+ }
33719
+
33720
+ `;
33721
+ var ModalHeader = styled18("div")`
33722
+ display: flex;
33723
+ justify-content: space-between;
33724
+ align-items: flex-start;
33725
+ padding: 1.5rem 1.5rem 0 1.5rem;
33726
+ gap: 1rem;
33727
+ `;
33728
+ var ModalBody = styled18("div")`
33729
+ padding: 1rem 1.5rem;
33730
+ flex: 1;
33731
+ `;
33732
+ var ModalFooter = styled18("div")`
33733
+ display: flex;
33734
+ justify-content: flex-end;
33735
+ gap: 0.75rem;
33736
+ padding: 0 1.5rem 1.5rem 1.5rem;
33737
+ `;
33738
+ var CloseButton = styled18("button")`
33739
+ background: none;
33740
+ border: none;
33741
+ cursor: pointer;
33742
+ padding: 0.25rem;
33743
+ border-radius: var(--j-radius-sm);
33744
+ color: var(--j-text-color);
33745
+ font-size: 1.25rem;
33746
+ line-height: 1;
33747
+ display: flex;
33748
+ align-items: center;
33749
+ justify-content: center;
33750
+ min-width: 2rem;
33751
+ min-height: 2rem;
33752
+
33753
+ &:hover {
33754
+ background-color: var(--j-foreground);
33755
+ }
33756
+
33757
+ &:focus-visible {
33758
+ outline: 2px solid var(--j-border-focus);
33759
+ outline-offset: 2px;
33760
+ }
33761
+ `;
33762
+ var Modal = (0, import_react15.forwardRef)(
33763
+ ({
33764
+ isOpen,
33765
+ onClose,
33766
+ heading,
33767
+ text,
33768
+ children,
33769
+ confirmText = "Confirm",
33770
+ cancelText = "Cancel",
33771
+ onConfirm,
33772
+ onCancel,
33773
+ showButtons = true,
33774
+ className
33775
+ }, ref) => {
33776
+ const modalRef = (0, import_react15.useRef)(null);
33777
+ (0, import_react15.useEffect)(() => {
33778
+ if (isOpen) {
33779
+ modalRef.current?.showModal();
33780
+ } else {
33781
+ onClose();
33782
+ modalRef.current?.close();
33783
+ }
33784
+ }, [isOpen, onClose]);
33785
+ const handleConfirm = () => {
33786
+ onConfirm?.();
33787
+ onClose();
33788
+ };
33789
+ const handleCancel = () => {
33790
+ onCancel?.();
33791
+ onClose();
33792
+ };
33793
+ if (!isOpen) return null;
33794
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
33795
+ ModalContent,
33796
+ {
33797
+ ref: ref || modalRef,
33798
+ className,
33799
+ role: "dialog",
33800
+ "aria-labelledby": "modal-heading",
33801
+ onClose,
33802
+ children: [
33803
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(ModalHeader, { children: [
33804
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Heading, { id: "modal-heading", children: heading }),
33805
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CloseButton, { onClick: onClose, "aria-label": "Close modal", type: "button", children: "\xD7" })
33806
+ ] }),
33807
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(ModalBody, { children: [
33808
+ text && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("p", { style: { margin: "0 0 1rem 0", color: "var(--j-text-color)" }, children: text }),
33809
+ children
33810
+ ] }),
33811
+ showButtons && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(ModalFooter, { children: [
33812
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button, { variant: "secondary", onClick: handleCancel, children: cancelText }),
33813
+ /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button, { variant: "primary", onClick: handleConfirm, children: confirmText })
33814
+ ] })
33815
+ ]
33816
+ }
33817
+ );
33818
+ }
33819
+ );
33820
+ Modal.displayName = "Modal";
33821
+
33822
+ // src/inspector/viewer/delete-local-data.tsx
33823
+ var import_react16 = __toESM(require_react(), 1);
33824
+ var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
33825
+ var DELETE_LOCAL_DATA_STRING = "delete my local data";
33826
+ function DeleteLocalData() {
33827
+ const [showDeleteModal, setShowDeleteModal] = (0, import_react16.useState)(false);
33828
+ const [confirmDeleteString, setConfirmDeleteString] = (0, import_react16.useState)("");
33829
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(import_jsx_runtime28.Fragment, { children: [
33830
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Button, { variant: "destructive", onClick: () => setShowDeleteModal(true), children: "Delete my local data" }),
33831
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
33832
+ Modal,
33833
+ {
33834
+ isOpen: showDeleteModal,
33835
+ onClose: () => setShowDeleteModal(false),
33836
+ heading: "Delete Local Data",
33837
+ showButtons: false,
33838
+ children: [
33839
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
33840
+ "div",
33841
+ {
33842
+ style: {
33843
+ margin: "0 0 1rem 0",
33844
+ color: "var(--j-text-color)",
33845
+ display: "flex",
33846
+ flexDirection: "column",
33847
+ gap: "0.5rem"
33848
+ },
33849
+ children: [
33850
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("p", { children: [
33851
+ "This action ",
33852
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("strong", { children: "cannot" }),
33853
+ " be undone."
33854
+ ] }),
33855
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("p", { children: [
33856
+ "Be aware that the following data will be",
33857
+ " ",
33858
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("strong", { children: "permanently" }),
33859
+ " deleted:"
33860
+ ] }),
33861
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("ul", { style: { listStyleType: "disc", paddingLeft: "1rem" }, children: [
33862
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("li", { children: [
33863
+ "Unsynced data for ",
33864
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("strong", { children: "all apps" }),
33865
+ " on",
33866
+ " ",
33867
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("code", { children: window.location.origin })
33868
+ ] }),
33869
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { children: "Accounts" }),
33870
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("li", { children: "Logged in sessions" })
33871
+ ] }),
33872
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("p", {})
33873
+ ]
33874
+ }
33875
+ ),
33876
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
33877
+ Input,
33878
+ {
33879
+ label: `Type "${DELETE_LOCAL_DATA_STRING}" to confirm`,
33880
+ placeholder: DELETE_LOCAL_DATA_STRING,
33881
+ value: confirmDeleteString,
33882
+ onChange: (e) => {
33883
+ setConfirmDeleteString(e.target.value);
33884
+ }
33885
+ }
33886
+ ),
33887
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
33888
+ "p",
33889
+ {
33890
+ style: {
33891
+ margin: "0 0 1rem 0",
33892
+ color: "var(--j-text-color)",
33893
+ display: "flex",
33894
+ flexDirection: "column",
33895
+ gap: "0.5rem"
33896
+ },
33897
+ children: /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("small", { children: [
33898
+ "Data synced to a sync server will ",
33899
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("strong", { children: "not" }),
33900
+ " be deleted, and will be synced when you log in again."
33901
+ ] })
33902
+ }
33903
+ ),
33904
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
33905
+ "div",
33906
+ {
33907
+ style: {
33908
+ display: "flex",
33909
+ marginTop: "0.5rem",
33910
+ justifyContent: "flex-end",
33911
+ gap: "0.5rem"
33912
+ },
33913
+ children: [
33914
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Button, { variant: "secondary", onClick: () => setShowDeleteModal(false), children: "Cancel" }),
33915
+ /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
33916
+ Button,
33917
+ {
33918
+ variant: "destructive",
33919
+ disabled: confirmDeleteString !== DELETE_LOCAL_DATA_STRING,
33920
+ onClick: () => {
33921
+ const jazzKeys = Object.keys(localStorage).filter(
33922
+ (key) => key.startsWith("jazz-") || key.startsWith("co_z")
33923
+ );
33924
+ jazzKeys.forEach((key) => localStorage.removeItem(key));
33925
+ indexedDB.deleteDatabase("jazz-storage");
33926
+ window.location.reload();
33927
+ setShowDeleteModal(false);
33928
+ },
33929
+ children: "I'm sure, delete my local data"
33930
+ }
33931
+ )
33932
+ ]
33933
+ }
33934
+ )
33935
+ ]
33936
+ }
33937
+ )
33938
+ ] });
33939
+ }
33940
+
33941
+ // src/inspector/viewer/new-app.tsx
33942
+ var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
33943
+ var InspectorContainer = styled19("div")`
33688
33944
  position: fixed;
33689
33945
  height: 50vh;
33690
33946
  max-height: 800px;
@@ -33701,17 +33957,17 @@ var InspectorContainer = styled18("div")`
33701
33957
  background-color: var(--j-background);
33702
33958
  }
33703
33959
  `;
33704
- var HeaderContainer2 = styled18("div")`
33960
+ var HeaderContainer2 = styled19("div")`
33705
33961
  display: flex;
33706
33962
  align-items: center;
33707
33963
  gap: 1rem;
33708
33964
  padding: 0 0.75rem;
33709
33965
  margin: 0.75rem 0;
33710
33966
  `;
33711
- var Form = styled18("form")`
33967
+ var Form = styled19("form")`
33712
33968
  width: 24rem;
33713
33969
  `;
33714
- var InitialForm = styled18("form")`
33970
+ var InitialForm = styled19("form")`
33715
33971
  display: flex;
33716
33972
  flex-direction: column;
33717
33973
  position: relative;
@@ -33723,7 +33979,7 @@ var InitialForm = styled18("form")`
33723
33979
  max-width: 24rem;
33724
33980
  margin: 0 auto;
33725
33981
  `;
33726
- var OrText = styled18("p")`
33982
+ var OrText = styled19("p")`
33727
33983
  text-align: center;
33728
33984
  `;
33729
33985
  function JazzInspectorInternal({
@@ -33732,7 +33988,7 @@ function JazzInspectorInternal({
33732
33988
  accountId
33733
33989
  }) {
33734
33990
  const [open, setOpen] = useOpenInspector();
33735
- const [coValueId, setCoValueId] = (0, import_react15.useState)("");
33991
+ const [coValueId, setCoValueId] = (0, import_react17.useState)("");
33736
33992
  const { path, addPages, goToIndex, goBack, setPage } = usePagePath();
33737
33993
  const handleCoValueIdSubmit = (e) => {
33738
33994
  e.preventDefault();
@@ -33742,12 +33998,12 @@ function JazzInspectorInternal({
33742
33998
  setCoValueId("");
33743
33999
  };
33744
34000
  if (!open) {
33745
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(InspectorButton, { position, onClick: () => setOpen(true) });
34001
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(InspectorButton, { position, onClick: () => setOpen(true) });
33746
34002
  }
33747
- return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(InspectorContainer, { as: GlobalStyles, style: { zIndex: 999 }, children: [
33748
- /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(HeaderContainer2, { children: [
33749
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Breadcrumbs, { path, onBreadcrumbClick: goToIndex }),
33750
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Form, { onSubmit: handleCoValueIdSubmit, children: path.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
34003
+ return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(InspectorContainer, { as: GlobalStyles, style: { zIndex: 999 }, children: [
34004
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(HeaderContainer2, { children: [
34005
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Breadcrumbs, { path, onBreadcrumbClick: goToIndex }),
34006
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Form, { onSubmit: handleCoValueIdSubmit, children: path.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
33751
34007
  Input,
33752
34008
  {
33753
34009
  label: "CoValue ID",
@@ -33758,23 +34014,24 @@ function JazzInspectorInternal({
33758
34014
  onChange: (e) => setCoValueId(e.target.value)
33759
34015
  }
33760
34016
  ) }),
33761
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button, { variant: "plain", type: "button", onClick: () => setOpen(false), children: "Close" })
34017
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(DeleteLocalData, {}),
34018
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { variant: "plain", type: "button", onClick: () => setOpen(false), children: "Close" })
33762
34019
  ] }),
33763
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
34020
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
33764
34021
  PageStack,
33765
34022
  {
33766
34023
  path,
33767
34024
  node: localNode,
33768
34025
  goBack,
33769
34026
  addPages,
33770
- children: path.length <= 0 && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(
34027
+ children: path.length <= 0 && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
33771
34028
  InitialForm,
33772
34029
  {
33773
34030
  onSubmit: handleCoValueIdSubmit,
33774
34031
  "aria-hidden": path.length !== 0,
33775
34032
  children: [
33776
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Heading, { children: "Jazz CoValue Inspector" }),
33777
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
34033
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Heading, { children: "Jazz CoValue Inspector" }),
34034
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
33778
34035
  Input,
33779
34036
  {
33780
34037
  label: "CoValue ID",
@@ -33785,10 +34042,10 @@ function JazzInspectorInternal({
33785
34042
  onChange: (e) => setCoValueId(e.target.value)
33786
34043
  }
33787
34044
  ),
33788
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Button, { type: "submit", variant: "primary", children: "Inspect CoValue" }),
33789
- accountId && /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_jsx_runtime27.Fragment, { children: [
33790
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(OrText, { children: "or" }),
33791
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
34045
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(Button, { type: "submit", variant: "primary", children: "Inspect CoValue" }),
34046
+ accountId && /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
34047
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(OrText, { children: "or" }),
34048
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
33792
34049
  Button,
33793
34050
  {
33794
34051
  variant: "secondary",
@@ -33808,54 +34065,8 @@ function JazzInspectorInternal({
33808
34065
  ] });
33809
34066
  }
33810
34067
 
33811
- // src/inspector/ui/select.tsx
33812
- var import_react16 = __toESM(require_react(), 1);
33813
- import { styled as styled19 } from "goober";
33814
- var import_jsx_runtime28 = __toESM(require_jsx_runtime(), 1);
33815
- var SelectContainer = styled19("div")`
33816
- display: grid;
33817
- gap: 0.25rem;
33818
- `;
33819
- var SelectWrapper = styled19("div")`
33820
- position: relative;
33821
- display: flex;
33822
- align-items: center;
33823
- `;
33824
- var StyledSelect = styled19("select")`
33825
- width: 100%;
33826
- border-radius: var(--j-radius-md);
33827
- border: 1px solid var(--j-border-color);
33828
- padding: 0.5rem 0.875rem 0.5rem 0.875rem;
33829
- padding-right: 2rem;
33830
- box-shadow: var(--j-shadow-sm);
33831
- font-weight: 500;
33832
- color: var(--j-text-color-strong);
33833
- appearance: none;
33834
- overflow: hidden;
33835
- text-overflow: ellipsis;
33836
- white-space: nowrap;
33837
-
33838
- @media (prefers-color-scheme: dark) {
33839
- background-color: var(--j-foreground);
33840
- }
33841
- `;
33842
- var SelectIcon = styled19("span")`
33843
- position: absolute;
33844
- right: 0.5em;
33845
- color: var(--j-neutral-400);
33846
- pointer-events: none;
33847
-
33848
- @media (prefers-color-scheme: dark) {
33849
- color: var(--j-neutral-900);
33850
- }
33851
- `;
33852
-
33853
- // src/inspector/index.ts
33854
- import { setup } from "goober";
33855
- setup(import_react17.default.createElement);
33856
-
33857
34068
  // src/inspector/custom-element.tsx
33858
- var import_jsx_runtime29 = __toESM(require_jsx_runtime(), 1);
34069
+ var import_jsx_runtime30 = __toESM(require_jsx_runtime(), 1);
33859
34070
  var JazzInspectorElement = class extends HTMLElement {
33860
34071
  constructor() {
33861
34072
  super(...arguments);
@@ -33897,7 +34108,7 @@ var JazzInspectorElement = class extends HTMLElement {
33897
34108
  return;
33898
34109
  }
33899
34110
  this.root?.render(
33900
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
34111
+ /* @__PURE__ */ (0, import_jsx_runtime30.jsx)(
33901
34112
  JazzInspectorInternal,
33902
34113
  {
33903
34114
  localNode: this.account.$jazz.localNode,
@@ -34023,4 +34234,4 @@ react/cjs/react-jsx-runtime.development.js:
34023
34234
  * LICENSE file in the root directory of this source tree.
34024
34235
  *)
34025
34236
  */
34026
- //# sourceMappingURL=custom-element-WCY6D3QJ.js.map
34237
+ //# sourceMappingURL=custom-element-G6SPZEBR.js.map