{"version":3,"file":"angular-react-fabric-lib-components-core.mjs","sources":["../../../libs/fabric/lib/components/core/declarative/item-changed.payload.ts","../../../libs/fabric/lib/components/core/declarative/item-changed.helpers.ts","../../../libs/fabric/lib/components/core/declarative/item-changed.ts","../../../libs/fabric/lib/components/core/shared/changeable-helper.ts","../../../libs/fabric/lib/components/core/shared/changeable-item.directive.ts","../../../libs/fabric/lib/components/core/shared/changeable-items.directive.ts","../../../libs/fabric/lib/components/core/angular-react-fabric-lib-components-core.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport interface PropertyChange<TValue> {\r\n  readonly currentValue: TValue;\r\n}\r\n\r\nexport type ItemChanges<TItem> = { readonly [P in keyof TItem]?: PropertyChange<TItem[P]> };\r\n\r\nexport interface ItemChangedPayload<TKey extends string, TItem> {\r\n  readonly key: TKey;\r\n  readonly changes: ItemChanges<TItem>;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { ItemChanges, PropertyChange } from './item-changed.payload';\r\n\r\nexport function mergeItemChanges<T extends object>(target: T, changes: ItemChanges<T>): T {\r\n  const itemChangesOverrides: Partial<T> = (Object.entries(changes) as Array<\r\n    [keyof T, PropertyChange<T[keyof T]>]\r\n  >).reduce((acc, [propertyKey, change]) => Object.assign(acc, { [propertyKey]: change.currentValue }), {});\r\n\r\n  return Object.assign({}, target, itemChangesOverrides);\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nexport * from './item-changed.payload';\r\nexport * from './item-changed.helpers';\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { EventEmitter, QueryList } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { ItemChangedPayload, ItemChanges } from '../declarative/item-changed.payload';\r\nimport { ChangeableItemDirective } from './changeable-item.directive';\r\n\r\n/**\r\n * Helper class for single changeable item\r\n */\r\nexport class ChangeableItemHelper<TItem> {\r\n  readonly onItemChanged = new EventEmitter<ItemChangedPayload<string, TItem>>();\r\n\r\n  constructor(private readonly key: string) {}\r\n\r\n  /**\r\n   * Action to be called by user of class when change is detected\r\n   * (Typically called in ngOnChanges)\r\n   * @param changes TypedChanges that are to be emitted\r\n   */\r\n  emitChanges(changes: ItemChanges<TItem>) {\r\n    this.onItemChanged.emit({ key: this.key, changes });\r\n  }\r\n}\r\n\r\n/**\r\n * Parent class for wrapper directive for multiple ChangeableItemDirectives\r\n */\r\nexport class ChangeableItemsHelper<TItem> {\r\n  readonly onChildItemChanged = new EventEmitter<ItemChangedPayload<string, TItem>>();\r\n  readonly onItemsChanged = new EventEmitter<QueryList<ChangeableItemDirective<TItem>>>();\r\n\r\n  private readonly _subscriptionsMap: { [key: string]: Subscription } = {};\r\n  private _changeSubscription: Subscription;\r\n\r\n  /**\r\n   * Initialize subscriptions to watch for changes to children ChangeableItemDirectives\r\n   * (Typically called in ngAfterContentInit after @ContentChildren are initialized)\r\n   * @param directiveItems List of children to watch for\r\n   * @param self Reference to component using this helper. This component gets filtered out in case\r\n   *  it appears in the list of children (i.e. when a component has children of its own type)\r\n   * @param nonSelfHandler Callback to handle filtered list of children when updated\r\n   */\r\n  constructor(\r\n    private directiveItems: QueryList<ChangeableItemDirective<TItem>>,\r\n    private self?: IChangeableItemsContainer<TItem>,\r\n    private nonSelfHandler?: (nonSelfDirectives: ChangeableItemDirective<TItem>[]) => void\r\n  ) {\r\n    this._subscribeNewDirectives();\r\n    this._changeSubscription = this.directiveItems.changes.subscribe(newValues => {\r\n      this.onItemsChanged.emit(newValues);\r\n      this._subscribeNewDirectives();\r\n    });\r\n  }\r\n\r\n  /**\r\n   * Action to be called by user of class when directive/component is destroyed\r\n   * (Typically called in ngOnDestroy)\r\n   */\r\n  destroy() {\r\n    Object.values(this._subscriptionsMap).forEach(value => value.unsubscribe());\r\n    this._changeSubscription.unsubscribe();\r\n  }\r\n\r\n  private _subscribeNewDirectives() {\r\n    const nonSelfDirectives = this._handleNonSelfDirectives();\r\n    nonSelfDirectives.forEach(directiveItem => {\r\n      if (this._subscriptionsMap[directiveItem.key]) {\r\n        this._subscriptionsMap[directiveItem.key].unsubscribe();\r\n      }\r\n      this._subscriptionsMap[directiveItem.key] = directiveItem.onItemChanged.subscribe(changes => {\r\n        this._handleNonSelfDirectives();\r\n        this.onChildItemChanged.emit(changes);\r\n        if (this.self && this.self.onItemChanged) {\r\n          this.self.onItemChanged.emit(changes);\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  private _handleNonSelfDirectives() {\r\n    const nonSelfDirectives = this.directiveItems.filter(directiveItem => directiveItem !== (this.self as any));\r\n    if (this.nonSelfHandler && nonSelfDirectives.length) {\r\n      this.nonSelfHandler(nonSelfDirectives);\r\n    }\r\n    return nonSelfDirectives;\r\n  }\r\n}\r\n\r\n/**\r\n * Interface for directives that contain changeable items\r\n */\r\nexport interface IChangeableItemsContainer<TItem> {\r\n  onChildItemChanged: EventEmitter<ItemChangedPayload<string, TItem>>;\r\n  onItemChanged?: EventEmitter<ItemChangedPayload<string, TItem>>;\r\n  onItemsChanged: EventEmitter<QueryList<ChangeableItemDirective<TItem>>>;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { EventEmitter, Input, OnInit, Output, Directive } from '@angular/core';\r\n\r\nimport { OnChanges } from '@angular-react/fabric/lib/declarations';;\r\nimport { ItemChangedPayload, ItemChanges } from '../declarative/item-changed.payload';\r\nimport { ChangeableItemHelper } from './changeable-helper';\r\n\r\n/**\r\n * Parent class for wrapper directive for single item with OnChanges\r\n */\r\n@Directive()\r\nexport abstract class ChangeableItemDirective<TItem> implements OnChanges<ChangeableItemDirective<TItem>>, OnInit {\r\n  @Input() key: string;\r\n\r\n  @Output()\r\n  get onItemChanged(): EventEmitter<ItemChangedPayload<string, TItem>> {\r\n    return this.changeableItemHelper && this.changeableItemHelper.onItemChanged;\r\n  }\r\n\r\n  private changeableItemHelper: ChangeableItemHelper<TItem>;\r\n\r\n  ngOnInit() {\r\n    this.changeableItemHelper = new ChangeableItemHelper(this.key);\r\n  }\r\n\r\n  ngOnChanges(changes: ItemChanges<TItem>) {\r\n    if (this.changeableItemHelper) {\r\n      this.changeableItemHelper.emitChanges(changes);\r\n    }\r\n  }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT License.\r\n\r\nimport { AfterContentInit, ContentChildren, EventEmitter, OnDestroy, Output, QueryList, Directive } from '@angular/core';\r\n\r\nimport { ItemChangedPayload } from '../declarative/item-changed.payload';\r\nimport { ChangeableItemsHelper, IChangeableItemsContainer } from './changeable-helper';\r\nimport { ChangeableItemDirective } from './changeable-item.directive';\r\n\r\n/**\r\n * Parent class for wrapper directive for multiple ChangeableItemDirectives\r\n */\r\n@Directive()\r\nexport abstract class ChangeableItemsDirective<TItem>\r\n  implements AfterContentInit, IChangeableItemsContainer<TItem>, OnDestroy {\r\n  @ContentChildren(ChangeableItemDirective) readonly directiveItems: QueryList<ChangeableItemDirective<TItem>>;\r\n\r\n  @Output()\r\n  get onChildItemChanged(): EventEmitter<ItemChangedPayload<string, TItem>> {\r\n    return this.changeableItemsHelper && this.changeableItemsHelper.onChildItemChanged;\r\n  }\r\n  @Output()\r\n  get onItemsChanged(): EventEmitter<QueryList<ChangeableItemDirective<TItem>>> {\r\n    return this.changeableItemsHelper && this.changeableItemsHelper.onItemsChanged;\r\n  }\r\n\r\n  private changeableItemsHelper: ChangeableItemsHelper<TItem>;\r\n\r\n  abstract get items(): TItem[];\r\n\r\n  ngAfterContentInit() {\r\n    this.changeableItemsHelper = new ChangeableItemsHelper(this.directiveItems);\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.changeableItemsHelper.destroy();\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}