@reckona/mreact-compat 0.0.143 → 0.0.145

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.
@@ -1,7 +1,8 @@
1
- import { Fragment } from "./jsx-runtime.js";
1
+ import { Fragment, REACTIVE_TEXT_BINDING_META } from "./jsx-runtime.js";
2
2
  import type { ElementType, ReactCompatElement, ReactCompatNode } from "./element.js";
3
3
  import type { JSXIntrinsicAttributes, JSXIntrinsicElements } from "./jsx-runtime.js";
4
4
  export { Fragment };
5
+ export { REACTIVE_TEXT_BINDING_META };
5
6
  export type { FormEvent, FormEventHandler, JSXEvent, JSXEventHandler, JSXHTMLAttributes, JSXIntrinsicAttributes, JSXIntrinsicElements, } from "./jsx-runtime.js";
6
7
  export declare namespace JSX {
7
8
  interface Element extends ReactCompatElement {
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAO,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAChF,GAAG,EAAE,OAAO,EACZ,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,GACb,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
1
+ {"version":3,"file":"jsx-dev-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,0BAA0B,EAE3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtD,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,EAChF,GAAG,EAAE,OAAO,EACZ,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,GACb,kBAAkB,CAAC,CAAC,CAAC,CAEvB"}
@@ -1,5 +1,6 @@
1
- import { Fragment, jsx } from "./jsx-runtime.js";
1
+ import { Fragment, REACTIVE_TEXT_BINDING_META, jsx, } from "./jsx-runtime.js";
2
2
  export { Fragment };
3
+ export { REACTIVE_TEXT_BINDING_META };
3
4
  export function jsxDEV(type, props, key, _isStaticChildren, _source, _self) {
4
5
  return jsx(type, props, key);
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-dev-runtime.js","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAWjD,OAAO,EAAE,QAAQ,EAAE,CAAC;AAmBpB,MAAM,UAAU,MAAM,CACpB,IAAoB,EACpB,KAAgF,EAChF,GAAY,EACZ,iBAA0B,EAC1B,OAAgB,EAChB,KAAc;IAEd,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import { Fragment, jsx } from \"./jsx-runtime.js\";\nimport type {\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\nimport type {\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\nexport { Fragment };\nexport type {\n FormEvent,\n FormEventHandler,\n JSXEvent,\n JSXEventHandler,\n JSXHTMLAttributes,\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\nexport namespace JSX {\n export interface Element extends ReactCompatElement {}\n\n export interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n\n export interface IntrinsicElements extends JSXIntrinsicElements {}\n}\n\nexport function jsxDEV<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key: unknown,\n _isStaticChildren: boolean,\n _source: unknown,\n _self: unknown,\n): ReactCompatElement<P> {\n return jsx(type, props, key);\n}\n"]}
1
+ {"version":3,"file":"jsx-dev-runtime.js","sourceRoot":"","sources":["../src/jsx-dev-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,0BAA0B,EAC1B,GAAG,GACJ,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAmBtC,MAAM,UAAU,MAAM,CACpB,IAAoB,EACpB,KAAgF,EAChF,GAAY,EACZ,iBAA0B,EAC1B,OAAgB,EAChB,KAAc;IAEd,OAAO,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import {\n Fragment,\n REACTIVE_TEXT_BINDING_META,\n jsx,\n} from \"./jsx-runtime.js\";\nimport type {\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\nimport type {\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\nexport { Fragment };\nexport { REACTIVE_TEXT_BINDING_META };\nexport type {\n FormEvent,\n FormEventHandler,\n JSXEvent,\n JSXEventHandler,\n JSXHTMLAttributes,\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\nexport namespace JSX {\n export interface Element extends ReactCompatElement {}\n\n export interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n\n export interface IntrinsicElements extends JSXIntrinsicElements {}\n}\n\nexport function jsxDEV<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key: unknown,\n _isStaticChildren: boolean,\n _source: unknown,\n _self: unknown,\n): ReactCompatElement<P> {\n return jsx(type, props, key);\n}\n"]}
@@ -1,6 +1,7 @@
1
- import { Fragment } from "./element.js";
1
+ import { Fragment, REACTIVE_TEXT_BINDING_META } from "./element.js";
2
2
  import type { ElementType, ReactCompatElement, ReactCompatNode } from "./element.js";
3
3
  export { Fragment };
4
+ export { REACTIVE_TEXT_BINDING_META };
4
5
  export type JSXEvent<TCurrentTarget extends EventTarget, TEvent extends Event = Event> = TEvent & {
5
6
  readonly currentTarget: TCurrentTarget;
6
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsx-runtime.d.ts","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { createElementFromJsxConfig, Fragment } from "./element.js";
1
+ import { createElementFromJsxConfig, Fragment, REACTIVE_TEXT_BINDING_META, } from "./element.js";
2
2
  export { Fragment };
3
+ export { REACTIVE_TEXT_BINDING_META };
3
4
  export function jsx(type, props, key) {
4
5
  return createElementFromJsx(type, props, key);
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAOpE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAyEpB,MAAM,UAAU,GAAG,CACjB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAoB,EACpB,KAAgF,EAChF,GAAY;IAEZ,OAAO,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import { createElementFromJsxConfig, Fragment } from \"./element.js\";\nimport type {\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\n\nexport { Fragment };\n\nexport type JSXEvent<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = TEvent & {\n readonly currentTarget: TCurrentTarget;\n};\n\nexport type JSXEventHandler<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = (event: JSXEvent<TCurrentTarget, TEvent>) => unknown;\n\nexport type FormEvent<TCurrentTarget extends EventTarget = Element> = JSXEvent<\n TCurrentTarget,\n SubmitEvent\n>;\n\nexport type FormEventHandler<TCurrentTarget extends EventTarget = Element> =\n JSXEventHandler<TCurrentTarget, SubmitEvent>;\n\nexport interface JSXDOMAttributes<TElement extends EventTarget> {\n children?: ReactCompatNode;\n onClick?: JSXEventHandler<TElement, MouseEvent>;\n onChange?: JSXEventHandler<TElement, Event>;\n onInput?: JSXEventHandler<TElement, InputEvent>;\n onSubmit?: JSXEventHandler<TElement, SubmitEvent>;\n}\n\nexport interface JSXHTMLAttributes<TElement extends HTMLElement>\n extends JSXDOMAttributes<TElement> {\n [attributeName: string]: unknown;\n}\n\nexport interface JSXIntrinsicAttributes {\n key?: unknown;\n ref?: unknown;\n}\n\nexport interface JSXIntrinsicElements {\n form: JSXHTMLAttributes<HTMLFormElement> & {\n onSubmit?: JSXEventHandler<HTMLFormElement, SubmitEvent>;\n };\n input: JSXHTMLAttributes<HTMLInputElement>;\n button: JSXHTMLAttributes<HTMLButtonElement>;\n textarea: JSXHTMLAttributes<HTMLTextAreaElement>;\n select: JSXHTMLAttributes<HTMLSelectElement>;\n option: JSXHTMLAttributes<HTMLOptionElement>;\n a: JSXHTMLAttributes<HTMLAnchorElement>;\n img: JSXHTMLAttributes<HTMLImageElement>;\n main: JSXHTMLAttributes<HTMLElement>;\n div: JSXHTMLAttributes<HTMLDivElement>;\n span: JSXHTMLAttributes<HTMLSpanElement>;\n [elementName: string]: Record<string, unknown>;\n}\n\nexport namespace JSX {\n export interface Element extends ReactCompatElement {}\n\n export interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n\n export interface IntrinsicElements extends JSXIntrinsicElements {}\n}\n\ndeclare global {\n namespace JSX {\n interface Element extends ReactCompatElement {}\n interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n interface IntrinsicElements extends JSXIntrinsicElements {}\n }\n}\n\nexport function jsx<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key?: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsx(type, props, key);\n}\n\nexport function jsxs<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key?: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsx(type, props, key);\n}\n\nfunction createElementFromJsx<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsxConfig(type, props, key);\n}\n"]}
1
+ {"version":3,"file":"jsx-runtime.js","sourceRoot":"","sources":["../src/jsx-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,QAAQ,EACR,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AAOtB,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAyEtC,MAAM,UAAU,GAAG,CACjB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAoB,EACpB,KAAgF,EAChF,GAAY;IAEZ,OAAO,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import {\n createElementFromJsxConfig,\n Fragment,\n REACTIVE_TEXT_BINDING_META,\n} from \"./element.js\";\nimport type {\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n} from \"./element.js\";\n\nexport { Fragment };\nexport { REACTIVE_TEXT_BINDING_META };\n\nexport type JSXEvent<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = TEvent & {\n readonly currentTarget: TCurrentTarget;\n};\n\nexport type JSXEventHandler<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = (event: JSXEvent<TCurrentTarget, TEvent>) => unknown;\n\nexport type FormEvent<TCurrentTarget extends EventTarget = Element> = JSXEvent<\n TCurrentTarget,\n SubmitEvent\n>;\n\nexport type FormEventHandler<TCurrentTarget extends EventTarget = Element> =\n JSXEventHandler<TCurrentTarget, SubmitEvent>;\n\nexport interface JSXDOMAttributes<TElement extends EventTarget> {\n children?: ReactCompatNode;\n onClick?: JSXEventHandler<TElement, MouseEvent>;\n onChange?: JSXEventHandler<TElement, Event>;\n onInput?: JSXEventHandler<TElement, InputEvent>;\n onSubmit?: JSXEventHandler<TElement, SubmitEvent>;\n}\n\nexport interface JSXHTMLAttributes<TElement extends HTMLElement>\n extends JSXDOMAttributes<TElement> {\n [attributeName: string]: unknown;\n}\n\nexport interface JSXIntrinsicAttributes {\n key?: unknown;\n ref?: unknown;\n}\n\nexport interface JSXIntrinsicElements {\n form: JSXHTMLAttributes<HTMLFormElement> & {\n onSubmit?: JSXEventHandler<HTMLFormElement, SubmitEvent>;\n };\n input: JSXHTMLAttributes<HTMLInputElement>;\n button: JSXHTMLAttributes<HTMLButtonElement>;\n textarea: JSXHTMLAttributes<HTMLTextAreaElement>;\n select: JSXHTMLAttributes<HTMLSelectElement>;\n option: JSXHTMLAttributes<HTMLOptionElement>;\n a: JSXHTMLAttributes<HTMLAnchorElement>;\n img: JSXHTMLAttributes<HTMLImageElement>;\n main: JSXHTMLAttributes<HTMLElement>;\n div: JSXHTMLAttributes<HTMLDivElement>;\n span: JSXHTMLAttributes<HTMLSpanElement>;\n [elementName: string]: Record<string, unknown>;\n}\n\nexport namespace JSX {\n export interface Element extends ReactCompatElement {}\n\n export interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n\n export interface IntrinsicElements extends JSXIntrinsicElements {}\n}\n\ndeclare global {\n namespace JSX {\n interface Element extends ReactCompatElement {}\n interface IntrinsicAttributes extends JSXIntrinsicAttributes {}\n interface IntrinsicElements extends JSXIntrinsicElements {}\n }\n}\n\nexport function jsx<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key?: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsx(type, props, key);\n}\n\nexport function jsxs<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key?: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsx(type, props, key);\n}\n\nfunction createElementFromJsx<P extends Record<string, unknown>>(\n type: ElementType<P>,\n props: (P & { children?: ReactCompatNode; key?: unknown; ref?: unknown }) | null,\n key: unknown,\n): ReactCompatElement<P> {\n return createElementFromJsxConfig(type, props, key);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reckona/mreact-compat",
3
- "version": "0.0.143",
3
+ "version": "0.0.145",
4
4
  "description": "React-compatible runtime implementation for mreact.",
5
5
  "keywords": [
6
6
  "compatibility",
@@ -69,7 +69,7 @@
69
69
  "access": "public"
70
70
  },
71
71
  "dependencies": {
72
- "@reckona/mreact-reactive-core": "0.0.143",
73
- "@reckona/mreact-shared": "0.0.143"
72
+ "@reckona/mreact-reactive-core": "0.0.145",
73
+ "@reckona/mreact-shared": "0.0.145"
74
74
  }
75
75
  }
package/src/element.ts CHANGED
@@ -15,6 +15,9 @@ export const HOST_OWN_PROPS_META = Symbol.for("modular.react.host_own_props_meta
15
15
  export const HOST_CHILDREN_ONLY_PROPS_META = Symbol.for(
16
16
  "modular.react.host_children_only_props_meta",
17
17
  );
18
+ export const REACTIVE_TEXT_BINDING_META = Symbol.for(
19
+ "modular.react.reactive_text_binding_meta",
20
+ );
18
21
  const hasOwnProperty = Object.prototype.hasOwnProperty;
19
22
 
20
23
  export interface ReactCompatProviderType {
@@ -274,18 +277,19 @@ function copyElementProps(
274
277
  base?: Record<string, unknown>,
275
278
  omitChildren = false,
276
279
  ): Record<string, unknown> {
277
- const props: Record<string, unknown> = {};
280
+ const props: Record<PropertyKey, unknown> = {};
278
281
 
279
282
  if (base !== undefined) {
280
283
  copyOwnStringElementProps(base, props, omitChildren);
281
284
  }
282
285
 
283
286
  if (source === null || source === undefined) {
284
- return props;
287
+ return props as Record<string, unknown>;
285
288
  }
286
289
 
287
290
  copyOwnStringElementProps(source, props, omitChildren);
288
- return props;
291
+ copyOwnSymbolElementProps(source, props);
292
+ return props as Record<string, unknown>;
289
293
  }
290
294
 
291
295
  function copyOwnStringElementProps(
@@ -310,6 +314,16 @@ function copyOwnStringElementProps(
310
314
  }
311
315
  }
312
316
 
317
+ function copyOwnSymbolElementProps(
318
+ source: Record<string, unknown>,
319
+ target: Record<PropertyKey, unknown>,
320
+ ): void {
321
+ const symbolSource = source as Record<PropertyKey, unknown>;
322
+ for (const symbol of Object.getOwnPropertySymbols(source)) {
323
+ target[symbol] = symbolSource[symbol];
324
+ }
325
+ }
326
+
313
327
  function normalizeElementType<P>(type: ElementType<P>): ElementType<P> {
314
328
  return isReactCompatContextProviderShorthand(type) ? (type.Provider as ElementType<P>) : type;
315
329
  }
package/src/hooks.ts CHANGED
@@ -11,6 +11,7 @@ import {
11
11
  useContext,
12
12
  withContextReadObserver,
13
13
  } from "./context.js";
14
+ import { REACTIVE_TEXT_BINDING_META } from "./element.js";
14
15
  import { isThenable } from "./thenable.js";
15
16
 
16
17
  export interface RootRuntime {
@@ -124,7 +125,7 @@ export type DevToolsHookValue =
124
125
  | { kind: "effect"; effectKind: "insertion" | "layout" | "normal"; deps?: readonly unknown[] };
125
126
 
126
127
  type HookSlot =
127
- | { kind: "state"; value: unknown; hostCommitValue?: unknown }
128
+ | { kind: "state"; value: unknown; hostCommitValue?: unknown; textBinding?: ReactiveTextBinding }
128
129
  | {
129
130
  kind: "action-state";
130
131
  state: unknown;
@@ -195,6 +196,13 @@ const queuedTransitionRerenders = new Map<RootRuntime, TransitionContext>();
195
196
  const queuedEventRerenders = new Set<RootRuntime>();
196
197
  export const version = "19.2.6";
197
198
 
199
+ export interface ReactiveTextBinding {
200
+ value: unknown;
201
+ subscribers: Set<Text>;
202
+ }
203
+
204
+ const reactiveTextBindingsByNode = new WeakMap<Text, ReactiveTextBinding>();
205
+
198
206
  export function act<T>(callback: () => T): T extends PromiseLike<unknown> ? Promise<void> : void {
199
207
  const previousPriority = currentEventPriority;
200
208
  currentEventPriority = "discrete";
@@ -778,6 +786,20 @@ export function useState<T>(
778
786
  }
779
787
 
780
788
  slot.value = nextValue;
789
+ const canUseDirectTextBinding =
790
+ hookRenderState.hostCommitDepth === 0 &&
791
+ hookRenderState.currentRuntime !== runtime &&
792
+ hookRenderState.currentInstance !== instance &&
793
+ runtime.effectFlushPhase === undefined &&
794
+ eventBatchDepth === 0 &&
795
+ transitionDepth === 0 &&
796
+ optionsAllowDirectTextBinding(value) &&
797
+ updateDirectTextBinding(slot.textBinding, nextValue);
798
+
799
+ if (canUseDirectTextBinding) {
800
+ return;
801
+ }
802
+
781
803
  if (hookRenderState.hostCommitDepth > 0) {
782
804
  updateHostCommitDirtyState(instance);
783
805
  hookRenderState.queuedHostCommitRerenders.add(runtime);
@@ -792,7 +814,86 @@ export function useState<T>(
792
814
  value: slot.value,
793
815
  });
794
816
 
795
- return [slot.value as T, setState];
817
+ const result = [slot.value as T, setState] as [
818
+ T,
819
+ (value: T | ((previous: T) => T)) => void,
820
+ ] & Record<PropertyKey, unknown>;
821
+ result[REACTIVE_TEXT_BINDING_META] = getStateTextBinding(slot);
822
+ return result;
823
+ }
824
+
825
+ export function subscribeReactiveTextBinding(binding: unknown, node: Text): void {
826
+ if (!isReactiveTextBinding(binding)) {
827
+ clearReactiveTextBinding(node);
828
+ return;
829
+ }
830
+
831
+ const previous = reactiveTextBindingsByNode.get(node);
832
+
833
+ if (previous !== undefined && previous !== binding) {
834
+ previous.subscribers.delete(node);
835
+ }
836
+
837
+ reactiveTextBindingsByNode.set(node, binding);
838
+ binding.subscribers.add(node);
839
+ }
840
+
841
+ function clearReactiveTextBinding(node: Text): void {
842
+ const previous = reactiveTextBindingsByNode.get(node);
843
+
844
+ if (previous === undefined) {
845
+ return;
846
+ }
847
+
848
+ previous.subscribers.delete(node);
849
+ reactiveTextBindingsByNode.delete(node);
850
+ }
851
+
852
+ function getStateTextBinding(slot: Extract<HookSlot, { kind: "state" }>): ReactiveTextBinding {
853
+ slot.textBinding ??= {
854
+ value: slot.value,
855
+ subscribers: new Set(),
856
+ };
857
+ slot.textBinding.value = slot.value;
858
+ return slot.textBinding;
859
+ }
860
+
861
+ function optionsAllowDirectTextBinding(value: unknown): boolean {
862
+ return typeof value !== "function";
863
+ }
864
+
865
+ function updateDirectTextBinding(binding: ReactiveTextBinding | undefined, value: unknown): boolean {
866
+ if (binding === undefined || binding.subscribers.size === 0) {
867
+ return false;
868
+ }
869
+
870
+ let updated = false;
871
+ const nextText = String(value);
872
+
873
+ for (const node of binding.subscribers) {
874
+ if (node.parentNode === null) {
875
+ binding.subscribers.delete(node);
876
+ reactiveTextBindingsByNode.delete(node);
877
+ continue;
878
+ }
879
+
880
+ if (node.data !== nextText) {
881
+ node.data = nextText;
882
+ }
883
+ updated = true;
884
+ }
885
+
886
+ binding.value = value;
887
+ return updated;
888
+ }
889
+
890
+ function isReactiveTextBinding(value: unknown): value is ReactiveTextBinding {
891
+ return (
892
+ typeof value === "object" &&
893
+ value !== null &&
894
+ "subscribers" in value &&
895
+ (value as { subscribers?: unknown }).subscribers instanceof Set
896
+ );
796
897
  }
797
898
 
798
899
  export function useReducer<TState, TAction, TInitial = TState>(
@@ -8,6 +8,7 @@ import {
8
8
  LAZY_TYPE,
9
9
  MEMO_TYPE,
10
10
  Profiler,
11
+ REACTIVE_TEXT_BINDING_META,
11
12
  STRICT_MODE_TYPE,
12
13
  Suspense,
13
14
  SuspenseList,
@@ -49,6 +50,7 @@ import {
49
50
  collectRuntimeInstanceKeys,
50
51
  hasContextDependency,
51
52
  hasChangedContextDependency,
53
+ subscribeReactiveTextBinding,
52
54
  type RootRuntime,
53
55
  } from "./hooks.js";
54
56
  import { isThenable } from "./thenable.js";
@@ -1653,7 +1655,8 @@ function commitHostDirtyFiber(
1653
1655
  }
1654
1656
 
1655
1657
  if (directTextChild !== undefined) {
1656
- syncDirectHostTextChild(element, directTextChild);
1658
+ const text = syncDirectHostTextChild(element, directTextChild);
1659
+ subscribeReactiveHostTextBinding(props, text);
1657
1660
  } else if (fiber.subtreeFlags !== NoFlags) {
1658
1661
  commitHostDirtyChildren(fiber.child, element, eventRoot, `${path}.c`, options);
1659
1662
  }
@@ -2043,7 +2046,8 @@ function commitHostFiber(
2043
2046
  applyChangedRef(previousProps?.ref, props.ref, element);
2044
2047
  }
2045
2048
  if (directTextChild !== undefined) {
2046
- syncDirectHostTextChild(element, directTextChild);
2049
+ const text = syncDirectHostTextChild(element, directTextChild);
2050
+ subscribeReactiveHostTextBinding(props, text);
2047
2051
  } else if (
2048
2052
  fiber.hostChildListChanged ||
2049
2053
  fiber.childListChanged ||
@@ -2410,17 +2414,36 @@ function shouldUseDirectHostTextChild(): boolean {
2410
2414
  return globalProcess?.env?.NODE_ENV === "production";
2411
2415
  }
2412
2416
 
2413
- function syncDirectHostTextChild(element: Element, text: string): void {
2417
+ function syncDirectHostTextChild(element: Element, text: string): Text {
2414
2418
  const firstChild = element.firstChild;
2415
2419
 
2416
2420
  if (firstChild instanceof Text && firstChild.nextSibling === null) {
2417
2421
  if (firstChild.data !== text) {
2418
2422
  firstChild.data = text;
2419
2423
  }
2420
- return;
2424
+ return firstChild;
2421
2425
  }
2422
2426
 
2423
2427
  element.textContent = text;
2428
+ const nextFirstChild = element.firstChild;
2429
+
2430
+ if (!(nextFirstChild instanceof Text)) {
2431
+ const textNode = document.createTextNode(text);
2432
+ element.replaceChildren(textNode);
2433
+ return textNode;
2434
+ }
2435
+
2436
+ return nextFirstChild;
2437
+ }
2438
+
2439
+ function subscribeReactiveHostTextBinding(
2440
+ props: Record<string, unknown>,
2441
+ text: Text,
2442
+ ): void {
2443
+ subscribeReactiveTextBinding(
2444
+ (props as Record<PropertyKey, unknown>)[REACTIVE_TEXT_BINDING_META],
2445
+ text,
2446
+ );
2424
2447
  }
2425
2448
 
2426
2449
  function shouldPreserveContentEditableChildren(
@@ -1,4 +1,8 @@
1
- import { Fragment, jsx } from "./jsx-runtime.js";
1
+ import {
2
+ Fragment,
3
+ REACTIVE_TEXT_BINDING_META,
4
+ jsx,
5
+ } from "./jsx-runtime.js";
2
6
  import type {
3
7
  ElementType,
4
8
  ReactCompatElement,
@@ -10,6 +14,7 @@ import type {
10
14
  } from "./jsx-runtime.js";
11
15
 
12
16
  export { Fragment };
17
+ export { REACTIVE_TEXT_BINDING_META };
13
18
  export type {
14
19
  FormEvent,
15
20
  FormEventHandler,
@@ -1,4 +1,8 @@
1
- import { createElementFromJsxConfig, Fragment } from "./element.js";
1
+ import {
2
+ createElementFromJsxConfig,
3
+ Fragment,
4
+ REACTIVE_TEXT_BINDING_META,
5
+ } from "./element.js";
2
6
  import type {
3
7
  ElementType,
4
8
  ReactCompatElement,
@@ -6,6 +10,7 @@ import type {
6
10
  } from "./element.js";
7
11
 
8
12
  export { Fragment };
13
+ export { REACTIVE_TEXT_BINDING_META };
9
14
 
10
15
  export type JSXEvent<
11
16
  TCurrentTarget extends EventTarget,