zova-module-a-behavior 5.1.10 → 5.1.12
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/cli/behavior/metadata/generate.ts +3 -1
- package/dist/.metadata/component/behavior.d.ts +5 -0
- package/dist/.metadata/component/behavior.d.ts.map +1 -1
- package/dist/bean/behavior.root_.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/useBehavior.d.ts.map +1 -1
- package/dist/service/composer.d.ts.map +1 -1
- package/dist/types/behavior.d.ts.map +1 -1
- package/package.json +2 -2
- package/rest/components.ts +1 -1
- package/src/.metadata/component/behavior.ts +9 -1
- package/src/bean/behavior.root_.ts +9 -2
- package/src/lib/useBehavior.ts +4 -1
- package/src/service/composer.ts +38 -11
- package/src/types/behavior.ts +11 -4
- package/rest/component/behavior.ts +0 -7
|
@@ -7,7 +7,9 @@ export default async function (options: IMetadataCustomGenerateOptions): Promise
|
|
|
7
7
|
for (const { beanName, beanNameCapitalize, isIgnore } of globFiles) {
|
|
8
8
|
if (isIgnore) continue;
|
|
9
9
|
const behaviorAttrName = _combineBehaviorAttrName(moduleName, beanName);
|
|
10
|
-
contentRecords.push(
|
|
10
|
+
contentRecords.push(
|
|
11
|
+
`'${behaviorAttrName}'?: IBehaviorOptions${beanNameCapitalize} | '' | boolean;`,
|
|
12
|
+
);
|
|
11
13
|
}
|
|
12
14
|
// combine
|
|
13
15
|
const content = `/** behaviors: begin */
|
|
@@ -17,5 +17,10 @@ export declare const ZBehavior: import("vue").DefineSetupFnComponent<TypeControl
|
|
|
17
17
|
} | {
|
|
18
18
|
[x: `on${Capitalize<string>}`]: ((...args: never) => any) | undefined;
|
|
19
19
|
}), import("vue").PublicProps>;
|
|
20
|
+
declare module 'zova-module-a-bean' {
|
|
21
|
+
interface IVonaComponentRecord {
|
|
22
|
+
'a-behavior:behavior': ControllerBehaviorProps;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
20
25
|
export {};
|
|
21
26
|
//# sourceMappingURL=behavior.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../../src/.metadata/component/behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAKrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAEvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD,GAAG,uBAAuB,CAAC;AAE5B,KAAK,oBAAoB,GAAG,wBAAwB,
|
|
1
|
+
{"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../../src/.metadata/component/behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAKrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAEvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,MAAM,MAAM,iCAAiC,GAAG;IAC9C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnD,GAAG,uBAAuB,CAAC;AAE5B,KAAK,oBAAoB,GAAG,wBAAwB,CAClD,uBAAuB,EACvB,MAAM,OAAO,kBAAkB,CAAC,aAAa,CAC9C,CAAC;AACF,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAiB,kBAAkB;QACjC,MAAM,EAAE,oBAAoB,CAAC;KAC9B;CACF;AAED,eAAO,MAAM,SAAS;oBAbJ,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI;;;;;8BAgBc,CAAC;AAClE,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,oBAAoB;QACnC,qBAAqB,EAAE,uBAAuB,CAAC;KAChD;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behavior.root_.d.ts","sourceRoot":"","sources":["../../src/bean/behavior.root_.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAKjC,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;CAAG;AAE3C,MAAM,WAAW,wBAAwB;CAAG;AAE5C,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,qBACa,YAAa,SAAQ,gBAAgB,
|
|
1
|
+
{"version":3,"file":"behavior.root_.d.ts","sourceRoot":"","sources":["../../src/bean/behavior.root_.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAKjC,OAAO,KAAK,EAAE,UAAU,EAAE,yBAAyB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGhG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,WAAW,uBAAuB;CAAG;AAE3C,MAAM,WAAW,wBAAwB;CAAG;AAE5C,MAAM,WAAW,oBAAqB,SAAQ,yBAAyB;IACrE,SAAS,EAAE,UAAU,CAAC;CACvB;AAED,qBACa,YAAa,SAAQ,gBAAgB,CAChD,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,CACzB;IACC,OAAO,CAAC,QAAQ,CAAkB;cAElB,QAAQ,CAAC,OAAO,EAAE,oBAAoB;IAItD,SAAS,CAAC,WAAW;cAIL,eAAe,CAAC,OAAO,EAAE,oBAAoB;IAK7D,SAAS,CAAC,MAAM,CACd,KAAK,EAAE,uBAAuB,EAC9B,IAAI,EAAE,YAAY,CAAC,wBAAwB,CAAC,GAC3C,KAAK;CAGT"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BeanControllerBase","SymbolControllerRefDisable","Use","Controller","BeanBehaviorsHolder","ControllerBehavior","_dec","_dec2","__z_BeanInfo","module","_dec3","_dec4","Reflect","metadata","Object","_class","_class2","_ControllerBehavior","constructor","args","_initializerDefineProperty","_descriptor","__init__","$$beanBehaviorsHolder","initialize","behaviorTag","$props","behaviors","render","$propsDefault","$componentOptions","inheritAttrs","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/service/composer.ts","../src/bean/bean.behavior.ts","../src/bean/bean.behaviorBase.ts","../src/lib/useBehavior.ts","../src/bean/bean.behaviorsHolder.ts","../src/component/behavior/controller.tsx","../src/.metadata/component/behavior.ts","../src/lib/behavior.ts","../src/bean/behavior.root_.ts","../src/.metadata/index.ts"],"sourcesContent":["import type { VNode } from 'vue';\n\nimport { BeanBase, cast, deepEqual, disposeInstance, Use } from 'zova';\nimport { IOnionItem, IOnionSlice, Service, SysOnion, TypeComposer } from 'zova-module-a-bean';\n\nimport type { BeanBehaviorBase } from '../bean/bean.behaviorBase.js';\nimport type { IBehaviorRecord, IBehaviors, IDecoratorBehaviorOptions, NextBehavior } from '../types/behavior.js';\n\nconst SymbolSliceOptionsOriginal = Symbol('SymbolSliceOptionsOriginal');\n\n@Service()\nexport class ServiceComposer extends BeanBase {\n private _composer: TypeComposer;\n private _onionSlicesOriginal?: IOnionSlice<IDecoratorBehaviorOptions, keyof IBehaviorRecord, BeanBehaviorBase>[];\n\n @Use()\n $$sysOnion: SysOnion;\n\n protected async __init__(behaviors: IBehaviors) {\n await this.load(behaviors);\n }\n\n protected __dispose__() {\n if (this._onionSlicesOriginal) {\n for (const onionSlice of this._onionSlicesOriginal) {\n disposeInstance(onionSlice.beanInstance);\n }\n }\n }\n\n public async load(behaviors: IBehaviors) {\n await this.$renderFreezeScope(async () => {\n await this._loadInner(behaviors);\n });\n }\n\n private async _loadInner(behaviors: IBehaviors) {\n // onionItems\n const onionItems = this._prepareOnionItems(behaviors);\n // load onions\n const onionSlices = await this.$$sysOnion.behavior.loadOnions<BeanBehaviorBase>(onionItems);\n // create behaviors\n for (const onionSlice of onionSlices) {\n const onionSliceOriginal = this._onionSlicesOriginal?.find(item => item.beanFullName === onionSlice.beanFullName);\n if (onionSliceOriginal) {\n onionSlice.beanInstance = onionSliceOriginal.beanInstance;\n if (!deepEqual(onionSliceOriginal[SymbolSliceOptionsOriginal], onionSlice.options)) {\n await cast(onionSlice.beanInstance).onOptionsChange(onionSlice.options);\n }\n } else {\n onionSlice.beanInstance = await this.bean._newBean(onionSlice.beanFullName as any, true, onionSlice.options);\n }\n onionSlice[SymbolSliceOptionsOriginal] = onionSlice.options;\n }\n // dispose original behaviors\n if (this._onionSlicesOriginal) {\n for (const onionSlice of this._onionSlicesOriginal) {\n const exists = onionSlices.find(item => item.beanFullName === onionSlice.beanFullName);\n if (!exists) {\n disposeInstance(onionSlice.beanInstance);\n }\n }\n }\n // save\n this._onionSlicesOriginal = onionSlices;\n // compose\n this._composer = this.$$sysOnion.behavior.compose(onionSlices, (onionSlice, props: any, next) => {\n const beanInstance = cast<BeanBehaviorBase>(onionSlice.beanInstance);\n return cast(beanInstance).render(props, next as any);\n });\n }\n\n public render<PROPS_INPUT, PROPS_OUTPUT = PROPS_INPUT>(props: PROPS_INPUT, next: NextBehavior<PROPS_OUTPUT>): VNode {\n return this._composer(props, next);\n }\n\n private _prepareOnionItems(behaviors: IBehaviors) {\n const onionItems: IOnionItem<IDecoratorBehaviorOptions, keyof IBehaviorRecord>[] = [];\n return this._prepareOnionItemsInner(onionItems, behaviors);\n }\n\n private _prepareOnionItemsInner(onionItems: IOnionItem<IDecoratorBehaviorOptions, keyof IBehaviorRecord>[], behaviors: IBehaviors) {\n const behaviors2 = Array.isArray(behaviors) ? behaviors : [behaviors];\n for (const behaviorItem of behaviors2) {\n if (typeof behaviorItem === 'string') {\n onionItems.push({ name: behaviorItem as unknown as keyof IBehaviorRecord, options: undefined });\n } else if (Array.isArray(behaviorItem)) {\n this._prepareOnionItemsInner(onionItems, behaviorItem);\n } else if (typeof behaviorItem === 'object') {\n for (const key in behaviorItem) {\n let options = behaviorItem[key];\n if (options === false) continue;\n if (options === true) options = undefined;\n onionItems.push({ name: key as unknown as keyof IBehaviorRecord, options });\n }\n }\n }\n return onionItems;\n }\n}\n","import { BeanBase } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\n\nimport type { IBehaviors } from '../types/behavior.js';\n\nimport { ServiceComposer } from '../service/composer.js';\n\n@Bean()\nexport class BeanBehavior extends BeanBase {\n public async createComposer(behaviors: IBehaviors): Promise<ServiceComposer> {\n return await this.bean._newBean(ServiceComposer, true, behaviors);\n }\n}\n","import type { VNode } from 'vue';\n\nimport { BeanBase, Use, Virtual } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\n\nimport type { ServiceComposer } from '../service/composer.js';\nimport type { IBehaviors, IDecoratorBehaviorOptions, NextBehavior } from '../types/behavior.js';\nimport type { IBehaviorTag } from '../types/behavior.js';\nimport type { BeanBehavior } from './bean.behavior.js';\n\n@Bean()\n@Virtual()\nexport class BeanBehaviorBase<\n OPTIONS extends IDecoratorBehaviorOptions = IDecoratorBehaviorOptions,\n PROPS_INPUT = unknown,\n PROPS_OUTPUT = PROPS_INPUT,\n> extends BeanBase {\n protected $options: OPTIONS;\n\n @Use({ injectionScope: 'host' })\n $$beanBehavior: BeanBehavior;\n\n @Use({ injectionScope: 'host' })\n $$behaviorTag: IBehaviorTag;\n\n constructor(options: OPTIONS) {\n super();\n this.$options = options;\n }\n\n protected async onOptionsChange(options: OPTIONS) {\n this.$options = options;\n }\n\n protected async createComposer(behaviors: IBehaviors): Promise<ServiceComposer> {\n return await this.$$beanBehavior.createComposer(behaviors);\n }\n\n protected render(_props: PROPS_INPUT, next: NextBehavior<PROPS_OUTPUT>): VNode {\n return next();\n }\n}\n","import type { Component } from 'vue';\n\nimport type { IBehaviorItem, IBehaviorRecord } from '../types/behavior.js';\n\nexport function $UseBehavior<T extends keyof IBehaviorRecord>(behaviorName: T, options?: Partial<IBehaviorRecord[T]>): IBehaviorItem {\n return { [behaviorName]: options };\n}\n\nexport function $UseBehaviorTag(component: string | Component) {\n return {\n component,\n name: typeof component === 'string' ? component : undefined,\n };\n}\n","import { createVNode, toRaw } from 'vue';\nimport { BeanBase, deepEqual, disposeInstance, Use } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nimport { Log } from 'zova-module-a-logger';\n\nimport type { IBehaviors, IBehaviorTag } from '../types/behavior.js';\n\nimport { $UseBehavior } from '../lib/useBehavior.js';\nimport { ServiceComposer } from '../service/composer.js';\nimport { BeanBehavior } from './bean.behavior.js';\n\nexport interface IBehaviorsHolderOptions {\n behaviors: IBehaviors | (() => IBehaviors);\n behaviorTag: IBehaviorTag;\n}\n\n@Bean()\nexport class BeanBehaviorsHolder extends BeanBase {\n public options: IBehaviorsHolderOptions;\n private composer: ServiceComposer;\n\n @Use()\n $$beanBehavior: BeanBehavior;\n\n public async initialize(options: IBehaviorsHolderOptions) {\n this.options = options;\n this.bean._setBean('$$behaviorTag', this.options.behaviorTag);\n // composer\n this.composer = await this.$$beanBehavior.createComposer(this._getBehaviorRoot());\n // watch\n const behaviors = this.options.behaviors;\n if (typeof behaviors === 'function') {\n this.$watch(behaviors, async (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n await this.composer.load(this._getBehaviorRoot(newValue));\n });\n }\n }\n\n protected __dispose__() {\n disposeInstance(this.composer);\n }\n\n private _getBehaviors() {\n let behaviors = this.options.behaviors;\n if (typeof behaviors === 'function') {\n behaviors = behaviors();\n }\n return behaviors;\n }\n\n @Log({ args: false, childName: 'behavior', level: 'debug' })\n private _getBehaviorRoot(behaviors?: IBehaviors) {\n if (!behaviors) {\n behaviors = this._getBehaviors();\n }\n return $UseBehavior('a-behavior:root' as never, { behaviors } as any);\n }\n\n public render(vNodeDefault?: Function, propsCustom?: {}) {\n const parent = this.ctx.instance;\n const { props, children } = parent.vnode;\n // props\n const propsNew = Object.assign({}, propsCustom ?? props) as any;\n delete propsNew.behaviorTag;\n delete propsNew.behaviors;\n // render\n return this.composer.render(propsNew, propsNew => {\n if (vNodeDefault) return vNodeDefault(propsNew);\n return createVNode(toRaw(this.options.behaviorTag.component), propsNew, children);\n });\n // // ensure inner component inherits the async wrapper's ref owner\n // vnode.ref = parent.vnode.ref;\n // // pass the custom element callback on to the inner comp\n // // and remove it from the async wrapper\n // cast(vnode).ce = cast(parent.vnode).ce;\n // // delete cast(parent.vnode).ce;\n // // ok\n // return vnode;\n }\n}\n","import type { IComponentOptions } from 'zova';\n\nimport { BeanControllerBase, SymbolControllerRefDisable, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport type { IBehaviors, IBehaviorTag } from '../../types/behavior.js';\n\nimport { BeanBehaviorsHolder } from '../../bean/bean.behaviorsHolder.js';\n\nexport interface ControllerBehaviorProps {\n behaviorTag: IBehaviorTag;\n behaviors: IBehaviors;\n}\n\n@Controller()\nexport class ControllerBehavior extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false };\n protected [SymbolControllerRefDisable]: boolean = true;\n\n @Use()\n $$beanBehaviorsHolder: BeanBehaviorsHolder;\n\n protected async __init__() {\n await this.$$beanBehaviorsHolder.initialize({\n behaviorTag: this.$props.behaviorTag,\n behaviors: () => {\n return this.$props.behaviors;\n },\n });\n }\n\n protected render() {\n return this.$$beanBehaviorsHolder.render();\n }\n}\n","import type { TypeControllerInnerProps } from 'zova';\n\nimport { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\n\nimport type { ControllerBehaviorProps } from '../../component/behavior/controller.jsx';\n\nimport { ControllerBehavior } from '../../component/behavior/controller.jsx';\nexport type TypeControllerBehaviorPublicProps = {\n controllerRef?: (ref: ControllerBehavior) => void;\n} & ControllerBehaviorProps;\n\ntype ControllerInnerProps = TypeControllerInnerProps<ControllerBehaviorProps, keyof typeof ControllerBehavior.$propsDefault>;\ndeclare module 'zova-module-a-behavior' {\n export interface ControllerBehavior {\n $props: ControllerInnerProps;\n }\n}\n\nexport const ZBehavior = defineComponent((_props: TypeControllerBehaviorPublicProps) => {\n useController(ControllerBehavior, undefined, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerBehavior.$componentOptions));\n","import { createBeanDecorator } from 'zova';\n\nimport type { IDecoratorBehaviorOptions } from '../types/behavior.js';\n\nexport function Behavior<T extends IDecoratorBehaviorOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('behavior', 'new', true, options);\n}\n","import type { VNode } from 'vue';\n\nimport { disposeInstance } from 'zova';\n\nimport type { ServiceComposer } from '../service/composer.js';\nimport type { IBehaviors, IDecoratorBehaviorOptions, NextBehavior } from '../types/behavior.js';\n\nimport { Behavior } from '../lib/behavior.js';\nimport { BeanBehaviorBase } from './bean.behaviorBase.js';\n\nexport interface IBehaviorPropsInputRoot {}\n\nexport interface IBehaviorPropsOutputRoot {}\n\nexport interface IBehaviorOptionsRoot extends IDecoratorBehaviorOptions {\n behaviors: IBehaviors;\n}\n\n@Behavior<IBehaviorOptionsRoot>()\nexport class BehaviorRoot extends BeanBehaviorBase<IBehaviorOptionsRoot, IBehaviorPropsInputRoot, IBehaviorPropsOutputRoot> {\n private composer: ServiceComposer;\n\n protected async __init__(options: IBehaviorOptionsRoot) {\n this.composer = await this.createComposer(options.behaviors);\n }\n\n protected __dispose__() {\n disposeInstance(this.composer);\n }\n\n protected async onOptionsChange(options: IBehaviorOptionsRoot) {\n await super.onOptionsChange(options);\n await this.composer.load(options.behaviors);\n }\n\n protected render(props: IBehaviorPropsInputRoot, next: NextBehavior<IBehaviorPropsOutputRoot>): VNode {\n return this.composer.render(props, next);\n }\n}\n","// eslint-disable\n/** bean: begin */\nexport * from '../bean/bean.behavior.js';\nexport * from '../bean/bean.behaviorBase.js';\nexport * from '../bean/bean.behaviorsHolder.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-behavior' {\n \n export interface BeanBehavior {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n }\n\n export interface BeanBehavior {\n get $beanFullName(): 'a-behavior.bean.behavior';\n get $onionName(): 'a-behavior:behavior';\n \n }\n\n export interface BeanBehaviorsHolder {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n }\n\n export interface BeanBehaviorsHolder {\n get $beanFullName(): 'a-behavior.bean.behaviorsHolder';\n get $onionName(): 'a-behavior:behaviorsHolder';\n \n } \n}\n/** bean: end */\n/** bean: begin */\nimport { BeanBehavior } from '../bean/bean.behavior.js';\nimport { BeanBehaviorBase } from '../bean/bean.behaviorBase.js';\nimport { BeanBehaviorsHolder } from '../bean/bean.behaviorsHolder.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-behavior.bean.behavior': BeanBehavior;\n'a-behavior.bean.behaviorBase': BeanBehaviorBase;\n'a-behavior.bean.behaviorsHolder': BeanBehaviorsHolder;\n }\n}\n/** bean: end */\n/** service: begin */\nexport * from '../service/composer.js';\n\nimport 'zova-module-a-bean';\ndeclare module 'zova-module-a-bean' {\n \n export interface IServiceRecord {\n 'a-behavior:composer': never;\n }\n\n \n}\ndeclare module 'zova-module-a-behavior' {\n \n export interface ServiceComposer {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n }\n\n export interface ServiceComposer {\n get $beanFullName(): 'a-behavior.service.composer';\n get $onionName(): 'a-behavior:composer';\n \n } \n}\n/** service: end */\n/** service: begin */\nimport { ServiceComposer } from '../service/composer.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-behavior.service.composer': ServiceComposer;\n }\n}\n/** service: end */\n/** controller: begin */\nexport * from '../component/behavior/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-behavior' {\n \n export interface ControllerBehavior {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerBehavior } from '../component/behavior/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'a-behavior.controller.behavior': ControllerBehavior;\n }\n}\n/** controller: end */\n\n/** components: begin */\nexport * from './component/behavior.js';\nimport { ZBehavior } from './component/behavior.js';\nexport const components = {\n 'behavior': ZBehavior,\n};\nimport 'zova';\ndeclare module 'zova' {\nexport interface IComponentRecord {\n 'a-behavior:behavior': ControllerBehavior;\n}\nexport interface IZovaComponentRecord {\n 'a-behavior:behavior': typeof ZBehavior;\n}\n}\n/** components: end */\n/** behavior: begin */\nexport * from '../bean/behavior.root_.js';\n\nimport 'zova-module-a-behavior';\ndeclare module 'zova-module-a-behavior' {\n \n \n}\ndeclare module 'zova-module-a-behavior' {\n \n}\n/** behavior: end */\n/** behaviors: begin */\nimport 'vue';\nimport 'vue/jsx-runtime';\n\ndeclare module 'vue' {\n export interface InputHTMLAttributes {\n \n }\n}\n\ndeclare module 'vue/jsx-runtime' {\n namespace JSX {\n // need define class/style in IntrinsicAttributes\n export interface IntrinsicAttributes {\n \n }\n }\n}\n/** behaviors: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleABehavior extends BeanScopeBase {}\n\nexport interface ScopeModuleABehavior {\n util: BeanScopeUtil;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-behavior': ScopeModuleABehavior;\n }\n \n \n\n \n\n \n}\n \n/** scope: end */\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BeanControllerBase","SymbolControllerRefDisable","Use","Controller","BeanBehaviorsHolder","ControllerBehavior","_dec","_dec2","__z_BeanInfo","module","_dec3","_dec4","Reflect","metadata","Object","_class","_class2","_ControllerBehavior","constructor","args","_initializerDefineProperty","_descriptor","__init__","$$beanBehaviorsHolder","initialize","behaviorTag","$props","behaviors","render","$propsDefault","$componentOptions","inheritAttrs","_applyDecoratedDescriptor","prototype","configurable","enumerable","writable","initializer"],"sources":["../src/service/composer.ts","../src/bean/bean.behavior.ts","../src/bean/bean.behaviorBase.ts","../src/lib/useBehavior.ts","../src/bean/bean.behaviorsHolder.ts","../src/component/behavior/controller.tsx","../src/.metadata/component/behavior.ts","../src/lib/behavior.ts","../src/bean/behavior.root_.ts","../src/.metadata/index.ts"],"sourcesContent":["import type { VNode } from 'vue';\n\nimport { BeanBase, cast, deepEqual, disposeInstance, Use } from 'zova';\nimport { IOnionItem, IOnionSlice, Service, SysOnion, TypeComposer } from 'zova-module-a-bean';\n\nimport type { BeanBehaviorBase } from '../bean/bean.behaviorBase.js';\nimport type {\n IBehaviorRecord,\n IBehaviors,\n IDecoratorBehaviorOptions,\n NextBehavior,\n} from '../types/behavior.js';\n\nconst SymbolSliceOptionsOriginal = Symbol('SymbolSliceOptionsOriginal');\n\n@Service()\nexport class ServiceComposer extends BeanBase {\n private _composer: TypeComposer;\n private _onionSlicesOriginal?: IOnionSlice<\n IDecoratorBehaviorOptions,\n keyof IBehaviorRecord,\n BeanBehaviorBase\n >[];\n\n @Use()\n $$sysOnion: SysOnion;\n\n protected async __init__(behaviors: IBehaviors) {\n await this.load(behaviors);\n }\n\n protected __dispose__() {\n if (this._onionSlicesOriginal) {\n for (const onionSlice of this._onionSlicesOriginal) {\n disposeInstance(onionSlice.beanInstance);\n }\n }\n }\n\n public async load(behaviors: IBehaviors) {\n await this.$renderFreezeScope(async () => {\n await this._loadInner(behaviors);\n });\n }\n\n private async _loadInner(behaviors: IBehaviors) {\n // onionItems\n const onionItems = this._prepareOnionItems(behaviors);\n // load onions\n const onionSlices = await this.$$sysOnion.behavior.loadOnions<BeanBehaviorBase>(onionItems);\n // create behaviors\n for (const onionSlice of onionSlices) {\n const onionSliceOriginal = this._onionSlicesOriginal?.find(\n item => item.beanFullName === onionSlice.beanFullName,\n );\n if (onionSliceOriginal) {\n onionSlice.beanInstance = onionSliceOriginal.beanInstance;\n if (!deepEqual(onionSliceOriginal[SymbolSliceOptionsOriginal], onionSlice.options)) {\n await cast(onionSlice.beanInstance).onOptionsChange(onionSlice.options);\n }\n } else {\n onionSlice.beanInstance = await this.bean._newBean(\n onionSlice.beanFullName as any,\n true,\n onionSlice.options,\n );\n }\n onionSlice[SymbolSliceOptionsOriginal] = onionSlice.options;\n }\n // dispose original behaviors\n if (this._onionSlicesOriginal) {\n for (const onionSlice of this._onionSlicesOriginal) {\n const exists = onionSlices.find(item => item.beanFullName === onionSlice.beanFullName);\n if (!exists) {\n disposeInstance(onionSlice.beanInstance);\n }\n }\n }\n // save\n this._onionSlicesOriginal = onionSlices;\n // compose\n this._composer = this.$$sysOnion.behavior.compose(\n onionSlices,\n (onionSlice, props: any, next) => {\n const beanInstance = cast<BeanBehaviorBase>(onionSlice.beanInstance);\n return cast(beanInstance).render(props, next as any);\n },\n );\n }\n\n public render<PROPS_INPUT, PROPS_OUTPUT = PROPS_INPUT>(\n props: PROPS_INPUT,\n next: NextBehavior<PROPS_OUTPUT>,\n ): VNode {\n return this._composer(props, next);\n }\n\n private _prepareOnionItems(behaviors: IBehaviors) {\n const onionItems: IOnionItem<IDecoratorBehaviorOptions, keyof IBehaviorRecord>[] = [];\n return this._prepareOnionItemsInner(onionItems, behaviors);\n }\n\n private _prepareOnionItemsInner(\n onionItems: IOnionItem<IDecoratorBehaviorOptions, keyof IBehaviorRecord>[],\n behaviors: IBehaviors,\n ) {\n const behaviors2 = Array.isArray(behaviors) ? behaviors : [behaviors];\n for (const behaviorItem of behaviors2) {\n if (typeof behaviorItem === 'string') {\n onionItems.push({\n name: behaviorItem as unknown as keyof IBehaviorRecord,\n options: undefined,\n });\n } else if (Array.isArray(behaviorItem)) {\n this._prepareOnionItemsInner(onionItems, behaviorItem);\n } else if (typeof behaviorItem === 'object') {\n for (const key in behaviorItem) {\n let options = behaviorItem[key];\n if (options === false) continue;\n if (options === true) options = undefined;\n onionItems.push({ name: key as unknown as keyof IBehaviorRecord, options });\n }\n }\n }\n return onionItems;\n }\n}\n","import { BeanBase } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\n\nimport type { IBehaviors } from '../types/behavior.js';\n\nimport { ServiceComposer } from '../service/composer.js';\n\n@Bean()\nexport class BeanBehavior extends BeanBase {\n public async createComposer(behaviors: IBehaviors): Promise<ServiceComposer> {\n return await this.bean._newBean(ServiceComposer, true, behaviors);\n }\n}\n","import type { VNode } from 'vue';\n\nimport { BeanBase, Use, Virtual } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\n\nimport type { ServiceComposer } from '../service/composer.js';\nimport type { IBehaviors, IDecoratorBehaviorOptions, NextBehavior } from '../types/behavior.js';\nimport type { IBehaviorTag } from '../types/behavior.js';\nimport type { BeanBehavior } from './bean.behavior.js';\n\n@Bean()\n@Virtual()\nexport class BeanBehaviorBase<\n OPTIONS extends IDecoratorBehaviorOptions = IDecoratorBehaviorOptions,\n PROPS_INPUT = unknown,\n PROPS_OUTPUT = PROPS_INPUT,\n> extends BeanBase {\n protected $options: OPTIONS;\n\n @Use({ injectionScope: 'host' })\n $$beanBehavior: BeanBehavior;\n\n @Use({ injectionScope: 'host' })\n $$behaviorTag: IBehaviorTag;\n\n constructor(options: OPTIONS) {\n super();\n this.$options = options;\n }\n\n protected async onOptionsChange(options: OPTIONS) {\n this.$options = options;\n }\n\n protected async createComposer(behaviors: IBehaviors): Promise<ServiceComposer> {\n return await this.$$beanBehavior.createComposer(behaviors);\n }\n\n protected render(_props: PROPS_INPUT, next: NextBehavior<PROPS_OUTPUT>): VNode {\n return next();\n }\n}\n","import type { Component } from 'vue';\n\nimport type { IBehaviorItem, IBehaviorRecord } from '../types/behavior.js';\n\nexport function $UseBehavior<T extends keyof IBehaviorRecord>(\n behaviorName: T,\n options?: Partial<IBehaviorRecord[T]>,\n): IBehaviorItem {\n return { [behaviorName]: options };\n}\n\nexport function $UseBehaviorTag(component: string | Component) {\n return {\n component,\n name: typeof component === 'string' ? component : undefined,\n };\n}\n","import { createVNode, toRaw } from 'vue';\nimport { BeanBase, deepEqual, disposeInstance, Use } from 'zova';\nimport { Bean } from 'zova-module-a-bean';\nimport { Log } from 'zova-module-a-logger';\n\nimport type { IBehaviors, IBehaviorTag } from '../types/behavior.js';\n\nimport { $UseBehavior } from '../lib/useBehavior.js';\nimport { ServiceComposer } from '../service/composer.js';\nimport { BeanBehavior } from './bean.behavior.js';\n\nexport interface IBehaviorsHolderOptions {\n behaviors: IBehaviors | (() => IBehaviors);\n behaviorTag: IBehaviorTag;\n}\n\n@Bean()\nexport class BeanBehaviorsHolder extends BeanBase {\n public options: IBehaviorsHolderOptions;\n private composer: ServiceComposer;\n\n @Use()\n $$beanBehavior: BeanBehavior;\n\n public async initialize(options: IBehaviorsHolderOptions) {\n this.options = options;\n this.bean._setBean('$$behaviorTag', this.options.behaviorTag);\n // composer\n this.composer = await this.$$beanBehavior.createComposer(this._getBehaviorRoot());\n // watch\n const behaviors = this.options.behaviors;\n if (typeof behaviors === 'function') {\n this.$watch(behaviors, async (newValue, oldValue) => {\n if (deepEqual(newValue, oldValue)) return;\n await this.composer.load(this._getBehaviorRoot(newValue));\n });\n }\n }\n\n protected __dispose__() {\n disposeInstance(this.composer);\n }\n\n private _getBehaviors() {\n let behaviors = this.options.behaviors;\n if (typeof behaviors === 'function') {\n behaviors = behaviors();\n }\n return behaviors;\n }\n\n @Log({ args: false, childName: 'behavior', level: 'debug' })\n private _getBehaviorRoot(behaviors?: IBehaviors) {\n if (!behaviors) {\n behaviors = this._getBehaviors();\n }\n return $UseBehavior('a-behavior:root' as never, { behaviors } as any);\n }\n\n public render(vNodeDefault?: Function, propsCustom?: {}) {\n const parent = this.ctx.instance;\n const { props, children } = parent.vnode;\n // props\n const propsNew = Object.assign({}, propsCustom ?? props) as any;\n delete propsNew.behaviorTag;\n delete propsNew.behaviors;\n // render\n return this.composer.render(propsNew, propsNew => {\n if (vNodeDefault) return vNodeDefault(propsNew);\n return createVNode(toRaw(this.options.behaviorTag.component), propsNew, children);\n });\n // // ensure inner component inherits the async wrapper's ref owner\n // vnode.ref = parent.vnode.ref;\n // // pass the custom element callback on to the inner comp\n // // and remove it from the async wrapper\n // cast(vnode).ce = cast(parent.vnode).ce;\n // // delete cast(parent.vnode).ce;\n // // ok\n // return vnode;\n }\n}\n","import type { IComponentOptions } from 'zova';\n\nimport { BeanControllerBase, SymbolControllerRefDisable, Use } from 'zova';\nimport { Controller } from 'zova-module-a-bean';\n\nimport type { IBehaviors, IBehaviorTag } from '../../types/behavior.js';\n\nimport { BeanBehaviorsHolder } from '../../bean/bean.behaviorsHolder.js';\n\nexport interface ControllerBehaviorProps {\n behaviorTag: IBehaviorTag;\n behaviors: IBehaviors;\n}\n\n@Controller()\nexport class ControllerBehavior extends BeanControllerBase {\n static $propsDefault = {};\n static $componentOptions: IComponentOptions = { inheritAttrs: false };\n protected [SymbolControllerRefDisable]: boolean = true;\n\n @Use()\n $$beanBehaviorsHolder: BeanBehaviorsHolder;\n\n protected async __init__() {\n await this.$$beanBehaviorsHolder.initialize({\n behaviorTag: this.$props.behaviorTag,\n behaviors: () => {\n return this.$props.behaviors;\n },\n });\n }\n\n protected render() {\n return this.$$beanBehaviorsHolder.render();\n }\n}\n","import type { TypeControllerInnerProps } from 'zova';\n\nimport { defineComponent } from 'vue';\nimport { prepareComponentOptions, useController } from 'zova';\n\nimport type { ControllerBehaviorProps } from '../../component/behavior/controller.jsx';\n\nimport { ControllerBehavior } from '../../component/behavior/controller.jsx';\nexport type TypeControllerBehaviorPublicProps = {\n controllerRef?: (ref: ControllerBehavior) => void;\n} & ControllerBehaviorProps;\n\ntype ControllerInnerProps = TypeControllerInnerProps<\n ControllerBehaviorProps,\n keyof typeof ControllerBehavior.$propsDefault\n>;\ndeclare module 'zova-module-a-behavior' {\n export interface ControllerBehavior {\n $props: ControllerInnerProps;\n }\n}\n\nexport const ZBehavior = defineComponent((_props: TypeControllerBehaviorPublicProps) => {\n useController(ControllerBehavior, undefined, undefined);\n return () => {};\n}, prepareComponentOptions(ControllerBehavior.$componentOptions));\ndeclare module 'zova-module-a-bean' {\n export interface IVonaComponentRecord {\n 'a-behavior:behavior': ControllerBehaviorProps;\n }\n}\n","import { createBeanDecorator } from 'zova';\n\nimport type { IDecoratorBehaviorOptions } from '../types/behavior.js';\n\nexport function Behavior<T extends IDecoratorBehaviorOptions>(options?: T): ClassDecorator {\n return createBeanDecorator('behavior', 'new', true, options);\n}\n","import type { VNode } from 'vue';\n\nimport { disposeInstance } from 'zova';\n\nimport type { ServiceComposer } from '../service/composer.js';\nimport type { IBehaviors, IDecoratorBehaviorOptions, NextBehavior } from '../types/behavior.js';\n\nimport { Behavior } from '../lib/behavior.js';\nimport { BeanBehaviorBase } from './bean.behaviorBase.js';\n\nexport interface IBehaviorPropsInputRoot {}\n\nexport interface IBehaviorPropsOutputRoot {}\n\nexport interface IBehaviorOptionsRoot extends IDecoratorBehaviorOptions {\n behaviors: IBehaviors;\n}\n\n@Behavior<IBehaviorOptionsRoot>()\nexport class BehaviorRoot extends BeanBehaviorBase<\n IBehaviorOptionsRoot,\n IBehaviorPropsInputRoot,\n IBehaviorPropsOutputRoot\n> {\n private composer: ServiceComposer;\n\n protected async __init__(options: IBehaviorOptionsRoot) {\n this.composer = await this.createComposer(options.behaviors);\n }\n\n protected __dispose__() {\n disposeInstance(this.composer);\n }\n\n protected async onOptionsChange(options: IBehaviorOptionsRoot) {\n await super.onOptionsChange(options);\n await this.composer.load(options.behaviors);\n }\n\n protected render(\n props: IBehaviorPropsInputRoot,\n next: NextBehavior<IBehaviorPropsOutputRoot>,\n ): VNode {\n return this.composer.render(props, next);\n }\n}\n","// eslint-disable\n/** bean: begin */\nexport * from '../bean/bean.behavior.js';\nexport * from '../bean/bean.behaviorBase.js';\nexport * from '../bean/bean.behaviorsHolder.js';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-behavior' {\n \n export interface BeanBehavior {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n }\n\n export interface BeanBehavior {\n get $beanFullName(): 'a-behavior.bean.behavior';\n get $onionName(): 'a-behavior:behavior';\n \n }\n\n export interface BeanBehaviorsHolder {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n }\n\n export interface BeanBehaviorsHolder {\n get $beanFullName(): 'a-behavior.bean.behaviorsHolder';\n get $onionName(): 'a-behavior:behaviorsHolder';\n \n } \n}\n/** bean: end */\n/** bean: begin */\nimport { BeanBehavior } from '../bean/bean.behavior.js';\nimport { BeanBehaviorBase } from '../bean/bean.behaviorBase.js';\nimport { BeanBehaviorsHolder } from '../bean/bean.behaviorsHolder.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-behavior.bean.behavior': BeanBehavior;\n'a-behavior.bean.behaviorBase': BeanBehaviorBase;\n'a-behavior.bean.behaviorsHolder': BeanBehaviorsHolder;\n }\n}\n/** bean: end */\n/** service: begin */\nexport * from '../service/composer.js';\n\nimport 'zova-module-a-bean';\ndeclare module 'zova-module-a-bean' {\n \n export interface IServiceRecord {\n 'a-behavior:composer': never;\n }\n\n \n}\ndeclare module 'zova-module-a-behavior' {\n \n export interface ServiceComposer {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n }\n\n export interface ServiceComposer {\n get $beanFullName(): 'a-behavior.service.composer';\n get $onionName(): 'a-behavior:composer';\n \n } \n}\n/** service: end */\n/** service: begin */\nimport { ServiceComposer } from '../service/composer.js';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordGeneral {\n 'a-behavior.service.composer': ServiceComposer;\n }\n}\n/** service: end */\n/** controller: begin */\nexport * from '../component/behavior/controller.jsx';\n\nimport 'zova';\ndeclare module 'zova' {\n \n \n}\ndeclare module 'zova-module-a-behavior' {\n \n export interface ControllerBehavior {\n /** @internal */\n get scope(): ScopeModuleABehavior;\n } \n}\n/** controller: end */\n/** controller: begin */\nimport { ControllerBehavior } from '../component/behavior/controller.jsx';\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanRecordLocal {\n 'a-behavior.controller.behavior': ControllerBehavior;\n }\n}\n/** controller: end */\n\n/** components: begin */\nexport * from './component/behavior.js';\nimport { ZBehavior } from './component/behavior.js';\nexport const components = {\n 'behavior': ZBehavior,\n};\nimport 'zova';\ndeclare module 'zova' {\nexport interface IComponentRecord {\n 'a-behavior:behavior': ControllerBehavior;\n}\nexport interface IZovaComponentRecord {\n 'a-behavior:behavior': typeof ZBehavior;\n}\n}\n/** components: end */\n/** behavior: begin */\nexport * from '../bean/behavior.root_.js';\n\nimport 'zova-module-a-behavior';\ndeclare module 'zova-module-a-behavior' {\n \n \n}\ndeclare module 'zova-module-a-behavior' {\n \n}\n/** behavior: end */\n/** behaviors: begin */\nimport 'vue';\nimport 'vue/jsx-runtime';\n\ndeclare module 'vue' {\n export interface InputHTMLAttributes {\n \n }\n}\n\ndeclare module 'vue/jsx-runtime' {\n namespace JSX {\n // need define class/style in IntrinsicAttributes\n export interface IntrinsicAttributes {\n \n }\n }\n}\n/** behaviors: end */\n/** scope: begin */\nimport { BeanScopeBase, type BeanScopeUtil } from 'zova';\nimport { Scope } from 'zova-module-a-bean';\n\n@Scope()\nexport class ScopeModuleABehavior extends BeanScopeBase {}\n\nexport interface ScopeModuleABehavior {\n util: BeanScopeUtil;\n}\n\nimport 'zova';\ndeclare module 'zova' {\n export interface IBeanScopeRecord {\n 'a-behavior': ScopeModuleABehavior;\n }\n \n \n\n \n\n \n}\n \n/** scope: end */\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBehavior.d.ts","sourceRoot":"","sources":["../../src/lib/useBehavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3E,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"useBehavior.d.ts","sourceRoot":"","sources":["../../src/lib/useBehavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3E,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,eAAe,EAC1D,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACpC,aAAa,CAEf;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS;;;EAK5D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/service/composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAyC,MAAM,MAAM,CAAC;AACvE,OAAO,EAAoC,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AAG9F,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../../src/service/composer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAyC,MAAM,MAAM,CAAC;AACvE,OAAO,EAAoC,QAAQ,EAAgB,MAAM,oBAAoB,CAAC;AAG9F,OAAO,KAAK,EAEV,UAAU,EAEV,YAAY,EACb,MAAM,sBAAsB,CAAC;AAI9B,qBACa,eAAgB,SAAQ,QAAQ;IAC3C,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,oBAAoB,CAAC,CAIzB;IAGJ,UAAU,EAAE,QAAQ,CAAC;cAEL,QAAQ,CAAC,SAAS,EAAE,UAAU;IAI9C,SAAS,CAAC,WAAW;IAQR,IAAI,CAAC,SAAS,EAAE,UAAU;YAMzB,UAAU;IA6CjB,MAAM,CAAC,WAAW,EAAE,YAAY,GAAG,WAAW,EACnD,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC,GAC/B,KAAK;IAIR,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,uBAAuB;CAwBhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../src/types/behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,KAAK,CAAC;AACb,OAAO,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,CAAC;AAE1B,MAAM,MAAM,YAAY,CAAC,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,KAAK,KAAK,CAAC;AAEnF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG;KACzB,IAAI,IAAI,MAAM,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"behavior.d.ts","sourceRoot":"","sources":["../../src/types/behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE5E,OAAO,KAAK,CAAC;AACb,OAAO,iBAAiB,CAAC;AACzB,OAAO,kBAAkB,CAAC;AAE1B,MAAM,MAAM,YAAY,CAAC,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY,KAAK,KAAK,CAAC;AAEnF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GAAG;KACzB,IAAI,IAAI,MAAM,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;CACjE,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB,MAAM,eAAe,GACrB,aAAa,GACb,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC,EAAE,CAAC;AAE9C,MAAM,WAAW,eAAe;CAAG;AAEnC,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB;CAAG;AAEzE,MAAM,MAAM,0BAA0B,CAAC,MAAM,SAAS,MAAM,IAAI;KAC7D,CAAC,IAAI,MAAM,eAAe,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,GAAG,MAAM,EAAE,GACnE,CAAC,GACD,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,8BAA8B,CAAC,MAAM,SAAS,MAAM,IAC9D,MAAM,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAE3C,MAAM,MAAM,gCAAgC,CAAC,MAAM,SAAS,MAAM,IAAI;KACnE,CAAC,IAAI,MAAM,eAAe,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC;CAChG,CAAC;AACF,MAAM,MAAM,oCAAoC,CAAC,MAAM,SAAS,MAAM,IACpE,MAAM,gCAAgC,CAAC,MAAM,CAAC,CAAC;AAEjD,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAiB,QAAQ;QACvB,QAAQ,EAAE,YAAY,CAAC,yBAAyB,EAAE,MAAM,eAAe,CAAC,CAAC;KAC1E;CACF;AAED,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,YAAY;QAC3B,QAAQ,EAAE,SAAS,CAAC,eAAe,CAAC,CAAC;KACtC;IAED,UAAiB,gBAAgB;QAC/B,QAAQ,EAAE,KAAK,CAAC;KACjB;IAED,UAAiB,kBAAkB;QACjC,QAAQ,EAAE,KAAK,CAAC;KACjB;CACF;AAED,OAAO,QAAQ,KAAK,CAAC;IACnB,UAAiB,mBAAmB;QAClC,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB;CACF;AAED,OAAO,QAAQ,iBAAiB,CAAC;IAC/B,UAAU,GAAG,CAAC;QAEZ,UAAiB,mBAAmB;YAClC,MAAM,CAAC,EAAE,UAAU,CAAC;SACrB;KACF;CACF;AAED,OAAO,QAAQ,kBAAkB,CAAC;IAChC,UAAiB,cAAc;QAC7B,MAAM,CAAC,EAAE,UAAU,CAAC;KACrB;CACF"}
|
package/package.json
CHANGED
package/rest/components.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from '
|
|
1
|
+
export * from 'zova-module-a-behavior';
|
|
@@ -10,7 +10,10 @@ export type TypeControllerBehaviorPublicProps = {
|
|
|
10
10
|
controllerRef?: (ref: ControllerBehavior) => void;
|
|
11
11
|
} & ControllerBehaviorProps;
|
|
12
12
|
|
|
13
|
-
type ControllerInnerProps = TypeControllerInnerProps<
|
|
13
|
+
type ControllerInnerProps = TypeControllerInnerProps<
|
|
14
|
+
ControllerBehaviorProps,
|
|
15
|
+
keyof typeof ControllerBehavior.$propsDefault
|
|
16
|
+
>;
|
|
14
17
|
declare module 'zova-module-a-behavior' {
|
|
15
18
|
export interface ControllerBehavior {
|
|
16
19
|
$props: ControllerInnerProps;
|
|
@@ -21,3 +24,8 @@ export const ZBehavior = defineComponent((_props: TypeControllerBehaviorPublicPr
|
|
|
21
24
|
useController(ControllerBehavior, undefined, undefined);
|
|
22
25
|
return () => {};
|
|
23
26
|
}, prepareComponentOptions(ControllerBehavior.$componentOptions));
|
|
27
|
+
declare module 'zova-module-a-bean' {
|
|
28
|
+
export interface IVonaComponentRecord {
|
|
29
|
+
'a-behavior:behavior': ControllerBehaviorProps;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -17,7 +17,11 @@ export interface IBehaviorOptionsRoot extends IDecoratorBehaviorOptions {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
@Behavior<IBehaviorOptionsRoot>()
|
|
20
|
-
export class BehaviorRoot extends BeanBehaviorBase<
|
|
20
|
+
export class BehaviorRoot extends BeanBehaviorBase<
|
|
21
|
+
IBehaviorOptionsRoot,
|
|
22
|
+
IBehaviorPropsInputRoot,
|
|
23
|
+
IBehaviorPropsOutputRoot
|
|
24
|
+
> {
|
|
21
25
|
private composer: ServiceComposer;
|
|
22
26
|
|
|
23
27
|
protected async __init__(options: IBehaviorOptionsRoot) {
|
|
@@ -33,7 +37,10 @@ export class BehaviorRoot extends BeanBehaviorBase<IBehaviorOptionsRoot, IBehavi
|
|
|
33
37
|
await this.composer.load(options.behaviors);
|
|
34
38
|
}
|
|
35
39
|
|
|
36
|
-
protected render(
|
|
40
|
+
protected render(
|
|
41
|
+
props: IBehaviorPropsInputRoot,
|
|
42
|
+
next: NextBehavior<IBehaviorPropsOutputRoot>,
|
|
43
|
+
): VNode {
|
|
37
44
|
return this.composer.render(props, next);
|
|
38
45
|
}
|
|
39
46
|
}
|
package/src/lib/useBehavior.ts
CHANGED
|
@@ -2,7 +2,10 @@ import type { Component } from 'vue';
|
|
|
2
2
|
|
|
3
3
|
import type { IBehaviorItem, IBehaviorRecord } from '../types/behavior.js';
|
|
4
4
|
|
|
5
|
-
export function $UseBehavior<T extends keyof IBehaviorRecord>(
|
|
5
|
+
export function $UseBehavior<T extends keyof IBehaviorRecord>(
|
|
6
|
+
behaviorName: T,
|
|
7
|
+
options?: Partial<IBehaviorRecord[T]>,
|
|
8
|
+
): IBehaviorItem {
|
|
6
9
|
return { [behaviorName]: options };
|
|
7
10
|
}
|
|
8
11
|
|
package/src/service/composer.ts
CHANGED
|
@@ -4,14 +4,23 @@ import { BeanBase, cast, deepEqual, disposeInstance, Use } from 'zova';
|
|
|
4
4
|
import { IOnionItem, IOnionSlice, Service, SysOnion, TypeComposer } from 'zova-module-a-bean';
|
|
5
5
|
|
|
6
6
|
import type { BeanBehaviorBase } from '../bean/bean.behaviorBase.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
IBehaviorRecord,
|
|
9
|
+
IBehaviors,
|
|
10
|
+
IDecoratorBehaviorOptions,
|
|
11
|
+
NextBehavior,
|
|
12
|
+
} from '../types/behavior.js';
|
|
8
13
|
|
|
9
14
|
const SymbolSliceOptionsOriginal = Symbol('SymbolSliceOptionsOriginal');
|
|
10
15
|
|
|
11
16
|
@Service()
|
|
12
17
|
export class ServiceComposer extends BeanBase {
|
|
13
18
|
private _composer: TypeComposer;
|
|
14
|
-
private _onionSlicesOriginal?: IOnionSlice<
|
|
19
|
+
private _onionSlicesOriginal?: IOnionSlice<
|
|
20
|
+
IDecoratorBehaviorOptions,
|
|
21
|
+
keyof IBehaviorRecord,
|
|
22
|
+
BeanBehaviorBase
|
|
23
|
+
>[];
|
|
15
24
|
|
|
16
25
|
@Use()
|
|
17
26
|
$$sysOnion: SysOnion;
|
|
@@ -41,14 +50,20 @@ export class ServiceComposer extends BeanBase {
|
|
|
41
50
|
const onionSlices = await this.$$sysOnion.behavior.loadOnions<BeanBehaviorBase>(onionItems);
|
|
42
51
|
// create behaviors
|
|
43
52
|
for (const onionSlice of onionSlices) {
|
|
44
|
-
const onionSliceOriginal = this._onionSlicesOriginal?.find(
|
|
53
|
+
const onionSliceOriginal = this._onionSlicesOriginal?.find(
|
|
54
|
+
item => item.beanFullName === onionSlice.beanFullName,
|
|
55
|
+
);
|
|
45
56
|
if (onionSliceOriginal) {
|
|
46
57
|
onionSlice.beanInstance = onionSliceOriginal.beanInstance;
|
|
47
58
|
if (!deepEqual(onionSliceOriginal[SymbolSliceOptionsOriginal], onionSlice.options)) {
|
|
48
59
|
await cast(onionSlice.beanInstance).onOptionsChange(onionSlice.options);
|
|
49
60
|
}
|
|
50
61
|
} else {
|
|
51
|
-
onionSlice.beanInstance = await this.bean._newBean(
|
|
62
|
+
onionSlice.beanInstance = await this.bean._newBean(
|
|
63
|
+
onionSlice.beanFullName as any,
|
|
64
|
+
true,
|
|
65
|
+
onionSlice.options,
|
|
66
|
+
);
|
|
52
67
|
}
|
|
53
68
|
onionSlice[SymbolSliceOptionsOriginal] = onionSlice.options;
|
|
54
69
|
}
|
|
@@ -64,13 +79,19 @@ export class ServiceComposer extends BeanBase {
|
|
|
64
79
|
// save
|
|
65
80
|
this._onionSlicesOriginal = onionSlices;
|
|
66
81
|
// compose
|
|
67
|
-
this._composer = this.$$sysOnion.behavior.compose(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
this._composer = this.$$sysOnion.behavior.compose(
|
|
83
|
+
onionSlices,
|
|
84
|
+
(onionSlice, props: any, next) => {
|
|
85
|
+
const beanInstance = cast<BeanBehaviorBase>(onionSlice.beanInstance);
|
|
86
|
+
return cast(beanInstance).render(props, next as any);
|
|
87
|
+
},
|
|
88
|
+
);
|
|
71
89
|
}
|
|
72
90
|
|
|
73
|
-
public render<PROPS_INPUT, PROPS_OUTPUT = PROPS_INPUT>(
|
|
91
|
+
public render<PROPS_INPUT, PROPS_OUTPUT = PROPS_INPUT>(
|
|
92
|
+
props: PROPS_INPUT,
|
|
93
|
+
next: NextBehavior<PROPS_OUTPUT>,
|
|
94
|
+
): VNode {
|
|
74
95
|
return this._composer(props, next);
|
|
75
96
|
}
|
|
76
97
|
|
|
@@ -79,11 +100,17 @@ export class ServiceComposer extends BeanBase {
|
|
|
79
100
|
return this._prepareOnionItemsInner(onionItems, behaviors);
|
|
80
101
|
}
|
|
81
102
|
|
|
82
|
-
private _prepareOnionItemsInner(
|
|
103
|
+
private _prepareOnionItemsInner(
|
|
104
|
+
onionItems: IOnionItem<IDecoratorBehaviorOptions, keyof IBehaviorRecord>[],
|
|
105
|
+
behaviors: IBehaviors,
|
|
106
|
+
) {
|
|
83
107
|
const behaviors2 = Array.isArray(behaviors) ? behaviors : [behaviors];
|
|
84
108
|
for (const behaviorItem of behaviors2) {
|
|
85
109
|
if (typeof behaviorItem === 'string') {
|
|
86
|
-
onionItems.push({
|
|
110
|
+
onionItems.push({
|
|
111
|
+
name: behaviorItem as unknown as keyof IBehaviorRecord,
|
|
112
|
+
options: undefined,
|
|
113
|
+
});
|
|
87
114
|
} else if (Array.isArray(behaviorItem)) {
|
|
88
115
|
this._prepareOnionItemsInner(onionItems, behaviorItem);
|
|
89
116
|
} else if (typeof behaviorItem === 'object') {
|
package/src/types/behavior.ts
CHANGED
|
@@ -17,21 +17,28 @@ export type IBehaviorItem = {
|
|
|
17
17
|
[prop in keyof IBehaviorRecord]?: Partial<IBehaviorRecord[prop]>;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
export type IBehaviors =
|
|
20
|
+
export type IBehaviors =
|
|
21
|
+
| keyof IBehaviorRecord
|
|
22
|
+
| IBehaviorItem
|
|
23
|
+
| (keyof IBehaviorRecord | IBehaviorItem)[];
|
|
21
24
|
|
|
22
25
|
export interface IBehaviorRecord {}
|
|
23
26
|
|
|
24
27
|
export interface IDecoratorBehaviorOptions extends IOnionOptionsEnable {}
|
|
25
28
|
|
|
26
29
|
export type TypeBehaviorRecordSelector<PREFIX extends string> = {
|
|
27
|
-
[K in keyof IBehaviorRecord as K extends `${string}:${PREFIX}${string}`
|
|
30
|
+
[K in keyof IBehaviorRecord as K extends `${string}:${PREFIX}${string}`
|
|
31
|
+
? K
|
|
32
|
+
: never]: IBehaviorRecord[K];
|
|
28
33
|
};
|
|
29
|
-
export type TypeBehaviorRecordSelectorKeys<PREFIX extends string> =
|
|
34
|
+
export type TypeBehaviorRecordSelectorKeys<PREFIX extends string> =
|
|
35
|
+
keyof TypeBehaviorRecordSelector<PREFIX>;
|
|
30
36
|
|
|
31
37
|
export type TypeBehaviorRecordSelectorStrict<PREFIX extends string> = {
|
|
32
38
|
[K in keyof IBehaviorRecord as K extends `${string}:${PREFIX}` ? K : never]: IBehaviorRecord[K];
|
|
33
39
|
};
|
|
34
|
-
export type TypeBehaviorRecordSelectorKeysStrict<PREFIX extends string> =
|
|
40
|
+
export type TypeBehaviorRecordSelectorKeysStrict<PREFIX extends string> =
|
|
41
|
+
keyof TypeBehaviorRecordSelectorStrict<PREFIX>;
|
|
35
42
|
|
|
36
43
|
declare module 'zova-module-a-bean' {
|
|
37
44
|
export interface SysOnion {
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { TypeRenderComponentJsxPropsPublic } from 'zova-jsx';
|
|
2
|
-
import type { ControllerBehaviorProps } from 'zova-module-a-behavior';
|
|
3
|
-
|
|
4
|
-
type TypeControllerBehaviorPublicProps = TypeRenderComponentJsxPropsPublic & ControllerBehaviorProps;
|
|
5
|
-
export function BBZBehavior(_props: TypeControllerBehaviorPublicProps) {
|
|
6
|
-
return 'a-behavior:behavior';
|
|
7
|
-
}
|