{"version":3,"file":"ng-stalk-core-config.mjs","sources":["../../components/core/config/config.ts","../../components/core/config/config.service.ts","../../components/core/config/public-api.ts","../../components/core/config/ng-stalk-core-config.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { MagInitConfig } from 'ng-stalk/core/model';\nimport { NzSizeDSType } from 'ng-zorro-antd/core/types';\nimport { CodeAndName } from \"ng-stalk/core/types\";\n\nexport interface NsConfig {\n  frame?: FrameConfig;\n  button?: ButtonConfig;\n  code?: CodeConfig;\n  datetime?: DatetimeConfig;\n  crud?: CrudConfig;\n  space?: SpaceConfig;\n}\n\nexport interface FrameConfig {\n  nsDebug?: boolean;\n  nsGnbItems: string[];\n  nsInitConfig?: MagInitConfig;\n  nsCheckVersion?: boolean;\n  nsTimeZones?: CodeAndName[];\n  nsSelectableGnbItem?: boolean;\n  nsEnabledSwitchMenu?: boolean;\n}\n\nexport interface ButtonConfig {\n  nzSize?: NzSizeDSType;\n}\n\nexport interface DatetimeConfig {\n  nsDebug?: boolean;\n  nsDatetimeAsNoLimitedTime?: string;\n  nsNoLimitedTimeText?: string;\n  nsExposeValueIfNoLimitedTime?: boolean;\n}\n\nexport interface CodeConfig {\n  data?: { [key: string]: CodeAndName[] };\n  // initConfigCallback?: MagInitConfigCallback;\n}\n\nexport interface CrudConfig {\n  nsDebug?: boolean;\n  nsDisableDynamicScroll?: boolean;\n}\n\nexport interface SpaceConfig {\n  nsDebug?: boolean;\n}\n\nexport type NsConfigKey = keyof NsConfig;\n\n/**\n * User should provide an object implements this interface to set global configurations.\n */\nexport const NS_CONFIG = new InjectionToken<NsConfig>('ns-config');\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { Observable, Subject } from 'rxjs';\n\nimport { filter, mapTo } from 'rxjs/operators';\n\nimport { NsConfig, NsConfigKey, NS_CONFIG } from './config';\n\nconst isDefined = function (value?: NzSafeAny): boolean {\n  return value !== undefined;\n};\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NsConfigService {\n  private configUpdated$ = new Subject<keyof NsConfig>();\n\n  /** Global config holding property. */\n  private config: NsConfig;\n\n  constructor(@Optional() @Inject(NS_CONFIG) defaultConfig?: NsConfig) {\n    this.config = defaultConfig || {};\n  }\n\n  getConfigForComponent<T extends NsConfigKey>(componentName: T): NsConfig[T] {\n    return this.config[componentName];\n  }\n\n  getConfigChangeEventForComponent(componentName: NsConfigKey): Observable<void> {\n    return this.configUpdated$.pipe(\n      filter(n => n === componentName),\n      mapTo(undefined)\n    );\n  }\n\n  set<T extends NsConfigKey>(componentName: T, value: NsConfig[T]): void {\n    this.config[componentName] = { ...this.config[componentName], ...value };\n    this.configUpdated$.next(componentName);\n  }\n}\n\n// tslint:disable:no-invalid-this\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// tslint:disable-next-line:typedef\nexport function WithNsConfig<T>() {\n  return function ConfigDecorator(target: NzSafeAny, propName: NzSafeAny, originalDescriptor?: TypedPropertyDescriptor<T>): NzSafeAny {\n    const privatePropName = `$$__assignedValue__${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 ? originalDescriptor.get.bind(this)() : this[privatePropName];\n        const assignedByUser = ((this.assignmentCount || {})[propName] || 0) > 1;\n\n        if (assignedByUser && isDefined(originalValue)) {\n          return originalValue;\n        }\n\n        const componentConfig = this.nsConfigService.getConfigForComponent(this._nsModuleName) || {};\n        const configValue = componentConfig[propName];\n        const ret = isDefined(configValue) ? configValue : originalValue;\n\n        return ret;\n      },\n      set(value?: T): void {\n        // If the value is assigned, we consider the newly assigned value as 'assigned by user'.\n        this.assignmentCount = this.assignmentCount || {};\n        this.assignmentCount[propName] = (this.assignmentCount[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 * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './config.service';\nexport * from './config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}