{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/basic/label/src/label.props.ts","../../../../../projects/components/widgets/basic/label/src/label.directive.ts","../../../../../projects/components/widgets/basic/label/src/index.ts"],"sourcesContent":["import {PROP_ANY, PROP_BOOLEAN, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-label',\n        new Map(\n            [\n                ['animation', PROP_STRING],\n                ['caption', {value: 'Label', ...PROP_STRING}],\n                ['class', PROP_STRING],\n                ['conditionalclass', PROP_ANY],\n                ['conditionalstyle', PROP_ANY],\n                ['type', PROP_STRING],\n                ['notag', PROP_BOOLEAN],\n                ['hint', PROP_STRING],\n                ['name', PROP_STRING],\n                ['required', PROP_BOOLEAN],\n                ['show', {value: true, ...PROP_BOOLEAN}]\n            ]\n        )\n    );\n};\n","import {Directive, Inject, Injector, OnDestroy, Optional, SecurityContext} from '@angular/core';\n\nimport {setProperty, toggleClass} from '@wm/core';\nimport {\n    DISPLAY_TYPE,\n    IWidgetConfig,\n    provideAsWidgetRef,\n    SanitizePipe,\n    StylableComponent,\n    styler\n} from '@wm/components/base';\n\nimport {registerProps} from './label.props';\nimport {isObject} from \"lodash-es\";\n\nconst DEFAULT_CLS = 'app-label';\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-label',\n    hostClass: DEFAULT_CLS,\n    displayType: DISPLAY_TYPE.INLINE_BLOCK\n};\n\n@Directive({\n  standalone: true,\n    selector: '[wmLabel]',\n    providers: [\n        provideAsWidgetRef(LabelDirective)\n    ],\n    exportAs: 'wmLabel'\n})\nexport class LabelDirective extends StylableComponent implements OnDestroy {\n    static initializeProps = registerProps();\n\n    constructor(inj: Injector, private sanitizePipe:SanitizePipe, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n\n        styler(this.nativeElement, this);\n    }\n\n    onPropertyChange(key, nv, ov?) {\n        // Guard against property changes after component destruction\n        // This can happen when property changes are queued asynchronously\n        if (this.isDestroyed) {\n            return;\n        }\n        if (key === 'caption') {\n            // Check for trustPipe safe values\n            let bindContent = this.nativeElement.getAttribute('caption.bind');\n            let safeValue = bindContent ? nv && bindContent.includes('trustAs:') : false;\n            const insertZWSP = (value: any): string => {\n                if (typeof value !== 'string') return value;\n                return value.replace(/\\d{5,}/g, (match) => {\n                    return match.replace(/(.{9})(?=.)/g, '$1\\u200B');\n                });\n            };\n            if (isObject(nv) && !safeValue) {\n                setProperty(this.nativeElement, 'textContent', JSON.stringify(nv));\n            } else if (isObject(nv) && safeValue) {\n                setProperty(this.nativeElement, 'innerHTML', nv[Object.keys(nv)[0]]);\n            }  else {\n                // Guard against sanitizePipe being null/undefined (e.g., after ngOnDestroy)\n                if (this.sanitizePipe) {\n                    setProperty(this.nativeElement, 'innerHTML', this.sanitizePipe.transform(insertZWSP(nv), SecurityContext.HTML));\n                } else {\n                    // Fallback to textContent if sanitizePipe is not available\n                    setProperty(this.nativeElement, 'textContent', insertZWSP(nv));\n                }\n            }\n\n        } else if (key === 'required') {\n            toggleClass(this.nativeElement, 'required', nv);\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    ngOnDestroy() {\n        // Call parent ngOnDestroy first (sets isDestroyed = true)\n        // This ensures onPropertyChange checks fail fast if called asynchronously\n        super.ngOnDestroy();\n\n        // MEMORY LEAK FIX: Clear sanitizePipe reference after destruction flag is set\n        // This retains references to the entire DI tree\n        this.sanitizePipe = null;\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}