@reckona/mreact-compat 0.0.168 → 0.0.170
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.
- package/dist/dom-children.d.ts.map +1 -1
- package/dist/dom-children.js +53 -0
- package/dist/dom-children.js.map +1 -1
- package/dist/element.d.ts +19 -4
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +56 -19
- package/dist/element.js.map +1 -1
- package/dist/hooks.js +18 -11
- package/dist/hooks.js.map +1 -1
- package/dist/host-reconciler.d.ts.map +1 -1
- package/dist/host-reconciler.js +263 -31
- package/dist/host-reconciler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +1 -1
- package/dist/jsx-dev-runtime.d.ts.map +1 -1
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +2 -2
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/jsx-runtime.js.map +1 -1
- package/package.json +3 -3
- package/src/dom-children.ts +78 -0
- package/src/element.ts +109 -23
- package/src/hooks.ts +24 -11
- package/src/host-reconciler.ts +430 -42
- package/src/index.ts +1 -0
- package/src/jsx-dev-runtime.ts +1 -1
- package/src/jsx-runtime.ts +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { Component, PureComponent, } from "./class-component.js";
|
|
2
2
|
export { Fragment, Activity, Profiler, Suspense, SuspenseList, StrictMode, Children, cloneElement, createElement, createErrorBoundary, createPortal, createRef, forwardRef, isValidElement, lazy, memo, } from "./element.js";
|
|
3
3
|
/** Element and node types exported by the React-compatible root entrypoint. */
|
|
4
|
-
export type { ErrorBoundaryOptions, ElementType, ReactCompatElement, ReactCompatNode, } from "./element.js";
|
|
4
|
+
export type { ErrorBoundaryOptions, ElementType, ReactCompatElement, ReactCompatNode, ReactCompatRenderableElement, } from "./element.js";
|
|
5
5
|
/** DOM and form event types exported by the JSX runtime. */
|
|
6
6
|
export type { FormEvent, FormEventHandler, JSXEvent, JSXEventHandler, } from "./jsx-runtime.js";
|
|
7
7
|
export { createContext, renderContextConsumerToString, renderContextProviderToString, useContext, } from "./context.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACd,IAAI,EACJ,IAAI,GACL,MAAM,cAAc,CAAC;AACtB,+EAA+E;AAC/E,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACd,IAAI,EACJ,IAAI,GACL,MAAM,cAAc,CAAC;AACtB,+EAA+E;AAC/E,YAAY,EACV,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,4DAA4D;AAC5D,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,6BAA6B,EAC7B,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gCAAgC,EAChC,UAAU,EACV,4BAA4B,EAC5B,kCAAkC,EAClC,0BAA0B,EAC1B,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,0BAA0B,EAC1B,MAAM,EACN,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,6BAA6B,EAC7B,IAAI,EACJ,WAAW,EACX,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,KAAK,EACL,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,aAAa,EACb,UAAU,EACV,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,GAAG,EACH,cAAc,EACd,GAAG,EACH,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnE,iDAAiD;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACd,IAAI,EACJ,IAAI,GACL,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACd,IAAI,EACJ,IAAI,GACL,MAAM,cAAc,CAAC;AAiBtB,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,6BAA6B,EAC7B,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gCAAgC,EAChC,UAAU,EACV,4BAA4B,EAC5B,kCAAkC,EAClC,0BAA0B,EAC1B,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,0BAA0B,EAC1B,MAAM,EACN,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAarB,OAAO,EACL,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,KAAK,EACL,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,OAAO,EACP,aAAa,EACb,UAAU,EACV,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,GAAG,EACH,cAAc,EACd,GAAG,EACH,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,OAAO,GACR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzE,iDAAiD;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export {\n Component,\n PureComponent,\n} from \"./class-component.js\";\nexport {\n Fragment,\n Activity,\n Profiler,\n Suspense,\n SuspenseList,\n StrictMode,\n Children,\n cloneElement,\n createElement,\n createErrorBoundary,\n createPortal,\n createRef,\n forwardRef,\n isValidElement,\n lazy,\n memo,\n} from \"./element.js\";\n/** Element and node types exported by the React-compatible root entrypoint. */\nexport type {\n ErrorBoundaryOptions,\n ElementType,\n ReactCompatElement,\n ReactCompatNode,\n ReactCompatRenderableElement,\n} from \"./element.js\";\n/** DOM and form event types exported by the JSX runtime. */\nexport type {\n FormEvent,\n FormEventHandler,\n JSXEvent,\n JSXEventHandler,\n} from \"./jsx-runtime.js\";\n\nexport {\n createContext,\n renderContextConsumerToString,\n renderContextProviderToString,\n useContext,\n} from \"./context.js\";\nexport {\n applyStreamingHydrationFragments,\n createRoot,\n createStreamingHydrationRoot,\n enableEventHydrationManifestReplay,\n enableHydrationEventReplay,\n flushSync,\n hydrateRoot,\n queueHydrationEvent,\n readEventHydrationManifest,\n render,\n unmountComponentAtNode,\n} from \"./render.js\";\nexport type {\n EventHydrationManifest,\n EventHydrationManifestEntry,\n HydrateRootOptions,\n HydrationRecoverableErrorInfo,\n Root,\n RootOptions,\n SelectiveHydrationBoundary,\n SelectiveHydrationOptions,\n StreamingHydrationRoot,\n StreamingHydrationRootOptions,\n} from \"./render.js\";\nexport {\n useCallback,\n useDebugValue,\n useDeferredValue,\n useEffectEvent,\n useEffect,\n useId,\n useImperativeHandle,\n useInsertionEffect,\n useLayoutEffect,\n useMemo,\n useOptimistic,\n useReducer,\n useRef,\n useState,\n useSyncExternalStore,\n use,\n useActionState,\n act,\n cache,\n cacheSignal,\n captureOwnerStack,\n startTransition,\n unstable_useCacheRefresh,\n useTransition,\n version,\n} from \"./hooks.js\";\nexport { renderChildToString, renderToString } from \"./server-render.js\";\nexport type { StartTransition, TransitionScope } from \"./hooks.js\";\n/** Default React-compatible namespace export. */\nexport { default } from \"./react-default.js\";\n"]}
|
|
@@ -17,7 +17,7 @@ export declare namespace JSX {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
/** Creates a JSX element with development metadata arguments. */
|
|
20
|
-
export declare function jsxDEV<P extends
|
|
20
|
+
export declare function jsxDEV<P extends object>(type: ElementType<P>, props: (P & {
|
|
21
21
|
children?: ReactCompatNode;
|
|
22
22
|
key?: unknown;
|
|
23
23
|
ref?: unknown;
|
|
@@ -1 +1 @@
|
|
|
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,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,gFAAgF;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,6DAA6D;AAC7D,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,iEAAiE;AACjE,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,
|
|
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,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACtC,gFAAgF;AAChF,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,6DAA6D;AAC7D,yBAAiB,GAAG,CAAC;IACnB,UAAiB,OAAQ,SAAQ,kBAAkB;KAAG;IAEtD,UAAiB,mBAAoB,SAAQ,sBAAsB;KAAG;IAEtE,UAAiB,iBAAkB,SAAQ,oBAAoB;KAAG;CACnE;AAED,iEAAiE;AACjE,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,EACrC,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 +1 @@
|
|
|
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,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAqBtC,iEAAiE;AACjE,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\n/** Fragment marker used by the development JSX runtime. */\nexport { Fragment };\n/** Metadata key used by compiled JSX for reactive text bindings. */\nexport { REACTIVE_TEXT_BINDING_META };\n/** JSX event and attribute types re-exported by the development JSX runtime. */\nexport type {\n FormEvent,\n FormEventHandler,\n JSXEvent,\n JSXEventHandler,\n JSXHTMLAttributes,\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\n/** JSX namespace exported by the development JSX runtime. */\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\n/** Creates a JSX element with development metadata arguments. */\nexport function jsxDEV<P extends
|
|
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,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAqBtC,iEAAiE;AACjE,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\n/** Fragment marker used by the development JSX runtime. */\nexport { Fragment };\n/** Metadata key used by compiled JSX for reactive text bindings. */\nexport { REACTIVE_TEXT_BINDING_META };\n/** JSX event and attribute types re-exported by the development JSX runtime. */\nexport type {\n FormEvent,\n FormEventHandler,\n JSXEvent,\n JSXEventHandler,\n JSXHTMLAttributes,\n JSXIntrinsicAttributes,\n JSXIntrinsicElements,\n} from \"./jsx-runtime.js\";\n\n/** JSX namespace exported by the development JSX runtime. */\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\n/** Creates a JSX element with development metadata arguments. */\nexport function jsxDEV<P extends object>(\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"]}
|
package/dist/jsx-runtime.d.ts
CHANGED
|
@@ -68,13 +68,13 @@ declare global {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
/** Creates a single-child JSX element for the automatic JSX runtime. */
|
|
71
|
-
export declare function jsx<P extends
|
|
71
|
+
export declare function jsx<P extends object>(type: ElementType<P>, props: (P & {
|
|
72
72
|
children?: ReactCompatNode;
|
|
73
73
|
key?: unknown;
|
|
74
74
|
ref?: unknown;
|
|
75
75
|
}) | null, key?: unknown): ReactCompatElement<P>;
|
|
76
76
|
/** Creates a multi-child JSX element for the automatic JSX runtime. */
|
|
77
|
-
export declare function jsxs<P extends
|
|
77
|
+
export declare function jsxs<P extends object>(type: ElementType<P>, props: (P & {
|
|
78
78
|
children?: ReactCompatNode;
|
|
79
79
|
key?: unknown;
|
|
80
80
|
ref?: unknown;
|
|
@@ -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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"}
|
package/dist/jsx-runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,yDAAyD;AACzD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAkFtC,wEAAwE;AACxE,MAAM,UAAU,GAAG,CACjB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,uEAAuE;AACvE,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\n/** Fragment marker used by the automatic JSX runtime. */\nexport { Fragment };\n/** Metadata key used by compiled JSX for reactive text bindings. */\nexport { REACTIVE_TEXT_BINDING_META };\n\n/** DOM event type with a narrowed currentTarget. */\nexport type JSXEvent<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = TEvent & {\n readonly currentTarget: TCurrentTarget;\n};\n\n/** Event handler type used by JSX DOM attributes. */\nexport type JSXEventHandler<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = (event: JSXEvent<TCurrentTarget, TEvent>) => unknown;\n\n/** Submit event type used by form-related JSX attributes. */\nexport type FormEvent<TCurrentTarget extends EventTarget = Element> = JSXEvent<\n TCurrentTarget,\n SubmitEvent\n>;\n\n/** Submit event handler type used by form-related JSX attributes. */\nexport type FormEventHandler<TCurrentTarget extends EventTarget = Element> =\n JSXEventHandler<TCurrentTarget, SubmitEvent>;\n\n/** DOM event attributes accepted by JSX elements. */\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\n/** HTML attributes accepted by JSX host elements. */\nexport interface JSXHTMLAttributes<TElement extends HTMLElement>\n extends JSXDOMAttributes<TElement> {\n [attributeName: string]: unknown;\n}\n\n/** Attributes accepted by every JSX element. */\nexport interface JSXIntrinsicAttributes {\n key?: unknown;\n ref?: unknown;\n}\n\n/** Built-in JSX element names and their attribute types. */\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\n/** JSX namespace exported by the automatic JSX runtime. */\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\n/** Creates a single-child JSX element for the automatic JSX runtime. */\nexport function jsx<P extends
|
|
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,yDAAyD;AACzD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,oEAAoE;AACpE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AAkFtC,wEAAwE;AACxE,MAAM,UAAU,GAAG,CACjB,IAAoB,EACpB,KAAgF,EAChF,GAAa;IAEb,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,uEAAuE;AACvE,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\n/** Fragment marker used by the automatic JSX runtime. */\nexport { Fragment };\n/** Metadata key used by compiled JSX for reactive text bindings. */\nexport { REACTIVE_TEXT_BINDING_META };\n\n/** DOM event type with a narrowed currentTarget. */\nexport type JSXEvent<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = TEvent & {\n readonly currentTarget: TCurrentTarget;\n};\n\n/** Event handler type used by JSX DOM attributes. */\nexport type JSXEventHandler<\n TCurrentTarget extends EventTarget,\n TEvent extends Event = Event,\n> = (event: JSXEvent<TCurrentTarget, TEvent>) => unknown;\n\n/** Submit event type used by form-related JSX attributes. */\nexport type FormEvent<TCurrentTarget extends EventTarget = Element> = JSXEvent<\n TCurrentTarget,\n SubmitEvent\n>;\n\n/** Submit event handler type used by form-related JSX attributes. */\nexport type FormEventHandler<TCurrentTarget extends EventTarget = Element> =\n JSXEventHandler<TCurrentTarget, SubmitEvent>;\n\n/** DOM event attributes accepted by JSX elements. */\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\n/** HTML attributes accepted by JSX host elements. */\nexport interface JSXHTMLAttributes<TElement extends HTMLElement>\n extends JSXDOMAttributes<TElement> {\n [attributeName: string]: unknown;\n}\n\n/** Attributes accepted by every JSX element. */\nexport interface JSXIntrinsicAttributes {\n key?: unknown;\n ref?: unknown;\n}\n\n/** Built-in JSX element names and their attribute types. */\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\n/** JSX namespace exported by the automatic JSX runtime. */\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\n/** Creates a single-child JSX element for the automatic JSX runtime. */\nexport function jsx<P extends object>(\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\n/** Creates a multi-child JSX element for the automatic JSX runtime. */\nexport function jsxs<P extends object>(\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 object>(\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.
|
|
3
|
+
"version": "0.0.170",
|
|
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-
|
|
73
|
-
"@reckona/mreact-
|
|
72
|
+
"@reckona/mreact-shared": "0.0.170",
|
|
73
|
+
"@reckona/mreact-reactive-core": "0.0.170"
|
|
74
74
|
}
|
|
75
75
|
}
|
package/src/dom-children.ts
CHANGED
|
@@ -45,6 +45,10 @@ export function syncScopedChildNodes(
|
|
|
45
45
|
after: ChildNode | null,
|
|
46
46
|
nextNodes: readonly Node[],
|
|
47
47
|
): void {
|
|
48
|
+
if (replaceEmptyFullChildList(parent, before, after, nextNodes)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
48
52
|
if (replaceDisjointFullChildList(parent, before, after, nextNodes)) {
|
|
49
53
|
return;
|
|
50
54
|
}
|
|
@@ -57,6 +61,10 @@ export function syncScopedChildNodes(
|
|
|
57
61
|
return;
|
|
58
62
|
}
|
|
59
63
|
|
|
64
|
+
if (nextNodes.length > 16 && moveSingleSwappedPair(parent, before, after, nextNodes)) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
60
68
|
let cursor = parent.firstChild;
|
|
61
69
|
|
|
62
70
|
if (before !== null) {
|
|
@@ -91,6 +99,25 @@ export function syncScopedChildNodes(
|
|
|
91
99
|
}
|
|
92
100
|
}
|
|
93
101
|
|
|
102
|
+
function replaceEmptyFullChildList(
|
|
103
|
+
parent: ParentNode,
|
|
104
|
+
before: ChildNode | null,
|
|
105
|
+
after: ChildNode | null,
|
|
106
|
+
nextNodes: readonly Node[],
|
|
107
|
+
): boolean {
|
|
108
|
+
if (
|
|
109
|
+
before !== null ||
|
|
110
|
+
after !== null ||
|
|
111
|
+
nextNodes.length <= 16 ||
|
|
112
|
+
parent.childNodes.length !== 0
|
|
113
|
+
) {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
parent.replaceChildren(...nextNodes);
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
|
|
94
121
|
function replaceDisjointFullChildList(
|
|
95
122
|
parent: ParentNode,
|
|
96
123
|
before: ChildNode | null,
|
|
@@ -177,6 +204,57 @@ function removeSingleMissingChild(
|
|
|
177
204
|
return true;
|
|
178
205
|
}
|
|
179
206
|
|
|
207
|
+
function moveSingleSwappedPair(
|
|
208
|
+
parent: ParentNode,
|
|
209
|
+
before: ChildNode | null,
|
|
210
|
+
after: ChildNode | null,
|
|
211
|
+
nextNodes: readonly Node[],
|
|
212
|
+
): boolean {
|
|
213
|
+
let cursor = before === null ? parent.firstChild : before.nextSibling;
|
|
214
|
+
let index = 0;
|
|
215
|
+
let firstMismatchIndex = -1;
|
|
216
|
+
let secondMismatchIndex = -1;
|
|
217
|
+
let firstCurrent: ChildNode | null = null;
|
|
218
|
+
let secondCurrent: ChildNode | null = null;
|
|
219
|
+
|
|
220
|
+
while (cursor !== null && cursor !== after && index < nextNodes.length) {
|
|
221
|
+
const current = cursor;
|
|
222
|
+
|
|
223
|
+
if (current !== nextNodes[index]) {
|
|
224
|
+
if (firstMismatchIndex === -1) {
|
|
225
|
+
firstMismatchIndex = index;
|
|
226
|
+
firstCurrent = current;
|
|
227
|
+
} else if (secondMismatchIndex === -1) {
|
|
228
|
+
secondMismatchIndex = index;
|
|
229
|
+
secondCurrent = current;
|
|
230
|
+
} else {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
cursor = current.nextSibling;
|
|
236
|
+
index += 1;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
if (
|
|
240
|
+
index !== nextNodes.length ||
|
|
241
|
+
cursor !== after ||
|
|
242
|
+
firstCurrent === null ||
|
|
243
|
+
secondCurrent === null ||
|
|
244
|
+
firstCurrent !== nextNodes[secondMismatchIndex] ||
|
|
245
|
+
secondCurrent !== nextNodes[firstMismatchIndex]
|
|
246
|
+
) {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
parent.insertBefore(secondCurrent, firstCurrent);
|
|
251
|
+
parent.insertBefore(
|
|
252
|
+
firstCurrent,
|
|
253
|
+
(nextNodes[secondMismatchIndex + 1] as ChildNode | undefined) ?? after,
|
|
254
|
+
);
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
|
|
180
258
|
export function removeChildIfPresent(parent: ParentNode, child: Node): void {
|
|
181
259
|
if (child.parentNode !== parent) {
|
|
182
260
|
return;
|
package/src/element.ts
CHANGED
|
@@ -53,9 +53,23 @@ export type ElementType<P = Record<string, unknown>> =
|
|
|
53
53
|
| ((props: P) => ReactCompatNode | PromiseLike<ReactCompatNode>)
|
|
54
54
|
| (new (props: P) => { render(): ReactCompatNode });
|
|
55
55
|
|
|
56
|
+
/** Element-shaped renderable value accepted regardless of its original prop shape. */
|
|
57
|
+
export interface ReactCompatRenderableElement {
|
|
58
|
+
/** React-compatible element marker. */
|
|
59
|
+
$$typeof: typeof REACT_COMPAT_ELEMENT_TYPE;
|
|
60
|
+
/** Host tag, component, or special element type. */
|
|
61
|
+
type: unknown;
|
|
62
|
+
/** Normalized React key. */
|
|
63
|
+
key: string | null;
|
|
64
|
+
/** Normalized React ref. */
|
|
65
|
+
ref: unknown;
|
|
66
|
+
/** Element props with children widened to the renderable node surface. */
|
|
67
|
+
props: { children?: ReactCompatNode };
|
|
68
|
+
}
|
|
69
|
+
|
|
56
70
|
/** Renderable value accepted by the React-compatible renderer. */
|
|
57
71
|
export type ReactCompatNode =
|
|
58
|
-
|
|
|
72
|
+
| ReactCompatRenderableElement
|
|
59
73
|
| ReactCompatPortal
|
|
60
74
|
| string
|
|
61
75
|
| number
|
|
@@ -82,21 +96,25 @@ export interface ReactCompatPortal {
|
|
|
82
96
|
}
|
|
83
97
|
|
|
84
98
|
/** Creates a React-compatible element from a type, config object, and children. */
|
|
85
|
-
export function createElement<P extends
|
|
99
|
+
export function createElement<P extends object>(
|
|
86
100
|
type: ElementType<P>,
|
|
87
101
|
config: (P & ReactReservedProps) | null,
|
|
88
102
|
...children: ReactCompatNode[]
|
|
103
|
+
): ReactCompatElement<P>;
|
|
104
|
+
export function createElement<P extends object>(
|
|
105
|
+
type: ElementType<P>,
|
|
106
|
+
config: (P & ReactReservedProps) | null,
|
|
89
107
|
): ReactCompatElement<P> {
|
|
108
|
+
const childCount = arguments.length - 2;
|
|
109
|
+
|
|
90
110
|
if (typeof type === "string") {
|
|
91
111
|
const key = config?.key === undefined ? null : String(config.key);
|
|
92
112
|
const ref = config?.ref ?? null;
|
|
93
|
-
const props =
|
|
113
|
+
const props = copyCreateElementProps(config) as P & {
|
|
114
|
+
children?: ReactCompatNode;
|
|
115
|
+
};
|
|
94
116
|
|
|
95
|
-
|
|
96
|
-
props.children = children[0];
|
|
97
|
-
} else if (children.length > 1) {
|
|
98
|
-
props.children = children;
|
|
99
|
-
}
|
|
117
|
+
assignCreateElementChildren(props, childCount, arguments);
|
|
100
118
|
|
|
101
119
|
setHostOwnPropsMeta(props);
|
|
102
120
|
|
|
@@ -113,15 +131,14 @@ export function createElement<P extends Record<string, unknown>>(
|
|
|
113
131
|
typeof type === "object" && type !== null ? normalizeElementType(type) : type;
|
|
114
132
|
const key = config?.key === undefined ? null : String(config.key);
|
|
115
133
|
const ref = config?.ref ?? null;
|
|
116
|
-
const props = applyDefaultProps(
|
|
134
|
+
const props = applyDefaultProps(
|
|
135
|
+
normalizedType,
|
|
136
|
+
copyCreateElementProps(config),
|
|
137
|
+
) as P & {
|
|
117
138
|
children?: ReactCompatNode;
|
|
118
139
|
};
|
|
119
140
|
|
|
120
|
-
|
|
121
|
-
props.children = children[0];
|
|
122
|
-
} else if (children.length > 1) {
|
|
123
|
-
props.children = children;
|
|
124
|
-
}
|
|
141
|
+
assignCreateElementChildren(props, childCount, arguments);
|
|
125
142
|
|
|
126
143
|
if (typeof normalizedType === "string") {
|
|
127
144
|
setHostOwnPropsMeta(props);
|
|
@@ -136,8 +153,32 @@ export function createElement<P extends Record<string, unknown>>(
|
|
|
136
153
|
};
|
|
137
154
|
}
|
|
138
155
|
|
|
156
|
+
function assignCreateElementChildren(
|
|
157
|
+
props: { children?: ReactCompatNode },
|
|
158
|
+
childCount: number,
|
|
159
|
+
args: IArguments,
|
|
160
|
+
): void {
|
|
161
|
+
if (childCount === 1) {
|
|
162
|
+
props.children = args[2] as ReactCompatNode;
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if (childCount <= 1) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const children: ReactCompatNode[] = [];
|
|
171
|
+
children.length = childCount;
|
|
172
|
+
|
|
173
|
+
for (let index = 0; index < childCount; index += 1) {
|
|
174
|
+
children[index] = args[index + 2] as ReactCompatNode;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
props.children = children;
|
|
178
|
+
}
|
|
179
|
+
|
|
139
180
|
/** Creates a React-compatible element from JSX runtime arguments. */
|
|
140
|
-
export function createElementFromJsxConfig<P extends
|
|
181
|
+
export function createElementFromJsxConfig<P extends object>(
|
|
141
182
|
type: ElementType<P>,
|
|
142
183
|
config: (P & ReactReservedProps & { children?: ReactCompatNode }) | null,
|
|
143
184
|
keyArgument?: unknown,
|
|
@@ -268,9 +309,9 @@ export function lazy<P>(
|
|
|
268
309
|
export const StrictMode = STRICT_MODE_TYPE;
|
|
269
310
|
|
|
270
311
|
/** Clones an existing element with merged props and optional replacement children. */
|
|
271
|
-
export function cloneElement<P extends
|
|
312
|
+
export function cloneElement<P extends object>(
|
|
272
313
|
element: ReactCompatElement<P>,
|
|
273
|
-
props: Partial<P> | null,
|
|
314
|
+
props: (Partial<P> & ReactReservedProps) | null,
|
|
274
315
|
...children: ReactCompatNode[]
|
|
275
316
|
): ReactCompatElement<P> {
|
|
276
317
|
const key = props === null || props.key === undefined ? element.key : String(props.key);
|
|
@@ -295,9 +336,10 @@ export function cloneElement<P extends Record<string, unknown>>(
|
|
|
295
336
|
}
|
|
296
337
|
|
|
297
338
|
function copyElementProps(
|
|
298
|
-
source:
|
|
299
|
-
base?:
|
|
339
|
+
source: object | null | undefined,
|
|
340
|
+
base?: object,
|
|
300
341
|
omitChildren = false,
|
|
342
|
+
copySymbols: boolean | "internal" = true,
|
|
301
343
|
): Record<string, unknown> {
|
|
302
344
|
const props: Record<PropertyKey, unknown> = {};
|
|
303
345
|
|
|
@@ -310,15 +352,49 @@ function copyElementProps(
|
|
|
310
352
|
}
|
|
311
353
|
|
|
312
354
|
copyOwnStringElementProps(source, props, omitChildren);
|
|
313
|
-
|
|
355
|
+
if (copySymbols === "internal") {
|
|
356
|
+
copyInternalElementSymbolProps(source, props);
|
|
357
|
+
} else if (copySymbols) {
|
|
358
|
+
copyOwnSymbolElementProps(source, props);
|
|
359
|
+
}
|
|
360
|
+
return props as Record<string, unknown>;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
function copyCreateElementProps(
|
|
364
|
+
source: object | null | undefined,
|
|
365
|
+
): Record<string, unknown> {
|
|
366
|
+
const props: Record<PropertyKey, unknown> = {};
|
|
367
|
+
|
|
368
|
+
if (source === null || source === undefined) {
|
|
369
|
+
return props as Record<string, unknown>;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
const stringSource = source as Record<string, unknown>;
|
|
373
|
+
for (const name in source) {
|
|
374
|
+
if (!hasOwnProperty.call(source, name)) {
|
|
375
|
+
continue;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
if (
|
|
379
|
+
name !== "key" &&
|
|
380
|
+
name !== "ref" &&
|
|
381
|
+
name !== "__self" &&
|
|
382
|
+
name !== "__source"
|
|
383
|
+
) {
|
|
384
|
+
props[name] = stringSource[name];
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
copyInternalElementSymbolProps(source, props);
|
|
314
389
|
return props as Record<string, unknown>;
|
|
315
390
|
}
|
|
316
391
|
|
|
317
392
|
function copyOwnStringElementProps(
|
|
318
|
-
source:
|
|
393
|
+
source: object,
|
|
319
394
|
target: Record<string, unknown>,
|
|
320
395
|
omitChildren: boolean,
|
|
321
396
|
): void {
|
|
397
|
+
const stringSource = source as Record<string, unknown>;
|
|
322
398
|
for (const name in source) {
|
|
323
399
|
if (!hasOwnProperty.call(source, name)) {
|
|
324
400
|
continue;
|
|
@@ -331,13 +407,13 @@ function copyOwnStringElementProps(
|
|
|
331
407
|
name !== "__source" &&
|
|
332
408
|
(!omitChildren || name !== "children")
|
|
333
409
|
) {
|
|
334
|
-
target[name] =
|
|
410
|
+
target[name] = stringSource[name];
|
|
335
411
|
}
|
|
336
412
|
}
|
|
337
413
|
}
|
|
338
414
|
|
|
339
415
|
function copyOwnSymbolElementProps(
|
|
340
|
-
source:
|
|
416
|
+
source: object,
|
|
341
417
|
target: Record<PropertyKey, unknown>,
|
|
342
418
|
): void {
|
|
343
419
|
const symbolSource = source as Record<PropertyKey, unknown>;
|
|
@@ -346,6 +422,16 @@ function copyOwnSymbolElementProps(
|
|
|
346
422
|
}
|
|
347
423
|
}
|
|
348
424
|
|
|
425
|
+
function copyInternalElementSymbolProps(
|
|
426
|
+
source: object,
|
|
427
|
+
target: Record<PropertyKey, unknown>,
|
|
428
|
+
): void {
|
|
429
|
+
const symbolSource = source as Record<PropertyKey, unknown>;
|
|
430
|
+
if (hasOwnProperty.call(source, REACTIVE_TEXT_BINDING_META)) {
|
|
431
|
+
target[REACTIVE_TEXT_BINDING_META] = symbolSource[REACTIVE_TEXT_BINDING_META];
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
349
435
|
function normalizeElementType<P>(type: ElementType<P>): ElementType<P> {
|
|
350
436
|
return isReactCompatContextProviderShorthand(type) ? (type.Provider as ElementType<P>) : type;
|
|
351
437
|
}
|
package/src/hooks.ts
CHANGED
|
@@ -2214,6 +2214,10 @@ function cleanupInactiveInstances(runtime: RootRuntime): void {
|
|
|
2214
2214
|
return;
|
|
2215
2215
|
}
|
|
2216
2216
|
|
|
2217
|
+
if (activeInstanceKeys.size === runtime.instances.size) {
|
|
2218
|
+
return;
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2217
2221
|
for (const [key, instance] of runtime.instances) {
|
|
2218
2222
|
if (!activeInstanceKeys.has(key)) {
|
|
2219
2223
|
cleanupInstance(instance);
|
|
@@ -2224,7 +2228,7 @@ function cleanupInactiveInstances(runtime: RootRuntime): void {
|
|
|
2224
2228
|
}
|
|
2225
2229
|
|
|
2226
2230
|
function indexInstanceKey(runtime: RootRuntime, key: string): void {
|
|
2227
|
-
|
|
2231
|
+
forEachInstanceKeyPrefix(key, (prefix) => {
|
|
2228
2232
|
let keys = runtime.instanceKeysByPrefix.get(prefix);
|
|
2229
2233
|
|
|
2230
2234
|
if (keys === undefined) {
|
|
@@ -2233,15 +2237,15 @@ function indexInstanceKey(runtime: RootRuntime, key: string): void {
|
|
|
2233
2237
|
}
|
|
2234
2238
|
|
|
2235
2239
|
keys.add(key);
|
|
2236
|
-
}
|
|
2240
|
+
});
|
|
2237
2241
|
}
|
|
2238
2242
|
|
|
2239
2243
|
function removeInstanceKeyFromIndex(runtime: RootRuntime, key: string): void {
|
|
2240
|
-
|
|
2244
|
+
forEachInstanceKeyPrefix(key, (prefix) => {
|
|
2241
2245
|
const keys = runtime.instanceKeysByPrefix.get(prefix);
|
|
2242
2246
|
|
|
2243
2247
|
if (keys === undefined) {
|
|
2244
|
-
|
|
2248
|
+
return;
|
|
2245
2249
|
}
|
|
2246
2250
|
|
|
2247
2251
|
keys.delete(key);
|
|
@@ -2249,18 +2253,27 @@ function removeInstanceKeyFromIndex(runtime: RootRuntime, key: string): void {
|
|
|
2249
2253
|
if (keys.size === 0) {
|
|
2250
2254
|
runtime.instanceKeysByPrefix.delete(prefix);
|
|
2251
2255
|
}
|
|
2252
|
-
}
|
|
2256
|
+
});
|
|
2253
2257
|
}
|
|
2254
2258
|
|
|
2255
|
-
function
|
|
2256
|
-
|
|
2257
|
-
|
|
2259
|
+
function forEachInstanceKeyPrefix(
|
|
2260
|
+
key: string,
|
|
2261
|
+
callback: (prefix: string) => void,
|
|
2262
|
+
): void {
|
|
2263
|
+
let start = 0;
|
|
2264
|
+
|
|
2265
|
+
while (start < key.length) {
|
|
2266
|
+
const next = key.indexOf(".", start);
|
|
2267
|
+
|
|
2268
|
+
if (next === -1) {
|
|
2269
|
+
break;
|
|
2270
|
+
}
|
|
2258
2271
|
|
|
2259
|
-
|
|
2260
|
-
|
|
2272
|
+
callback(key.slice(0, next));
|
|
2273
|
+
start = next + 1;
|
|
2261
2274
|
}
|
|
2262
2275
|
|
|
2263
|
-
|
|
2276
|
+
callback(key);
|
|
2264
2277
|
}
|
|
2265
2278
|
|
|
2266
2279
|
function cleanupInstance(instance: ComponentInstance): void {
|