{"version":3,"file":"ui-vts-kit-ng-vts-core-config.mjs","sources":["../../components/core/config/config.ts","../../components/core/config/config.service.ts","../../components/core/config/public-api.ts","../../components/core/config/ui-vts-kit-ng-vts-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 { Direction } from '@angular/cdk/bidi';\nimport { InjectionToken, TemplateRef, Type } from '@angular/core';\n\nimport { SafeUrl } from '@angular/platform-browser';\nimport { VtsBreakpointEnum } from '@ui-vts-kit/ng-vts/core/services';\nimport {\n  VtsSafeAny,\n  VtsShapeSCType,\n  VtsSizeDSType,\n  VtsSizeXLMSType,\n  VtsSizeLMSType,\n  VtsTSType\n} from '@ui-vts-kit/ng-vts/core/types';\n\nexport interface VtsConfig {\n  affix?: AffixConfig;\n  select?: SelectConfig;\n  alert?: AlertConfig;\n  anchor?: AnchorConfig;\n  avatar?: AvatarConfig;\n  backTop?: BackTopConfig;\n  badge?: BadgeConfig;\n  button?: ButtonConfig;\n  card?: CardConfig;\n  cardLayout?: CardLayoutConfig;\n  carousel?: CarouselConfig;\n  cascader?: CascaderConfig;\n  codeEditor?: CodeEditorConfig;\n  accordion?: AccordionConfig;\n  accordionPanel?: AccordionPanelConfig;\n  datePicker?: DatePickerConfig;\n  descriptions?: DescriptionsConfig;\n  drawer?: DrawerConfig;\n  empty?: EmptyConfig;\n  form?: FormConfig;\n  icon?: IconConfig;\n  message?: MessageConfig;\n  modal?: ModalConfig;\n  pageHeader?: PageHeaderConfig;\n  pagination?: PaginationConfig;\n  progress?: ProgressConfig;\n  rate?: RateConfig;\n  space?: SpaceConfig;\n  spin?: SpinConfig;\n  switch?: SwitchConfig;\n  table?: TableConfig;\n  tabs?: TabsConfig;\n  timePicker?: TimePickerConfig;\n  toast?: ToastConfig;\n  tree?: TreeConfig;\n  treeSelect?: TreeSelectConfig;\n  typography?: TypographyConfig;\n  image?: ImageConfig;\n  popconfirm?: PopConfirmConfig;\n  popover?: PopoverConfig;\n}\n\nexport interface SelectConfig {\n  vtsBorderless?: boolean;\n  vtsSuffixIcon?: TemplateRef<VtsSafeAny> | string | null;\n  vtsBackdrop?: boolean;\n}\n\nexport interface AffixConfig {\n  vtsOffsetBottom?: number;\n  vtsOffsetTop?: number;\n}\n\nexport interface AlertConfig {\n  vtsCloseable?: boolean;\n  vtsShowIcon?: boolean;\n}\n\nexport interface AvatarConfig {\n  vtsShape?: VtsShapeSCType;\n  vtsSize?: VtsSizeXLMSType | number;\n  vtsGap?: number;\n}\n\nexport interface AnchorConfig {\n  vtsBounds?: number;\n  vtsOffsetBottom?: number;\n  vtsOffsetTop?: number;\n  vtsShowInkInFixed?: boolean;\n}\n\nexport interface BackTopConfig {\n  vtsVisibilityHeight?: number;\n}\n\nexport interface BadgeConfig {\n  vtsColor?: number;\n  vtsOverflowCount?: number;\n  vtsShowZero?: number;\n}\n\nexport interface ButtonConfig {\n  vtsSize?: 'large' | 'default' | 'small';\n}\n\nexport interface CodeEditorConfig {\n  assetsRoot?: string | SafeUrl;\n  defaultEditorOption?: VtsSafeAny;\n  useStaticLoading?: boolean;\n\n  onLoad?(): void;\n\n  onFirstEditorInit?(): void;\n\n  onInit?(): void;\n}\n\nexport interface CardConfig {\n  vtsSize?: VtsSizeDSType;\n  vtsHoverable?: boolean;\n  vtsBordered?: boolean;\n  vtsBorderless?: boolean;\n}\n\nexport interface CardLayoutConfig {\n  vtsCardLayout?: 'basic' | 'cover';\n  vtsAlign?: 'left' | 'center' | 'right';\n}\n\nexport interface CarouselConfig {\n  vtsAutoPlay?: boolean;\n  vtsAutoPlaySpeed?: boolean;\n  vtsDots?: boolean;\n  vtsEffect?: 'scrollx' | 'fade' | string;\n  vtsEnableSwipe?: boolean;\n  vtsVertical?: boolean;\n  vtsNavigation?: boolean;\n  vtsRtl?: boolean;\n  vtsItems: number;\n  vtsSlideMargin: number;\n}\n\nexport interface CascaderConfig {\n  vtsSize?: string;\n  vtsBackdrop?: boolean;\n}\n\nexport interface AccordionConfig {\n  vtsAccordion?: boolean;\n  vtsBordered?: boolean;\n  vtsGhost?: boolean;\n}\n\nexport interface AccordionPanelConfig {\n  vtsShowArrow?: boolean;\n}\n\nexport interface DatePickerConfig {\n  vtsSeparator?: string;\n  vtsSuffixIcon?: string | TemplateRef<VtsSafeAny>;\n  vtsBackdrop?: boolean;\n}\n\nexport interface DescriptionsConfig {\n  vtsBordered?: boolean;\n  vtsColumn?: { [key in VtsBreakpointEnum]?: number } | number;\n  vtsSize?: 'default' | 'middle' | 'small';\n  vtsColon?: boolean;\n}\n\nexport interface DrawerConfig {\n  vtsMask?: boolean;\n  vtsMaskClosable?: boolean;\n  vtsCloseOnNavigation?: boolean;\n  vtsDirection?: Direction;\n}\n\nexport interface EmptyConfig {\n  vtsDefaultEmptyContent?: Type<VtsSafeAny> | TemplateRef<string> | string | undefined;\n}\n\nexport interface FormConfig {\n  vtsNoColon?: boolean;\n  vtsAutoTips?: Record<string, Record<string, string>>;\n  vtsTooltipIcon?: string;\n}\n\nexport interface IconConfig {\n  vtsTheme?: 'all';\n  vtsTwotoneColor?: string;\n}\n\nexport interface MessageConfig {\n  vtsAnimate?: boolean;\n  vtsDuration?: number;\n  vtsMaxStack?: number;\n  vtsPauseOnHover?: boolean;\n  vtsTop?: number | string;\n  vtsDirection?: Direction;\n}\n\nexport interface ModalConfig {\n  vtsMask?: boolean;\n  vtsMaskClosable?: boolean;\n  vtsCloseOnNavigation?: boolean;\n  vtsDirection?: Direction;\n}\n\nexport interface ToastConfig extends MessageConfig {\n  vtsTop?: string | number;\n  vtsBottom?: string | number;\n  vtsPlacement?: 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\n}\n\nexport interface PageHeaderConfig {\n  vtsGhost: boolean;\n}\n\nexport interface PaginationConfig {\n  vtsSize?: 'default' | 'small';\n  vtsPageSizeOptions?: number[];\n  vtsShowSizeChanger?: boolean;\n  vtsShowQuickJumper?: boolean;\n  vtsSimple?: boolean;\n}\n\nexport interface ProgressConfig {\n  vtsGapDegree?: number;\n  vtsGapPosition?: 'top' | 'right' | 'bottom' | 'left';\n  vtsShowInfo?: boolean;\n  vtsStrokeSwitch?: number;\n  vtsStrokeWidth?: number;\n  vtsSize?: 'default' | 'small';\n  vtsStrokeLinecap?: 'round' | 'square';\n  vtsStrokeColor?: string;\n}\n\nexport interface RateConfig {\n  vtsAllowClear?: boolean;\n  vtsAllowHalf?: boolean;\n}\n\nexport interface SpaceConfig {\n  vtsSize?: 'small' | 'middle' | 'large' | number;\n}\n\nexport interface SpinConfig {\n  vtsIndicator?: TemplateRef<VtsSafeAny>;\n}\n\nexport interface SwitchConfig {\n  vtsSize: VtsSizeDSType;\n}\n\nexport interface TableConfig {\n  vtsBordered?: boolean;\n  vtsSize?: VtsSizeLMSType;\n  vtsShowQuickJumper?: boolean;\n  vtsLoadingIndicator?: TemplateRef<VtsSafeAny>;\n  vtsShowSizeChanger?: boolean;\n  vtsSimple?: boolean;\n  vtsHidePaginationOnSinglePage?: boolean;\n}\n\nexport interface TabsConfig {\n  vtsAnimated?:\n    | boolean\n    | {\n        inkBar: boolean;\n        tabPane: boolean;\n      };\n  vtsSize?: VtsSizeXLMSType;\n  vtsType?: 'line' | 'card';\n  vtsTabBarGutter?: number;\n  vtsShowPagination?: boolean;\n}\n\nexport interface TimePickerConfig {\n  vtsAllowEmpty?: boolean;\n  vtsClearText?: string;\n  vtsNowText?: string;\n  vtsOkText?: string;\n  vtsFormat?: string;\n  vtsHourStep?: number;\n  vtsMinuteStep?: number;\n  vtsSecondStep?: number;\n  vtsDropdownClassName?: string;\n  vtsUse12Hours?: string;\n  vtsSuffixIcon?: string | TemplateRef<VtsSafeAny>;\n  vtsBackdrop?: boolean;\n}\n\nexport interface TreeConfig {\n  vtsShowIcon?: boolean;\n  vtsHideUnMatched?: boolean;\n}\n\nexport interface TreeSelectConfig {\n  vtsShowIcon?: string;\n  vtsShowLine?: boolean;\n  vtsDropdownMatchSelectWidth?: boolean;\n  vtsHideUnMatched?: boolean;\n  vtsSize?: 'large' | 'small' | 'default';\n  vtsBackdrop?: boolean;\n}\n\nexport interface TypographyConfig {\n  vtsEllipsisRows?: number;\n  vtsCopyTooltips?: [VtsTSType, VtsTSType] | null;\n  vtsCopyIcons: [VtsTSType, VtsTSType];\n  vtsEditTooltip?: null | VtsTSType;\n  vtsEditIcon: VtsTSType;\n}\n\nexport interface ImageConfig {\n  vtsFallback?: string;\n  vtsPlaceholder?: string;\n  vtsCloseOnNavigation?: boolean;\n  vtsDirection?: Direction;\n}\n\nexport interface PopConfirmConfig {\n  vtsPopconfirmBackdrop?: boolean;\n}\n\nexport interface PopoverConfig {\n  vtsPopoverBackdrop?: boolean;\n}\n\nexport type VtsConfigKey = keyof VtsConfig;\n\n/**\n * User should provide an object implements this interface to set global configurations.\n */\nexport const VTS_CONFIG = new InjectionToken<VtsConfig>('vts-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 { VtsSafeAny } from '@ui-vts-kit/ng-vts/core/types';\nimport { Observable, Subject } from 'rxjs';\n\nimport { filter, mapTo } from 'rxjs/operators';\n\nimport { VtsConfig, VtsConfigKey, VTS_CONFIG } from './config';\n\nconst isDefined = function (value?: VtsSafeAny): boolean {\n  return value !== undefined;\n};\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class VtsConfigService {\n  private configUpdated$ = new Subject<keyof VtsConfig>();\n\n  /** Global config holding property. */\n  private config: VtsConfig;\n\n  constructor(@Optional() @Inject(VTS_CONFIG) defaultConfig?: VtsConfig) {\n    this.config = defaultConfig || {};\n  }\n\n  getConfigForComponent<T extends VtsConfigKey>(componentName: T): VtsConfig[T] {\n    return this.config[componentName];\n  }\n\n  getConfigChangeEventForComponent(componentName: VtsConfigKey): Observable<void> {\n    return this.configUpdated$.pipe(\n      filter(n => n === componentName),\n      mapTo(undefined)\n    );\n  }\n\n  set<T extends VtsConfigKey>(componentName: T, value: VtsConfig[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 WithConfig<T>() {\n  return function ConfigDecorator(\n    target: VtsSafeAny,\n    propName: VtsSafeAny,\n    originalDescriptor?: TypedPropertyDescriptor<T>\n  ): VtsSafeAny {\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\n          ? originalDescriptor.get.bind(this)()\n          : this[privatePropName];\n        const assignedByUser = ((this.assignmentCount || {})[propName] || 0) > 1;\n\n        if (assignedByUser && isDefined(originalValue)) {\n          return originalValue;\n        }\n\n        const componentConfig =\n          this.vtsConfigService.getConfigForComponent(this._vtsModuleName) || {};\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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"}