{"version":3,"file":"ng-flex-layout-_private-utils-testing.mjs","sources":["../../../../projects/libs/flex-layout/_private-utils/testing/dom-tools.ts","../../../../projects/libs/flex-layout/_private-utils/testing/custom-matchers.ts","../../../../projects/libs/flex-layout/_private-utils/testing/custom-style-map-matchers.ts","../../../../projects/libs/flex-layout/_private-utils/testing/helpers.ts","../../../../projects/libs/flex-layout/_private-utils/testing/index.ts","../../../../projects/libs/flex-layout/_private-utils/testing/ng-flex-layout-_private-utils-testing.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.io/license\n */\n\n/**\n * Exported DOM accessor utility functions\n */\nexport const _dom = {\n    hasStyle,\n    getDistributedNodes,\n    getShadowRoot,\n    getText,\n    getStyle,\n    childNodes,\n    childNodesAsList,\n    hasClass,\n    hasAttribute,\n    getAttribute,\n    hasShadowRoot,\n    isCommentNode,\n    isElementNode,\n    isPresent,\n    isShadowRoot,\n    tagName,\n    lastElementChild\n};\n\n// ******************************************************************************************\n// These functions are cloned from\n//  *  @angular/platform-browser/src/browser/GenericBrowserDomAdapter\n// and are to be used ONLY internally in custom-matchers.ts and Unit Tests\n// ******************************************************************************************\n\nfunction getStyle(element: any, stylename: string): string {\n    return element.style[stylename];\n}\n\nfunction hasStyle(element: any,\n    styleName: string,\n    styleValue: string = '',\n    inlineOnly = true): boolean {\n    let value = getStyle(element, styleName) || '';\n    if (!value && !inlineOnly) {\n    // Search stylesheets\n        value = typeof getComputedStyle === 'function' &&\n      getComputedStyle(element).getPropertyValue(styleName) || '';\n    }\n    return styleValue ? value == styleValue : value.length > 0;\n}\n\nfunction getDistributedNodes(el: HTMLElement): Node[] {\n    return (<any>el).getDistributedNodes();\n}\n\nfunction getShadowRoot(el: HTMLElement): DocumentFragment {\n    return (<any>el).shadowRoot;\n}\n\nfunction getText(el: Node): string {\n    return el.textContent || '';\n}\n\nfunction childNodesAsList(el: Node): any[] {\n    const list = el.childNodes;\n    const res = new Array(list.length);\n    for (let i = 0; i < list.length; i++) {\n        res[i] = list[i];\n    }\n    return res;\n}\n\nfunction hasClass(element: any, className: string): boolean {\n    return element.classList.contains(className);\n}\n\nfunction hasAttribute(element: any, attributeName: string): boolean {\n    return element.hasAttribute(attributeName);\n}\n\nfunction getAttribute(element: any, attributeName: string): string {\n    return element.getAttribute(attributeName);\n}\n\nfunction childNodes(el: any): Node[] {\n    return el.childNodes;\n}\n\nfunction hasShadowRoot(node: any): boolean {\n    return isPresent(node.shadowRoot) && node instanceof HTMLElement;\n}\n\nfunction isCommentNode(node: Node): boolean {\n    return node.nodeType === Node.COMMENT_NODE;\n}\n\nfunction isElementNode(node: Node): boolean {\n    return node.nodeType === Node.ELEMENT_NODE;\n}\n\nfunction isShadowRoot(node: any): boolean {\n    return node instanceof DocumentFragment;\n}\n\nfunction isPresent(obj: any): boolean {\n    return obj != null;\n}\n\nfunction tagName(element: any): string {\n    return element.tagName;\n}\n\n// ******************************************************************************************\n// These functions are part of the DOM API\n// and are to be used ONLY internally in custom-matchers.ts and Unit Tests\n// ******************************************************************************************\n\nfunction lastElementChild(element: any): Node|null {\n    return element.lastElementChild;\n}\n\n","declare let global: any;\nconst _global = <any>(typeof window === 'undefined' ? global : window);\n\nimport { _dom as _ } from './dom-tools';\n\nimport { applyCssPrefixes, extendObject, } from 'ng-flex-layout/_private-utils';\nimport { StyleUtils } from 'ng-flex-layout/core';\nimport { expect } from 'vitest';\n\nexpect.extend({\n    toHaveText(received: any, expectedText: string) {\n        const actualText = elementText(received);\n        const pass = actualText === expectedText;\n        return {\n            pass,\n            message: () =>\n                `Expected element text ${actualText} to ${pass ? 'not ' : ''}equal ${expectedText}`,\n        };\n    },\n\n    toHaveCssClass(received: any, className: string) {\n        const pass = _.hasClass(received, className);\n        return {\n            pass,\n            message: () =>\n                `Expected element ${received.outerHTML} ${pass ? 'not ' : ''}to have class \"${className}\"`,\n        };\n    },\n\n\n    toHaveMap(received: { [key: string]: string }, expected: { [key: string]: string }) {\n        const allPassed = Object.entries(expected).every(([k, v]) => received[k] === v);\n        return {\n            pass: allPassed,\n            message: () =>\n                `Expected map ${JSON.stringify(received)} ${allPassed ? 'not ' : ''}to match ${JSON.stringify(expected)}`,\n        };\n    },\n\n    toHaveAttributes(received: HTMLElement, expected: { [key: string]: string }) {\n        const allPassed = Object.entries(expected).every(\n            ([name, value]) => _.hasAttribute(received, name) && _.getAttribute(received, name) === value\n        );\n        return {\n            pass: allPassed,\n            message: () =>\n                `Expected element ${received.outerHTML} ${allPassed ? 'not ' : ''}to have attributes ${JSON.stringify(expected)}`,\n        };\n    },\n\n    toHaveStyle(received: HTMLElement, styles: { [k: string]: string } | string, styler: StyleUtils) {\n        return buildCompareStyleFunction(true)(received, styles, styler);\n    },\n\n    toHaveCSS(received: HTMLElement, styles: { [k: string]: string } | string, styler: StyleUtils) {\n        return buildCompareStyleFunction(false)(received, styles, styler);\n    },\n});\n\nfunction buildCompareStyleFunction(inlineOnly = true) {\n    return function (\n        actual: any,\n        styles: { [k: string]: string } | string,\n        styler: StyleUtils\n    ) {\n        const found = {};\n        const styleMap: { [k: string]: string } = {};\n\n        if (typeof styles === 'string') {\n            styleMap[styles] = '';\n        } else {\n            Object.assign(styleMap, styles);\n        }\n\n        let allPassed = Object.keys(styleMap).length !== 0;\n        Object.keys(styleMap).forEach(prop => {\n            const { elHasStyle, current } = hasPrefixedStyles(\n                actual,\n                prop,\n                styleMap[prop],\n                inlineOnly,\n                styler\n            );\n            allPassed = allPassed && elHasStyle;\n            if (!elHasStyle) {\n                extendObject(found, current);\n            }\n        });\n\n        return {\n            pass: allPassed,\n            message: () => {\n                const expectedValueStr =\n                    typeof styles === 'string'\n                        ? styleMap\n                        : JSON.stringify(styleMap, null, 2);\n                const foundValueStr = inlineOnly\n                    ? actual.outerHTML\n                    : JSON.stringify(found);\n\n                return `Expected ${foundValueStr}${!allPassed ? '' : ' not'} to contain the CSS ${typeof styles === 'string' ? 'property' : 'styles'\n                } '${expectedValueStr}'`;\n            }\n        };\n    };\n}\n\n\n/**\n * Validate presence of requested style or use fallback\n * to possible `prefixed` styles. Useful when some browsers\n * (Safari, IE, etc) will use prefixed style instead of defaults.\n */\nfunction hasPrefixedStyles(actual: HTMLElement,\n    key: string,\n    value: string,\n    inlineOnly: boolean,\n    styler: StyleUtils) {\n    const current = {};\n\n    if (value === '*') {\n        return { elHasStyle: styler.lookupStyle(actual, key, inlineOnly) !== '', current };\n    }\n\n    value = value.trim();\n    let elHasStyle = styler.lookupStyle(actual, key, inlineOnly) === value;\n    if (!elHasStyle) {\n        let prefixedStyles = applyCssPrefixes({ [key]: value });\n        Object.keys(prefixedStyles).forEach(prop => {\n            // Search for optional prefixed values\n            elHasStyle = elHasStyle ||\n                styler.lookupStyle(actual, prop, inlineOnly) === prefixedStyles[prop];\n        });\n    }\n    // Return BOTH confirmation and current computed key values (if confirmation == false)\n    return { elHasStyle, current };\n}\n\nfunction elementText(n: any): string {\n    const hasNodes = (m: any) => {\n        const children = _.childNodes(m);\n        return children && children['length'];\n    };\n\n    if (n instanceof Array) {\n        return n.map(elementText).join('');\n    }\n\n    if (_.isCommentNode(n)) {\n        return '';\n    }\n\n    if (_.isElementNode(n) && _.tagName(n) == 'CONTENT') {\n        return elementText(Array.prototype.slice.apply(_.getDistributedNodes(n)));\n    }\n\n    if (_.hasShadowRoot(n)) {\n        return elementText(_.childNodesAsList(_.getShadowRoot(n)));\n    }\n\n    if (hasNodes(n)) {\n        return elementText(_.childNodesAsList(n));\n    }\n\n    return _.getText(n);\n}\n\n","import { expect } from 'vitest';\n\nfunction unwrapNativeElement(value: any): HTMLElement {\n    return (value && typeof value === 'object' && 'nativeElement' in value) ? (value as any).nativeElement : value;\n}\n\nexpect.extend({\n    toHaveMap(received: Record<string, string>, expected: Record<string, string>) {\n        const pass = Object.entries(expected).every(([k, v]) => received[k] === v);\n        return {\n            pass,\n            message: () =>\n                `Expected map ${JSON.stringify(received)} ${pass ? 'not ' : ''}to match ${JSON.stringify(expected)}`,\n        };\n    },\n    toHaveCssClass(received: any, className: string) {\n        const el = unwrapNativeElement(received);\n        const hasClass = el.classList.contains(className);\n        return {\n            pass: hasClass,\n            message: () =>\n                `Expected element ${el.outerHTML} ${hasClass ? 'not ' : ''}to have class '${className}'`\n        };\n    },\n    toHaveAttributes(received: any, expected: Record<string, string>) {\n        const el = unwrapNativeElement(received);\n        const allMatch = Object.entries(expected).every(\n            ([key, value]) => el.getAttribute(key) === value\n        );\n        return {\n            pass: allMatch,\n            message: () =>\n                `Expected element ${el.outerHTML} ${allMatch ? 'not ' : ''}to have attributes ${JSON.stringify(expected)}`\n        };\n    }\n});\n\ndeclare module 'vitest' {\n    export interface Assertion<T = any> {\n        toHaveMap(expected: Record<string, string>): void\n    }\n    export interface AsymmetricMatchersContaining {\n        toHaveMap(expected: Record<string, string>): void\n    }\n    export interface Assertion<T = any> {\n        toHaveCssClass(expected: string): void\n    }\n    export interface AsymmetricMatchersContaining {\n        toHaveCssClass(expected: string): void\n    }\n    export interface Assertion<T = any> {\n        toHaveAttributes(expected: Record<string, string>): void\n    }\n    export interface AsymmetricMatchersContaining {\n        toHaveAttributes(expected: Record<string, string>): void\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    Component,\n    EnvironmentInjector,\n    Provider,\n    createComponent,\n    createEnvironmentInjector,\n    getDebugNode,\n} from '@angular/core';\nimport type { ComponentRef, DebugElement } from '@angular/core';\nimport { TestBed } from '@angular/core/testing';\nimport { FlexLayoutModule } from 'ng-flex-layout';\nimport { BreakPointRegistry, MediaMarshaller, MediaObserver, StyleUtils } from 'ng-flex-layout/core';\nimport { expect } from 'vitest';\n\ntype ComponentFactory = () => any;\n\ntype FixtureLike = {\n    componentInstance?: any\n    debugElement?: DebugElement\n    nativeElement?: any\n    location?: { nativeElement: any }\n    injector?: any\n    changeDetectorRef?: { detectChanges: () => void }\n    detectChanges?: () => void\n    [key: string]: any\n};\n\nfunction getHostElement(fixture: any): any {\n    return fixture?.location?.nativeElement ?? fixture?.nativeElement ?? fixture?.componentRef?.location?.nativeElement;\n}\n\nfunction getInstance(fixture: any): any {\n    return fixture?.componentInstance ?? fixture?.instance ?? fixture?.componentRef?.instance;\n}\n\nfunction detectChanges(fixture: any): void {\n    const hostEl = fixture?.location?.nativeElement ?? fixture?.nativeElement ?? fixture?.componentRef?.location?.nativeElement;\n    if (hostEl) {\n        const wrapper = hostEl.querySelector('#testing-wrapper-node');\n        if (wrapper) {\n            wrapper.dispatchEvent(new CustomEvent('change'));\n        }\n    }\n\n    if (typeof fixture?.detectChanges === 'function') {\n        fixture.detectChanges();\n        return;\n    }\n    if (fixture?.changeDetectorRef?.detectChanges) {\n        fixture.changeDetectorRef.detectChanges();\n        return;\n    }\n    if (fixture?.componentRef?.changeDetectorRef?.detectChanges) {\n        fixture.componentRef.changeDetectorRef.detectChanges();\n    }\n}\n\nfunction asFixtureLike<T>(ref: ComponentRef<T>): ComponentRef<T> & FixtureLike {\n    const fixture = ref as ComponentRef<T> & FixtureLike;\n\n    fixture.componentInstance ??= ref.instance;\n    fixture.location ??= ref.location as any;\n    fixture.injector ??= ref.injector as any;\n    fixture.changeDetectorRef ??= ref.changeDetectorRef as any;\n    fixture.nativeElement ??= ref.location.nativeElement;\n    fixture.detectChanges ??= () => {\n        const hostEl = fixture.nativeElement ?? fixture.location?.nativeElement;\n        if (hostEl) {\n            const wrapper = hostEl.querySelector('#testing-wrapper-node');\n            if (wrapper) {\n                wrapper.dispatchEvent(new CustomEvent('change'));\n            }\n        }\n        ref.changeDetectorRef.detectChanges();\n    };\n\n    const debugNode = getDebugNode(ref.location.nativeElement);\n    if (debugNode && (debugNode as any).children) {\n        const wrapper = (debugNode as any).children.find((c: any) => c.nativeElement?.id === 'testing-wrapper-node');\n        if (wrapper) {\n            Object.defineProperty(debugNode, 'children', {\n                get: () => wrapper.children\n            });\n            Object.defineProperty(debugNode, 'childNodes', {\n                get: () => wrapper.childNodes\n            });\n        }\n        fixture.debugElement ??= debugNode as DebugElement;\n    }\n\n    return fixture;\n}\n\ntype TrackedRef = {\n    componentRef: ComponentRef<any>\n    envInjector?: EnvironmentInjector\n};\n\nconst TRACKED_REFS: TrackedRef[] = [];\nlet cleanupRegistered = false;\n\nfunction registerCleanup() {\n    if (cleanupRegistered) {\n        return;\n    }\n    cleanupRegistered = true;\n\n    const afterEachHook = (globalThis as any).afterEach as undefined | ((fn: () => void) => void);\n    if (typeof afterEachHook !== 'function') {\n        return;\n    }\n\n    afterEachHook(() => {\n        while (TRACKED_REFS.length) {\n            const tracked = TRACKED_REFS.pop()!;\n            try {\n                tracked.componentRef.destroy();\n            } catch {\n                // ignore\n            }\n            if (tracked.envInjector && tracked.envInjector !== (tracked.componentRef.injector as any)) {\n                try {\n                    tracked.envInjector.destroy();\n                } catch {\n                    // ignore\n                }\n            }\n        }\n    });\n}\n\nexport function makeCreateTestComponent(\n    baseOrProviders: ComponentFactory | Provider[] = [],\n    defaultProviders: Provider[] = []\n) {\n    const hasBase = typeof baseOrProviders === 'function';\n    const BaseComponent = hasBase ? (baseOrProviders as ComponentFactory)() : class { };\n    const providers = [\n        ...(hasBase ? [] : (baseOrProviders as Provider[])),\n        ...defaultProviders\n    ];\n\n    return function createTestComponent(\n        templateStr: string,\n        styles: string[] = [],\n        additionalProviders: Provider[] = [],\n        additionalImports: any[] = []\n    ) {\n        registerCleanup();\n\n        const DynamicTestComponent = Component({\n            selector: 'test-wrapper',\n            standalone: true,\n            template: `<div (change)=\"0\" id=\"testing-wrapper-node\" style=\"display:contents\">${templateStr}</div>`,\n            styles,\n            imports: [CommonModule, FlexLayoutModule, ...additionalImports]\n        })(class extends BaseComponent { });\n\n        const parentInjector = TestBed.inject(EnvironmentInjector);\n        const isolatedFlexProviders: Provider[] = [\n            { provide: BreakPointRegistry, useClass: BreakPointRegistry },\n            { provide: MediaMarshaller, useClass: MediaMarshaller },\n            { provide: MediaObserver, useClass: MediaObserver },\n        ];\n\n        const finalProviders = [...isolatedFlexProviders, ...providers, ...additionalProviders];\n        const envInjector = createEnvironmentInjector(finalProviders, parentInjector);\n\n        const componentRef = createComponent(DynamicTestComponent, { environmentInjector: envInjector });\n        TRACKED_REFS.push({ componentRef, envInjector });\n\n        const fixture = asFixtureLike(componentRef);\n        fixture.detectChanges?.();\n        return fixture;\n    };\n}\n\nexport function expectNativeEl(fixture: any, instanceOptions?: any): any {\n    Object.assign(getInstance(fixture) ?? {}, instanceOptions || {});\n    detectChanges(fixture);\n    const host = getHostElement(fixture);\n    const wrapper = host.querySelector('#testing-wrapper-node');\n    const target = wrapper ? wrapper.children[0] : host.children[0];\n    return expect(target);\n}\n\nexport function expectEl(el: HTMLElement): any {\n    const native = (el as any)?.nativeElement ?? el;\n    return expect(native);\n}\n\nexport function queryFor(fixture: any, selector: string): HTMLElement[] {\n    const host = getHostElement(fixture);\n    const wrapper = host.querySelector('#testing-wrapper-node');\n    const target = wrapper ? wrapper : host;\n    const nodes = Array.from(target.querySelectorAll(selector));\n    return nodes.map((node) => (getDebugNode(node as any) as any) ?? node) as any;\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.io/license\n */\n\nexport * from './custom-matchers';\nexport * from './custom-style-map-matchers';\nexport * from './dom-tools';\nexport * from './helpers';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["_"],"mappings":"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"}