{"version":3,"file":"think-make-art-extends-core.mjs","sources":["../../../projects/art-extends/core/directive/string_template_outlet.directive.ts","../../../projects/art-extends/core/art-core.module.ts","../../../projects/art-extends/core/think-make-art-extends-core.ts"],"sourcesContent":["/**\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\r\n */\r\n\r\nimport {\r\n    Directive,\r\n    EmbeddedViewRef,\r\n    Input,\r\n    OnChanges,\r\n    SimpleChange,\r\n    SimpleChanges,\r\n    TemplateRef,\r\n    ViewContainerRef\r\n} from '@angular/core';\r\n\r\nexport type ArtSafeAny = any;\r\n\r\n@Directive({\r\n    selector: '[artStringTemplateOutlet]',\r\n    standalone: false,\r\n    exportAs: 'artStringTemplateOutlet'\r\n})\r\nexport class ArtStringTemplateOutletDirective<_T = unknown> implements OnChanges {\r\n    private embeddedViewRef: EmbeddedViewRef<ArtSafeAny> | null = null;\r\n    private context = new ArtStringTemplateOutletContext();\r\n    @Input() artStringTemplateOutletContext: ArtSafeAny | null = null;\r\n    @Input() artStringTemplateOutlet: ArtSafeAny | TemplateRef<ArtSafeAny> = null;\r\n\r\n    static ngTemplateContextGuard<T>(\r\n        _dir: ArtStringTemplateOutletDirective<T>,\r\n        _ctx: ArtSafeAny\r\n    ): _ctx is ArtStringTemplateOutletContext {\r\n        return true;\r\n    }\r\n\r\n    private recreateView(): void {\r\n        this.viewContainer.clear();\r\n        const isTemplateRef = this.artStringTemplateOutlet instanceof TemplateRef;\r\n        const templateRef = (isTemplateRef ? this.artStringTemplateOutlet : this.templateRef) as ArtSafeAny;\r\n        this.embeddedViewRef = this.viewContainer.createEmbeddedView(\r\n            templateRef,\r\n            isTemplateRef ? this.artStringTemplateOutletContext : this.context\r\n        );\r\n    }\r\n\r\n    private updateContext(): void {\r\n        const isTemplateRef = this.artStringTemplateOutlet instanceof TemplateRef;\r\n        const newCtx = isTemplateRef ? this.artStringTemplateOutletContext : this.context;\r\n        const oldCtx = this.embeddedViewRef!.context as ArtSafeAny;\r\n        if (newCtx) {\r\n            for (const propName of Object.keys(newCtx)) {\r\n                oldCtx[propName] = newCtx[propName];\r\n            }\r\n        }\r\n    }\r\n\r\n    constructor(private viewContainer: ViewContainerRef, private templateRef: TemplateRef<ArtSafeAny>) {\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges): void {\r\n        const {artStringTemplateOutletContext, artStringTemplateOutlet} = changes;\r\n        const shouldRecreateView = (): boolean => {\r\n            let shouldOutletRecreate = false;\r\n            if (artStringTemplateOutlet) {\r\n                if (artStringTemplateOutlet.firstChange) {\r\n                    shouldOutletRecreate = true;\r\n                } else {\r\n                    const isPreviousOutletTemplate = artStringTemplateOutlet.previousValue instanceof TemplateRef;\r\n                    const isCurrentOutletTemplate = artStringTemplateOutlet.currentValue instanceof TemplateRef;\r\n                    shouldOutletRecreate = isPreviousOutletTemplate || isCurrentOutletTemplate;\r\n                }\r\n            }\r\n            const hasContextShapeChanged = (ctxChange: SimpleChange): boolean => {\r\n                const prevCtxKeys = Object.keys(ctxChange.previousValue || {});\r\n                const currCtxKeys = Object.keys(ctxChange.currentValue || {});\r\n                if (prevCtxKeys.length === currCtxKeys.length) {\r\n                    for (const propName of currCtxKeys) {\r\n                        if (prevCtxKeys.indexOf(propName) === -1) {\r\n                            return true;\r\n                        }\r\n                    }\r\n                    return false;\r\n                } else {\r\n                    return true;\r\n                }\r\n            };\r\n            const shouldContextRecreate =\r\n                artStringTemplateOutletContext && hasContextShapeChanged(artStringTemplateOutletContext);\r\n            return shouldContextRecreate || shouldOutletRecreate;\r\n        };\r\n\r\n        if (artStringTemplateOutlet) {\r\n            this.context.$implicit = artStringTemplateOutlet.currentValue;\r\n        }\r\n\r\n        const recreateView = shouldRecreateView();\r\n        if (recreateView) {\r\n            /** recreate view when context shape or outlet change **/\r\n            this.recreateView();\r\n        } else {\r\n            /** update context **/\r\n            this.updateContext();\r\n        }\r\n    }\r\n}\r\n\r\nexport class ArtStringTemplateOutletContext {\r\n    public $implicit: ArtSafeAny;\r\n}\r\n","import { NgModule }                         from '@angular/core';\r\nimport { ArtStringTemplateOutletDirective } from './directive/string_template_outlet.directive';\r\nimport { CommonModule }                     from '@angular/common';\r\n\r\n@NgModule({\r\n    declarations: [\r\n        ArtStringTemplateOutletDirective\r\n    ],\r\n    imports: [\r\n        CommonModule,\r\n    ],\r\n    providers: [],\r\n    exports: [ArtStringTemplateOutletDirective]\r\n})\r\nexport class ArtCoreModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}