UNPKG

ngx-wujie

Version:

Angular wrapper for wujie micro-frontend framework

1 lines 11.3 kB
{"version":3,"file":"ngx-wujie.mjs","sources":["../../../projects/ngx-wujie/src/lib/ngx-wujie.component.ts","../../../projects/ngx-wujie/src/public-api.ts","../../../projects/ngx-wujie/src/ngx-wujie.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ElementRef, ViewChild, OnChanges, SimpleChanges, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { startApp, destroyApp, plugin, loadErrorHandler } from 'wujie';\r\nimport { lifecycle } from 'wujie/esm/sandbox';\r\n\r\n@Component({\r\n selector: 'ngx-wujie',\r\n standalone: true,\r\n imports: [],\r\n template: `\r\n <div #container></div>\r\n `,\r\n styles: ``\r\n})\r\nexport class NgxWujieComponent implements AfterViewInit, OnChanges, OnDestroy {\r\n\r\n @ViewChild('container', { static: true }) containerRef!: ElementRef<HTMLElement>;\r\n @Input({ required: true }) name!: string;\r\n @Input({ required: true }) url!: string;\r\n\r\n @Input() width?: string;\r\n @Input() height?: string;\r\n @Input() loading?: HTMLElement;\r\n @Input() sync?: boolean = false;\r\n @Input() prefix?: { [key: string]: string; };\r\n @Input() alive?: boolean = false;\r\n @Input() props?: { [key: string]: unknown };\r\n @Input() replace?: (code: string) => string;\r\n @Input() fetch?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;\r\n @Input() fiber?: boolean = true;\r\n @Input() attrs?: Record<string, string>;\r\n @Input() degrade?: boolean = false;\r\n @Input() plugins?: Array<plugin>;\r\n @Input() exec?: boolean;\r\n @Input() iframeAddEventListeners?: Array<string>;\r\n @Input() iframeOnEvents?: Array<string>;\r\n\r\n @Input() beforeLoad?: lifecycle;\r\n @Input() beforeMount?: lifecycle;\r\n @Input() afterMount?: lifecycle;\r\n @Input() beforeUnmount?: lifecycle;\r\n @Input() afterUnmount?: lifecycle;\r\n @Input() activated?: lifecycle;\r\n @Input() deactivated?: lifecycle;\r\n @Input() loadError?: loadErrorHandler;\r\n\r\n @Output() mounted = new EventEmitter<void>();\r\n @Output() unmounted = new EventEmitter<void>();\r\n @Output() error = new EventEmitter<unknown>();\r\n\r\n private hasMounted = false;\r\n\r\n private buildStartOptions(el?: HTMLElement) {\r\n return {\r\n name: this.name,\r\n url: this.url,\r\n el: el ?? this.containerRef?.nativeElement,\r\n props: this.props,\r\n attrs: this.attrs,\r\n replace: this.replace,\r\n sync: this.sync,\r\n prefix: this.prefix,\r\n alive: this.alive,\r\n fiber: this.fiber,\r\n degrade: this.degrade,\r\n loading: this.loading,\r\n fetch: this.fetch,\r\n iframeAddEventListeners: this.iframeAddEventListeners,\r\n iframeOnEvents: this.iframeOnEvents,\r\n plugins: this.plugins,\r\n beforeLoad: this.beforeLoad,\r\n beforeMount: this.beforeMount,\r\n afterMount: this.afterMount,\r\n beforeUnmount: this.beforeUnmount,\r\n afterUnmount: this.afterUnmount,\r\n activated: this.activated,\r\n deactivated: this.deactivated,\r\n loadError: this.loadError,\r\n };\r\n }\r\n\r\n private remount(): void {\r\n if (!this.containerRef || !this.name || !this.url) return;\r\n this.destroy();\r\n this.start();\r\n }\r\n\r\n private hotUpdate(): void {\r\n try {\r\n const el = this.containerRef?.nativeElement;\r\n startApp(this.buildStartOptions(el));\r\n } catch (err) {\r\n console.error('[wujie-angular] hotUpdate error:', err);\r\n this.error.emit(err);\r\n }\r\n }\r\n\r\n private start(): void {\r\n if (!this.containerRef || !this.name || !this.url) return;\r\n\r\n const el = this.containerRef.nativeElement;\r\n try {\r\n startApp(this.buildStartOptions(el));\r\n } catch (err) {\r\n console.error('[wujie-angular] start [${this.name}] error:', err);\r\n this.error.emit(err);\r\n return;\r\n }\r\n\r\n this.hasMounted = true;\r\n }\r\n\r\n private destroy(): void {\r\n try {\r\n if (this.name) {\r\n destroyApp(this.name)\r\n };\r\n } catch (err) {\r\n console.error(`[wujie-angular] destroy [${this.name}] error:`, err);\r\n }\r\n this.hasMounted = false;\r\n }\r\n ngAfterViewInit(): void {\r\n this.start();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.hasMounted) return;\r\n\r\n const nameOrUrlChanged = !!(changes['name'] || changes['url']);\r\n const behaviorChanged = !!(changes['replace'] || changes['fetch'] || changes['plugins'] || changes['fiber'] || changes['degrade'] || changes['sync'] || changes['prefix']);\r\n const propsChanged = !!(changes['props'] || changes['attrs']);\r\n const aliveChanged = !!changes['alive'];\r\n\r\n if (nameOrUrlChanged) {\r\n this.remount();\r\n return;\r\n }\r\n\r\n if (aliveChanged) {\r\n if (this.alive === false) {\r\n this.remount();\r\n return;\r\n } else {\r\n this.hotUpdate();\r\n return;\r\n }\r\n }\r\n\r\n if (propsChanged || behaviorChanged) {\r\n if (this.alive) {\r\n this.hotUpdate();\r\n } else {\r\n this.remount();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (!this.alive) {\r\n this.destroy();\r\n }\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of ngx-wujie\r\n */\r\n\r\nexport * from './lib/ngx-wujie.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAaa,iBAAiB,CAAA;AAEc,IAAA,YAAY;AAC3B,IAAA,IAAI;AACJ,IAAA,GAAG;AAErB,IAAA,KAAK;AACL,IAAA,MAAM;AACN,IAAA,OAAO;IACP,IAAI,GAAa,KAAK;AACtB,IAAA,MAAM;IACN,KAAK,GAAa,KAAK;AACvB,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,KAAK;IACL,KAAK,GAAa,IAAI;AACtB,IAAA,KAAK;IACL,OAAO,GAAa,KAAK;AACzB,IAAA,OAAO;AACP,IAAA,IAAI;AACJ,IAAA,uBAAuB;AACvB,IAAA,cAAc;AAEd,IAAA,UAAU;AACV,IAAA,WAAW;AACX,IAAA,UAAU;AACV,IAAA,aAAa;AACb,IAAA,YAAY;AACZ,IAAA,SAAS;AACT,IAAA,WAAW;AACX,IAAA,SAAS;AAER,IAAA,OAAO,GAAG,IAAI,YAAY,EAAQ;AAClC,IAAA,SAAS,GAAG,IAAI,YAAY,EAAQ;AACpC,IAAA,KAAK,GAAG,IAAI,YAAY,EAAW;IAErC,UAAU,GAAG,KAAK;AAElB,IAAA,iBAAiB,CAAC,EAAgB,EAAA;QACxC,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;AACb,YAAA,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,aAAa;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B;;IAGK,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE;QACnD,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,KAAK,EAAE;;IAGN,SAAS,GAAA;AACf,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,aAAa;YAC3C,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;;QACpC,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC;AACtD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;IAIhB,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE;AAEnD,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa;AAC1C,QAAA,IAAI;YACF,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;;QACpC,OAAO,GAAG,EAAE;AACZ,YAAA,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC;AACjE,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB;;AAGF,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;IAGhB,OAAO,GAAA;AACb,QAAA,IAAI;AACF,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;YACtB;;QACD,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,CAA4B,yBAAA,EAAA,IAAI,CAAC,IAAI,CAAU,QAAA,CAAA,EAAE,GAAG,CAAC;;AAErE,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;IAEzB,eAAe,GAAA;QACb,IAAI,CAAC,KAAK,EAAE;;AAGd,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;AAEtB,QAAA,MAAM,gBAAgB,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC1K,QAAA,MAAM,YAAY,GAAG,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QAEvC,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,OAAO,EAAE;YACd;;QAGF,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;gBACxB,IAAI,CAAC,OAAO,EAAE;gBACd;;iBACK;gBACL,IAAI,CAAC,SAAS,EAAE;gBAChB;;;AAIJ,QAAA,IAAI,YAAY,IAAI,eAAe,EAAE;AACnC,YAAA,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,SAAS,EAAE;;iBACX;gBACL,IAAI,CAAC,OAAO,EAAE;;YAEhB;;;IAIJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,OAAO,EAAE;;;wGAnJP,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EALlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,GAAA,EAAA,KAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;4FAGU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACT,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,EAAE,EACD,QAAA,EAAA,CAAA;;AAET,EAAA,CAAA,EAAA;8BAKyC,YAAY,EAAA,CAAA;sBAArD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBACb,IAAI,EAAA,CAAA;sBAA9B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACE,GAAG,EAAA,CAAA;sBAA7B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAEhB,KAAK,EAAA,CAAA;sBAAb;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,MAAM,EAAA,CAAA;sBAAd;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,IAAI,EAAA,CAAA;sBAAZ;gBACQ,uBAAuB,EAAA,CAAA;sBAA/B;gBACQ,cAAc,EAAA,CAAA;sBAAtB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,aAAa,EAAA,CAAA;sBAArB;gBACQ,YAAY,EAAA,CAAA;sBAApB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,WAAW,EAAA,CAAA;sBAAnB;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBAES,OAAO,EAAA,CAAA;sBAAhB;gBACS,SAAS,EAAA,CAAA;sBAAlB;gBACS,KAAK,EAAA,CAAA;sBAAd;;;AC/CH;;AAEG;;ACFH;;AAEG;;;;"}