{"version":3,"file":"winkong-ng-zorro-antd-extension-core-config.mjs","sources":["../../../components/core/config/config.ts","../../../components/core/config/config.service.ts","../../../components/core/config/winkong-ng-zorro-antd-extension-core-config.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface NzxConfig {\n  nzxSafeNull?: SafeNull;\n  nzxSafeUrl?: SafeUrl;\n  nzxTrim?: Trim;\n  nzxTableAdaptor?: TableAdaptor;\n  nzxTimerButton?: TimerButton;\n}\n\nexport interface SafeNull {\n  placeholder?: any;\n}\nexport interface SafeUrl {\n  protocol: 'http' | 'https';\n}\nexport interface Trim {\n  trimType: 'trim' | 'trimStart' | 'trimEnd';\n}\nexport interface TableAdaptor {\n  enableCache: boolean;\n  dateFormat: string;\n  customFormateOutFn: (queryParams: any) => any;\n}\nexport interface TimerButton {\n  duration: number;\n}\n\nexport type NzxConfigKey = keyof NzxConfig;\n\n/**\n * User should provide an object implements this interface to set global configurations.\n */\nexport const NZX_CONFIG = new InjectionToken<NzxConfig>('nzx-config');\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, mapTo } from 'rxjs/operators';\n\nimport { NzxConfig, NzxConfigKey, NZX_CONFIG } from './config';\n\nconst isDefined = function (value?: any): boolean {\n  return value !== void 0;\n};\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class NzxConfigService {\n  private configUpdated$ = new Subject<keyof NzxConfig>();\n\n  /** Global config holding property. */\n  private readonly config: NzxConfig;\n\n  constructor(@Optional() @Inject(NZX_CONFIG) defaultConfig?: NzxConfig) {\n    this.config = defaultConfig || {};\n  }\n\n  getConfig(): NzxConfig {\n    return this.config;\n  }\n\n  getConfigForComponent<T extends NzxConfigKey>(\n    componentName: T\n  ): NzxConfig[T] {\n    return this.config[componentName];\n  }\n\n  getConfigChangeEventForComponent(\n    componentName: NzxConfigKey\n  ): Observable<void> {\n    return this.configUpdated$.pipe(\n      filter((n) => n === componentName),\n      mapTo(undefined)\n    );\n  }\n\n  set<T extends NzxConfigKey>(componentName: T, value: NzxConfig[T]): void {\n    this.config[componentName] = { ...this.config[componentName], ...value };\n    this.configUpdated$.next(componentName);\n  }\n}\n\n/**\n * This decorator is used to decorate properties. If a property is decorated, it would try to load default value from\n * config.\n */\n\nexport function ExtensionWithConfig<T>() {\n  return function ConfigDecorator(\n    target: any,\n    propName: any,\n    originalDescriptor?: TypedPropertyDescriptor<T>\n  ): any {\n    const privatePropName = `$$__zorroExtensionConfigDecorator__${propName}`;\n\n    Object.defineProperty(target, privatePropName, {\n      configurable: true,\n      writable: true,\n      enumerable: false,\n    });\n\n    return {\n      get(): T | undefined {\n        const originalValue = originalDescriptor?.get\n          ? originalDescriptor.get.bind(this)()\n          : this[privatePropName];\n        const assignedByUser =\n          (this.propertyAssignCounter?.[propName] || 0) > 1;\n        const configValue = this.nzxConfigService.getConfigForComponent(\n          this._nzModuleName\n        )?.[propName];\n        if (assignedByUser && isDefined(originalValue)) {\n          return originalValue;\n        } else {\n          return isDefined(configValue) ? configValue : originalValue;\n        }\n      },\n      set(value?: T): void {\n        // If the value is assigned, we consider the newly assigned value as 'assigned by user'.\n        this.propertyAssignCounter = this.propertyAssignCounter || {};\n        this.propertyAssignCounter[propName] =\n          (this.propertyAssignCounter[propName] || 0) + 1;\n\n        if (originalDescriptor?.set) {\n          originalDescriptor.set.bind(this)(value!);\n        } else {\n          this[privatePropName] = value;\n        }\n      },\n      configurable: true,\n      enumerable: true,\n    };\n  };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}