@reckona/mreact-compat 0.0.160 → 0.0.161

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 (102) hide show
  1. package/dist/class-component.d.ts +5 -0
  2. package/dist/class-component.d.ts.map +1 -1
  3. package/dist/class-component.js +36 -11
  4. package/dist/class-component.js.map +1 -1
  5. package/dist/context.d.ts +4 -0
  6. package/dist/context.d.ts.map +1 -1
  7. package/dist/context.js +4 -0
  8. package/dist/context.js.map +1 -1
  9. package/dist/element.d.ts +28 -0
  10. package/dist/element.d.ts.map +1 -1
  11. package/dist/element.js +21 -1
  12. package/dist/element.js.map +1 -1
  13. package/dist/event-priority.d.ts +1 -0
  14. package/dist/event-priority.d.ts.map +1 -1
  15. package/dist/event-priority.js +1 -0
  16. package/dist/event-priority.js.map +1 -1
  17. package/dist/event-replay.d.ts +6 -0
  18. package/dist/event-replay.d.ts.map +1 -1
  19. package/dist/event-replay.js +4 -0
  20. package/dist/event-replay.js.map +1 -1
  21. package/dist/flight-decoder.d.ts +1 -0
  22. package/dist/flight-decoder.d.ts.map +1 -1
  23. package/dist/flight-decoder.js.map +1 -1
  24. package/dist/flight-protocol.d.ts +2 -0
  25. package/dist/flight-protocol.d.ts.map +1 -1
  26. package/dist/flight-protocol.js +1 -0
  27. package/dist/flight-protocol.js.map +1 -1
  28. package/dist/flight-types.d.ts +21 -0
  29. package/dist/flight-types.d.ts.map +1 -1
  30. package/dist/flight-types.js.map +1 -1
  31. package/dist/flight.d.ts +7 -0
  32. package/dist/flight.d.ts.map +1 -1
  33. package/dist/flight.js +5 -0
  34. package/dist/flight.js.map +1 -1
  35. package/dist/hooks-entry.d.ts +2 -0
  36. package/dist/hooks-entry.d.ts.map +1 -1
  37. package/dist/hooks-entry.js +1 -0
  38. package/dist/hooks-entry.js.map +1 -1
  39. package/dist/hooks.d.ts +36 -0
  40. package/dist/hooks.d.ts.map +1 -1
  41. package/dist/hooks.js +42 -10
  42. package/dist/hooks.js.map +1 -1
  43. package/dist/host-reconciler.js +30 -30
  44. package/dist/host-reconciler.js.map +1 -1
  45. package/dist/hydration.d.ts +2 -0
  46. package/dist/hydration.d.ts.map +1 -1
  47. package/dist/hydration.js +1 -0
  48. package/dist/hydration.js.map +1 -1
  49. package/dist/index.d.ts +3 -0
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +1 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/internal.d.ts +1 -0
  54. package/dist/internal.d.ts.map +1 -1
  55. package/dist/internal.js +1 -0
  56. package/dist/internal.js.map +1 -1
  57. package/dist/jsx-dev-runtime.d.ts +5 -0
  58. package/dist/jsx-dev-runtime.d.ts.map +1 -1
  59. package/dist/jsx-dev-runtime.js +3 -0
  60. package/dist/jsx-dev-runtime.js.map +1 -1
  61. package/dist/jsx-runtime.d.ts +13 -0
  62. package/dist/jsx-runtime.d.ts.map +1 -1
  63. package/dist/jsx-runtime.js +4 -0
  64. package/dist/jsx-runtime.js.map +1 -1
  65. package/dist/react-default.d.ts +2 -0
  66. package/dist/react-default.d.ts.map +1 -1
  67. package/dist/react-default.js +2 -0
  68. package/dist/react-default.js.map +1 -1
  69. package/dist/root.d.ts +13 -0
  70. package/dist/root.d.ts.map +1 -1
  71. package/dist/root.js +6 -0
  72. package/dist/root.js.map +1 -1
  73. package/dist/scheduler.d.ts +23 -0
  74. package/dist/scheduler.d.ts.map +1 -1
  75. package/dist/scheduler.js +19 -0
  76. package/dist/scheduler.js.map +1 -1
  77. package/dist/server-render.d.ts +1 -0
  78. package/dist/server-render.d.ts.map +1 -1
  79. package/dist/server-render.js +1 -0
  80. package/dist/server-render.js.map +1 -1
  81. package/package.json +3 -3
  82. package/src/class-component.ts +47 -11
  83. package/src/context.ts +4 -0
  84. package/src/element.ts +33 -6
  85. package/src/event-priority.ts +1 -0
  86. package/src/event-replay.ts +6 -0
  87. package/src/flight-decoder.ts +1 -0
  88. package/src/flight-protocol.ts +2 -0
  89. package/src/flight-types.ts +21 -0
  90. package/src/flight.ts +7 -0
  91. package/src/hooks-entry.ts +2 -0
  92. package/src/hooks.ts +55 -15
  93. package/src/host-reconciler.ts +39 -38
  94. package/src/hydration.ts +2 -0
  95. package/src/index.ts +3 -0
  96. package/src/internal.ts +1 -0
  97. package/src/jsx-dev-runtime.ts +5 -0
  98. package/src/jsx-runtime.ts +13 -0
  99. package/src/react-default.ts +2 -0
  100. package/src/root.ts +13 -0
  101. package/src/scheduler.ts +23 -0
  102. package/src/server-render.ts +1 -0
@@ -22,6 +22,7 @@ export interface ClassComponentType {
22
22
  getDerivedStateFromProps?: (nextProps: Record<string, unknown>, previousState: Record<string, unknown>) => Record<string, unknown> | null;
23
23
  getDerivedStateFromError?: (error: Error) => Record<string, unknown> | null;
24
24
  }
25
+ /** Base class-style component contract with state updates and render lifecycle. */
25
26
  export interface Component<P extends Record<string, unknown> = Record<string, unknown>, S extends Record<string, unknown> = Record<string, unknown>> {
26
27
  props: P;
27
28
  state?: S;
@@ -34,7 +35,9 @@ export interface ComponentConstructor {
34
35
  <P extends Record<string, unknown> = Record<string, unknown>, S extends Record<string, unknown> = Record<string, unknown>>(this: Component<P, S>, props: P): void;
35
36
  prototype: Component<any, any>;
36
37
  }
38
+ /** Base class-style component constructor for React-compatible class components. */
37
39
  export declare const Component: ComponentConstructor;
40
+ /** Class-style component contract that skips updates for shallow-equal props and state. */
38
41
  export interface PureComponent<P extends Record<string, unknown> = Record<string, unknown>, S extends Record<string, unknown> = Record<string, unknown>> extends Component<P, S> {
39
42
  shouldComponentUpdate(nextProps: P, nextState: S): boolean;
40
43
  }
@@ -43,6 +46,7 @@ export interface PureComponentConstructor {
43
46
  <P extends Record<string, unknown> = Record<string, unknown>, S extends Record<string, unknown> = Record<string, unknown>>(this: PureComponent<P, S>, props: P): void;
44
47
  prototype: PureComponent<any, any>;
45
48
  }
49
+ /** Class-style component constructor with shallow prop and state comparison. */
46
50
  export declare const PureComponent: PureComponentConstructor;
47
51
  export type ClassComponentRenderResult = {
48
52
  kind: "render";
@@ -56,6 +60,7 @@ export declare function reconcileClassComponent(parent: ParentNode, previousNode
56
60
  export declare function renderClassComponentWithRuntime(type: ClassComponentType, props: Record<string, unknown>, runtime: RootRuntime, path: string, options?: {
57
61
  currentInstance?: ClassComponentInstance;
58
62
  hasDirtyDescendant?: boolean;
63
+ allowSkip?: boolean;
59
64
  }): ClassComponentRenderResult;
60
65
  export declare function applyDerivedStateFromProps(type: ClassComponentType, instance: ClassComponentInstance, nextProps: Record<string, unknown>, previousState: Record<string, unknown>): void;
61
66
  export declare function resolveDerivedStateFromProps(type: ClassComponentType, nextProps: Record<string, unknown>, previousState: Record<string, unknown>): Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"class-component.d.ts","sourceRoot":"","sources":["../src/class-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-component.d.ts","sourceRoot":"","sources":["../src/class-component.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { renderWithRootRuntime, useLayoutEffect, useRef } from "./hooks.js";
1
+ import { renderWithRootRuntime, scheduleRuntimeRerender, useLayoutEffect, useRef } from "./hooks.js";
2
2
  import { isReactCompatElement } from "./element.js";
3
3
  import { withHydrationComponentStack } from "./hydration.js";
4
4
  import { isThenable } from "./thenable.js";
5
5
  import { shallowEqual } from "./prop-comparison.js";
6
6
  const CLASS_COMPONENT_RUNTIME_OWNER = Symbol.for("modular.react.class_component_runtime");
7
+ /** Base class-style component constructor for React-compatible class components. */
7
8
  export const Component = function Component(props) {
8
9
  this.props = props;
9
10
  };
@@ -16,6 +17,7 @@ Component.prototype.forceUpdate = function forceUpdate(callback) {
16
17
  Component.prototype.render = function render() {
17
18
  return null;
18
19
  };
20
+ /** Class-style component constructor with shallow prop and state comparison. */
19
21
  export const PureComponent = function PureComponent(props) {
20
22
  Component.call(this, props);
21
23
  };
@@ -87,6 +89,7 @@ export function renderClassComponentWithRuntime(type, props, runtime, path, opti
87
89
  const shouldSkipUpdate = didCommitRef.current &&
88
90
  snapshot?.force !== true &&
89
91
  options.hasDirtyDescendant !== true &&
92
+ options.allowSkip !== false &&
90
93
  instance.shouldComponentUpdate?.(props, nextState) === false;
91
94
  instance.props = props;
92
95
  instance.state = nextState;
@@ -217,13 +220,16 @@ function enqueueClassSetState(instance, partial, callback) {
217
220
  ...baseState,
218
221
  ...nextPartial,
219
222
  };
220
- classLifecycleSnapshots.set(instance, {
223
+ const nextSnapshot = {
221
224
  ...snapshot,
222
225
  previousState,
223
226
  nextState,
224
- });
227
+ };
228
+ if (callback !== undefined) {
229
+ nextSnapshot.callbacks = [...(snapshot?.callbacks ?? []), callback.bind(instance)];
230
+ }
231
+ classLifecycleSnapshots.set(instance, nextSnapshot);
225
232
  markClassInstanceDirty(instance, updateContext);
226
- callback?.call(instance);
227
233
  }
228
234
  function enqueueClassForceUpdate(instance, callback) {
229
235
  const updateContext = classUpdateContexts.get(instance);
@@ -231,12 +237,17 @@ function enqueueClassForceUpdate(instance, callback) {
231
237
  callback?.call(instance);
232
238
  return;
233
239
  }
234
- classLifecycleSnapshots.set(instance, {
240
+ const snapshot = classLifecycleSnapshots.get(instance);
241
+ const nextSnapshot = {
242
+ ...snapshot,
235
243
  previousState: instance.state ?? {},
236
244
  force: true,
237
- });
245
+ };
246
+ if (callback !== undefined) {
247
+ nextSnapshot.callbacks = [...(snapshot?.callbacks ?? []), callback.bind(instance)];
248
+ }
249
+ classLifecycleSnapshots.set(instance, nextSnapshot);
238
250
  markClassInstanceDirty(instance, updateContext);
239
- callback?.call(instance);
240
251
  }
241
252
  function markClassInstanceDirty(instance, updateContext) {
242
253
  markPendingClassUpdate(instance, updateContext);
@@ -244,7 +255,7 @@ function markClassInstanceDirty(instance, updateContext) {
244
255
  if (runtimeInstance !== undefined) {
245
256
  runtimeInstance.dirty = true;
246
257
  }
247
- updateContext.runtime.rerender();
258
+ scheduleRuntimeRerender(updateContext.runtime);
248
259
  }
249
260
  export function hasDirtyClassUpdate(runtime, keys, prefix) {
250
261
  if (runtime === undefined) {
@@ -297,22 +308,25 @@ function clearPendingClassUpdate(runtime, path) {
297
308
  }
298
309
  function installClassLifecycleEffects(instance, didCommitRef, previousProps, previousState, skipUpdate, replacedInstance) {
299
310
  useLayoutEffect(() => {
311
+ const lifecycleSnapshot = classLifecycleSnapshots.get(instance);
300
312
  if (replacedInstance !== undefined) {
301
313
  replacedInstance.componentWillUnmount?.();
302
314
  classUpdateContexts.delete(replacedInstance);
303
315
  }
304
316
  if (skipUpdate) {
305
- classLifecycleSnapshots.delete(instance);
317
+ runClassUpdateCallbacks(lifecycleSnapshot);
318
+ deleteClassLifecycleSnapshotIfCurrent(instance, lifecycleSnapshot);
306
319
  return;
307
320
  }
308
321
  if (didCommitRef.current) {
309
- instance.componentDidUpdate?.(previousProps ?? {}, previousState, classLifecycleSnapshots.get(instance)?.snapshot);
322
+ instance.componentDidUpdate?.(previousProps ?? {}, previousState, lifecycleSnapshot?.snapshot);
310
323
  }
311
324
  else {
312
325
  didCommitRef.current = true;
313
326
  instance.componentDidMount?.();
314
327
  }
315
- classLifecycleSnapshots.delete(instance);
328
+ runClassUpdateCallbacks(lifecycleSnapshot);
329
+ deleteClassLifecycleSnapshotIfCurrent(instance, lifecycleSnapshot);
316
330
  });
317
331
  useLayoutEffect(() => {
318
332
  return () => {
@@ -322,6 +336,17 @@ function installClassLifecycleEffects(instance, didCommitRef, previousProps, pre
322
336
  };
323
337
  }, []);
324
338
  }
339
+ function runClassUpdateCallbacks(snapshot) {
340
+ const callbacks = snapshot?.callbacks ?? [];
341
+ for (const callback of callbacks) {
342
+ callback();
343
+ }
344
+ }
345
+ function deleteClassLifecycleSnapshotIfCurrent(instance, snapshot) {
346
+ if (classLifecycleSnapshots.get(instance) === snapshot) {
347
+ classLifecycleSnapshots.delete(instance);
348
+ }
349
+ }
325
350
  function isErrorBoundaryClass(type, instance) {
326
351
  return (typeof type.getDerivedStateFromError === "function" ||
327
352
  typeof instance.componentDidCatch === "function");
@@ -1 +1 @@
1
- {"version":3,"file":"class-component.js","sourceRoot":"","sources":["../src/class-component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,EAAoB,MAAM,YAAY,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAiD,MAAM,cAAc,CAAC;AACnG,OAAO,EAAE,2BAA2B,EAAsB,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,6BAA6B,GAAG,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AA0E1F,MAAM,CAAC,MAAM,SAAS,GAAyB,SAAS,SAAS,CAGxC,KAAQ;IAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,CAAyB,CAAC;AAE1B,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAK9C,OAK+B,EAC/B,QAAqB;IAErB,oBAAoB,CAClB,IAAyC,EACzC,OAAyE,EACzE,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,CAEpD,QAAqB;IAErB,uBAAuB,CAAC,IAAyC,EAAE,QAAQ,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAqBF,MAAM,CAAC,MAAM,aAAa,GAA6B,SAAS,aAAa,CAGhD,KAAQ;IAClC,SAAgE,CAAC,IAAI,CACpE,IAAI,EACJ,KAAK,CACN,CAAC;AACJ,CAA6B,CAAC;AAE9B,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAA4B,CAAC;AACxF,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,aAAa,CAAC;AACpD,aAAa,CAAC,SAAS,CAAC,qBAAqB,GAAG,SAAS,qBAAqB,CAK5E,SAAY,EACZ,SAAY;IAEZ,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AAClG,CAAC,CAAC;AAqBF,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;AACpF,MAAM,yBAAyB,GAC7B,CAAE,UAAwF,CACxF,yBAAyB,CAC1B,KAAK;IACJ,kBAAkB,EAAE,IAAI,OAAO,EAAE;IACjC,cAAc,EAAE,IAAI,OAAO,EAAE;IAC7B,yBAAyB,EAAE,IAAI,OAAO,EAAE;IACxC,mBAAmB,EAAE,IAAI,OAAO,EAAE;CACnC,CAAC,CAAC;AACL,MAAM,uBAAuB,GAAG,yBAAyB,CAAC,kBAAkB,CAAC;AAC7E,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,cAAc,CAAC;AACrE,MAAM,8BAA8B,GAAG,yBAAyB,CAAC,yBAAyB,CAAC;AAC3F,MAAM,wBAAwB,GAAG,yBAAyB,CAAC,mBAAmB,CAAC;AAW/E,MAAM,UAAU,uBAAuB,CACrC,MAAkB,EAClB,aAA8B,EAC9B,IAAwB,EACxB,KAA8B,EAC9B,OAAoB,EACpB,IAAY,EACZ,OAAsB,EACtB,aAA4B,EAC5B,UAAuD;IAEvD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAE7E,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC;IAC9E,CAAC;IAED,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,2BAA2B,CAC9C,OAAO,EACP,qBAAqB,CAAC,IAAI,CAAC,CAC5B,CAAC;IAEF,IAAI,CAAC;QACH,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,QAAQ,CAAC,IAAI,EACb,OAAO,EACP,GAAG,IAAI,QAAQ,EACf,YAAY,CACb,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,0BAA0B,CAC7C,QAAQ,CAAC,IAAI,EACb,QAAQ,CAAC,QAAQ,EACjB,KAAK,EACL,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC5E,CAAC;QAEF,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,OAAO,EACP,GAAG,IAAI,iBAAiB,EACxB,YAAY,CACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,IAAwB,EACxB,KAA8B,EAC9B,OAAoB,EACpB,IAAY,EACZ,UAGI,EAAE;IAEN,OAAO,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE;QAC/C,MAAM,WAAW,GAAG,MAAM,CAAqC,SAAS,CAAC,CAAC;QAC1E,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,eAAe,GACnB,OAAO,CAAC,eAAe,YAAY,IAAI;YACrC,CAAC,CAAC,OAAO,CAAC,eAAe;YACzB,CAAC,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEnD,IACE,eAAe,KAAK,SAAS;YAC7B,WAAW,CAAC,OAAO,KAAK,eAAe,EACvC,CAAC;YACD,WAAW,CAAC,OAAO,GAAG,eAAe,CAAC;YACtC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QAC9B,CAAC;QAED,MAAM,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC;QAC7C,MAAM,gBAAgB,GACpB,gBAAgB,KAAK,SAAS,IAAI,CAAC,CAAC,gBAAgB,YAAY,IAAI,CAAC,CAAC;QACxE,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QAEzE,IAAI,gBAAgB,EAAE,CAAC;YACrB,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjD,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC7C,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;YAC7B,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GACZ,WAAW,CAAC,OAAO,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,YAAY,IAAI;YACtE,CAAC,CAAC,WAAW,CAAC,OAAO;YACrB,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;QACrC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QAEtE,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;QAC/B,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,4BAA4B,CAC5C,IAAI,EACJ,KAAK,EACL,QAAQ,EAAE,SAAS,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,CAC5C,CAAC;QACF,MAAM,gBAAgB,GACpB,YAAY,CAAC,OAAO;YACpB,QAAQ,EAAE,KAAK,KAAK,IAAI;YACxB,OAAO,CAAC,kBAAkB,KAAK,IAAI;YACnC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,CAAC;QAE/D,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;QAC3B,4BAA4B,CAC1B,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,CACjB,CAAC;QAEF,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAE/B,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACpC,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACxC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,EAAE,CAC1C,aAAa,IAAI,EAAE,EACnB,aAAa,CACd;iBACF,CAAC,CAAC;YACL,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAEvE,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAChE,CAAC;IACH,CAAC,EAAE,6BAA6B,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAAwB,EACxB,QAAgC,EAChC,SAAkC,EAClC,aAAsC;IAEtC,QAAQ,CAAC,KAAK,GAAG,4BAA4B,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAwB,EACxB,SAAkC,EAClC,aAAsC;IAEtC,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAE/E,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO;QACL,GAAG,aAAa;QAChB,GAAG,YAAY;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,IAAwB,EACxB,QAAgC,EAChC,KAAc,EACd,cAAc,GAAG,2BAA2B,CAAC,IAAI,CAAC;IAElD,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC,eAAe,CAAC,CAAC;IAEtE,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACxD,QAAQ,CAAC,KAAK,GAAG;YACf,GAAG,QAAQ,CAAC,KAAK;YACjB,GAAG,YAAY;SAChB,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,iBAAiB,EAAE,CAAC,eAAe,EAAE;QAC5C,cAAc;KACf,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CACL,OAAO,KAAK,KAAK,UAAU;QAC3B,OAAQ,KAA8C,CAAC,SAAS,EAAE,MAAM;YACtE,UAAU,CACb,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAwB;IACrD,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAwB;IAC3D,OAAO,YAAY,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAqB,EAAE,YAAoB;IACzE,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,YAAY;QAC1D,CAAC,CAAC,YAAY,YAAY,EAAE;QAC5B,CAAC,CAAC,YAAY,SAAS,YAAY,YAAY,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAqB;IAClD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAI,IAAI,CAAC,IAAkC,CAAC,WAAW,CAAC;IACzE,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,IAAI,GAAI,IAAI,CAAC,IAA2B,CAAC,IAAI,CAAC;IACpD,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAkB,EAClB,aAA8B,EAC9B,OAA2B,EAC3B,OAAoB,EACpB,IAAY,EACZ,OAAsB,EACtB,aAA4B;IAE5B,IAAI,CAAC;QACH,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EACtB,OAAO,EACP,GAAG,IAAI,KAAK,EACZ,OAAO,CACR,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAEtC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YACjC,OAAkC,CAAC,eAAe,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QACxC,MAAM,YAAY,GAChB,OAAO,QAAQ,KAAK,UAAU;YAC5B,CAAC,CAAE,QAA8C,CAAC,eAAe,CAAC;YAClE,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO,aAAa,CAClB,MAAM,EACN,aAAa,EACb,YAAY,EACZ,OAAO,EACP,GAAG,IAAI,cAAc,EACrB,OAAO,CACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CAChC,QAAgC,EAChC,OAAoB,EACpB,IAAY;IAEZ,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC;IACjD,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC;AACzD,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAgC,EAChC,OAAuE,EACvE,QAAqB;IAErB,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,QAAQ,EAAE,aAAa,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IACtE,MAAM,SAAS,GAAG,QAAQ,EAAE,SAAS,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9D,MAAM,WAAW,GACf,OAAO,OAAO,KAAK,UAAU;QAC3B,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC;QACpC,CAAC,CAAC,OAAO,CAAC;IAEd,MAAM,SAAS,GACb,WAAW,KAAK,IAAI;QAClB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC;YACE,GAAG,SAAS;YACZ,GAAG,WAAW;SACf,CAAC;IAER,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE;QACpC,GAAG,QAAQ;QACX,aAAa;QACb,SAAS;KACV,CAAC,CAAC;IAEH,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAChD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAgC,EAChC,QAAqB;IAErB,MAAM,aAAa,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IAED,uBAAuB,CAAC,GAAG,CAAC,QAAQ,EAAE;QACpC,aAAa,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;QACnC,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAChD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAgC,EAChC,aAAiC;IAEjC,sBAAsB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAEjE,CAAC;IACd,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;IAC/B,CAAC;IACD,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAAgC,EAChC,IAAuB,EACvB,MAAe;IAEf,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAgC,EAChC,aAAiC;IAEjC,IAAI,gBAAgB,GAAG,8BAA8B,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACjF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,8BAA8B,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC9E,CAAC;IACD,IAAI,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IACD,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAoB,EACpB,IAAY,EACZ,IAAwB;IAExB,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,8BAA8B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACxE,OAAO,QAAQ,YAAY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAoB,EAAE,IAAY;IACjE,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,8BAA8B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAgC,EAChC,YAAkC,EAClC,aAAkD,EAClD,aAAsC,EACtC,UAAmB,EACnB,gBAAyC;IAEzC,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,gBAAgB,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAC1C,mBAAmB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,aAAa,IAAI,EAAE,EACnB,aAAa,EACb,uBAAuB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAChD,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;YAC5B,QAAQ,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACjC,CAAC;QAED,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,GAAG,EAAE;QACnB,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,oBAAoB,EAAE,EAAE,CAAC;YAClC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACzC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAwB,EACxB,QAAgC;IAEhC,OAAO,CACL,OAAO,IAAI,CAAC,wBAAwB,KAAK,UAAU;QACnD,OAAO,QAAQ,CAAC,iBAAiB,KAAK,UAAU,CACjD,CAAC;AACJ,CAAC","sourcesContent":["import { renderWithRootRuntime, useLayoutEffect, useRef, type RootRuntime } from \"./hooks.js\";\nimport { isReactCompatElement, type ReactCompatElement, type ReactCompatNode } from \"./element.js\";\nimport { withHydrationComponentStack, type RenderOptions } from \"./hydration.js\";\nimport type { ReconcileNode, ReconcileResult } from \"./reconcile-types.js\";\nimport { isThenable } from \"./thenable.js\";\nimport { shallowEqual } from \"./prop-comparison.js\";\n\nconst CLASS_COMPONENT_RUNTIME_OWNER = Symbol.for(\"modular.react.class_component_runtime\");\n\nexport interface ClassComponentInstance {\n props: Record<string, unknown>;\n state?: Record<string, unknown>;\n setState?: (\n partial:\n | Record<string, unknown>\n | ((\n previousState: Record<string, unknown>,\n props: Record<string, unknown>,\n ) => Record<string, unknown> | null),\n callback?: () => void,\n ) => void;\n forceUpdate?: (callback?: () => void) => void;\n render(): ReactCompatNode;\n componentDidMount?: () => void;\n componentDidUpdate?: (\n previousProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n snapshot?: unknown,\n ) => void;\n componentWillUnmount?: () => void;\n shouldComponentUpdate?: (\n nextProps: Record<string, unknown>,\n nextState: Record<string, unknown>,\n ) => boolean;\n getSnapshotBeforeUpdate?: (\n previousProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n ) => unknown;\n componentDidCatch?: (error: Error, info: { componentStack: string }) => void;\n}\n\nexport interface ClassComponentType {\n new (props: Record<string, unknown>): ClassComponentInstance;\n getDerivedStateFromProps?: (\n nextProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n ) => Record<string, unknown> | null;\n getDerivedStateFromError?: (error: Error) => Record<string, unknown> | null;\n}\n\nexport interface Component<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n> {\n props: P;\n state?: S;\n setState(\n partial:\n | Partial<S>\n | ((\n previousState: Readonly<S>,\n props: Readonly<P>,\n ) => Partial<S> | S | null),\n callback?: () => void,\n ): void;\n forceUpdate(callback?: () => void): void;\n render(): ReactCompatNode;\n}\n\nexport interface ComponentConstructor {\n new <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(props: P): Component<P, S>;\n <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(this: Component<P, S>, props: P): void;\n prototype: Component<any, any>;\n}\n\nexport const Component: ComponentConstructor = function Component<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n>(this: Component<P, S>, props: P): void {\n this.props = props;\n} as ComponentConstructor;\n\nComponent.prototype.setState = function setState<\n P extends Record<string, unknown>,\n S extends Record<string, unknown>,\n>(\n this: Component<P, S>,\n partial:\n | Partial<S>\n | ((\n previousState: Readonly<S>,\n props: Readonly<P>,\n ) => Partial<S> | S | null),\n callback?: () => void,\n): void {\n enqueueClassSetState(\n this as unknown as ClassComponentInstance,\n partial as Parameters<NonNullable<ClassComponentInstance[\"setState\"]>>[0],\n callback,\n );\n};\n\nComponent.prototype.forceUpdate = function forceUpdate(\n this: Component,\n callback?: () => void,\n): void {\n enqueueClassForceUpdate(this as unknown as ClassComponentInstance, callback);\n};\n\nComponent.prototype.render = function render(): ReactCompatNode {\n return null;\n};\n\nexport interface PureComponent<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n> extends Component<P, S> {\n shouldComponentUpdate(nextProps: P, nextState: S): boolean;\n}\n\nexport interface PureComponentConstructor {\n new <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(props: P): PureComponent<P, S>;\n <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(this: PureComponent<P, S>, props: P): void;\n prototype: PureComponent<any, any>;\n}\n\nexport const PureComponent: PureComponentConstructor = function PureComponent<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n>(this: PureComponent<P, S>, props: P): void {\n (Component as unknown as (this: unknown, props: unknown) => void).call(\n this,\n props,\n );\n} as PureComponentConstructor;\n\nPureComponent.prototype = Object.create(Component.prototype) as PureComponent<any, any>;\nPureComponent.prototype.constructor = PureComponent;\nPureComponent.prototype.shouldComponentUpdate = function shouldComponentUpdate<\n P extends Record<string, unknown>,\n S extends Record<string, unknown>,\n>(\n this: PureComponent<P, S>,\n nextProps: P,\n nextState: S,\n): boolean {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state ?? {}, nextState ?? {});\n};\n\ninterface ClassLifecycleSnapshot {\n previousState?: Record<string, unknown>;\n nextState?: Record<string, unknown>;\n force?: boolean;\n snapshot?: unknown;\n}\n\ninterface ClassUpdateContext {\n runtime: RootRuntime;\n path: string;\n}\n\ninterface ClassComponentGlobalState {\n lifecycleSnapshots: WeakMap<ClassComponentInstance, ClassLifecycleSnapshot>;\n updateContexts: WeakMap<ClassComponentInstance, ClassUpdateContext>;\n pendingInstancesByRuntime: WeakMap<RootRuntime, Map<string, ClassComponentInstance>>;\n dirtyPathsByRuntime: WeakMap<RootRuntime, Set<string>>;\n}\n\nconst CLASS_COMPONENT_STATE_KEY = Symbol.for(\"modular.react.class_component_state\");\nconst classComponentGlobalState =\n ((globalThis as typeof globalThis & Record<symbol, ClassComponentGlobalState | undefined>)[\n CLASS_COMPONENT_STATE_KEY\n ] ??= {\n lifecycleSnapshots: new WeakMap(),\n updateContexts: new WeakMap(),\n pendingInstancesByRuntime: new WeakMap(),\n dirtyPathsByRuntime: new WeakMap(),\n });\nconst classLifecycleSnapshots = classComponentGlobalState.lifecycleSnapshots;\nconst classUpdateContexts = classComponentGlobalState.updateContexts;\nconst classPendingInstancesByRuntime = classComponentGlobalState.pendingInstancesByRuntime;\nconst classDirtyPathsByRuntime = classComponentGlobalState.dirtyPathsByRuntime;\n\nexport type ClassComponentRenderResult =\n | {\n kind: \"render\";\n node: ReactCompatNode;\n instance: ClassComponentInstance;\n type: ClassComponentType;\n }\n | { kind: \"skip\" };\n\nexport function reconcileClassComponent(\n parent: ParentNode,\n previousNodes: readonly Node[],\n type: ClassComponentType,\n props: Record<string, unknown>,\n runtime: RootRuntime,\n path: string,\n options: RenderOptions,\n reconcileNode: ReconcileNode,\n onInstance?: (instance: ClassComponentInstance) => void,\n): ReconcileResult {\n const rendered = renderClassComponentWithRuntime(type, props, runtime, path);\n\n if (rendered.kind === \"skip\") {\n return { nodes: previousNodes.slice(0, 1), consumed: previousNodes.length };\n }\n\n onInstance?.(rendered.instance);\n const childOptions = withHydrationComponentStack(\n options,\n getClassComponentName(type),\n );\n\n try {\n return reconcileNode(\n parent,\n previousNodes,\n rendered.node,\n runtime,\n `${path}.class`,\n childOptions,\n );\n } catch (error) {\n const fallbackNode = recoverClassComponentError(\n rendered.type,\n rendered.instance,\n error,\n componentStackFromNode(rendered.node, getClassComponentName(rendered.type)),\n );\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n return reconcileNode(\n parent,\n previousNodes,\n fallbackNode,\n runtime,\n `${path}.class.fallback`,\n childOptions,\n );\n }\n}\n\nexport function renderClassComponentWithRuntime(\n type: ClassComponentType,\n props: Record<string, unknown>,\n runtime: RootRuntime,\n path: string,\n options: {\n currentInstance?: ClassComponentInstance;\n hasDirtyDescendant?: boolean;\n } = {},\n): ClassComponentRenderResult {\n return renderWithRootRuntime(runtime, path, () => {\n const instanceRef = useRef<ClassComponentInstance | undefined>(undefined);\n const didCommitRef = useRef(false);\n const currentInstance =\n options.currentInstance instanceof type\n ? options.currentInstance\n : getPendingClassInstance(runtime, path, type);\n\n if (\n currentInstance !== undefined &&\n instanceRef.current !== currentInstance\n ) {\n instanceRef.current = currentInstance;\n didCommitRef.current = true;\n }\n\n const previousInstance = instanceRef.current;\n const hasDifferentType =\n previousInstance !== undefined && !(previousInstance instanceof type);\n const replacedInstance = hasDifferentType ? previousInstance : undefined;\n\n if (hasDifferentType) {\n classLifecycleSnapshots.delete(previousInstance);\n classUpdateContexts.delete(previousInstance);\n didCommitRef.current = false;\n instanceRef.current = undefined;\n }\n\n const instance =\n instanceRef.current !== undefined && instanceRef.current instanceof type\n ? instanceRef.current\n : new type(props);\n const previousProps = instance.props;\n const snapshot = classLifecycleSnapshots.get(instance);\n const previousState = snapshot?.previousState ?? instance.state ?? {};\n\n instanceRef.current = instance;\n installClassUpdateMethods(instance, runtime, path);\n clearPendingClassUpdate(runtime, path);\n const nextState = resolveDerivedStateFromProps(\n type,\n props,\n snapshot?.nextState ?? instance.state ?? {},\n );\n const shouldSkipUpdate =\n didCommitRef.current &&\n snapshot?.force !== true &&\n options.hasDirtyDescendant !== true &&\n instance.shouldComponentUpdate?.(props, nextState) === false;\n\n instance.props = props;\n instance.state = nextState;\n installClassLifecycleEffects(\n instance,\n didCommitRef,\n previousProps,\n previousState,\n shouldSkipUpdate,\n replacedInstance,\n );\n\n if (shouldSkipUpdate) {\n return { kind: \"skip\" };\n }\n\n try {\n const node = instance.render();\n\n if (didCommitRef.current) {\n classLifecycleSnapshots.set(instance, {\n ...classLifecycleSnapshots.get(instance),\n snapshot: instance.getSnapshotBeforeUpdate?.(\n previousProps ?? {},\n previousState,\n ),\n });\n }\n\n return { kind: \"render\", node, instance, type };\n } catch (error) {\n const fallbackNode = recoverClassComponentError(type, instance, error);\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n return { kind: \"render\", node: fallbackNode, instance, type };\n }\n }, CLASS_COMPONENT_RUNTIME_OWNER);\n}\n\nexport function applyDerivedStateFromProps(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n nextProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n): void {\n instance.state = resolveDerivedStateFromProps(type, nextProps, previousState);\n}\n\nexport function resolveDerivedStateFromProps(\n type: ClassComponentType,\n nextProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n): Record<string, unknown> {\n const derivedState = type.getDerivedStateFromProps?.(nextProps, previousState);\n\n if (derivedState === undefined || derivedState === null) {\n return previousState;\n }\n\n return {\n ...previousState,\n ...derivedState,\n };\n}\n\nexport function recoverClassComponentError(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n error: unknown,\n componentStack = componentStackFromClassType(type),\n): ReactCompatNode | undefined {\n if (isThenable(error) || !isErrorBoundaryClass(type, instance)) {\n return undefined;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const derivedState = type.getDerivedStateFromError?.(normalizedError);\n\n if (derivedState !== undefined && derivedState !== null) {\n instance.state = {\n ...instance.state,\n ...derivedState,\n };\n }\n\n instance.componentDidCatch?.(normalizedError, {\n componentStack,\n });\n return instance.render();\n}\n\nexport function isClassComponentType(value: unknown): value is ClassComponentType {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render ===\n \"function\"\n );\n}\n\nfunction getClassComponentName(type: ClassComponentType): string {\n return type.name === \"\" ? \"Anonymous\" : type.name;\n}\n\nfunction componentStackFromClassType(type: ClassComponentType): string {\n return `\\n at ${getClassComponentName(type)}`;\n}\n\nfunction componentStackFromNode(node: ReactCompatNode, boundaryName: string): string {\n const childName = componentNameFromNode(node);\n return childName === undefined || childName === boundaryName\n ? `\\n at ${boundaryName}`\n : `\\n at ${childName}\\n at ${boundaryName}`;\n}\n\nfunction componentNameFromNode(node: ReactCompatNode): string | undefined {\n if (!isReactCompatElement(node)) {\n return undefined;\n }\n\n if (typeof node.type === \"string\") {\n return node.type;\n }\n\n const displayName = (node.type as { displayName?: unknown }).displayName;\n if (typeof displayName === \"string\" && displayName !== \"\") {\n return displayName;\n }\n\n const name = (node.type as { name?: unknown }).name;\n return typeof name === \"string\" && name !== \"\" ? name : \"Anonymous\";\n}\n\nexport function reconcileErrorBoundary(\n parent: ParentNode,\n previousNodes: readonly Node[],\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n options: RenderOptions,\n reconcileNode: ReconcileNode,\n): ReconcileResult {\n try {\n return reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.eb`,\n options,\n );\n } catch (error) {\n if (isThenable(error)) {\n throw error;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const onError = element.props.onError;\n\n if (typeof onError === \"function\") {\n (onError as (error: Error) => void)(normalizedError);\n }\n\n const fallback = element.props.fallback;\n const fallbackNode =\n typeof fallback === \"function\"\n ? (fallback as (error: Error) => ReactCompatNode)(normalizedError)\n : null;\n\n return reconcileNode(\n parent,\n previousNodes,\n fallbackNode,\n runtime,\n `${path}.eb.fallback`,\n options,\n );\n }\n}\n\nfunction installClassUpdateMethods(\n instance: ClassComponentInstance,\n runtime: RootRuntime,\n path: string,\n): void {\n classUpdateContexts.set(instance, { runtime, path });\n instance.setState = Component.prototype.setState;\n instance.forceUpdate = Component.prototype.forceUpdate;\n}\n\nfunction enqueueClassSetState(\n instance: ClassComponentInstance,\n partial: Parameters<NonNullable<ClassComponentInstance[\"setState\"]>>[0],\n callback?: () => void,\n): void {\n const updateContext = classUpdateContexts.get(instance);\n\n if (updateContext === undefined) {\n callback?.call(instance);\n return;\n }\n\n const snapshot = classLifecycleSnapshots.get(instance);\n const previousState = snapshot?.previousState ?? instance.state ?? {};\n const baseState = snapshot?.nextState ?? instance.state ?? {};\n const nextPartial =\n typeof partial === \"function\"\n ? partial(baseState, instance.props)\n : partial;\n\n const nextState =\n nextPartial === null\n ? baseState\n : {\n ...baseState,\n ...nextPartial,\n };\n\n classLifecycleSnapshots.set(instance, {\n ...snapshot,\n previousState,\n nextState,\n });\n\n markClassInstanceDirty(instance, updateContext);\n callback?.call(instance);\n}\n\nfunction enqueueClassForceUpdate(\n instance: ClassComponentInstance,\n callback?: () => void,\n): void {\n const updateContext = classUpdateContexts.get(instance);\n\n if (updateContext === undefined) {\n callback?.call(instance);\n return;\n }\n\n classLifecycleSnapshots.set(instance, {\n previousState: instance.state ?? {},\n force: true,\n });\n markClassInstanceDirty(instance, updateContext);\n callback?.call(instance);\n}\n\nfunction markClassInstanceDirty(\n instance: ClassComponentInstance,\n updateContext: ClassUpdateContext,\n): void {\n markPendingClassUpdate(instance, updateContext);\n const runtimeInstance = updateContext.runtime.instances.get(updateContext.path) as\n | { dirty?: boolean }\n | undefined;\n if (runtimeInstance !== undefined) {\n runtimeInstance.dirty = true;\n }\n updateContext.runtime.rerender();\n}\n\nexport function hasDirtyClassUpdate(\n runtime: RootRuntime | undefined,\n keys: readonly string[],\n prefix?: string,\n): boolean {\n if (runtime === undefined) {\n return false;\n }\n\n const dirtyPaths = classDirtyPathsByRuntime.get(runtime);\n if (dirtyPaths === undefined) {\n return false;\n }\n\n for (const key of keys) {\n if (dirtyPaths.has(key)) {\n return true;\n }\n }\n\n if (prefix === undefined) {\n return false;\n }\n\n for (const dirtyPath of dirtyPaths) {\n if (dirtyPath === prefix || dirtyPath.startsWith(`${prefix}.`)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction markPendingClassUpdate(\n instance: ClassComponentInstance,\n updateContext: ClassUpdateContext,\n): void {\n let pendingInstances = classPendingInstancesByRuntime.get(updateContext.runtime);\n if (pendingInstances === undefined) {\n pendingInstances = new Map();\n classPendingInstancesByRuntime.set(updateContext.runtime, pendingInstances);\n }\n let dirtyPaths = classDirtyPathsByRuntime.get(updateContext.runtime);\n if (dirtyPaths === undefined) {\n dirtyPaths = new Set();\n classDirtyPathsByRuntime.set(updateContext.runtime, dirtyPaths);\n }\n pendingInstances.set(updateContext.path, instance);\n dirtyPaths.add(updateContext.path);\n}\n\nfunction getPendingClassInstance(\n runtime: RootRuntime,\n path: string,\n type: ClassComponentType,\n): ClassComponentInstance | undefined {\n const dirtyPaths = classDirtyPathsByRuntime.get(runtime);\n if (dirtyPaths?.has(path) !== true) {\n return undefined;\n }\n\n const instance = classPendingInstancesByRuntime.get(runtime)?.get(path);\n return instance instanceof type ? instance : undefined;\n}\n\nfunction clearPendingClassUpdate(runtime: RootRuntime, path: string): void {\n classDirtyPathsByRuntime.get(runtime)?.delete(path);\n classPendingInstancesByRuntime.get(runtime)?.delete(path);\n}\n\nfunction installClassLifecycleEffects(\n instance: ClassComponentInstance,\n didCommitRef: { current: boolean },\n previousProps: Record<string, unknown> | undefined,\n previousState: Record<string, unknown>,\n skipUpdate: boolean,\n replacedInstance?: ClassComponentInstance,\n): void {\n useLayoutEffect(() => {\n if (replacedInstance !== undefined) {\n replacedInstance.componentWillUnmount?.();\n classUpdateContexts.delete(replacedInstance);\n }\n\n if (skipUpdate) {\n classLifecycleSnapshots.delete(instance);\n return;\n }\n\n if (didCommitRef.current) {\n instance.componentDidUpdate?.(\n previousProps ?? {},\n previousState,\n classLifecycleSnapshots.get(instance)?.snapshot,\n );\n } else {\n didCommitRef.current = true;\n instance.componentDidMount?.();\n }\n\n classLifecycleSnapshots.delete(instance);\n });\n\n useLayoutEffect(() => {\n return () => {\n instance.componentWillUnmount?.();\n classLifecycleSnapshots.delete(instance);\n classUpdateContexts.delete(instance);\n };\n }, []);\n}\n\nfunction isErrorBoundaryClass(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n): boolean {\n return (\n typeof type.getDerivedStateFromError === \"function\" ||\n typeof instance.componentDidCatch === \"function\"\n );\n}\n"]}
1
+ {"version":3,"file":"class-component.js","sourceRoot":"","sources":["../src/class-component.ts"],"names":[],"mappings":"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","sourcesContent":["import { renderWithRootRuntime, scheduleRuntimeRerender, useLayoutEffect, useRef, type RootRuntime } from \"./hooks.js\";\nimport { isReactCompatElement, type ReactCompatElement, type ReactCompatNode } from \"./element.js\";\nimport { withHydrationComponentStack, type RenderOptions } from \"./hydration.js\";\nimport type { ReconcileNode, ReconcileResult } from \"./reconcile-types.js\";\nimport { isThenable } from \"./thenable.js\";\nimport { shallowEqual } from \"./prop-comparison.js\";\n\nconst CLASS_COMPONENT_RUNTIME_OWNER = Symbol.for(\"modular.react.class_component_runtime\");\n\nexport interface ClassComponentInstance {\n props: Record<string, unknown>;\n state?: Record<string, unknown>;\n setState?: (\n partial:\n | Record<string, unknown>\n | ((\n previousState: Record<string, unknown>,\n props: Record<string, unknown>,\n ) => Record<string, unknown> | null),\n callback?: () => void,\n ) => void;\n forceUpdate?: (callback?: () => void) => void;\n render(): ReactCompatNode;\n componentDidMount?: () => void;\n componentDidUpdate?: (\n previousProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n snapshot?: unknown,\n ) => void;\n componentWillUnmount?: () => void;\n shouldComponentUpdate?: (\n nextProps: Record<string, unknown>,\n nextState: Record<string, unknown>,\n ) => boolean;\n getSnapshotBeforeUpdate?: (\n previousProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n ) => unknown;\n componentDidCatch?: (error: Error, info: { componentStack: string }) => void;\n}\n\nexport interface ClassComponentType {\n new (props: Record<string, unknown>): ClassComponentInstance;\n getDerivedStateFromProps?: (\n nextProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n ) => Record<string, unknown> | null;\n getDerivedStateFromError?: (error: Error) => Record<string, unknown> | null;\n}\n\n/** Base class-style component contract with state updates and render lifecycle. */\nexport interface Component<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n> {\n props: P;\n state?: S;\n setState(\n partial:\n | Partial<S>\n | ((\n previousState: Readonly<S>,\n props: Readonly<P>,\n ) => Partial<S> | S | null),\n callback?: () => void,\n ): void;\n forceUpdate(callback?: () => void): void;\n render(): ReactCompatNode;\n}\n\nexport interface ComponentConstructor {\n new <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(props: P): Component<P, S>;\n <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(this: Component<P, S>, props: P): void;\n prototype: Component<any, any>;\n}\n\n/** Base class-style component constructor for React-compatible class components. */\nexport const Component: ComponentConstructor = function Component<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n>(this: Component<P, S>, props: P): void {\n this.props = props;\n} as ComponentConstructor;\n\nComponent.prototype.setState = function setState<\n P extends Record<string, unknown>,\n S extends Record<string, unknown>,\n>(\n this: Component<P, S>,\n partial:\n | Partial<S>\n | ((\n previousState: Readonly<S>,\n props: Readonly<P>,\n ) => Partial<S> | S | null),\n callback?: () => void,\n): void {\n enqueueClassSetState(\n this as unknown as ClassComponentInstance,\n partial as Parameters<NonNullable<ClassComponentInstance[\"setState\"]>>[0],\n callback,\n );\n};\n\nComponent.prototype.forceUpdate = function forceUpdate(\n this: Component,\n callback?: () => void,\n): void {\n enqueueClassForceUpdate(this as unknown as ClassComponentInstance, callback);\n};\n\nComponent.prototype.render = function render(): ReactCompatNode {\n return null;\n};\n\n/** Class-style component contract that skips updates for shallow-equal props and state. */\nexport interface PureComponent<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n> extends Component<P, S> {\n shouldComponentUpdate(nextProps: P, nextState: S): boolean;\n}\n\nexport interface PureComponentConstructor {\n new <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(props: P): PureComponent<P, S>;\n <\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n >(this: PureComponent<P, S>, props: P): void;\n prototype: PureComponent<any, any>;\n}\n\n/** Class-style component constructor with shallow prop and state comparison. */\nexport const PureComponent: PureComponentConstructor = function PureComponent<\n P extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n>(this: PureComponent<P, S>, props: P): void {\n (Component as unknown as (this: unknown, props: unknown) => void).call(\n this,\n props,\n );\n} as PureComponentConstructor;\n\nPureComponent.prototype = Object.create(Component.prototype) as PureComponent<any, any>;\nPureComponent.prototype.constructor = PureComponent;\nPureComponent.prototype.shouldComponentUpdate = function shouldComponentUpdate<\n P extends Record<string, unknown>,\n S extends Record<string, unknown>,\n>(\n this: PureComponent<P, S>,\n nextProps: P,\n nextState: S,\n): boolean {\n return !shallowEqual(this.props, nextProps) || !shallowEqual(this.state ?? {}, nextState ?? {});\n};\n\ninterface ClassLifecycleSnapshot {\n previousState?: Record<string, unknown>;\n nextState?: Record<string, unknown>;\n force?: boolean;\n snapshot?: unknown;\n callbacks?: (() => void)[];\n}\n\ninterface ClassUpdateContext {\n runtime: RootRuntime;\n path: string;\n}\n\ninterface ClassComponentGlobalState {\n lifecycleSnapshots: WeakMap<ClassComponentInstance, ClassLifecycleSnapshot>;\n updateContexts: WeakMap<ClassComponentInstance, ClassUpdateContext>;\n pendingInstancesByRuntime: WeakMap<RootRuntime, Map<string, ClassComponentInstance>>;\n dirtyPathsByRuntime: WeakMap<RootRuntime, Set<string>>;\n}\n\nconst CLASS_COMPONENT_STATE_KEY = Symbol.for(\"modular.react.class_component_state\");\nconst classComponentGlobalState =\n ((globalThis as typeof globalThis & Record<symbol, ClassComponentGlobalState | undefined>)[\n CLASS_COMPONENT_STATE_KEY\n ] ??= {\n lifecycleSnapshots: new WeakMap(),\n updateContexts: new WeakMap(),\n pendingInstancesByRuntime: new WeakMap(),\n dirtyPathsByRuntime: new WeakMap(),\n });\nconst classLifecycleSnapshots = classComponentGlobalState.lifecycleSnapshots;\nconst classUpdateContexts = classComponentGlobalState.updateContexts;\nconst classPendingInstancesByRuntime = classComponentGlobalState.pendingInstancesByRuntime;\nconst classDirtyPathsByRuntime = classComponentGlobalState.dirtyPathsByRuntime;\n\nexport type ClassComponentRenderResult =\n | {\n kind: \"render\";\n node: ReactCompatNode;\n instance: ClassComponentInstance;\n type: ClassComponentType;\n }\n | { kind: \"skip\" };\n\nexport function reconcileClassComponent(\n parent: ParentNode,\n previousNodes: readonly Node[],\n type: ClassComponentType,\n props: Record<string, unknown>,\n runtime: RootRuntime,\n path: string,\n options: RenderOptions,\n reconcileNode: ReconcileNode,\n onInstance?: (instance: ClassComponentInstance) => void,\n): ReconcileResult {\n const rendered = renderClassComponentWithRuntime(type, props, runtime, path);\n\n if (rendered.kind === \"skip\") {\n return { nodes: previousNodes.slice(0, 1), consumed: previousNodes.length };\n }\n\n onInstance?.(rendered.instance);\n const childOptions = withHydrationComponentStack(\n options,\n getClassComponentName(type),\n );\n\n try {\n return reconcileNode(\n parent,\n previousNodes,\n rendered.node,\n runtime,\n `${path}.class`,\n childOptions,\n );\n } catch (error) {\n const fallbackNode = recoverClassComponentError(\n rendered.type,\n rendered.instance,\n error,\n componentStackFromNode(rendered.node, getClassComponentName(rendered.type)),\n );\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n return reconcileNode(\n parent,\n previousNodes,\n fallbackNode,\n runtime,\n `${path}.class.fallback`,\n childOptions,\n );\n }\n}\n\nexport function renderClassComponentWithRuntime(\n type: ClassComponentType,\n props: Record<string, unknown>,\n runtime: RootRuntime,\n path: string,\n options: {\n currentInstance?: ClassComponentInstance;\n hasDirtyDescendant?: boolean;\n allowSkip?: boolean;\n } = {},\n): ClassComponentRenderResult {\n return renderWithRootRuntime(runtime, path, () => {\n const instanceRef = useRef<ClassComponentInstance | undefined>(undefined);\n const didCommitRef = useRef(false);\n const currentInstance =\n options.currentInstance instanceof type\n ? options.currentInstance\n : getPendingClassInstance(runtime, path, type);\n\n if (\n currentInstance !== undefined &&\n instanceRef.current !== currentInstance\n ) {\n instanceRef.current = currentInstance;\n didCommitRef.current = true;\n }\n\n const previousInstance = instanceRef.current;\n const hasDifferentType =\n previousInstance !== undefined && !(previousInstance instanceof type);\n const replacedInstance = hasDifferentType ? previousInstance : undefined;\n\n if (hasDifferentType) {\n classLifecycleSnapshots.delete(previousInstance);\n classUpdateContexts.delete(previousInstance);\n didCommitRef.current = false;\n instanceRef.current = undefined;\n }\n\n const instance =\n instanceRef.current !== undefined && instanceRef.current instanceof type\n ? instanceRef.current\n : new type(props);\n const previousProps = instance.props;\n const snapshot = classLifecycleSnapshots.get(instance);\n const previousState = snapshot?.previousState ?? instance.state ?? {};\n\n instanceRef.current = instance;\n installClassUpdateMethods(instance, runtime, path);\n clearPendingClassUpdate(runtime, path);\n const nextState = resolveDerivedStateFromProps(\n type,\n props,\n snapshot?.nextState ?? instance.state ?? {},\n );\n const shouldSkipUpdate =\n didCommitRef.current &&\n snapshot?.force !== true &&\n options.hasDirtyDescendant !== true &&\n options.allowSkip !== false &&\n instance.shouldComponentUpdate?.(props, nextState) === false;\n\n instance.props = props;\n instance.state = nextState;\n installClassLifecycleEffects(\n instance,\n didCommitRef,\n previousProps,\n previousState,\n shouldSkipUpdate,\n replacedInstance,\n );\n\n if (shouldSkipUpdate) {\n return { kind: \"skip\" };\n }\n\n try {\n const node = instance.render();\n\n if (didCommitRef.current) {\n classLifecycleSnapshots.set(instance, {\n ...classLifecycleSnapshots.get(instance),\n snapshot: instance.getSnapshotBeforeUpdate?.(\n previousProps ?? {},\n previousState,\n ),\n });\n }\n\n return { kind: \"render\", node, instance, type };\n } catch (error) {\n const fallbackNode = recoverClassComponentError(type, instance, error);\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n return { kind: \"render\", node: fallbackNode, instance, type };\n }\n }, CLASS_COMPONENT_RUNTIME_OWNER);\n}\n\nexport function applyDerivedStateFromProps(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n nextProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n): void {\n instance.state = resolveDerivedStateFromProps(type, nextProps, previousState);\n}\n\nexport function resolveDerivedStateFromProps(\n type: ClassComponentType,\n nextProps: Record<string, unknown>,\n previousState: Record<string, unknown>,\n): Record<string, unknown> {\n const derivedState = type.getDerivedStateFromProps?.(nextProps, previousState);\n\n if (derivedState === undefined || derivedState === null) {\n return previousState;\n }\n\n return {\n ...previousState,\n ...derivedState,\n };\n}\n\nexport function recoverClassComponentError(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n error: unknown,\n componentStack = componentStackFromClassType(type),\n): ReactCompatNode | undefined {\n if (isThenable(error) || !isErrorBoundaryClass(type, instance)) {\n return undefined;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const derivedState = type.getDerivedStateFromError?.(normalizedError);\n\n if (derivedState !== undefined && derivedState !== null) {\n instance.state = {\n ...instance.state,\n ...derivedState,\n };\n }\n\n instance.componentDidCatch?.(normalizedError, {\n componentStack,\n });\n return instance.render();\n}\n\nexport function isClassComponentType(value: unknown): value is ClassComponentType {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render ===\n \"function\"\n );\n}\n\nfunction getClassComponentName(type: ClassComponentType): string {\n return type.name === \"\" ? \"Anonymous\" : type.name;\n}\n\nfunction componentStackFromClassType(type: ClassComponentType): string {\n return `\\n at ${getClassComponentName(type)}`;\n}\n\nfunction componentStackFromNode(node: ReactCompatNode, boundaryName: string): string {\n const childName = componentNameFromNode(node);\n return childName === undefined || childName === boundaryName\n ? `\\n at ${boundaryName}`\n : `\\n at ${childName}\\n at ${boundaryName}`;\n}\n\nfunction componentNameFromNode(node: ReactCompatNode): string | undefined {\n if (!isReactCompatElement(node)) {\n return undefined;\n }\n\n if (typeof node.type === \"string\") {\n return node.type;\n }\n\n const displayName = (node.type as { displayName?: unknown }).displayName;\n if (typeof displayName === \"string\" && displayName !== \"\") {\n return displayName;\n }\n\n const name = (node.type as { name?: unknown }).name;\n return typeof name === \"string\" && name !== \"\" ? name : \"Anonymous\";\n}\n\nexport function reconcileErrorBoundary(\n parent: ParentNode,\n previousNodes: readonly Node[],\n element: ReactCompatElement,\n runtime: RootRuntime,\n path: string,\n options: RenderOptions,\n reconcileNode: ReconcileNode,\n): ReconcileResult {\n try {\n return reconcileNode(\n parent,\n previousNodes,\n element.props.children,\n runtime,\n `${path}.eb`,\n options,\n );\n } catch (error) {\n if (isThenable(error)) {\n throw error;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const onError = element.props.onError;\n\n if (typeof onError === \"function\") {\n (onError as (error: Error) => void)(normalizedError);\n }\n\n const fallback = element.props.fallback;\n const fallbackNode =\n typeof fallback === \"function\"\n ? (fallback as (error: Error) => ReactCompatNode)(normalizedError)\n : null;\n\n return reconcileNode(\n parent,\n previousNodes,\n fallbackNode,\n runtime,\n `${path}.eb.fallback`,\n options,\n );\n }\n}\n\nfunction installClassUpdateMethods(\n instance: ClassComponentInstance,\n runtime: RootRuntime,\n path: string,\n): void {\n classUpdateContexts.set(instance, { runtime, path });\n instance.setState = Component.prototype.setState;\n instance.forceUpdate = Component.prototype.forceUpdate;\n}\n\nfunction enqueueClassSetState(\n instance: ClassComponentInstance,\n partial: Parameters<NonNullable<ClassComponentInstance[\"setState\"]>>[0],\n callback?: () => void,\n): void {\n const updateContext = classUpdateContexts.get(instance);\n\n if (updateContext === undefined) {\n callback?.call(instance);\n return;\n }\n\n const snapshot = classLifecycleSnapshots.get(instance);\n const previousState = snapshot?.previousState ?? instance.state ?? {};\n const baseState = snapshot?.nextState ?? instance.state ?? {};\n const nextPartial =\n typeof partial === \"function\"\n ? partial(baseState, instance.props)\n : partial;\n\n const nextState =\n nextPartial === null\n ? baseState\n : {\n ...baseState,\n ...nextPartial,\n };\n\n const nextSnapshot: ClassLifecycleSnapshot = {\n ...snapshot,\n previousState,\n nextState,\n };\n if (callback !== undefined) {\n nextSnapshot.callbacks = [...(snapshot?.callbacks ?? []), callback.bind(instance)];\n }\n classLifecycleSnapshots.set(instance, nextSnapshot);\n\n markClassInstanceDirty(instance, updateContext);\n}\n\nfunction enqueueClassForceUpdate(\n instance: ClassComponentInstance,\n callback?: () => void,\n): void {\n const updateContext = classUpdateContexts.get(instance);\n\n if (updateContext === undefined) {\n callback?.call(instance);\n return;\n }\n\n const snapshot = classLifecycleSnapshots.get(instance);\n const nextSnapshot: ClassLifecycleSnapshot = {\n ...snapshot,\n previousState: instance.state ?? {},\n force: true,\n };\n if (callback !== undefined) {\n nextSnapshot.callbacks = [...(snapshot?.callbacks ?? []), callback.bind(instance)];\n }\n classLifecycleSnapshots.set(instance, nextSnapshot);\n markClassInstanceDirty(instance, updateContext);\n}\n\nfunction markClassInstanceDirty(\n instance: ClassComponentInstance,\n updateContext: ClassUpdateContext,\n): void {\n markPendingClassUpdate(instance, updateContext);\n const runtimeInstance = updateContext.runtime.instances.get(updateContext.path) as\n | { dirty?: boolean }\n | undefined;\n if (runtimeInstance !== undefined) {\n runtimeInstance.dirty = true;\n }\n scheduleRuntimeRerender(updateContext.runtime);\n}\n\nexport function hasDirtyClassUpdate(\n runtime: RootRuntime | undefined,\n keys: readonly string[],\n prefix?: string,\n): boolean {\n if (runtime === undefined) {\n return false;\n }\n\n const dirtyPaths = classDirtyPathsByRuntime.get(runtime);\n if (dirtyPaths === undefined) {\n return false;\n }\n\n for (const key of keys) {\n if (dirtyPaths.has(key)) {\n return true;\n }\n }\n\n if (prefix === undefined) {\n return false;\n }\n\n for (const dirtyPath of dirtyPaths) {\n if (dirtyPath === prefix || dirtyPath.startsWith(`${prefix}.`)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction markPendingClassUpdate(\n instance: ClassComponentInstance,\n updateContext: ClassUpdateContext,\n): void {\n let pendingInstances = classPendingInstancesByRuntime.get(updateContext.runtime);\n if (pendingInstances === undefined) {\n pendingInstances = new Map();\n classPendingInstancesByRuntime.set(updateContext.runtime, pendingInstances);\n }\n let dirtyPaths = classDirtyPathsByRuntime.get(updateContext.runtime);\n if (dirtyPaths === undefined) {\n dirtyPaths = new Set();\n classDirtyPathsByRuntime.set(updateContext.runtime, dirtyPaths);\n }\n pendingInstances.set(updateContext.path, instance);\n dirtyPaths.add(updateContext.path);\n}\n\nfunction getPendingClassInstance(\n runtime: RootRuntime,\n path: string,\n type: ClassComponentType,\n): ClassComponentInstance | undefined {\n const dirtyPaths = classDirtyPathsByRuntime.get(runtime);\n if (dirtyPaths?.has(path) !== true) {\n return undefined;\n }\n\n const instance = classPendingInstancesByRuntime.get(runtime)?.get(path);\n return instance instanceof type ? instance : undefined;\n}\n\nfunction clearPendingClassUpdate(runtime: RootRuntime, path: string): void {\n classDirtyPathsByRuntime.get(runtime)?.delete(path);\n classPendingInstancesByRuntime.get(runtime)?.delete(path);\n}\n\nfunction installClassLifecycleEffects(\n instance: ClassComponentInstance,\n didCommitRef: { current: boolean },\n previousProps: Record<string, unknown> | undefined,\n previousState: Record<string, unknown>,\n skipUpdate: boolean,\n replacedInstance?: ClassComponentInstance,\n): void {\n useLayoutEffect(() => {\n const lifecycleSnapshot = classLifecycleSnapshots.get(instance);\n\n if (replacedInstance !== undefined) {\n replacedInstance.componentWillUnmount?.();\n classUpdateContexts.delete(replacedInstance);\n }\n\n if (skipUpdate) {\n runClassUpdateCallbacks(lifecycleSnapshot);\n deleteClassLifecycleSnapshotIfCurrent(instance, lifecycleSnapshot);\n return;\n }\n\n if (didCommitRef.current) {\n instance.componentDidUpdate?.(\n previousProps ?? {},\n previousState,\n lifecycleSnapshot?.snapshot,\n );\n } else {\n didCommitRef.current = true;\n instance.componentDidMount?.();\n }\n\n runClassUpdateCallbacks(lifecycleSnapshot);\n deleteClassLifecycleSnapshotIfCurrent(instance, lifecycleSnapshot);\n });\n\n useLayoutEffect(() => {\n return () => {\n instance.componentWillUnmount?.();\n classLifecycleSnapshots.delete(instance);\n classUpdateContexts.delete(instance);\n };\n }, []);\n}\n\nfunction runClassUpdateCallbacks(snapshot: ClassLifecycleSnapshot | undefined): void {\n const callbacks = snapshot?.callbacks ?? [];\n\n for (const callback of callbacks) {\n callback();\n }\n}\n\nfunction deleteClassLifecycleSnapshotIfCurrent(\n instance: ClassComponentInstance,\n snapshot: ClassLifecycleSnapshot | undefined,\n): void {\n if (classLifecycleSnapshots.get(instance) === snapshot) {\n classLifecycleSnapshots.delete(instance);\n }\n}\n\nfunction isErrorBoundaryClass(\n type: ClassComponentType,\n instance: ClassComponentInstance,\n): boolean {\n return (\n typeof type.getDerivedStateFromError === \"function\" ||\n typeof instance.componentDidCatch === \"function\"\n );\n}\n"]}
package/dist/context.d.ts CHANGED
@@ -29,7 +29,9 @@ export interface ReactCompatConsumer<T> {
29
29
  displayName: string | undefined;
30
30
  }
31
31
  type ContextReadObserver = (context: ReactCompatContextLike<unknown>, value: unknown) => void;
32
+ /** Creates a context object with Provider and Consumer entries. */
32
33
  export declare function createContext<T>(defaultValue: T): ReactCompatContext<T>;
34
+ /** Reads the current value for a React-compatible context. */
33
35
  export declare function useContext<T>(context: ReactCompatContextLike<T>): T;
34
36
  export declare function readContextValue<T>(context: ReactCompatContextLike<T>): T;
35
37
  export declare function withContextReadObserver<T>(observer: ContextReadObserver, render: () => T): T;
@@ -39,7 +41,9 @@ export declare function isReactCompatConsumer(value: unknown): value is ReactCom
39
41
  export declare function renderWithContextProvider<T, R>(provider: ReactCompatProvider<T>, value: T, render: () => R): R;
40
42
  export declare function pushContextProvider<T>(provider: ReactCompatProvider<T>, value: T): void;
41
43
  export declare function popContextProvider<T>(provider: ReactCompatProvider<T>): void;
44
+ /** Renders a string while a provider value is active. */
42
45
  export declare function renderContextProviderToString<T>(provider: ReactCompatProvider<T>, value: T, render: () => string): string;
46
+ /** Renders a string with the current value from a context consumer. */
43
47
  export declare function renderContextConsumerToString<T>(consumer: ReactCompatConsumer<T>, render: (value: T) => string): string;
44
48
  export declare function providerContext<T>(provider: ReactCompatProvider<T>): ReactCompatContextLike<T>;
45
49
  export declare function consumerContext<T>(consumer: ReactCompatConsumer<T>): ReactCompatContextLike<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
package/dist/context.js CHANGED
@@ -5,6 +5,7 @@ const CONTEXT_READ_OBSERVER_STATE_KEY = Symbol.for("modular.react.context_read_o
5
5
  const contextReadObserverState = (globalThis[CONTEXT_READ_OBSERVER_STATE_KEY] ??= {
6
6
  current: undefined,
7
7
  });
8
+ /** Creates a context object with Provider and Consumer entries. */
8
9
  export function createContext(defaultValue) {
9
10
  const context = {
10
11
  defaultValue,
@@ -43,6 +44,7 @@ function installContextDisplayName(context) {
43
44
  },
44
45
  });
45
46
  }
47
+ /** Reads the current value for a React-compatible context. */
46
48
  export function useContext(context) {
47
49
  const value = readContextValue(context);
48
50
  contextReadObserverState.current?.(context, value);
@@ -122,9 +124,11 @@ export function popContextProvider(provider) {
122
124
  }
123
125
  externalContextValues.get(context)?.pop();
124
126
  }
127
+ /** Renders a string while a provider value is active. */
125
128
  export function renderContextProviderToString(provider, value, render) {
126
129
  return renderWithContextProvider(provider, value, render);
127
130
  }
131
+ /** Renders a string with the current value from a context consumer. */
128
132
  export function renderContextConsumerToString(consumer, render) {
129
133
  return render(useContext(consumerContext(consumer)));
130
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["const REACT_COMPAT_PROVIDER_TYPE = Symbol.for(\"react.context\");\nconst REACT_COMPAT_CONSUMER_TYPE = Symbol.for(\"react.consumer\");\n\nexport interface ReactCompatContext<T> {\n defaultValue: T;\n values: T[];\n Provider: ReactCompatProvider<T>;\n Consumer: ReactCompatConsumer<T>;\n displayName: string | undefined;\n}\n\nexport interface ReactCompatExternalContext<T> {\n $$typeof: typeof REACT_COMPAT_PROVIDER_TYPE;\n _currentValue?: T;\n _currentValue2?: T;\n _defaultValue?: T;\n Provider?: unknown;\n Consumer?: unknown;\n displayName?: string | undefined;\n}\n\nexport type ReactCompatContextLike<T> =\n | ReactCompatContext<T>\n | ReactCompatExternalContext<T>;\n\nexport interface ReactCompatProvider<T> {\n $$typeof: typeof REACT_COMPAT_PROVIDER_TYPE;\n context?: ReactCompatContextLike<T>;\n displayName: string | undefined;\n}\n\nexport interface ReactCompatConsumer<T> {\n $$typeof: typeof REACT_COMPAT_CONSUMER_TYPE;\n context?: ReactCompatContextLike<T>;\n _context?: ReactCompatContextLike<T>;\n displayName: string | undefined;\n}\n\ntype ContextReadObserver = (context: ReactCompatContextLike<unknown>, value: unknown) => void;\ninterface ContextReadObserverState {\n current: ContextReadObserver | undefined;\n}\n\nconst externalContextValues = new WeakMap<object, unknown[]>();\n\nconst CONTEXT_READ_OBSERVER_STATE_KEY = Symbol.for(\n \"modular.react.context_read_observer_state\",\n);\nconst contextReadObserverState =\n ((globalThis as typeof globalThis & Record<symbol, ContextReadObserverState | undefined>)[\n CONTEXT_READ_OBSERVER_STATE_KEY\n ] ??= {\n current: undefined,\n });\n\nexport function createContext<T>(defaultValue: T): ReactCompatContext<T> {\n const context: ReactCompatContext<T> = {\n defaultValue,\n values: [],\n Provider: undefined as unknown as ReactCompatProvider<T>,\n Consumer: undefined as unknown as ReactCompatConsumer<T>,\n displayName: undefined,\n };\n context.Provider = {\n $$typeof: REACT_COMPAT_PROVIDER_TYPE,\n context,\n displayName: undefined,\n };\n context.Consumer = {\n $$typeof: REACT_COMPAT_CONSUMER_TYPE,\n context,\n displayName: undefined,\n };\n installContextDisplayName(context);\n return context;\n}\n\nfunction installContextDisplayName<T>(context: ReactCompatContext<T>): void {\n let displayName: string | undefined;\n\n Object.defineProperty(context, \"displayName\", {\n configurable: true,\n enumerable: true,\n get() {\n return displayName;\n },\n set(value: string | undefined) {\n displayName = value;\n context.Provider.displayName =\n value === undefined ? undefined : `${value}.Provider`;\n context.Consumer.displayName =\n value === undefined ? undefined : `${value}.Consumer`;\n },\n });\n}\n\nexport function useContext<T>(context: ReactCompatContextLike<T>): T {\n const value = readContextValue(context);\n contextReadObserverState.current?.(context as ReactCompatContextLike<unknown>, value);\n return value;\n}\n\nexport function readContextValue<T>(context: ReactCompatContextLike<T>): T {\n if (isInternalContextRecord(context)) {\n if (context.values.length === 0) {\n return context.defaultValue;\n }\n\n return context.values[context.values.length - 1] as T;\n }\n\n const externalValues = externalContextValues.get(context);\n if (externalValues !== undefined && externalValues.length > 0) {\n return externalValues[externalValues.length - 1] as T;\n }\n\n if (Object.hasOwn(context, \"_currentValue\")) {\n return context._currentValue as T;\n }\n\n if (Object.hasOwn(context, \"_currentValue2\")) {\n return context._currentValue2 as T;\n }\n\n return context._defaultValue as T;\n}\n\nexport function withContextReadObserver<T>(\n observer: ContextReadObserver,\n render: () => T,\n): T {\n const previousObserver = contextReadObserverState.current;\n contextReadObserverState.current = observer;\n\n try {\n return render();\n } finally {\n contextReadObserverState.current = previousObserver;\n }\n}\n\nexport function isReactCompatProvider(\n value: unknown,\n): value is ReactCompatProvider<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_PROVIDER_TYPE\n );\n}\n\nexport function isReactCompatContext(\n value: unknown,\n): value is ReactCompatContext<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"Provider\" in value &&\n \"Consumer\" in value &&\n isReactCompatProvider((value as { Provider?: unknown }).Provider) &&\n isReactCompatConsumer((value as { Consumer?: unknown }).Consumer)\n );\n}\n\nexport function isReactCompatConsumer(\n value: unknown,\n): value is ReactCompatConsumer<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_CONSUMER_TYPE\n );\n}\n\nexport function renderWithContextProvider<T, R>(\n provider: ReactCompatProvider<T>,\n value: T,\n render: () => R,\n): R {\n pushContextProvider(provider, value);\n\n try {\n return render();\n } finally {\n popContextProvider(provider);\n }\n}\n\nexport function pushContextProvider<T>(\n provider: ReactCompatProvider<T>,\n value: T,\n): void {\n const context = providerContext(provider);\n\n if (isInternalContextRecord(context)) {\n context.values.push(value);\n return;\n }\n\n const values = externalContextValues.get(context) ?? [];\n values.push(value);\n externalContextValues.set(context, values);\n}\n\nexport function popContextProvider<T>(provider: ReactCompatProvider<T>): void {\n const context = providerContext(provider);\n\n if (isInternalContextRecord(context)) {\n context.values.pop();\n return;\n }\n\n externalContextValues.get(context)?.pop();\n}\n\nexport function renderContextProviderToString<T>(\n provider: ReactCompatProvider<T>,\n value: T,\n render: () => string,\n): string {\n return renderWithContextProvider(provider, value, render);\n}\n\nexport function renderContextConsumerToString<T>(\n consumer: ReactCompatConsumer<T>,\n render: (value: T) => string,\n): string {\n return render(useContext(consumerContext(consumer)));\n}\n\nexport function providerContext<T>(\n provider: ReactCompatProvider<T>,\n): ReactCompatContextLike<T> {\n return provider.context ?? (provider as unknown as ReactCompatExternalContext<T>);\n}\n\nexport function consumerContext<T>(\n consumer: ReactCompatConsumer<T>,\n): ReactCompatContextLike<T> {\n return (\n consumer.context ??\n consumer._context ??\n (consumer as unknown as ReactCompatExternalContext<T>)\n );\n}\n\nfunction isInternalContextRecord<T>(\n context: ReactCompatContextLike<T>,\n): context is ReactCompatContext<T> {\n return \"values\" in context && Array.isArray(context.values);\n}\n"]}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["const REACT_COMPAT_PROVIDER_TYPE = Symbol.for(\"react.context\");\nconst REACT_COMPAT_CONSUMER_TYPE = Symbol.for(\"react.consumer\");\n\nexport interface ReactCompatContext<T> {\n defaultValue: T;\n values: T[];\n Provider: ReactCompatProvider<T>;\n Consumer: ReactCompatConsumer<T>;\n displayName: string | undefined;\n}\n\nexport interface ReactCompatExternalContext<T> {\n $$typeof: typeof REACT_COMPAT_PROVIDER_TYPE;\n _currentValue?: T;\n _currentValue2?: T;\n _defaultValue?: T;\n Provider?: unknown;\n Consumer?: unknown;\n displayName?: string | undefined;\n}\n\nexport type ReactCompatContextLike<T> =\n | ReactCompatContext<T>\n | ReactCompatExternalContext<T>;\n\nexport interface ReactCompatProvider<T> {\n $$typeof: typeof REACT_COMPAT_PROVIDER_TYPE;\n context?: ReactCompatContextLike<T>;\n displayName: string | undefined;\n}\n\nexport interface ReactCompatConsumer<T> {\n $$typeof: typeof REACT_COMPAT_CONSUMER_TYPE;\n context?: ReactCompatContextLike<T>;\n _context?: ReactCompatContextLike<T>;\n displayName: string | undefined;\n}\n\ntype ContextReadObserver = (context: ReactCompatContextLike<unknown>, value: unknown) => void;\ninterface ContextReadObserverState {\n current: ContextReadObserver | undefined;\n}\n\nconst externalContextValues = new WeakMap<object, unknown[]>();\n\nconst CONTEXT_READ_OBSERVER_STATE_KEY = Symbol.for(\n \"modular.react.context_read_observer_state\",\n);\nconst contextReadObserverState =\n ((globalThis as typeof globalThis & Record<symbol, ContextReadObserverState | undefined>)[\n CONTEXT_READ_OBSERVER_STATE_KEY\n ] ??= {\n current: undefined,\n });\n\n/** Creates a context object with Provider and Consumer entries. */\nexport function createContext<T>(defaultValue: T): ReactCompatContext<T> {\n const context: ReactCompatContext<T> = {\n defaultValue,\n values: [],\n Provider: undefined as unknown as ReactCompatProvider<T>,\n Consumer: undefined as unknown as ReactCompatConsumer<T>,\n displayName: undefined,\n };\n context.Provider = {\n $$typeof: REACT_COMPAT_PROVIDER_TYPE,\n context,\n displayName: undefined,\n };\n context.Consumer = {\n $$typeof: REACT_COMPAT_CONSUMER_TYPE,\n context,\n displayName: undefined,\n };\n installContextDisplayName(context);\n return context;\n}\n\nfunction installContextDisplayName<T>(context: ReactCompatContext<T>): void {\n let displayName: string | undefined;\n\n Object.defineProperty(context, \"displayName\", {\n configurable: true,\n enumerable: true,\n get() {\n return displayName;\n },\n set(value: string | undefined) {\n displayName = value;\n context.Provider.displayName =\n value === undefined ? undefined : `${value}.Provider`;\n context.Consumer.displayName =\n value === undefined ? undefined : `${value}.Consumer`;\n },\n });\n}\n\n/** Reads the current value for a React-compatible context. */\nexport function useContext<T>(context: ReactCompatContextLike<T>): T {\n const value = readContextValue(context);\n contextReadObserverState.current?.(context as ReactCompatContextLike<unknown>, value);\n return value;\n}\n\nexport function readContextValue<T>(context: ReactCompatContextLike<T>): T {\n if (isInternalContextRecord(context)) {\n if (context.values.length === 0) {\n return context.defaultValue;\n }\n\n return context.values[context.values.length - 1] as T;\n }\n\n const externalValues = externalContextValues.get(context);\n if (externalValues !== undefined && externalValues.length > 0) {\n return externalValues[externalValues.length - 1] as T;\n }\n\n if (Object.hasOwn(context, \"_currentValue\")) {\n return context._currentValue as T;\n }\n\n if (Object.hasOwn(context, \"_currentValue2\")) {\n return context._currentValue2 as T;\n }\n\n return context._defaultValue as T;\n}\n\nexport function withContextReadObserver<T>(\n observer: ContextReadObserver,\n render: () => T,\n): T {\n const previousObserver = contextReadObserverState.current;\n contextReadObserverState.current = observer;\n\n try {\n return render();\n } finally {\n contextReadObserverState.current = previousObserver;\n }\n}\n\nexport function isReactCompatProvider(\n value: unknown,\n): value is ReactCompatProvider<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_PROVIDER_TYPE\n );\n}\n\nexport function isReactCompatContext(\n value: unknown,\n): value is ReactCompatContext<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n \"Provider\" in value &&\n \"Consumer\" in value &&\n isReactCompatProvider((value as { Provider?: unknown }).Provider) &&\n isReactCompatConsumer((value as { Consumer?: unknown }).Consumer)\n );\n}\n\nexport function isReactCompatConsumer(\n value: unknown,\n): value is ReactCompatConsumer<unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_CONSUMER_TYPE\n );\n}\n\nexport function renderWithContextProvider<T, R>(\n provider: ReactCompatProvider<T>,\n value: T,\n render: () => R,\n): R {\n pushContextProvider(provider, value);\n\n try {\n return render();\n } finally {\n popContextProvider(provider);\n }\n}\n\nexport function pushContextProvider<T>(\n provider: ReactCompatProvider<T>,\n value: T,\n): void {\n const context = providerContext(provider);\n\n if (isInternalContextRecord(context)) {\n context.values.push(value);\n return;\n }\n\n const values = externalContextValues.get(context) ?? [];\n values.push(value);\n externalContextValues.set(context, values);\n}\n\nexport function popContextProvider<T>(provider: ReactCompatProvider<T>): void {\n const context = providerContext(provider);\n\n if (isInternalContextRecord(context)) {\n context.values.pop();\n return;\n }\n\n externalContextValues.get(context)?.pop();\n}\n\n/** Renders a string while a provider value is active. */\nexport function renderContextProviderToString<T>(\n provider: ReactCompatProvider<T>,\n value: T,\n render: () => string,\n): string {\n return renderWithContextProvider(provider, value, render);\n}\n\n/** Renders a string with the current value from a context consumer. */\nexport function renderContextConsumerToString<T>(\n consumer: ReactCompatConsumer<T>,\n render: (value: T) => string,\n): string {\n return render(useContext(consumerContext(consumer)));\n}\n\nexport function providerContext<T>(\n provider: ReactCompatProvider<T>,\n): ReactCompatContextLike<T> {\n return provider.context ?? (provider as unknown as ReactCompatExternalContext<T>);\n}\n\nexport function consumerContext<T>(\n consumer: ReactCompatConsumer<T>,\n): ReactCompatContextLike<T> {\n return (\n consumer.context ??\n consumer._context ??\n (consumer as unknown as ReactCompatExternalContext<T>)\n );\n}\n\nfunction isInternalContextRecord<T>(\n context: ReactCompatContextLike<T>,\n): context is ReactCompatContext<T> {\n return \"values\" in context && Array.isArray(context.values);\n}\n"]}
package/dist/element.d.ts CHANGED
@@ -5,12 +5,18 @@ export declare const MEMO_TYPE: unique symbol;
5
5
  export declare const LAZY_TYPE: unique symbol;
6
6
  export declare const STRICT_MODE_TYPE: unique symbol;
7
7
  export declare const PORTAL_TYPE: unique symbol;
8
+ /** Symbol used to group JSX children without adding a host element. */
8
9
  export declare const Fragment: unique symbol;
10
+ /** Symbol used to suspend rendering while async content resolves. */
9
11
  export declare const Suspense: unique symbol;
12
+ /** Symbol used to coordinate multiple suspense boundaries. */
10
13
  export declare const SuspenseList: unique symbol;
14
+ /** Symbol used to mark activity boundaries in React-compatible trees. */
11
15
  export declare const Activity: unique symbol;
16
+ /** Symbol used to measure render work with profiler callbacks. */
12
17
  export declare const Profiler: unique symbol;
13
18
  export declare const HOST_CHILDREN_ONLY_PROPS_META: unique symbol;
19
+ /** Metadata key that links a state value to a reactive text binding. */
14
20
  export declare const REACTIVE_TEXT_BINDING_META: unique symbol;
15
21
  export interface ReactCompatProviderType {
16
22
  $$typeof: symbol;
@@ -20,10 +26,13 @@ export interface ReactCompatContextProviderShorthand {
20
26
  Provider: ReactCompatProviderType;
21
27
  Consumer: unknown;
22
28
  }
29
+ /** Element type accepted by createElement, JSX, and renderer entrypoints. */
23
30
  export type ElementType<P = Record<string, unknown>> = string | typeof Fragment | typeof Suspense | typeof SuspenseList | typeof Activity | typeof Profiler | typeof ERROR_BOUNDARY_TYPE | typeof STRICT_MODE_TYPE | ReactCompatContextProviderShorthand | ReactCompatProviderType | ForwardRefType<P> | MemoType<P> | LazyType<P> | ((props: P) => ReactCompatNode | PromiseLike<ReactCompatNode>) | (new (props: P) => {
24
31
  render(): ReactCompatNode;
25
32
  });
33
+ /** Renderable value accepted by the React-compatible renderer. */
26
34
  export type ReactCompatNode = ReactCompatElement | ReactCompatPortal | string | number | boolean | null | undefined | ReactCompatNode[];
35
+ /** React-compatible element record produced by createElement and JSX transforms. */
27
36
  export interface ReactCompatElement<P = Record<string, unknown>> {
28
37
  $$typeof: typeof REACT_COMPAT_ELEMENT_TYPE;
29
38
  type: ElementType<P>;
@@ -33,31 +42,41 @@ export interface ReactCompatElement<P = Record<string, unknown>> {
33
42
  children?: ReactCompatNode;
34
43
  };
35
44
  }
45
+ /** Portal record that renders children into an external DOM container. */
36
46
  export interface ReactCompatPortal {
37
47
  $$typeof: typeof PORTAL_TYPE;
38
48
  container: Element;
39
49
  children: ReactCompatNode;
40
50
  key: string | null;
41
51
  }
52
+ /** Creates a React-compatible element from a type, config object, and children. */
42
53
  export declare function createElement<P extends Record<string, unknown>>(type: ElementType<P>, config: (P & ReactReservedProps) | null, ...children: ReactCompatNode[]): ReactCompatElement<P>;
54
+ /** Creates a React-compatible element from JSX runtime arguments. */
43
55
  export declare function createElementFromJsxConfig<P extends Record<string, unknown>>(type: ElementType<P>, config: (P & ReactReservedProps & {
44
56
  children?: ReactCompatNode;
45
57
  }) | null, keyArgument?: unknown): ReactCompatElement<P>;
58
+ /** Returns true when a value is a React-compatible element record. */
46
59
  export declare function isReactCompatElement(value: unknown): value is ReactCompatElement;
60
+ /** Creates a portal that renders children into a DOM container outside the parent tree. */
47
61
  export declare function createPortal(children: ReactCompatNode, container: Element, key?: unknown): ReactCompatPortal;
62
+ /** Returns true when a value is a React-compatible portal record. */
48
63
  export declare function isReactCompatPortal(value: unknown): value is ReactCompatPortal;
64
+ /** Creates a mutable ref object with a null initial current value. */
49
65
  export declare function createRef<T>(): {
50
66
  current: T | null;
51
67
  };
68
+ /** Element type record produced by forwardRef. */
52
69
  export interface ForwardRefType<P = Record<string, unknown>> {
53
70
  $$typeof: typeof FORWARD_REF_TYPE;
54
71
  render: (props: P, ref: unknown) => ReactCompatNode;
55
72
  }
73
+ /** Element type record produced by memo. */
56
74
  export interface MemoType<P = Record<string, unknown>> {
57
75
  $$typeof: typeof MEMO_TYPE;
58
76
  type: ElementType<P>;
59
77
  compare?: (previous: P, next: P) => boolean;
60
78
  }
79
+ /** Element type record produced by lazy. */
61
80
  export interface LazyType<P = Record<string, unknown>> {
62
81
  $$typeof: typeof LAZY_TYPE;
63
82
  load: () => Promise<{
@@ -68,16 +87,21 @@ export interface LazyType<P = Record<string, unknown>> {
68
87
  resolved?: ElementType<P>;
69
88
  error?: unknown;
70
89
  }
90
+ /** Wraps a component so it can receive a ref as the second render argument. */
71
91
  export declare function forwardRef<P, T>(render: (props: P, ref: {
72
92
  current: T | null;
73
93
  } | ((value: T | null) => void) | null) => ReactCompatNode): ForwardRefType<P & {
74
94
  ref?: unknown;
75
95
  }>;
96
+ /** Wraps an element type with optional prop comparison for memoized renders. */
76
97
  export declare function memo<P>(type: ElementType<P>, compare?: (previous: P, next: P) => boolean): MemoType<P>;
98
+ /** Creates a lazy element type that resolves its implementation on demand. */
77
99
  export declare function lazy<P>(load: () => Promise<{
78
100
  default: ElementType<P>;
79
101
  }>): LazyType<P>;
102
+ /** Symbol used to mark a subtree for strict-mode development checks. */
80
103
  export declare const StrictMode: symbol;
104
+ /** Clones an existing element with merged props and optional replacement children. */
81
105
  export declare function cloneElement<P extends Record<string, unknown>>(element: ReactCompatElement<P>, props: Partial<P> | null, ...children: ReactCompatNode[]): ReactCompatElement<P>;
82
106
  interface ReactReservedProps {
83
107
  key?: unknown;
@@ -85,7 +109,9 @@ interface ReactReservedProps {
85
109
  __self?: unknown;
86
110
  __source?: unknown;
87
111
  }
112
+ /** Alias for checking whether a value is a React-compatible element. */
88
113
  export declare const isValidElement: typeof isReactCompatElement;
114
+ /** Helpers for iterating, counting, flattening, and validating children. */
89
115
  export declare const Children: {
90
116
  map<T>(children: ReactCompatNode, fn: (child: Exclude<ReactCompatNode, null | undefined | boolean>, index: number) => T): T[] | null;
91
117
  forEach(children: ReactCompatNode, fn: (child: Exclude<ReactCompatNode, null | undefined | boolean>, index: number) => void): void;
@@ -93,10 +119,12 @@ export declare const Children: {
93
119
  toArray(children: ReactCompatNode): Exclude<ReactCompatNode, null | undefined | boolean>[];
94
120
  only(children: ReactCompatNode): Exclude<ReactCompatNode, null | undefined | boolean>;
95
121
  };
122
+ /** Options used to render and observe a React-compatible error boundary. */
96
123
  export interface ErrorBoundaryOptions {
97
124
  fallback: (error: Error) => ReactCompatNode;
98
125
  onError?: (error: Error) => void;
99
126
  }
127
+ /** Creates an error boundary element with a fallback renderer. */
100
128
  export declare function createErrorBoundary(options: ErrorBoundaryOptions, children: ReactCompatNode): ReactCompatElement<ErrorBoundaryOptions & {
101
129
  children: ReactCompatNode;
102
130
  }>;