@cfcs/angular
Version:
Write once, create framework components that supports React, Vue, Svelte, and more.
1 lines • 4.16 kB
Source Map (JSON)
{"version":3,"file":"cfcs-angular.mjs","sources":["../../../projects/angular/src/useReactive.ts","../../../projects/angular/src/public-api.ts","../../../projects/angular/src/cfcs-angular.ts"],"sourcesContent":["/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\nimport { EventEmitter } from \"@angular/core\";\nimport { ReactiveSubscribe, ReactiveAdapterParam, camelize, adaptReactive, ReactiveState } from \"@cfcs/core\";\n\nexport function useReactive<\n Instance extends ReactiveSubscribe<Record<string, any>>,\n State extends Record<string, any> = ReactiveState<Instance>,\n Methods extends keyof Partial<Instance> = any,\n Props = any,\n Events extends Record<string, any> = {},\n>(self: State, reactiveAdapter: ReactiveAdapterParam<Instance, State, Methods, Props, Events>, props?: () => Props) {\n const adaptResult = adaptReactive(reactiveAdapter, props);\n const reactiveState = adaptResult.state();\n const names = Object.keys(reactiveState);\n const events = adaptResult.events();\n const methods = adaptResult.methods();\n\n for (const name in reactiveState) {\n (self as any)[name] = reactiveState[name];\n }\n for (const name in methods) {\n (self as any)[name] = methods[name];\n }\n\n events.forEach(name => {\n (self as any)[camelize(`ngx ${name as string}`)] = new EventEmitter();\n });\n let callbacks: Array<(...args: any[]) => void> = [];\n\n function mounted() {\n adaptResult.mounted();\n const inst = adaptResult.instance();\n\n names.forEach((name) => {\n inst.subscribe(name as any, (value: any) => {\n setTimeout(() => {\n (self as any)[name] = value;\n });\n });\n });\n\n callbacks = events.map(name => {\n const callback = (...args: any[]) => {\n ((self as any)[camelize(`ngx ${name as string}`)] as EventEmitter<any>).emit(...args);\n };\n\n adaptResult.on(name as any, callback);\n return callback;\n });\n adaptResult.init();\n }\n function destroy() {\n events.forEach((name, i) => {\n adaptResult.off(name as any, callbacks[i]);\n });\n\n adaptResult.destroy();\n }\n\n return {\n mounted,\n destroy,\n };\n}\n","/**\n * cfcs\n * Copyright (c) 2022-present NAVER Corp.\n * MIT license\n */\nexport * from './types';\nexport * from './useReactive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAA;;;;AAIG;SAIa,WAAW,CAMzB,IAAW,EAAE,eAA8E,EAAE,KAAmB,EAAA;IAChH,MAAM,WAAW,GAAG,aAAa,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;AAC1D,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACzC,IAAA,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;AACpC,IAAA,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;AAEtC,IAAA,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE;QAC/B,IAAY,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3C,KAAA;AACD,IAAA,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;QACzB,IAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AACrC,KAAA;AAED,IAAA,MAAM,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,QAAA,IAAY,CAAC,QAAQ,CAAC,CAAA,IAAA,EAAO,IAAc,CAAA,CAAE,CAAC,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;AACxE,KAAC,CAAC,CAAC;IACH,IAAI,SAAS,GAAoC,EAAE,CAAC;AAEpD,IAAA,SAAS,OAAO,GAAA;QACd,WAAW,CAAC,OAAO,EAAE,CAAC;AACtB,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;AAEpC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;YACrB,IAAI,CAAC,SAAS,CAAC,IAAW,EAAE,CAAC,KAAU,KAAI;gBACzC,UAAU,CAAC,MAAK;AACb,oBAAA,IAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;AAC9B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAG;AAC5B,YAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAW,KAAI;AAChC,gBAAA,IAAY,CAAC,QAAQ,CAAC,CAAA,IAAA,EAAO,IAAc,CAAE,CAAA,CAAC,CAAuB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;AACxF,aAAC,CAAC;AAEF,YAAA,WAAW,CAAC,EAAE,CAAC,IAAW,EAAE,QAAQ,CAAC,CAAC;AACtC,YAAA,OAAO,QAAQ,CAAC;AAClB,SAAC,CAAC,CAAC;QACH,WAAW,CAAC,IAAI,EAAE,CAAC;KACpB;AACD,IAAA,SAAS,OAAO,GAAA;QACd,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,KAAI;YACzB,WAAW,CAAC,GAAG,CAAC,IAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;QAEH,WAAW,CAAC,OAAO,EAAE,CAAC;KACvB;IAED,OAAO;QACL,OAAO;QACP,OAAO;KACR,CAAC;AACJ;;ACnEA;;;;AAIG;;ACJH;;AAEG;;;;"}