{"version":3,"file":"elements.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/elements/src/utils.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/elements/src/extract-projectable-nodes.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/elements/src/component-factory-strategy.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/elements/src/create-custom-element.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/elements/src/version.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.dev/license\n */\nimport {ComponentFactoryResolver, Injector, Type} from '@angular/core';\n\n/**\n * Provide methods for scheduling the execution of a callback.\n */\nexport const scheduler = {\n  /**\n   * Schedule a callback to be called after some delay.\n   *\n   * Returns a function that when executed will cancel the scheduled function.\n   */\n  schedule(taskFn: () => void, delay: number): () => void {\n    const id = setTimeout(taskFn, delay);\n    return () => clearTimeout(id);\n  },\n};\n\n/**\n * Convert a camelCased string to kebab-cased.\n */\nexport function camelToDashCase(input: string): string {\n  return input.replace(/[A-Z]/g, (char) => `-${char.toLowerCase()}`);\n}\n\n/**\n * Check whether the input is an `Element`.\n */\nexport function isElement(node: Node | null): node is Element {\n  return !!node && node.nodeType === Node.ELEMENT_NODE;\n}\n\n/**\n * Check whether the input is a function.\n */\nexport function isFunction(value: any): value is Function {\n  return typeof value === 'function';\n}\n\n/**\n * Convert a kebab-cased string to camelCased.\n */\nexport function kebabToCamelCase(input: string): string {\n  return input.replace(/-([a-z\\d])/g, (_, char) => char.toUpperCase());\n}\n\nlet _matches: (this: any, selector: string) => boolean;\n\n/**\n * Check whether an `Element` matches a CSS selector.\n * NOTE: this is duplicated from @angular/upgrade, and can\n * be consolidated in the future\n */\nexport function matchesSelector(el: any, selector: string): boolean {\n  if (!_matches) {\n    const elProto = <any>Element.prototype;\n    _matches =\n      elProto.matches ||\n      elProto.matchesSelector ||\n      elProto.mozMatchesSelector ||\n      elProto.msMatchesSelector ||\n      elProto.oMatchesSelector ||\n      elProto.webkitMatchesSelector;\n  }\n  return el.nodeType === Node.ELEMENT_NODE ? _matches.call(el, selector) : false;\n}\n\n/**\n * Test two values for strict equality, accounting for the fact that `NaN !== NaN`.\n */\nexport function strictEquals(value1: any, value2: any): boolean {\n  return value1 === value2 || (value1 !== value1 && value2 !== value2);\n}\n\n/** Gets a map of default set of attributes to observe and the properties they affect. */\nexport function getDefaultAttributeToPropertyInputs(\n  inputs: {propName: string; templateName: string; transform?: (value: any) => any}[],\n) {\n  const attributeToPropertyInputs: {\n    [key: string]: [propName: string, transform: ((value: any) => any) | undefined];\n  } = {};\n  inputs.forEach(({propName, templateName, transform}) => {\n    attributeToPropertyInputs[camelToDashCase(templateName)] = [propName, transform];\n  });\n\n  return attributeToPropertyInputs;\n}\n\n/**\n * Gets a component's set of inputs. Uses the injector to get the component factory where the inputs\n * are defined.\n */\nexport function getComponentInputs(\n  component: Type<any>,\n  injector: Injector,\n): {\n  propName: string;\n  templateName: string;\n  transform?: (value: any) => any;\n  isSignal: boolean;\n}[] {\n  const componentFactoryResolver = injector.get(ComponentFactoryResolver);\n  const componentFactory = componentFactoryResolver.resolveComponentFactory(component);\n  return componentFactory.inputs;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.dev/license\n */\n\n// NOTE: This is a (slightly improved) version of what is used in ngUpgrade's\n//       `DowngradeComponentAdapter`.\n// TODO(gkalpak): Investigate if it makes sense to share the code.\n\nimport {isElement, matchesSelector} from './utils';\n\nexport function extractProjectableNodes(host: HTMLElement, ngContentSelectors: string[]): Node[][] {\n  const nodes = host.childNodes;\n  const projectableNodes: Node[][] = ngContentSelectors.map(() => []);\n  let wildcardIndex = -1;\n\n  ngContentSelectors.some((selector, i) => {\n    if (selector === '*') {\n      wildcardIndex = i;\n      return true;\n    }\n    return false;\n  });\n\n  for (let i = 0, ii = nodes.length; i < ii; ++i) {\n    const node = nodes[i];\n    const ngContentIndex = findMatchingIndex(node, ngContentSelectors, wildcardIndex);\n\n    if (ngContentIndex !== -1) {\n      projectableNodes[ngContentIndex].push(node);\n    }\n  }\n\n  return projectableNodes;\n}\n\nfunction findMatchingIndex(node: Node, selectors: string[], defaultIndex: number): number {\n  let matchingIndex = defaultIndex;\n\n  if (isElement(node)) {\n    selectors.some((selector, i) => {\n      if (selector !== '*' && matchesSelector(node, selector)) {\n        matchingIndex = i;\n        return true;\n      }\n      return false;\n    });\n  }\n\n  return matchingIndex;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.dev/license\n */\n\n// Needed for the global `Zone` ambient types to be available.\nimport type {} from 'zone.js';\n\nimport {\n  ApplicationRef,\n  ComponentFactory,\n  ComponentFactoryResolver,\n  ComponentRef,\n  EventEmitter,\n  Injector,\n  NgZone,\n  Type,\n  ɵChangeDetectionScheduler as ChangeDetectionScheduler,\n  ɵNotificationSource as NotificationSource,\n  ɵViewRef as ViewRef,\n  ɵisViewDirty as isViewDirty,\n  ɵmarkForRefresh as markForRefresh,\n  OutputRef,\n} from '@angular/core';\nimport {merge, Observable, ReplaySubject} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\nimport {\n  NgElementStrategy,\n  NgElementStrategyEvent,\n  NgElementStrategyFactory,\n} from './element-strategy';\nimport {extractProjectableNodes} from './extract-projectable-nodes';\nimport {scheduler} from './utils';\n\n/** Time in milliseconds to wait before destroying the component ref when disconnected. */\nconst DESTROY_DELAY = 10;\n\n/**\n * Factory that creates new ComponentNgElementStrategy instance. Gets the component factory with the\n * constructor's injector's factory resolver and passes that factory to each strategy.\n */\nexport class ComponentNgElementStrategyFactory implements NgElementStrategyFactory {\n  componentFactory: ComponentFactory<any>;\n\n  inputMap = new Map<string, string>();\n\n  constructor(component: Type<any>, injector: Injector) {\n    this.componentFactory = injector\n      .get(ComponentFactoryResolver)\n      .resolveComponentFactory(component);\n    for (const input of this.componentFactory.inputs) {\n      this.inputMap.set(input.propName, input.templateName);\n    }\n  }\n\n  create(injector: Injector) {\n    return new ComponentNgElementStrategy(this.componentFactory, injector, this.inputMap);\n  }\n}\n\n/**\n * Creates and destroys a component ref using a component factory and handles change detection\n * in response to input changes.\n */\nexport class ComponentNgElementStrategy implements NgElementStrategy {\n  // Subject of `NgElementStrategyEvent` observables corresponding to the component's outputs.\n  private eventEmitters = new ReplaySubject<Observable<NgElementStrategyEvent>[]>(1);\n\n  /** Merged stream of the component's output events. */\n  readonly events = this.eventEmitters.pipe(switchMap((emitters) => merge(...emitters)));\n\n  /** Reference to the component that was created on connect. */\n  private componentRef: ComponentRef<any> | null = null;\n\n  /** Callback function that when called will cancel a scheduled destruction on the component. */\n  private scheduledDestroyFn: (() => void) | null = null;\n\n  /** Initial input values that were set before the component was created. */\n  private readonly initialInputValues = new Map<string, any>();\n\n  /** Service for setting zone context. */\n  private readonly ngZone: NgZone;\n\n  /** The zone the element was created in or `null` if Zone.js is not loaded. */\n  private readonly elementZone: Zone | null;\n\n  /**\n   * The `ApplicationRef` shared by all instances of this custom element (and potentially others).\n   */\n  private readonly appRef: ApplicationRef;\n\n  /**\n   * Angular's change detection scheduler, which works independently of zone.js.\n   */\n  private cdScheduler: ChangeDetectionScheduler;\n\n  constructor(\n    private componentFactory: ComponentFactory<any>,\n    private injector: Injector,\n    private inputMap: Map<string, string>,\n  ) {\n    this.ngZone = this.injector.get(NgZone);\n    this.appRef = this.injector.get(ApplicationRef);\n    this.cdScheduler = injector.get(ChangeDetectionScheduler);\n    this.elementZone = typeof Zone === 'undefined' ? null : this.ngZone.run(() => Zone.current);\n  }\n\n  /**\n   * Initializes a new component if one has not yet been created and cancels any scheduled\n   * destruction.\n   */\n  connect(element: HTMLElement) {\n    this.runInZone(() => {\n      // If the element is marked to be destroyed, cancel the task since the component was\n      // reconnected\n      if (this.scheduledDestroyFn !== null) {\n        this.scheduledDestroyFn();\n        this.scheduledDestroyFn = null;\n        return;\n      }\n\n      if (this.componentRef === null) {\n        this.initializeComponent(element);\n      }\n    });\n  }\n\n  /**\n   * Schedules the component to be destroyed after some small delay in case the element is just\n   * being moved across the DOM.\n   */\n  disconnect() {\n    this.runInZone(() => {\n      // Return if there is no componentRef or the component is already scheduled for destruction\n      if (this.componentRef === null || this.scheduledDestroyFn !== null) {\n        return;\n      }\n\n      // Schedule the component to be destroyed after a small timeout in case it is being\n      // moved elsewhere in the DOM\n      this.scheduledDestroyFn = scheduler.schedule(() => {\n        if (this.componentRef !== null) {\n          this.componentRef.destroy();\n          this.componentRef = null;\n        }\n      }, DESTROY_DELAY);\n    });\n  }\n\n  /**\n   * Returns the component property value. If the component has not yet been created, the value is\n   * retrieved from the cached initialization values.\n   */\n  getInputValue(property: string): any {\n    return this.runInZone(() => {\n      if (this.componentRef === null) {\n        return this.initialInputValues.get(property);\n      }\n\n      return this.componentRef.instance[property];\n    });\n  }\n\n  /**\n   * Sets the input value for the property. If the component has not yet been created, the value is\n   * cached and set when the component is created.\n   */\n  setInputValue(property: string, value: any): void {\n    if (this.componentRef === null) {\n      this.initialInputValues.set(property, value);\n      return;\n    }\n\n    this.runInZone(() => {\n      this.componentRef!.setInput(this.inputMap.get(property) ?? property, value);\n\n      // `setInput` won't mark the view dirty if the input didn't change from its previous value.\n      if (isViewDirty(this.componentRef!.hostView as ViewRef<unknown>)) {\n        // `setInput` will have marked the view dirty already, but also mark it for refresh. This\n        // guarantees the view will be checked even if the input is being set from within change\n        // detection. This provides backwards compatibility, since we used to unconditionally\n        // schedule change detection in addition to the current zone run.\n        markForRefresh(this.componentRef!.changeDetectorRef as ViewRef<unknown>);\n\n        // Notifying the scheduler with `NotificationSource.CustomElement` causes a `tick()` to be\n        // scheduled unconditionally, even if the scheduler is otherwise disabled.\n        this.cdScheduler.notify(NotificationSource.CustomElement);\n      }\n    });\n  }\n\n  /**\n   * Creates a new component through the component factory with the provided element host and\n   * sets up its initial inputs, listens for outputs changes, and runs an initial change detection.\n   */\n  protected initializeComponent(element: HTMLElement) {\n    const childInjector = Injector.create({providers: [], parent: this.injector});\n    const projectableNodes = extractProjectableNodes(\n      element,\n      this.componentFactory.ngContentSelectors,\n    );\n    this.componentRef = this.componentFactory.create(childInjector, projectableNodes, element);\n\n    this.initializeInputs();\n    this.initializeOutputs(this.componentRef);\n\n    this.appRef.attachView(this.componentRef.hostView);\n    this.componentRef.hostView.detectChanges();\n  }\n\n  /** Set any stored initial inputs on the component's properties. */\n  protected initializeInputs(): void {\n    for (const [propName, value] of this.initialInputValues) {\n      this.setInputValue(propName, value);\n    }\n\n    this.initialInputValues.clear();\n  }\n\n  /** Sets up listeners for the component's outputs so that the events stream emits the events. */\n  protected initializeOutputs(componentRef: ComponentRef<any>): void {\n    const eventEmitters: Observable<NgElementStrategyEvent>[] = this.componentFactory.outputs.map(\n      ({propName, templateName}) => {\n        const emitter: EventEmitter<any> | OutputRef<any> = componentRef.instance[propName];\n        return new Observable((observer) => {\n          const sub = emitter.subscribe((value) => observer.next({name: templateName, value}));\n          return () => sub.unsubscribe();\n        });\n      },\n    );\n\n    this.eventEmitters.next(eventEmitters);\n  }\n\n  /** Runs in the angular zone, if present. */\n  private runInZone(fn: () => unknown) {\n    return this.elementZone && Zone.current !== this.elementZone ? this.ngZone.run(fn) : fn();\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.dev/license\n */\n\nimport {Injector, Type, isSignal} from '@angular/core';\nimport {Subscription} from 'rxjs';\n\nimport {ComponentNgElementStrategyFactory} from './component-factory-strategy';\nimport {NgElementStrategy, NgElementStrategyFactory} from './element-strategy';\nimport {getComponentInputs, getDefaultAttributeToPropertyInputs} from './utils';\n\n/**\n * Prototype for a class constructor based on an Angular component\n * that can be used for custom element registration. Implemented and returned\n * by the {@link createCustomElement createCustomElement() function}.\n *\n * @see [Angular Elements Overview](guide/elements \"Turning Angular components into custom elements\")\n *\n * @publicApi\n */\nexport interface NgElementConstructor<P> {\n  /**\n   * An array of observed attribute names for the custom element,\n   * derived by transforming input property names from the source component.\n   */\n  readonly observedAttributes: string[];\n\n  /**\n   * Initializes a constructor instance.\n   * @param injector If provided, overrides the configured injector.\n   */\n  new (injector?: Injector): NgElement & WithProperties<P>;\n}\n\n/**\n * Implements the functionality needed for a custom element.\n *\n * @publicApi\n */\nexport abstract class NgElement extends HTMLElement {\n  /**\n   * The strategy that controls how a component is transformed in a custom element.\n   */\n  protected abstract ngElementStrategy: NgElementStrategy;\n  /**\n   * A subscription to change, connect, and disconnect events in the custom element.\n   */\n  protected ngElementEventsSubscription: Subscription | null = null;\n\n  /**\n   * Prototype for a handler that responds to a change in an observed attribute.\n   * @param attrName The name of the attribute that has changed.\n   * @param oldValue The previous value of the attribute.\n   * @param newValue The new value of the attribute.\n   * @param namespace The namespace in which the attribute is defined.\n   * @returns Nothing.\n   */\n  abstract attributeChangedCallback(\n    attrName: string,\n    oldValue: string | null,\n    newValue: string,\n    namespace?: string,\n  ): void;\n  /**\n   * Prototype for a handler that responds to the insertion of the custom element in the DOM.\n   * @returns Nothing.\n   */\n  abstract connectedCallback(): void;\n  /**\n   * Prototype for a handler that responds to the deletion of the custom element from the DOM.\n   * @returns Nothing.\n   */\n  abstract disconnectedCallback(): void;\n}\n\n/**\n * Additional type information that can be added to the NgElement class,\n * for properties that are added based\n * on the inputs and methods of the underlying component.\n *\n * @publicApi\n */\nexport type WithProperties<P> = {\n  [property in keyof P]: P[property];\n};\n\n/**\n * A configuration that initializes an NgElementConstructor with the\n * dependencies and strategy it needs to transform a component into\n * a custom element class.\n *\n * @publicApi\n */\nexport interface NgElementConfig {\n  /**\n   * The injector to use for retrieving the component's factory.\n   */\n  injector: Injector;\n  /**\n   * An optional custom strategy factory to use instead of the default.\n   * The strategy controls how the transformation is performed.\n   */\n  strategyFactory?: NgElementStrategyFactory;\n}\n\n/**\n *  @description Creates a custom element class based on an Angular component.\n *\n * Builds a class that encapsulates the functionality of the provided component and\n * uses the configuration information to provide more context to the class.\n * Takes the component factory's inputs and outputs to convert them to the proper\n * custom element API and add hooks to input changes.\n *\n * The configuration's injector is the initial injector set on the class,\n * and used by default for each created instance.This behavior can be overridden with the\n * static property to affect all newly created instances, or as a constructor argument for\n * one-off creations.\n *\n * @see [Angular Elements Overview](guide/elements \"Turning Angular components into custom elements\")\n *\n * @param component The component to transform.\n * @param config A configuration that provides initialization information to the created class.\n * @returns The custom-element construction class, which can be registered with\n * a browser's `CustomElementRegistry`.\n *\n * @publicApi\n */\nexport function createCustomElement<P>(\n  component: Type<any>,\n  config: NgElementConfig,\n): NgElementConstructor<P> {\n  const inputs = getComponentInputs(component, config.injector);\n\n  const strategyFactory =\n    config.strategyFactory || new ComponentNgElementStrategyFactory(component, config.injector);\n\n  const attributeToPropertyInputs = getDefaultAttributeToPropertyInputs(inputs);\n\n  class NgElementImpl extends NgElement {\n    // Work around a bug in closure typed optimizations(b/79557487) where it is not honoring static\n    // field externs. So using quoted access to explicitly prevent renaming.\n    static readonly ['observedAttributes'] = Object.keys(attributeToPropertyInputs);\n\n    protected override get ngElementStrategy(): NgElementStrategy {\n      // TODO(andrewseguin): Add e2e tests that cover cases where the constructor isn't called. For\n      // now this is tested using a Google internal test suite.\n      if (!this._ngElementStrategy) {\n        const strategy = (this._ngElementStrategy = strategyFactory.create(\n          this.injector || config.injector,\n        ));\n\n        // Re-apply pre-existing input values (set as properties on the element) through the\n        // strategy.\n        // TODO(alxhub): why are we doing this? this makes no sense.\n        inputs.forEach(({propName, transform}) => {\n          if (!this.hasOwnProperty(propName)) {\n            // No pre-existing value for `propName`.\n            return;\n          }\n\n          // Delete the property from the DOM node and re-apply it through the strategy.\n          const value = (this as any)[propName];\n          delete (this as any)[propName];\n          strategy.setInputValue(propName, value, transform);\n        });\n      }\n\n      return this._ngElementStrategy!;\n    }\n\n    private _ngElementStrategy?: NgElementStrategy;\n\n    constructor(private readonly injector?: Injector) {\n      super();\n    }\n\n    override attributeChangedCallback(\n      attrName: string,\n      oldValue: string | null,\n      newValue: string,\n      namespace?: string,\n    ): void {\n      const [propName, transform] = attributeToPropertyInputs[attrName]!;\n      this.ngElementStrategy.setInputValue(propName, newValue, transform);\n    }\n\n    override connectedCallback(): void {\n      // For historical reasons, some strategies may not have initialized the `events` property\n      // until after `connect()` is run. Subscribe to `events` if it is available before running\n      // `connect()` (in order to capture events emitted during initialization), otherwise subscribe\n      // afterwards.\n      //\n      // TODO: Consider deprecating/removing the post-connect subscription in a future major version\n      //       (e.g. v11).\n\n      let subscribedToEvents = false;\n\n      if (this.ngElementStrategy.events) {\n        // `events` are already available: Subscribe to it asap.\n        this.subscribeToEvents();\n        subscribedToEvents = true;\n      }\n\n      this.ngElementStrategy.connect(this);\n\n      if (!subscribedToEvents) {\n        // `events` were not initialized before running `connect()`: Subscribe to them now.\n        // The events emitted during the component initialization have been missed, but at least\n        // future events will be captured.\n        this.subscribeToEvents();\n      }\n    }\n\n    override disconnectedCallback(): void {\n      // Not using `this.ngElementStrategy` to avoid unnecessarily creating the `NgElementStrategy`.\n      if (this._ngElementStrategy) {\n        this._ngElementStrategy.disconnect();\n      }\n\n      if (this.ngElementEventsSubscription) {\n        this.ngElementEventsSubscription.unsubscribe();\n        this.ngElementEventsSubscription = null;\n      }\n    }\n\n    private subscribeToEvents(): void {\n      // Listen for events from the strategy and dispatch them as custom events.\n      this.ngElementEventsSubscription = this.ngElementStrategy.events.subscribe((e) => {\n        const customEvent = new CustomEvent(e.name, {detail: e.value});\n        this.dispatchEvent(customEvent);\n      });\n    }\n  }\n\n  // Add getters and setters to the prototype for each property input.\n  inputs.forEach(({propName, transform, isSignal: _isSignal}) => {\n    Object.defineProperty(NgElementImpl.prototype, propName, {\n      get(): any {\n        const inputValue = this.ngElementStrategy.getInputValue(propName);\n        return _isSignal && isSignal(inputValue) ? inputValue() : inputValue;\n      },\n      set(newValue: any): void {\n        this.ngElementStrategy.setInputValue(propName, newValue, transform);\n      },\n      configurable: true,\n      enumerable: true,\n    });\n  });\n\n  return NgElementImpl as any as NgElementConstructor<P>;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\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://angular.dev/license\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = /* @__PURE__ */ new Version('21.2.9');\n"],"names":["scheduler","schedule","taskFn","delay","id","setTimeout","clearTimeout","camelToDashCase","input","replace","char","toLowerCase","isElement","node","nodeType","Node","ELEMENT_NODE","_matches","matchesSelector","el","selector","elProto","Element","prototype","matches","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","call","getDefaultAttributeToPropertyInputs","inputs","attributeToPropertyInputs","forEach","propName","templateName","transform","getComponentInputs","component","injector","componentFactoryResolver","get","ComponentFactoryResolver","componentFactory","resolveComponentFactory","extractProjectableNodes","host","ngContentSelectors","nodes","childNodes","projectableNodes","map","wildcardIndex","some","i","ii","length","ngContentIndex","findMatchingIndex","push","selectors","defaultIndex","matchingIndex","DESTROY_DELAY","ComponentNgElementStrategyFactory","inputMap","Map","constructor","set","create","ComponentNgElementStrategy","eventEmitters","ReplaySubject","events","pipe","switchMap","emitters","merge","componentRef","scheduledDestroyFn","initialInputValues","ngZone","elementZone","appRef","cdScheduler","NgZone","ApplicationRef","ChangeDetectionScheduler","Zone","run","current","connect","element","runInZone","initializeComponent","disconnect","destroy","getInputValue","property","instance","setInputValue","value","setInput","isViewDirty","hostView","markForRefresh","changeDetectorRef","notify","childInjector","Injector","providers","parent","initializeInputs","initializeOutputs","attachView","detectChanges","clear","outputs","emitter","Observable","observer","sub","subscribe","next","name","unsubscribe","fn","NgElement","HTMLElement","ngElementEventsSubscription","createCustomElement","config","strategyFactory","NgElementImpl","Object","keys","ngElementStrategy","_ngElementStrategy","strategy","hasOwnProperty","attributeChangedCallback","attrName","oldValue","newValue","namespace","connectedCallback","subscribedToEvents","subscribeToEvents","disconnectedCallback","e","customEvent","CustomEvent","detail","dispatchEvent","isSignal","_isSignal","defineProperty","inputValue","configurable","enumerable","VERSION","Version"],"mappings":"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"}