mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
66 KiB
1 lines
66 KiB
{"version":3,"file":"platform-browser.mjs","sources":["../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/meta.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/title.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/dom/util.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/tools/common_tools.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/tools/tools.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/dom/debug/by.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/dom/events/hammer_gestures.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/security/dom_sanitization_service.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/hydration.ts","../../../../../k8-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/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 */\n\nimport {DOCUMENT, ɵDomAdapter as DomAdapter, ɵgetDOM as getDOM} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\n/**\n * Represents the attributes of an HTML `<meta>` element. The element itself is\n * represented by the internal `HTMLMetaElement`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see {@link Meta}\n *\n * @publicApi\n */\nexport type MetaDefinition = {\n charset?: string;\n content?: string;\n httpEquiv?: string;\n id?: string;\n itemprop?: string;\n name?: string;\n property?: string;\n scheme?: string;\n url?: string;\n} & {\n // TODO(IgorMinar): this type looks wrong\n [prop: string]: string;\n};\n\n/**\n * A service for managing HTML `<meta>` tags.\n *\n * Properties of the `MetaDefinition` object match the attributes of the\n * HTML `<meta>` tag. These tags define document metadata that is important for\n * things like configuring a Content Security Policy, defining browser compatibility\n * and security settings, setting HTTP Headers, defining rich content for social sharing,\n * and Search Engine Optimization (SEO).\n *\n * To identify specific `<meta>` tags in a document, use an attribute selection\n * string in the format `\"tag_attribute='value string'\"`.\n * For example, an `attrSelector` value of `\"name='description'\"` matches a tag\n * whose `name` attribute has the value `\"description\"`.\n * Selectors are used with the `querySelector()` Document method,\n * in the format `meta[{attrSelector}]`.\n *\n * @see [HTML meta tag](https://developer.mozilla.org/docs/Web/HTML/Element/meta)\n * @see [Document.querySelector()](https://developer.mozilla.org/docs/Web/API/Document/querySelector)\n *\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root'})\nexport class Meta {\n private _dom: DomAdapter;\n constructor(@Inject(DOCUMENT) private _doc: any) {\n this._dom = getDOM();\n }\n /**\n * Retrieves or creates a specific `<meta>` tag element in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * If an existing element is found, it is returned and is not modified in any way.\n * @param tag The definition of a `<meta>` element to match or create.\n * @param forceCreation True to create a new element without checking whether one already exists.\n * @returns The existing element with the same attributes and values if found,\n * the new element if no match is found, or `null` if the tag parameter is not defined.\n */\n addTag(tag: MetaDefinition, forceCreation: boolean = false): HTMLMetaElement | null {\n if (!tag) return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n\n /**\n * Retrieves or creates a set of `<meta>` tag elements in the current HTML document.\n * In searching for an existing tag, Angular attempts to match the `name` or `property` attribute\n * values in the provided tag definition, and verifies that all other attribute values are equal.\n * @param tags An array of tag definitions to match or create.\n * @param forceCreation True to create new elements without checking whether they already exist.\n * @returns The matching elements if found, or the new elements.\n */\n addTags(tags: MetaDefinition[], forceCreation: boolean = false): HTMLMetaElement[] {\n if (!tags) return [];\n return tags.reduce((result: HTMLMetaElement[], tag: MetaDefinition) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n\n /**\n * Retrieves a `<meta>` tag element in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching element, if any.\n */\n getTag(attrSelector: string): HTMLMetaElement | null {\n if (!attrSelector) return null;\n return this._doc.querySelector(`meta[${attrSelector}]`) || null;\n }\n\n /**\n * Retrieves a set of `<meta>` tag elements in the current HTML document.\n * @param attrSelector The tag attribute and value to match against, in the format\n * `\"tag_attribute='value string'\"`.\n * @returns The matching elements, if any.\n */\n getTags(attrSelector: string): HTMLMetaElement[] {\n if (!attrSelector) return [];\n const list /*NodeList*/ = this._doc.querySelectorAll(`meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n\n /**\n * Modifies an existing `<meta>` tag element in the current HTML document.\n * @param tag The tag description with which to replace the existing tag content.\n * @param selector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n * If not supplied, matches a tag with the same `name` or `property` attribute value as the\n * replacement tag.\n * @return The modified element.\n */\n updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement | null {\n if (!tag) return null;\n selector = selector || this._parseSelector(tag);\n const meta: HTMLMetaElement = this.getTag(selector)!;\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param attrSelector A tag attribute and value to match against, to identify\n * an existing tag. A string in the format `\"tag_attribute=`value string`\"`.\n */\n removeTag(attrSelector: string): void {\n this.removeTagElement(this.getTag(attrSelector)!);\n }\n\n /**\n * Removes an existing `<meta>` tag element from the current HTML document.\n * @param meta The tag definition to match against to identify an existing tag.\n */\n removeTagElement(meta: HTMLMetaElement): void {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n\n private _getOrCreateElement(\n meta: MetaDefinition,\n forceCreation: boolean = false,\n ): HTMLMetaElement {\n if (!forceCreation) {\n const selector: string = this._parseSelector(meta);\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n const elem = this.getTags(selector).filter((elem) => this._containsAttributes(meta, elem))[0];\n if (elem !== undefined) return elem;\n }\n const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement;\n this._setMetaElementAttributes(meta, element);\n const head = this._doc.getElementsByTagName('head')[0];\n head.appendChild(element);\n return element;\n }\n\n private _setMetaElementAttributes(tag: MetaDefinition, el: HTMLMetaElement): HTMLMetaElement {\n Object.keys(tag).forEach((prop: string) =>\n el.setAttribute(this._getMetaKeyMap(prop), tag[prop]),\n );\n return el;\n }\n\n private _parseSelector(tag: MetaDefinition): string {\n const attr: string = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n\n private _containsAttributes(tag: MetaDefinition, elem: HTMLMetaElement): boolean {\n return Object.keys(tag).every(\n (key: string) => elem.getAttribute(this._getMetaKeyMap(key)) === tag[key],\n );\n }\n\n private _getMetaKeyMap(prop: string): string {\n return META_KEYS_MAP[prop] || prop;\n }\n}\n\n/**\n * Mapping for MetaDefinition properties with their correct meta attribute names\n */\nconst META_KEYS_MAP: {[prop: string]: string} = {\n httpEquiv: 'http-equiv',\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 {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root'})\nexport class Title {\n constructor(@Inject(DOCUMENT) private _doc: any) {}\n /**\n * Get the title of the current HTML document.\n */\n getTitle(): string {\n return this._doc.title;\n }\n\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle: string) {\n this._doc.title = newTitle || '';\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\n/// <reference path=\"../../../goog.d.ts\" />\n\nimport {ɵglobal as global} from '@angular/core';\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nexport function exportNgVar(name: string, value: any): void {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = (global['ng'] = (global['ng'] as {[key: string]: any} | undefined) || {});\n ng[name] = value;\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 {ApplicationRef, ComponentRef} from '@angular/core';\n\nexport class ChangeDetectionPerfRecord {\n constructor(\n public msPerTick: number,\n public numTicks: number,\n ) {}\n}\n\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nexport class AngularProfiler {\n appRef: ApplicationRef;\n\n constructor(ref: ComponentRef<any>) {\n this.appRef = ref.injector.get(ApplicationRef);\n }\n\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```ts\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config: any): ChangeDetectionPerfRecord {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers without dev tools opened\n if (record && 'profile' in console && typeof console.profile === 'function') {\n console.profile(profileName);\n }\n const start = performance.now();\n let numTicks = 0;\n while (numTicks < 5 || performance.now() - start < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = performance.now();\n if (record && 'profileEnd' in console && typeof console.profileEnd === 'function') {\n console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n console.log(`ran ${numTicks} change detection cycles`);\n console.log(`${msPerTick.toFixed(2)} ms per check`);\n\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\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 {ComponentRef} from '@angular/core';\n\nimport {exportNgVar} from '../../dom/util';\n\nimport {AngularProfiler} from './common_tools';\n\nconst PROFILER_GLOBAL_NAME = 'profiler';\n\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nexport function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T> {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nexport function disableDebugTools(): void {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\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 {ɵgetDOM as getDOM} from '@angular/common';\nimport {DebugElement, DebugNode, Predicate, Type} from '@angular/core';\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nexport class By {\n /**\n * Match all nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all(): Predicate<DebugNode> {\n return () => true;\n }\n\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector: string): Predicate<DebugElement> {\n return (debugElement) => {\n return debugElement.nativeElement != null\n ? elementMatches(debugElement.nativeElement, selector)\n : false;\n };\n }\n\n /**\n * Match nodes that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type: Type<any>): Predicate<DebugNode> {\n return (debugNode) => debugNode.providerTokens!.indexOf(type) !== -1;\n }\n}\n\nfunction elementMatches(n: any, selector: string): boolean {\n if (getDOM().isElementNode(n)) {\n return (\n (n.matches && n.matches(selector)) ||\n (n.msMatchesSelector && n.msMatchesSelector(selector)) ||\n (n.webkitMatchesSelector && n.webkitMatchesSelector(selector))\n );\n }\n\n return false;\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/// <reference types=\"hammerjs\" />\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n NgModule,\n Optional,\n ɵConsole as Console,\n} from '@angular/core';\n\nimport {EVENT_MANAGER_PLUGINS} from './event_manager';\nimport {EventManagerPlugin} from './event_manager_plugin';\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n 'doubletap': true,\n};\n\n/**\n * DI token for providing [HammerJS](https://hammerjs.github.io/) support to Angular.\n * @see {@link HammerGestureConfig}\n *\n * @ngModule HammerModule\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\nexport const HAMMER_GESTURE_CONFIG = new InjectionToken<HammerGestureConfig>(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'HammerGestureConfig' : '',\n);\n\n/**\n * Function that loads HammerJS, returning a promise that is resolved once HammerJs is loaded.\n *\n * @publicApi\n *\n * @deprecated The hammerjs integration is deprecated. Replace it by your own implementation.\n */\nexport type HammerLoader = () => Promise<void>;\n\n/**\n * Injection token used to provide a HammerLoader to Angular.\n *\n * @see {@link HammerLoader}\n *\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\nexport const HAMMER_LOADER = new InjectionToken<HammerLoader>(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'HammerLoader' : '',\n);\n\nexport interface HammerInstance {\n on(eventName: string, callback?: Function): void;\n off(eventName: string, callback?: Function): void;\n destroy?(): void;\n}\n\n/**\n * An injectable [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n *\n * @deprecated The HammerJS integration is deprecated. Replace it by your own implementation.\n */\n@Injectable()\nexport class HammerGestureConfig {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n events: string[] = [];\n\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n *\n */\n overrides: {[key: string]: Object} = {};\n\n /**\n * Properties whose default values can be overridden for a given event.\n * Different sets of properties apply to different events.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](https://hammerjs.github.io/).\n */\n options?: {\n cssProps?: any;\n domEvents?: boolean;\n enable?: boolean | ((manager: any) => boolean);\n preset?: any[];\n touchAction?: string;\n recognizers?: any[];\n inputClass?: any;\n inputTarget?: EventTarget;\n };\n\n /**\n * Creates a [HammerJS Manager](https://hammerjs.github.io/api/#hammermanager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element: HTMLElement): HammerInstance {\n const mc = new Hammer!(element, this.options);\n\n mc.get('pinch').set({enable: true});\n mc.get('rotate').set({enable: true});\n\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n\n return mc;\n }\n}\n\n/**\n * Event plugin that adds Hammer support to an application.\n *\n * @ngModule HammerModule\n */\n@Injectable()\nexport class HammerGesturesPlugin extends EventManagerPlugin {\n private _loaderPromise: Promise<void> | null = null;\n\n constructor(\n @Inject(DOCUMENT) doc: any,\n @Inject(HAMMER_GESTURE_CONFIG) private _config: HammerGestureConfig,\n private _injector: Injector,\n @Optional() @Inject(HAMMER_LOADER) private loader?: HammerLoader | null,\n ) {\n super(doc);\n }\n\n override supports(eventName: string): boolean {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n\n if (!(window as any).Hammer && !this.loader) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Get a `Console` through an injector to tree-shake the\n // class when it is unused in production.\n const _console = this._injector.get(Console);\n _console.warn(\n `The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +\n `loaded and no custom loader has been specified.`,\n );\n }\n return false;\n }\n\n return true;\n }\n\n override addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!(window as any).Hammer && this.loader) {\n this._loaderPromise = this._loaderPromise || zone.runOutsideAngular(() => this.loader!());\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister: Function = () => {\n cancelRegistration = true;\n };\n\n zone.runOutsideAngular(() =>\n this._loaderPromise!.then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!(window as any).Hammer) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.warn(`The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n }\n deregister = () => {};\n return;\n }\n\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to\n // removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n }).catch(() => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const _console = this._injector.get(Console);\n _console.warn(\n `The \"${eventName}\" event cannot be bound because the custom ` +\n `Hammer.JS loader failed.`,\n );\n }\n deregister = () => {};\n }),\n );\n\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => {\n deregister();\n };\n }\n\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function (eventObj: HammerInput) {\n zone.runGuarded(function () {\n handler(eventObj);\n });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n\n isCustomEvent(eventName: string): boolean {\n return this._config.events.indexOf(eventName) > -1;\n }\n}\n\n/**\n * Adds support for HammerJS.\n *\n * Import this module at the root of your application so that Angular can work with\n * HammerJS to detect gesture events.\n *\n * Note that applications still need to include the HammerJS script itself. This module\n * simply sets up the coordination layer between HammerJS and Angular's `EventManager`.\n *\n * @publicApi\n *\n * @deprecated The hammer integration is deprecated. Replace it by your own implementation.\n */\n@NgModule({\n providers: [\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Injector, [new Optional(), HAMMER_LOADER]],\n },\n {provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},\n ],\n})\nexport class HammerModule {}\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 {DOCUMENT} from '@angular/common';\nimport {\n forwardRef,\n Inject,\n Injectable,\n Sanitizer,\n SecurityContext,\n ɵ_sanitizeHtml as _sanitizeHtml,\n ɵ_sanitizeUrl as _sanitizeUrl,\n ɵallowSanitizationBypassAndThrow as allowSanitizationBypassOrThrow,\n ɵbypassSanitizationTrustHtml as bypassSanitizationTrustHtml,\n ɵbypassSanitizationTrustResourceUrl as bypassSanitizationTrustResourceUrl,\n ɵbypassSanitizationTrustScript as bypassSanitizationTrustScript,\n ɵbypassSanitizationTrustStyle as bypassSanitizationTrustStyle,\n ɵbypassSanitizationTrustUrl as bypassSanitizationTrustUrl,\n ɵBypassType as BypassType,\n ɵRuntimeError as RuntimeError,\n ɵunwrapSafeValue as unwrapSafeValue,\n ɵXSS_SECURITY_URL as XSS_SECURITY_URL,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../errors';\n\nexport {SecurityContext};\n\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * @publicApi\n */\nexport interface SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * @publicApi\n */\nexport interface SafeHtml extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * @publicApi\n */\nexport interface SafeStyle extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * @publicApi\n */\nexport interface SafeScript extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * @publicApi\n */\nexport interface SafeUrl extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * @publicApi\n */\nexport interface SafeResourceUrl extends SafeValue {}\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](https://g.co/ng/security).\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl)})\nexport abstract class DomSanitizer implements Sanitizer {\n /**\n * Gets a safe value from either a known safe value or a value with unknown safety.\n *\n * If the given value is already a `SafeValue`, this method returns the unwrapped value.\n * If the security context is HTML and the given value is a plain string, this method\n * sanitizes the string, removing any potentially unsafe content.\n * For any other security context, this method throws an error if provided\n * with a plain string.\n */\n abstract sanitize(context: SecurityContext, value: SafeValue | string | null): string | null;\n\n /**\n * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML\n * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will\n * leave safe HTML intact, so in most situations this method should not be used.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustHtml(value: string): SafeHtml;\n\n /**\n * Bypass security and trust the given value to be safe style value (CSS).\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustStyle(value: string): SafeStyle;\n\n /**\n * Bypass security and trust the given value to be safe JavaScript.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustScript(value: string): SafeScript;\n\n /**\n * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used\n * in hyperlinks or `<img src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustUrl(value: string): SafeUrl;\n\n /**\n * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may\n * be used to load executable code from, like `<script src>`, or `<iframe src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl;\n}\n\n@Injectable({providedIn: 'root'})\nexport class DomSanitizerImpl extends DomSanitizer {\n constructor(@Inject(DOCUMENT) private _doc: any) {\n super();\n }\n\n override sanitize(ctx: SecurityContext, value: SafeValue | string | null): string | null {\n if (value == null) return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value as string;\n case SecurityContext.HTML:\n if (allowSanitizationBypassOrThrow(value, BypassType.Html)) {\n return unwrapSafeValue(value);\n }\n return _sanitizeHtml(this._doc, String(value)).toString();\n case SecurityContext.STYLE:\n if (allowSanitizationBypassOrThrow(value, BypassType.Style)) {\n return unwrapSafeValue(value);\n }\n return value as string;\n case SecurityContext.SCRIPT:\n if (allowSanitizationBypassOrThrow(value, BypassType.Script)) {\n return unwrapSafeValue(value);\n }\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'unsafe value used in a script context',\n );\n case SecurityContext.URL:\n if (allowSanitizationBypassOrThrow(value, BypassType.Url)) {\n return unwrapSafeValue(value);\n }\n return _sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (allowSanitizationBypassOrThrow(value, BypassType.ResourceUrl)) {\n return unwrapSafeValue(value);\n }\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`,\n );\n default:\n throw new RuntimeError(\n RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n `Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`,\n );\n }\n }\n\n override bypassSecurityTrustHtml(value: string): SafeHtml {\n return bypassSanitizationTrustHtml(value);\n }\n override bypassSecurityTrustStyle(value: string): SafeStyle {\n return bypassSanitizationTrustStyle(value);\n }\n override bypassSecurityTrustScript(value: string): SafeScript {\n return bypassSanitizationTrustScript(value);\n }\n override bypassSecurityTrustUrl(value: string): SafeUrl {\n return bypassSanitizationTrustUrl(value);\n }\n override bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl {\n return bypassSanitizationTrustResourceUrl(value);\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 {HttpTransferCacheOptions, ɵwithHttpTransferCache} from '@angular/common/http';\nimport {\n ENVIRONMENT_INITIALIZER,\n EnvironmentProviders,\n inject,\n makeEnvironmentProviders,\n Provider,\n ɵConsole as Console,\n ɵRuntimeError as RuntimeError,\n ɵformatRuntimeError as formatRuntimeError,\n ɵwithDomHydration as withDomHydration,\n ɵwithEventReplay,\n ɵwithI18nSupport,\n ɵZONELESS_ENABLED as ZONELESS_ENABLED,\n ɵwithIncrementalHydration,\n ɵIS_ENABLED_BLOCKING_INITIAL_NAVIGATION as IS_ENABLED_BLOCKING_INITIAL_NAVIGATION,\n provideStabilityDebugging,\n} from '@angular/core';\nimport {RuntimeErrorCode} from './errors';\n\n/**\n * The list of features as an enum to uniquely type each `HydrationFeature`.\n * @see {@link HydrationFeature}\n *\n * @publicApi\n */\nexport enum HydrationFeatureKind {\n NoHttpTransferCache,\n HttpTransferCacheOptions,\n I18nSupport,\n EventReplay,\n IncrementalHydration,\n}\n\n/**\n * Helper type to represent a Hydration feature.\n *\n * @publicApi\n */\nexport interface HydrationFeature<FeatureKind extends HydrationFeatureKind> {\n ɵkind: FeatureKind;\n ɵproviders: Provider[];\n}\n\n/**\n * Helper function to create an object that represents a Hydration feature.\n */\nfunction hydrationFeature<FeatureKind extends HydrationFeatureKind>(\n ɵkind: FeatureKind,\n ɵproviders: Provider[] = [],\n ɵoptions: unknown = {},\n): HydrationFeature<FeatureKind> {\n return {ɵkind, ɵproviders};\n}\n\n/**\n * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the\n * server and other one on the browser.\n *\n * @see [Disabling Caching](guide/ssr#disabling-caching)\n *\n * @publicApi\n */\nexport function withNoHttpTransferCache(): HydrationFeature<HydrationFeatureKind.NoHttpTransferCache> {\n // This feature has no providers and acts as a flag that turns off\n // HTTP transfer cache (which otherwise is turned on by default).\n return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);\n}\n\n/**\n * The function accepts an object, which allows to configure cache parameters,\n * such as which headers should be included (no headers are included by default),\n * whether POST requests should be cached or a callback function to determine if a\n * particular request should be cached.\n *\n * @see [Configuring HTTP transfer cache options](guide/ssr#caching-data-when-using-httpclient)\n *\n * @publicApi\n */\nexport function withHttpTransferCacheOptions(\n options: HttpTransferCacheOptions,\n): HydrationFeature<HydrationFeatureKind.HttpTransferCacheOptions> {\n // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.\n return hydrationFeature(\n HydrationFeatureKind.HttpTransferCacheOptions,\n ɵwithHttpTransferCache(options),\n );\n}\n\n/**\n * Enables support for hydrating i18n blocks.\n *\n * @publicApi 20.0\n */\nexport function withI18nSupport(): HydrationFeature<HydrationFeatureKind.I18nSupport> {\n return hydrationFeature(HydrationFeatureKind.I18nSupport, ɵwithI18nSupport());\n}\n\n/**\n * Enables support for replaying user events (e.g. `click`s) that happened on a page\n * before hydration logic has completed. Once an application is hydrated, all captured\n * events are replayed and relevant event listeners are executed.\n *\n * @usageNotes\n *\n * Basic example of how you can enable event replay in your application when\n * `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withEventReplay())]\n * });\n * ```\n * @publicApi\n * @see {@link provideClientHydration}\n */\nexport function withEventReplay(): HydrationFeature<HydrationFeatureKind.EventReplay> {\n return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());\n}\n\n/**\n * Enables support for incremental hydration using the `hydrate` trigger syntax.\n *\n * @usageNotes\n *\n * Basic example of how you can enable incremental hydration in your application when\n * the `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration(withIncrementalHydration())]\n * });\n * ```\n * @publicApi 20.0\n * @see {@link provideClientHydration}\n */\nexport function withIncrementalHydration(): HydrationFeature<HydrationFeatureKind.IncrementalHydration> {\n return hydrationFeature(HydrationFeatureKind.IncrementalHydration, ɵwithIncrementalHydration());\n}\n\n/**\n * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function\n * that verifies whether enabledBlocking initial navigation is used in an application\n * and logs a warning in a console if it's not compatible with hydration.\n */\nfunction provideEnabledBlockingInitialNavigationDetector(): Provider[] {\n return [\n {\n provide: ENVIRONMENT_INITIALIZER,\n useValue: () => {\n const isEnabledBlockingInitialNavigation = inject(IS_ENABLED_BLOCKING_INITIAL_NAVIGATION, {\n optional: true,\n });\n\n if (isEnabledBlockingInitialNavigation) {\n const console = inject(Console);\n const message = formatRuntimeError(\n RuntimeErrorCode.HYDRATION_CONFLICTING_FEATURES,\n 'Configuration error: found both hydration and enabledBlocking initial navigation ' +\n 'in the same application, which is a contradiction.',\n );\n console.warn(message);\n }\n },\n multi: true,\n },\n ];\n}\n\n/**\n * Sets up providers necessary to enable hydration functionality for the application.\n *\n * By default, the function enables the recommended set of features for the optimal\n * performance for most of the applications. It includes the following features:\n *\n * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).\n * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and\n * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching\n * [here](guide/ssr#caching-data-when-using-httpclient).\n *\n * These functions allow you to disable some of the default features or enable new ones:\n *\n * * {@link withNoHttpTransferCache} to disable HTTP transfer cache\n * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options\n * * {@link withI18nSupport} to enable hydration support for i18n blocks\n * * {@link withEventReplay} to enable support for replaying user events\n *\n * @usageNotes\n *\n * Basic example of how you can enable hydration in your application when\n * `bootstrapApplication` function is used:\n * ```ts\n * bootstrapApplication(AppComponent, {\n * providers: [provideClientHydration()]\n * });\n * ```\n *\n * Alternatively if you are using NgModules, you would add `provideClientHydration`\n * to your root app module's provider list.\n * ```ts\n * @NgModule({\n * declarations: [RootCmp],\n * bootstrap: [RootCmp],\n * providers: [provideClientHydration()],\n * })\n * export class AppModule {}\n * ```\n *\n * @see {@link withNoHttpTransferCache}\n * @see {@link withHttpTransferCacheOptions}\n * @see {@link withI18nSupport}\n * @see {@link withEventReplay}\n *\n * @param features Optional features to configure additional hydration behaviors.\n * @returns A set of providers to enable hydration.\n *\n * @publicApi 17.0\n */\nexport function provideClientHydration(\n ...features: HydrationFeature<HydrationFeatureKind>[]\n): EnvironmentProviders {\n const providers: Provider[] = [];\n const featuresKind = new Set<HydrationFeatureKind>();\n\n for (const {ɵproviders, ɵkind} of features) {\n featuresKind.add(ɵkind);\n\n if (ɵproviders.length) {\n providers.push(ɵproviders);\n }\n }\n\n const hasHttpTransferCacheOptions = featuresKind.has(\n HydrationFeatureKind.HttpTransferCacheOptions,\n );\n\n if (\n typeof ngDevMode !== 'undefined' &&\n ngDevMode &&\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) &&\n hasHttpTransferCacheOptions\n ) {\n throw new RuntimeError(\n RuntimeErrorCode.HYDRATION_CONFLICTING_FEATURES,\n 'Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.',\n );\n }\n\n return makeEnvironmentProviders([\n typeof ngDevMode !== 'undefined' && ngDevMode\n ? provideEnabledBlockingInitialNavigationDetector()\n : [],\n typeof ngDevMode !== 'undefined' && ngDevMode ? provideStabilityDebugging() : [],\n withDomHydration(),\n featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions\n ? []\n : ɵwithHttpTransferCache({}),\n providers,\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\n/**\n * @module\n * @description\n * Entry point for all public APIs of the platform-browser package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = /* @__PURE__ */ new Version('21.1.1');\n"],"names":["Meta","_doc","_dom","constructor","getDOM","addTag","tag","forceCreation","_getOrCreateElement","addTags","tags","reduce","result","push","getTag","attrSelector","querySelector","getTags","list","querySelectorAll","slice","call","updateTag","selector","_parseSelector","meta","_setMetaElementAttributes","removeTag","removeTagElement","remove","elem","filter","_containsAttributes","undefined","element","createElement","head","getElementsByTagName","appendChild","el","Object","keys","forEach","prop","setAttribute","_getMetaKeyMap","attr","name","every","key","getAttribute","META_KEYS_MAP","ɵfac","i0","ɵɵngDeclareFactory","minVersion","version","ngImport","type","DOCUMENT","target","ɵɵFactoryTarget","Injectable","ɵprov","ɵɵngDeclareInjectable","decorators","providedIn","Inject","httpEquiv","Title","getTitle","title","setTitle","newTitle","exportNgVar","value","COMPILED","ng","global","ChangeDetectionPerfRecord","msPerTick","numTicks","AngularProfiler","appRef","ref","injector","get","ApplicationRef","timeChangeDetection","config","record","profileName","console","profile","start","performance","now","tick","end","profileEnd","log","toFixed","PROFILER_GLOBAL_NAME","enableDebugTools","disableDebugTools","By","all","css","debugElement","nativeElement","elementMatches","directive","debugNode","providerTokens","indexOf","n","isElementNode","matches","msMatchesSelector","webkitMatchesSelector","EVENT_NAMES","HAMMER_GESTURE_CONFIG","InjectionToken","ngDevMode","HAMMER_LOADER","HammerGestureConfig","events","overrides","options","buildHammer","mc","Hammer","set","enable","eventName","deps","HammerGesturesPlugin","EventManagerPlugin","_config","_injector","loader","_loaderPromise","doc","supports","hasOwnProperty","toLowerCase","isCustomEvent","window","_console","Console","warn","addEventListener","handler","zone","manager","getZone","runOutsideAngular","cancelRegistration","deregister","then","catch","callback","eventObj","runGuarded","on","off","destroy","token","optional","Optional","HammerModule","NgModule","ɵinj","ɵɵngDeclareInjector","providers","provide","EVENT_MANAGER_PLUGINS","useClass","multi","Injector","args","DomSanitizer","useExisting","forwardRef","DomSanitizerImpl","sanitize","ctx","SecurityContext","NONE","HTML","allowSanitizationBypassOrThrow","unwrapSafeValue","_sanitizeHtml","String","toString","STYLE","SCRIPT","RuntimeError","URL","_sanitizeUrl","RESOURCE_URL","XSS_SECURITY_URL","bypassSecurityTrustHtml","bypassSanitizationTrustHtml","bypassSecurityTrustStyle","bypassSanitizationTrustStyle","bypassSecurityTrustScript","bypassSanitizationTrustScript","bypassSecurityTrustUrl","bypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","bypassSanitizationTrustResourceUrl","HydrationFeatureKind","hydrationFeature","ɵkind","ɵproviders","ɵoptions","withNoHttpTransferCache","NoHttpTransferCache","withHttpTransferCacheOptions","HttpTransferCacheOptions","ɵwithHttpTransferCache","withI18nSupport","I18nSupport","ɵwithI18nSupport","withEventReplay","EventReplay","ɵwithEventReplay","withIncrementalHydration","IncrementalHydration","ɵwithIncrementalHydration","provideEnabledBlockingInitialNavigationDetector","ENVIRONMENT_INITIALIZER","useValue","isEnabledBlockingInitialNavigation","inject","IS_ENABLED_BLOCKING_INITIAL_NAVIGATION","message","formatRuntimeError","provideClientHydration","features","featuresKind","Set","add","length","hasHttpTransferCacheOptions","has","makeEnvironmentProviders","provideStabilityDebugging","withDomHydration","VERSION","Version"],"mappings":"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"}
|