@viewfly/core 2.0.0-alpha.7 → 2.1.0
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/bundles/index.d.ts +65 -18
- package/bundles/index.esm.js +89 -18
- package/bundles/index.js +91 -17
- package/package.json +1 -1
package/bundles/index.d.ts
CHANGED
|
@@ -191,22 +191,6 @@ declare class ReflectiveInjector implements Injector {
|
|
|
191
191
|
|
|
192
192
|
declare function makeError(name: string): (message: string) => Error;
|
|
193
193
|
|
|
194
|
-
interface Props {
|
|
195
|
-
children?: JSXNode | JSXNode[];
|
|
196
|
-
}
|
|
197
|
-
declare function Fragment(props: Props): () => JSXNode | JSXNode[];
|
|
198
|
-
type Key = number | string;
|
|
199
|
-
declare function jsx(type: string | ComponentSetup, props: Props & Record<string, any>, key?: Key): ViewFlyNode;
|
|
200
|
-
declare const jsxs: typeof jsx;
|
|
201
|
-
interface ViewFlyNode<T = string | ComponentSetup> {
|
|
202
|
-
type: T;
|
|
203
|
-
props: Props & Record<string, any>;
|
|
204
|
-
key?: Key;
|
|
205
|
-
}
|
|
206
|
-
declare const JSXNodeFactory: {
|
|
207
|
-
createNode<T = string | ComponentSetup<any>>(type: T, props: Props & Record<string, any>, key?: Key): ViewFlyNode<T>;
|
|
208
|
-
};
|
|
209
|
-
|
|
210
194
|
declare function comparePropsWithCallbacks(oldProps: Record<string, any>, newProps: Record<string, any>, onDeleted: (key: string, oldValue: any) => void, onAdded: (key: string, value: any) => void, onUpdated: (key: string, newValue: any, oldValue: any) => void): void;
|
|
211
195
|
declare const TextAtomType: unique symbol;
|
|
212
196
|
declare const ElementAtomType: unique symbol;
|
|
@@ -267,6 +251,63 @@ declare abstract class NativeRenderer<ElementNode = NativeNode, TextNode = Nativ
|
|
|
267
251
|
abstract getNameSpace(type: string, namespace: ElementNamespace): string | void;
|
|
268
252
|
}
|
|
269
253
|
|
|
254
|
+
interface Props {
|
|
255
|
+
children?: JSXNode | JSXNode[];
|
|
256
|
+
}
|
|
257
|
+
declare function Fragment(props: Props): () => JSXNode | JSXNode[];
|
|
258
|
+
type Key = number | string;
|
|
259
|
+
declare function jsx(type: string | ComponentSetup, props: Props & Record<string, any>, key?: Key): ViewFlyNode;
|
|
260
|
+
declare const jsxs: typeof jsx;
|
|
261
|
+
interface ViewFlyNode<T = string | ComponentSetup> {
|
|
262
|
+
type: T;
|
|
263
|
+
props: Props & Record<string, any>;
|
|
264
|
+
key?: Key;
|
|
265
|
+
}
|
|
266
|
+
declare const JSXNodeFactory: {
|
|
267
|
+
createNode<T = string | ComponentSetup<any>>(type: T, props: Props & Record<string, any>, key?: Key): ViewFlyNode<T>;
|
|
268
|
+
};
|
|
269
|
+
/**
|
|
270
|
+
* 给组件的视图元素节点添加自定义属性标记
|
|
271
|
+
* @param marks
|
|
272
|
+
* @param setup
|
|
273
|
+
* @example
|
|
274
|
+
* ```tsx
|
|
275
|
+
* const App = withMark('mark', function(props) {
|
|
276
|
+
* return () => {
|
|
277
|
+
* return <div>...</div>
|
|
278
|
+
* }
|
|
279
|
+
* })
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
declare function withMark<T extends ComponentSetup>(marks: string | string[], setup: T): T;
|
|
283
|
+
declare function applyMark(mark: string | string[], render: () => JSXNode): JSXNode;
|
|
284
|
+
interface PortalProps<T extends NativeNode> extends Props {
|
|
285
|
+
host: T;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* 将子节点渲染到指定节点
|
|
289
|
+
* @param props
|
|
290
|
+
* @example
|
|
291
|
+
* ```tsx
|
|
292
|
+
* function App() {
|
|
293
|
+
* const modal = document.getElementById('modal')!
|
|
294
|
+
* return () => {
|
|
295
|
+
* return (
|
|
296
|
+
* <div>
|
|
297
|
+
* <Portal host={modal}>
|
|
298
|
+
* 这里的内容将渲染到 modal 节点
|
|
299
|
+
* </Portal>
|
|
300
|
+
* </div>
|
|
301
|
+
* )
|
|
302
|
+
* }
|
|
303
|
+
* }
|
|
304
|
+
* ```
|
|
305
|
+
*/
|
|
306
|
+
declare function Portal<T extends NativeNode>(props: PortalProps<T>): {
|
|
307
|
+
$portalHost: T;
|
|
308
|
+
$render(): JSXNode | JSXNode[];
|
|
309
|
+
};
|
|
310
|
+
|
|
270
311
|
interface RefListener<T> {
|
|
271
312
|
(current: T): void | (() => void);
|
|
272
313
|
}
|
|
@@ -305,7 +346,8 @@ declare class DynamicRef<T> {
|
|
|
305
346
|
*/
|
|
306
347
|
declare function createDynamicRef<T, U = ExtractInstanceType<T>>(callback: RefListener<U>): DynamicRef<U>;
|
|
307
348
|
declare class StaticRef<T> extends DynamicRef<T> {
|
|
308
|
-
|
|
349
|
+
get current(): T | null;
|
|
350
|
+
private _current;
|
|
309
351
|
constructor();
|
|
310
352
|
}
|
|
311
353
|
declare function createRef<T, U = ExtractInstanceType<T>>(): StaticRef<U>;
|
|
@@ -489,6 +531,11 @@ declare function getDepContext(): Dep | undefined;
|
|
|
489
531
|
declare function pushDepContext(dep: Dep): void;
|
|
490
532
|
declare function popDepContext(): void;
|
|
491
533
|
|
|
534
|
+
/**
|
|
535
|
+
* @deprecated 即将弃用,Viewfly 默认就有 memo 的效果
|
|
536
|
+
* @param canUseMemo
|
|
537
|
+
* @param render
|
|
538
|
+
*/
|
|
492
539
|
declare function withMemo<T extends Props = Props>(canUseMemo: ComponentInstance<T>['$useMemo'], render: () => JSXNode): ComponentInstance<T>;
|
|
493
540
|
|
|
494
541
|
declare function createRenderer(component: Component, nativeRenderer: NativeRenderer, namespace: ElementNamespace): (host: NativeNode) => void;
|
|
@@ -718,4 +765,4 @@ declare function createEffect<T, T1, T2, T3, T4, T5, T6, T7>(deps: [Signal<T>, S
|
|
|
718
765
|
declare function createEffect<T>(deps: () => T, callback: EffectCallback<T>): () => void;
|
|
719
766
|
declare function createEffect<T = any>(deps: Signal<any>[], callback: EffectCallback<T[]>): () => void;
|
|
720
767
|
|
|
721
|
-
export { type AbstractInstanceType, type AbstractProvider, type AbstractType, type Application, ArrayReactiveHandler, type Atom, type ClassNames, type ClassProvider, Component, type ComponentAnnotation, type ComponentInstance, type ComponentSetup, type ComponentViewMetadata, type Computed, type Config, type ConstructorProvider, type ContextProvider, type ContextProviderParams, Dep, DynamicRef, type EffectCallback, type ElementNamespace, type ExistingProvider, type ExtractInstanceType, type ExtractValueType, type FactoryProvider, ForwardRef, Fragment, Inject, type InjectDecorator, InjectFlags, Injectable, type InjectableDecorator, type InjectableOptions, InjectionToken, Injector, JSX, type JSXNode, JSXNodeFactory, type Key, type LifeCycleCallback, MapReactiveHandler, type Module, type NativeNode, NativeRenderer, type NormalizedProvider, NullInjector, ObjectReactiveHandler, Optional, type OptionalDecorator, Prop, type PropDecorator, type Props, type ProvideScope, type Provider, type ReactiveConfig, type RefListener, type ReflectiveDependency, ReflectiveInjector, RootComponent, Scope, Self, type SelfDecorator, SetReactiveHandler, type Signal, SkipSelf, type SkipSelfDecorator, type StaticProvider, StaticRef, THROW_IF_NOT_FOUND, TrackOpTypes, TriggerOpTypes, Type, type TypeProvider, type ValueProvider, type ViewFlyNode, comparePropsWithCallbacks, computed, createContext, createContextProvider, createDerived, createDynamicRef, createEffect, createRef, createRenderer, createSignal, defaultArrayReactiveHandler, defaultMapReactiveHandler, defaultObjectReactiveHandler, defaultSetReactiveHandler, defaultShallowArrayReactiveHandler, defaultShallowMapReactiveHandler, defaultShallowObjectReactiveHandler, defaultShallowSetReactiveHandler, forwardRef, getCurrentInstance, getDepContext, getSetupContext, inject, internalWrite, isReactive, jsx, jsxs, makeError, normalizeProvider, onMounted, onUnmounted, onUpdated, popDepContext, proxyToRawCache, pushDepContext, rawToProxyCache, reactive, readonlyProxyHandler, registryComponentDestroyCallback, shallowReactive, toRaw, track, trigger, viewfly, watch, withAnnotation, withMemo };
|
|
768
|
+
export { type AbstractInstanceType, type AbstractProvider, type AbstractType, type Application, ArrayReactiveHandler, type Atom, type ClassNames, type ClassProvider, Component, type ComponentAnnotation, type ComponentInstance, type ComponentSetup, type ComponentViewMetadata, type Computed, type Config, type ConstructorProvider, type ContextProvider, type ContextProviderParams, Dep, DynamicRef, type EffectCallback, type ElementNamespace, type ExistingProvider, type ExtractInstanceType, type ExtractValueType, type FactoryProvider, ForwardRef, Fragment, Inject, type InjectDecorator, InjectFlags, Injectable, type InjectableDecorator, type InjectableOptions, InjectionToken, Injector, JSX, type JSXNode, JSXNodeFactory, type Key, type LifeCycleCallback, MapReactiveHandler, type Module, type NativeNode, NativeRenderer, type NormalizedProvider, NullInjector, ObjectReactiveHandler, Optional, type OptionalDecorator, Portal, type PortalProps, Prop, type PropDecorator, type Props, type ProvideScope, type Provider, type ReactiveConfig, type RefListener, type ReflectiveDependency, ReflectiveInjector, RootComponent, Scope, Self, type SelfDecorator, SetReactiveHandler, type Signal, SkipSelf, type SkipSelfDecorator, type StaticProvider, StaticRef, THROW_IF_NOT_FOUND, TrackOpTypes, TriggerOpTypes, Type, type TypeProvider, type ValueProvider, type ViewFlyNode, applyMark, comparePropsWithCallbacks, computed, createContext, createContextProvider, createDerived, createDynamicRef, createEffect, createRef, createRenderer, createSignal, defaultArrayReactiveHandler, defaultMapReactiveHandler, defaultObjectReactiveHandler, defaultSetReactiveHandler, defaultShallowArrayReactiveHandler, defaultShallowMapReactiveHandler, defaultShallowObjectReactiveHandler, defaultShallowSetReactiveHandler, forwardRef, getCurrentInstance, getDepContext, getSetupContext, inject, internalWrite, isReactive, jsx, jsxs, makeError, normalizeProvider, onMounted, onUnmounted, onUpdated, popDepContext, proxyToRawCache, pushDepContext, rawToProxyCache, reactive, readonlyProxyHandler, registryComponentDestroyCallback, shallowReactive, toRaw, track, trigger, viewfly, watch, withAnnotation, withMark, withMemo };
|
package/bundles/index.esm.js
CHANGED
|
@@ -727,30 +727,22 @@ class DynamicRef {
|
|
|
727
727
|
function createDynamicRef(callback) {
|
|
728
728
|
return new DynamicRef(callback);
|
|
729
729
|
}
|
|
730
|
-
const initValue = {};
|
|
731
730
|
class StaticRef extends DynamicRef {
|
|
731
|
+
get current() {
|
|
732
|
+
return this._current;
|
|
733
|
+
}
|
|
732
734
|
constructor() {
|
|
733
|
-
let value = initValue;
|
|
734
|
-
let isInit = false;
|
|
735
735
|
super(v => {
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
}
|
|
736
|
+
this._current = v;
|
|
737
|
+
return () => {
|
|
738
|
+
this._current = null;
|
|
739
|
+
};
|
|
740
740
|
});
|
|
741
|
-
Object.defineProperty(this, "
|
|
741
|
+
Object.defineProperty(this, "_current", {
|
|
742
742
|
enumerable: true,
|
|
743
743
|
configurable: true,
|
|
744
744
|
writable: true,
|
|
745
|
-
value:
|
|
746
|
-
});
|
|
747
|
-
Object.defineProperty(this, 'current', {
|
|
748
|
-
get() {
|
|
749
|
-
if (value === initValue) {
|
|
750
|
-
return null;
|
|
751
|
-
}
|
|
752
|
-
return value;
|
|
753
|
-
}
|
|
745
|
+
value: null
|
|
754
746
|
});
|
|
755
747
|
}
|
|
756
748
|
}
|
|
@@ -1653,6 +1645,80 @@ const JSXNodeFactory = {
|
|
|
1653
1645
|
};
|
|
1654
1646
|
}
|
|
1655
1647
|
};
|
|
1648
|
+
/**
|
|
1649
|
+
* 给组件的视图元素节点添加自定义属性标记
|
|
1650
|
+
* @param marks
|
|
1651
|
+
* @param setup
|
|
1652
|
+
* @example
|
|
1653
|
+
* ```tsx
|
|
1654
|
+
* const App = withMark('mark', function(props) {
|
|
1655
|
+
* return () => {
|
|
1656
|
+
* return <div>...</div>
|
|
1657
|
+
* }
|
|
1658
|
+
* })
|
|
1659
|
+
* ```
|
|
1660
|
+
*/
|
|
1661
|
+
function withMark(marks, setup) {
|
|
1662
|
+
if (!marks) {
|
|
1663
|
+
return setup;
|
|
1664
|
+
}
|
|
1665
|
+
return function (props) {
|
|
1666
|
+
const componentRenderFn = setup(props);
|
|
1667
|
+
const isFn = typeof componentRenderFn === 'function';
|
|
1668
|
+
if (isFn) {
|
|
1669
|
+
return function () {
|
|
1670
|
+
return applyMark(marks, componentRenderFn);
|
|
1671
|
+
};
|
|
1672
|
+
}
|
|
1673
|
+
const oldRender = componentRenderFn.$render;
|
|
1674
|
+
componentRenderFn.$render = function () {
|
|
1675
|
+
return applyMark(marks, () => {
|
|
1676
|
+
return oldRender.call(componentRenderFn);
|
|
1677
|
+
});
|
|
1678
|
+
};
|
|
1679
|
+
return componentRenderFn;
|
|
1680
|
+
};
|
|
1681
|
+
}
|
|
1682
|
+
function applyMark(mark, render) {
|
|
1683
|
+
const oldCreateNote = JSXNodeFactory.createNode;
|
|
1684
|
+
const spaces = Array.isArray(mark) ? mark : [mark];
|
|
1685
|
+
JSXNodeFactory.createNode = function (name, props, key) {
|
|
1686
|
+
for (const scopedId of spaces) {
|
|
1687
|
+
props[scopedId] = '';
|
|
1688
|
+
}
|
|
1689
|
+
return oldCreateNote.apply(JSXNodeFactory, [name, props, key]);
|
|
1690
|
+
};
|
|
1691
|
+
const vDom = render();
|
|
1692
|
+
JSXNodeFactory.createNode = oldCreateNote;
|
|
1693
|
+
return vDom;
|
|
1694
|
+
}
|
|
1695
|
+
/**
|
|
1696
|
+
* 将子节点渲染到指定节点
|
|
1697
|
+
* @param props
|
|
1698
|
+
* @example
|
|
1699
|
+
* ```tsx
|
|
1700
|
+
* function App() {
|
|
1701
|
+
* const modal = document.getElementById('modal')!
|
|
1702
|
+
* return () => {
|
|
1703
|
+
* return (
|
|
1704
|
+
* <div>
|
|
1705
|
+
* <Portal host={modal}>
|
|
1706
|
+
* 这里的内容将渲染到 modal 节点
|
|
1707
|
+
* </Portal>
|
|
1708
|
+
* </div>
|
|
1709
|
+
* )
|
|
1710
|
+
* }
|
|
1711
|
+
* }
|
|
1712
|
+
* ```
|
|
1713
|
+
*/
|
|
1714
|
+
function Portal(props) {
|
|
1715
|
+
return {
|
|
1716
|
+
$portalHost: props.host,
|
|
1717
|
+
$render() {
|
|
1718
|
+
return props.children;
|
|
1719
|
+
}
|
|
1720
|
+
};
|
|
1721
|
+
}
|
|
1656
1722
|
|
|
1657
1723
|
function watch(trigger, callback) {
|
|
1658
1724
|
let prevFn;
|
|
@@ -1761,6 +1827,11 @@ function withAnnotation(annotation, componentSetup) {
|
|
|
1761
1827
|
class NativeRenderer {
|
|
1762
1828
|
}
|
|
1763
1829
|
|
|
1830
|
+
/**
|
|
1831
|
+
* @deprecated 即将弃用,Viewfly 默认就有 memo 的效果
|
|
1832
|
+
* @param canUseMemo
|
|
1833
|
+
* @param render
|
|
1834
|
+
*/
|
|
1764
1835
|
function withMemo(canUseMemo, render) {
|
|
1765
1836
|
return {
|
|
1766
1837
|
$useMemo: canUseMemo,
|
|
@@ -2626,4 +2697,4 @@ function createEffect(deps, callback) {
|
|
|
2626
2697
|
return unWatch;
|
|
2627
2698
|
}
|
|
2628
2699
|
|
|
2629
|
-
export { ArrayReactiveHandler, Component, Dep, DynamicRef, ForwardRef, Fragment, Inject, InjectFlags, Injectable, InjectionToken, Injector, JSXNodeFactory, MapReactiveHandler, NativeRenderer, NullInjector, ObjectReactiveHandler, Optional, Prop, ReflectiveInjector, RootComponent, Scope, Self, SetReactiveHandler, SkipSelf, StaticRef, THROW_IF_NOT_FOUND, TrackOpTypes, TriggerOpTypes, Type, comparePropsWithCallbacks, computed, createContext, createContextProvider, createDerived, createDynamicRef, createEffect, createRef, createRenderer, createSignal, defaultArrayReactiveHandler, defaultMapReactiveHandler, defaultObjectReactiveHandler, defaultSetReactiveHandler, defaultShallowArrayReactiveHandler, defaultShallowMapReactiveHandler, defaultShallowObjectReactiveHandler, defaultShallowSetReactiveHandler, forwardRef, getCurrentInstance, getDepContext, getSetupContext, inject, internalWrite, isReactive, jsx, jsxs, makeError, normalizeProvider, onMounted, onUnmounted, onUpdated, popDepContext, proxyToRawCache, pushDepContext, rawToProxyCache, reactive, readonlyProxyHandler, registryComponentDestroyCallback, shallowReactive, toRaw, track, trigger, viewfly, watch, withAnnotation, withMemo };
|
|
2700
|
+
export { ArrayReactiveHandler, Component, Dep, DynamicRef, ForwardRef, Fragment, Inject, InjectFlags, Injectable, InjectionToken, Injector, JSXNodeFactory, MapReactiveHandler, NativeRenderer, NullInjector, ObjectReactiveHandler, Optional, Portal, Prop, ReflectiveInjector, RootComponent, Scope, Self, SetReactiveHandler, SkipSelf, StaticRef, THROW_IF_NOT_FOUND, TrackOpTypes, TriggerOpTypes, Type, applyMark, comparePropsWithCallbacks, computed, createContext, createContextProvider, createDerived, createDynamicRef, createEffect, createRef, createRenderer, createSignal, defaultArrayReactiveHandler, defaultMapReactiveHandler, defaultObjectReactiveHandler, defaultSetReactiveHandler, defaultShallowArrayReactiveHandler, defaultShallowMapReactiveHandler, defaultShallowObjectReactiveHandler, defaultShallowSetReactiveHandler, forwardRef, getCurrentInstance, getDepContext, getSetupContext, inject, internalWrite, isReactive, jsx, jsxs, makeError, normalizeProvider, onMounted, onUnmounted, onUpdated, popDepContext, proxyToRawCache, pushDepContext, rawToProxyCache, reactive, readonlyProxyHandler, registryComponentDestroyCallback, shallowReactive, toRaw, track, trigger, viewfly, watch, withAnnotation, withMark, withMemo };
|
package/bundles/index.js
CHANGED
|
@@ -729,30 +729,22 @@ class DynamicRef {
|
|
|
729
729
|
function createDynamicRef(callback) {
|
|
730
730
|
return new DynamicRef(callback);
|
|
731
731
|
}
|
|
732
|
-
const initValue = {};
|
|
733
732
|
class StaticRef extends DynamicRef {
|
|
733
|
+
get current() {
|
|
734
|
+
return this._current;
|
|
735
|
+
}
|
|
734
736
|
constructor() {
|
|
735
|
-
let value = initValue;
|
|
736
|
-
let isInit = false;
|
|
737
737
|
super(v => {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
}
|
|
738
|
+
this._current = v;
|
|
739
|
+
return () => {
|
|
740
|
+
this._current = null;
|
|
741
|
+
};
|
|
742
742
|
});
|
|
743
|
-
Object.defineProperty(this, "
|
|
743
|
+
Object.defineProperty(this, "_current", {
|
|
744
744
|
enumerable: true,
|
|
745
745
|
configurable: true,
|
|
746
746
|
writable: true,
|
|
747
|
-
value:
|
|
748
|
-
});
|
|
749
|
-
Object.defineProperty(this, 'current', {
|
|
750
|
-
get() {
|
|
751
|
-
if (value === initValue) {
|
|
752
|
-
return null;
|
|
753
|
-
}
|
|
754
|
-
return value;
|
|
755
|
-
}
|
|
747
|
+
value: null
|
|
756
748
|
});
|
|
757
749
|
}
|
|
758
750
|
}
|
|
@@ -1655,6 +1647,80 @@ const JSXNodeFactory = {
|
|
|
1655
1647
|
};
|
|
1656
1648
|
}
|
|
1657
1649
|
};
|
|
1650
|
+
/**
|
|
1651
|
+
* 给组件的视图元素节点添加自定义属性标记
|
|
1652
|
+
* @param marks
|
|
1653
|
+
* @param setup
|
|
1654
|
+
* @example
|
|
1655
|
+
* ```tsx
|
|
1656
|
+
* const App = withMark('mark', function(props) {
|
|
1657
|
+
* return () => {
|
|
1658
|
+
* return <div>...</div>
|
|
1659
|
+
* }
|
|
1660
|
+
* })
|
|
1661
|
+
* ```
|
|
1662
|
+
*/
|
|
1663
|
+
function withMark(marks, setup) {
|
|
1664
|
+
if (!marks) {
|
|
1665
|
+
return setup;
|
|
1666
|
+
}
|
|
1667
|
+
return function (props) {
|
|
1668
|
+
const componentRenderFn = setup(props);
|
|
1669
|
+
const isFn = typeof componentRenderFn === 'function';
|
|
1670
|
+
if (isFn) {
|
|
1671
|
+
return function () {
|
|
1672
|
+
return applyMark(marks, componentRenderFn);
|
|
1673
|
+
};
|
|
1674
|
+
}
|
|
1675
|
+
const oldRender = componentRenderFn.$render;
|
|
1676
|
+
componentRenderFn.$render = function () {
|
|
1677
|
+
return applyMark(marks, () => {
|
|
1678
|
+
return oldRender.call(componentRenderFn);
|
|
1679
|
+
});
|
|
1680
|
+
};
|
|
1681
|
+
return componentRenderFn;
|
|
1682
|
+
};
|
|
1683
|
+
}
|
|
1684
|
+
function applyMark(mark, render) {
|
|
1685
|
+
const oldCreateNote = JSXNodeFactory.createNode;
|
|
1686
|
+
const spaces = Array.isArray(mark) ? mark : [mark];
|
|
1687
|
+
JSXNodeFactory.createNode = function (name, props, key) {
|
|
1688
|
+
for (const scopedId of spaces) {
|
|
1689
|
+
props[scopedId] = '';
|
|
1690
|
+
}
|
|
1691
|
+
return oldCreateNote.apply(JSXNodeFactory, [name, props, key]);
|
|
1692
|
+
};
|
|
1693
|
+
const vDom = render();
|
|
1694
|
+
JSXNodeFactory.createNode = oldCreateNote;
|
|
1695
|
+
return vDom;
|
|
1696
|
+
}
|
|
1697
|
+
/**
|
|
1698
|
+
* 将子节点渲染到指定节点
|
|
1699
|
+
* @param props
|
|
1700
|
+
* @example
|
|
1701
|
+
* ```tsx
|
|
1702
|
+
* function App() {
|
|
1703
|
+
* const modal = document.getElementById('modal')!
|
|
1704
|
+
* return () => {
|
|
1705
|
+
* return (
|
|
1706
|
+
* <div>
|
|
1707
|
+
* <Portal host={modal}>
|
|
1708
|
+
* 这里的内容将渲染到 modal 节点
|
|
1709
|
+
* </Portal>
|
|
1710
|
+
* </div>
|
|
1711
|
+
* )
|
|
1712
|
+
* }
|
|
1713
|
+
* }
|
|
1714
|
+
* ```
|
|
1715
|
+
*/
|
|
1716
|
+
function Portal(props) {
|
|
1717
|
+
return {
|
|
1718
|
+
$portalHost: props.host,
|
|
1719
|
+
$render() {
|
|
1720
|
+
return props.children;
|
|
1721
|
+
}
|
|
1722
|
+
};
|
|
1723
|
+
}
|
|
1658
1724
|
|
|
1659
1725
|
function watch(trigger, callback) {
|
|
1660
1726
|
let prevFn;
|
|
@@ -1763,6 +1829,11 @@ function withAnnotation(annotation, componentSetup) {
|
|
|
1763
1829
|
class NativeRenderer {
|
|
1764
1830
|
}
|
|
1765
1831
|
|
|
1832
|
+
/**
|
|
1833
|
+
* @deprecated 即将弃用,Viewfly 默认就有 memo 的效果
|
|
1834
|
+
* @param canUseMemo
|
|
1835
|
+
* @param render
|
|
1836
|
+
*/
|
|
1766
1837
|
function withMemo(canUseMemo, render) {
|
|
1767
1838
|
return {
|
|
1768
1839
|
$useMemo: canUseMemo,
|
|
@@ -2644,6 +2715,7 @@ exports.NativeRenderer = NativeRenderer;
|
|
|
2644
2715
|
exports.NullInjector = NullInjector;
|
|
2645
2716
|
exports.ObjectReactiveHandler = ObjectReactiveHandler;
|
|
2646
2717
|
exports.Optional = Optional;
|
|
2718
|
+
exports.Portal = Portal;
|
|
2647
2719
|
exports.Prop = Prop;
|
|
2648
2720
|
exports.ReflectiveInjector = ReflectiveInjector;
|
|
2649
2721
|
exports.RootComponent = RootComponent;
|
|
@@ -2654,6 +2726,7 @@ exports.SkipSelf = SkipSelf;
|
|
|
2654
2726
|
exports.StaticRef = StaticRef;
|
|
2655
2727
|
exports.THROW_IF_NOT_FOUND = THROW_IF_NOT_FOUND;
|
|
2656
2728
|
exports.Type = Type;
|
|
2729
|
+
exports.applyMark = applyMark;
|
|
2657
2730
|
exports.comparePropsWithCallbacks = comparePropsWithCallbacks;
|
|
2658
2731
|
exports.computed = computed;
|
|
2659
2732
|
exports.createContext = createContext;
|
|
@@ -2700,4 +2773,5 @@ exports.trigger = trigger;
|
|
|
2700
2773
|
exports.viewfly = viewfly;
|
|
2701
2774
|
exports.watch = watch;
|
|
2702
2775
|
exports.withAnnotation = withAnnotation;
|
|
2776
|
+
exports.withMark = withMark;
|
|
2703
2777
|
exports.withMemo = withMemo;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@viewfly/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Viewfly is a simple and easy-to-use JavaScript framework with an intuitive development experience.",
|
|
5
5
|
"main": "./bundles/index.js",
|
|
6
6
|
"module": "./bundles/index.esm.js",
|