blob: b0767a085a2020a89dd8c9cefd70e9e5db13eb73 [file] [log] [blame]
{"version":3,"file":"extended.js","sources":["../../../src/lib/extended/module.ts","../../../src/lib/extended/style/style.ts","../../../src/lib/extended/style/style-transforms.ts","../../../src/lib/extended/show-hide/show-hide.ts","../../../src/lib/extended/class/class.ts","../../../src/lib/extended/img-src/img-src.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 */\nimport {NgModule} from '@angular/core';\nimport {CoreModule} from '@angular/flex-layout/core';\n\nimport {DefaultImgSrcDirective} from './img-src/img-src';\nimport {DefaultClassDirective} from './class/class';\nimport {DefaultShowHideDirective} from './show-hide/show-hide';\nimport {DefaultStyleDirective} from './style/style';\n\n\nconst ALL_DIRECTIVES = [\n DefaultShowHideDirective,\n DefaultClassDirective,\n DefaultStyleDirective,\n DefaultImgSrcDirective,\n];\n\n/**\n * *****************************************************************\n * Define module for the Extended API\n * *****************************************************************\n */\n\n@NgModule({\n imports: [CoreModule],\n declarations: [...ALL_DIRECTIVES],\n exports: [...ALL_DIRECTIVES]\n})\nexport class ExtendedModule {\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 */\nimport {\n Directive,\n DoCheck,\n ElementRef,\n Inject,\n KeyValueDiffers,\n Optional,\n PLATFORM_ID,\n Renderer2,\n SecurityContext,\n Self,\n} from '@angular/core';\nimport {isPlatformServer, NgStyle} from '@angular/common';\nimport {DomSanitizer} from '@angular/platform-browser';\nimport {\n BaseDirective2,\n StyleUtils,\n MediaMarshaller,\n SERVER_TOKEN,\n} from '@angular/flex-layout/core';\n\nimport {\n NgStyleRawList,\n NgStyleType,\n NgStyleSanitizer,\n buildRawList,\n getType,\n buildMapFromSet,\n NgStyleMap,\n NgStyleKeyValue,\n stringToKeyValue,\n keyValuesToMap,\n} from './style-transforms';\n\n@Directive()\nexport class StyleDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngStyle';\n protected fallbackStyles: NgStyleMap;\n protected isServer: boolean;\n\n constructor(elementRef: ElementRef,\n styler: StyleUtils,\n marshal: MediaMarshaller,\n protected sanitizer: DomSanitizer,\n differs: KeyValueDiffers,\n renderer2: Renderer2,\n @Optional() @Self() private readonly ngStyleInstance: NgStyle,\n @Inject(SERVER_TOKEN) serverLoaded: boolean,\n @Inject(PLATFORM_ID) platformId: Object) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngStyleInstance) {\n // Create an instance NgStyle Directive instance only if `ngStyle=\"\"` has NOT been\n // defined on the same host element; since the responsive variations may be defined...\n this.ngStyleInstance = new NgStyle(elementRef, differs, renderer2);\n }\n this.init();\n const styles = this.nativeElement.getAttribute('style') || '';\n this.fallbackStyles = this.buildStyleMap(styles);\n this.isServer = serverLoaded && isPlatformServer(platformId);\n }\n\n /** Add generated styles */\n protected updateWithValue(value: any) {\n const styles = this.buildStyleMap(value);\n this.ngStyleInstance.ngStyle = {...this.fallbackStyles, ...styles};\n if (this.isServer) {\n this.applyStyleToElement(styles);\n }\n this.ngStyleInstance.ngDoCheck();\n }\n\n /** Remove generated styles */\n protected clearStyles() {\n this.ngStyleInstance.ngStyle = this.fallbackStyles;\n this.ngStyleInstance.ngDoCheck();\n }\n\n /**\n * Convert raw strings to ngStyleMap; which is required by ngStyle\n * NOTE: Raw string key-value pairs MUST be delimited by `;`\n * Comma-delimiters are not supported due to complexities of\n * possible style values such as `rgba(x,x,x,x)` and others\n */\n protected buildStyleMap(styles: NgStyleType): NgStyleMap {\n // Always safe-guard (aka sanitize) style property values\n const sanitizer: NgStyleSanitizer = (val: any) =>\n this.sanitizer.sanitize(SecurityContext.STYLE, val) || '';\n if (styles) {\n switch (getType(styles)) {\n case 'string': return buildMapFromList(buildRawList(styles),\n sanitizer);\n case 'array' : return buildMapFromList(styles as NgStyleRawList, sanitizer);\n case 'set' : return buildMapFromSet(styles, sanitizer);\n default : return buildMapFromSet(styles, sanitizer);\n }\n }\n\n return {};\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /** For ChangeDetectionStrategy.onPush and ngOnChanges() updates */\n ngDoCheck() {\n this.ngStyleInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngStyle',\n 'ngStyle.xs', 'ngStyle.sm', 'ngStyle.md', 'ngStyle.lg', 'ngStyle.xl',\n 'ngStyle.lt-sm', 'ngStyle.lt-md', 'ngStyle.lt-lg', 'ngStyle.lt-xl',\n 'ngStyle.gt-xs', 'ngStyle.gt-sm', 'ngStyle.gt-md', 'ngStyle.gt-lg'\n];\n\nconst selector = `\n [ngStyle],\n [ngStyle.xs], [ngStyle.sm], [ngStyle.md], [ngStyle.lg], [ngStyle.xl],\n [ngStyle.lt-sm], [ngStyle.lt-md], [ngStyle.lt-lg], [ngStyle.lt-xl],\n [ngStyle.gt-xs], [ngStyle.gt-sm], [ngStyle.gt-md], [ngStyle.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngStyle.\n *\n */\n@Directive({selector, inputs})\nexport class DefaultStyleDirective extends StyleDirective implements DoCheck {\n protected inputs = inputs;\n}\n\n/** Build a styles map from a list of styles, while sanitizing bad values first */\nfunction buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\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 type NgStyleRawList = string[];\nexport type NgStyleMap = {[klass: string]: string};\n// NgStyle selectors accept NgStyleType values\nexport type NgStyleType = string | Set<string> | NgStyleRawList | NgStyleMap;\n\n/**\n * Callback function for SecurityContext.STYLE sanitization\n */\nexport type NgStyleSanitizer = (val: any) => string;\n\n/** NgStyle allowed inputs */\nexport class NgStyleKeyValue {\n constructor(public key: string, public value: string, noQuotes = true) {\n this.key = noQuotes ? key.replace(/['\"]/g, '').trim() : key.trim();\n\n this.value = noQuotes ? value.replace(/['\"]/g, '').trim() : value.trim();\n this.value = this.value.replace(/;/, '');\n }\n}\n\nexport function getType(target: any): string {\n let what = typeof target;\n if (what === 'object') {\n return (target.constructor === Array) ? 'array' :\n (target.constructor === Set) ? 'set' : 'object';\n }\n return what;\n}\n\n/**\n * Split string of key:value pairs into Array of k-v pairs\n * e.g. 'key:value; key:value; key:value;' -> ['key:value',...]\n */\nexport function buildRawList(source: any, delimiter = ';'): NgStyleRawList {\n return String(source)\n .trim()\n .split(delimiter)\n .map((val: string) => val.trim())\n .filter(val => val !== '');\n}\n\n/** Convert array of key:value strings to a iterable map object */\nexport function buildMapFromList(styles: NgStyleRawList, sanitize?: NgStyleSanitizer): NgStyleMap {\n const sanitizeValue = (it: NgStyleKeyValue) => {\n if (sanitize) {\n it.value = sanitize(it.value);\n }\n return it;\n };\n\n return styles\n .map(stringToKeyValue)\n .filter(entry => !!entry)\n .map(sanitizeValue)\n .reduce(keyValuesToMap, {} as NgStyleMap);\n}\n\n/** Convert Set<string> or raw Object to an iterable NgStyleMap */\nexport function buildMapFromSet(source: NgStyleType, sanitize?: NgStyleSanitizer): NgStyleMap {\n let list: string[] = [];\n if (getType(source) === 'set') {\n (source as Set<string>).forEach(entry => list.push(entry));\n } else {\n Object.keys(source).forEach((key: string) => {\n list.push(`${key}:${(source as NgStyleMap)[key]}`);\n });\n }\n return buildMapFromList(list, sanitize);\n}\n\n\n/** Convert 'key:value' -> [key, value] */\nexport function stringToKeyValue(it: string): NgStyleKeyValue {\n const [key, ...vals] = it.split(':');\n return new NgStyleKeyValue(key, vals.join(':'));\n}\n\n/** Convert [ [key,value] ] -> { key : value } */\nexport function keyValuesToMap(map: NgStyleMap, entry: NgStyleKeyValue): NgStyleMap {\n if (!!entry.key) {\n map[entry.key] = entry.value;\n }\n return map;\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 */\nimport {\n Directive,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Inject,\n PLATFORM_ID,\n Injectable,\n AfterViewInit,\n} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n BaseDirective2,\n LAYOUT_CONFIG,\n LayoutConfigOptions,\n MediaMarshaller,\n SERVER_TOKEN,\n StyleUtils,\n StyleBuilder,\n} from '@angular/flex-layout/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {takeUntil} from 'rxjs/operators';\n\nexport interface ShowHideParent {\n display: string;\n isServer: boolean;\n}\n\n@Injectable({providedIn: 'root'})\nexport class ShowHideStyleBuilder extends StyleBuilder {\n buildStyles(show: string, parent: ShowHideParent) {\n const shouldShow = show === 'true';\n return {'display': shouldShow ? parent.display || (parent.isServer ? 'initial' : '') : 'none'};\n }\n}\n\n@Directive()\nexport class ShowHideDirective extends BaseDirective2 implements AfterViewInit, OnChanges {\n protected DIRECTIVE_KEY = 'show-hide';\n\n /** Original DOM Element CSS display style */\n protected display: string = '';\n protected hasLayout = false;\n protected hasFlexChild = false;\n\n constructor(elementRef: ElementRef,\n styleBuilder: ShowHideStyleBuilder,\n styler: StyleUtils,\n marshal: MediaMarshaller,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n }\n\n // *********************************************\n // Lifecycle Methods\n // *********************************************\n\n ngAfterViewInit() {\n this.trackExtraTriggers();\n\n const children = Array.from(this.nativeElement.children);\n for (let i = 0; i < children.length; i++) {\n if (this.marshal.hasValue(children[i] as HTMLElement, 'flex')) {\n this.hasFlexChild = true;\n break;\n }\n }\n\n if (DISPLAY_MAP.has(this.nativeElement)) {\n this.display = DISPLAY_MAP.get(this.nativeElement)!;\n } else {\n this.display = this.getDisplayStyle();\n DISPLAY_MAP.set(this.nativeElement, this.display);\n }\n\n this.init();\n // set the default to show unless explicitly overridden\n const defaultValue = this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY, '');\n if (defaultValue === undefined || defaultValue === '') {\n this.setValue(true, '');\n } else {\n this.triggerUpdate();\n }\n }\n\n /**\n * On changes to any @Input properties...\n * Default to use the non-responsive Input value ('fxShow')\n * Then conditionally override with the mq-activated Input's current value\n */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const inputKey = key.split('.');\n const bp = inputKey.slice(1).join('.');\n const inputValue = changes[key].currentValue;\n let shouldShow = inputValue !== '' ?\n inputValue !== 0 ? coerceBooleanProperty(inputValue) : false\n : true;\n if (inputKey[0] === 'fxHide') {\n shouldShow = !shouldShow;\n }\n this.setValue(shouldShow, bp);\n }\n });\n }\n\n // *********************************************\n // Protected methods\n // *********************************************\n\n /**\n * Watch for these extra triggers to update fxShow, fxHide stylings\n */\n protected trackExtraTriggers() {\n this.hasLayout = this.marshal.hasValue(this.nativeElement, 'layout');\n\n ['layout', 'layout-align'].forEach(key => {\n this.marshal\n .trackValue(this.nativeElement, key)\n .pipe(takeUntil(this.destroySubject))\n .subscribe(this.triggerUpdate.bind(this));\n });\n }\n\n /**\n * Override accessor to the current HTMLElement's `display` style\n * Note: Show/Hide will not change the display to 'flex' but will set it to 'block'\n * unless it was already explicitly specified inline or in a CSS stylesheet.\n */\n protected getDisplayStyle(): string {\n return (this.hasLayout || (this.hasFlexChild && this.layoutConfig.addFlexToParent)) ?\n 'flex' : this.styler.lookupStyle(this.nativeElement, 'display', true);\n }\n\n /** Validate the visibility value and then update the host's inline display style */\n protected updateWithValue(value: boolean | string = true) {\n if (value === '') {\n return;\n }\n const isServer = isPlatformServer(this.platformId);\n this.addStyles(value ? 'true' : 'false', {display: this.display, isServer});\n if (isServer && this.serverModuleLoaded) {\n this.nativeElement.style.setProperty('display', '');\n }\n this.marshal.triggerUpdate(this.parentElement!, 'layout-gap');\n }\n}\n\nconst DISPLAY_MAP: WeakMap<HTMLElement, string> = new WeakMap();\n\nconst inputs = [\n 'fxShow', 'fxShow.print',\n 'fxShow.xs', 'fxShow.sm', 'fxShow.md', 'fxShow.lg', 'fxShow.xl',\n 'fxShow.lt-sm', 'fxShow.lt-md', 'fxShow.lt-lg', 'fxShow.lt-xl',\n 'fxShow.gt-xs', 'fxShow.gt-sm', 'fxShow.gt-md', 'fxShow.gt-lg',\n 'fxHide', 'fxHide.print',\n 'fxHide.xs', 'fxHide.sm', 'fxHide.md', 'fxHide.lg', 'fxHide.xl',\n 'fxHide.lt-sm', 'fxHide.lt-md', 'fxHide.lt-lg', 'fxHide.lt-xl',\n 'fxHide.gt-xs', 'fxHide.gt-sm', 'fxHide.gt-md', 'fxHide.gt-lg'\n];\n\nconst selector = `\n [fxShow], [fxShow.print],\n [fxShow.xs], [fxShow.sm], [fxShow.md], [fxShow.lg], [fxShow.xl],\n [fxShow.lt-sm], [fxShow.lt-md], [fxShow.lt-lg], [fxShow.lt-xl],\n [fxShow.gt-xs], [fxShow.gt-sm], [fxShow.gt-md], [fxShow.gt-lg],\n [fxHide], [fxHide.print],\n [fxHide.xs], [fxHide.sm], [fxHide.md], [fxHide.lg], [fxHide.xl],\n [fxHide.lt-sm], [fxHide.lt-md], [fxHide.lt-lg], [fxHide.lt-xl],\n [fxHide.gt-xs], [fxHide.gt-sm], [fxHide.gt-md], [fxHide.gt-lg]\n`;\n\n/**\n * 'show' Layout API directive\n */\n@Directive({selector, inputs})\nexport class DefaultShowHideDirective extends ShowHideDirective {\n protected inputs = 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.io/license\n */\nimport {\n Directive,\n DoCheck,\n ElementRef,\n Input,\n IterableDiffers,\n KeyValueDiffers,\n Optional,\n Renderer2,\n Self,\n} from '@angular/core';\nimport {NgClass} from '@angular/common';\nimport {BaseDirective2, StyleUtils, MediaMarshaller} from '@angular/flex-layout/core';\n\n@Directive()\nexport class ClassDirective extends BaseDirective2 implements DoCheck {\n\n protected DIRECTIVE_KEY = 'ngClass';\n\n /**\n * Capture class assignments so we cache the default classes\n * which are merged with activated styles and used as fallbacks.\n */\n @Input('class')\n set klass(val: string) {\n this.ngClassInstance.klass = val;\n this.setValue(val, '');\n }\n\n constructor(elementRef: ElementRef,\n styler: StyleUtils,\n marshal: MediaMarshaller,\n iterableDiffers: IterableDiffers,\n keyValueDiffers: KeyValueDiffers,\n renderer2: Renderer2,\n @Optional() @Self() protected readonly ngClassInstance: NgClass) {\n super(elementRef, null!, styler, marshal);\n if (!this.ngClassInstance) {\n // Create an instance NgClass Directive instance only if `ngClass=\"\"` has NOT been defined on\n // the same host element; since the responsive variations may be defined...\n this.ngClassInstance = new NgClass(iterableDiffers, keyValueDiffers, elementRef, renderer2);\n }\n this.init();\n this.setValue('', '');\n }\n\n protected updateWithValue(value: any) {\n this.ngClassInstance.ngClass = value;\n this.ngClassInstance.ngDoCheck();\n }\n\n // ******************************************************************\n // Lifecycle Hooks\n // ******************************************************************\n\n /**\n * For ChangeDetectionStrategy.onPush and ngOnChanges() updates\n */\n ngDoCheck() {\n this.ngClassInstance.ngDoCheck();\n }\n}\n\nconst inputs = [\n 'ngClass', 'ngClass.xs', 'ngClass.sm', 'ngClass.md', 'ngClass.lg', 'ngClass.xl',\n 'ngClass.lt-sm', 'ngClass.lt-md', 'ngClass.lt-lg', 'ngClass.lt-xl',\n 'ngClass.gt-xs', 'ngClass.gt-sm', 'ngClass.gt-md', 'ngClass.gt-lg'\n];\n\nconst selector = `\n [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl],\n [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl],\n [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]\n`;\n\n/**\n * Directive to add responsive support for ngClass.\n * This maintains the core functionality of 'ngClass' and adds responsive API\n * Note: this class is a no-op when rendered on the server\n */\n@Directive({selector, inputs})\nexport class DefaultClassDirective extends ClassDirective {\n protected inputs = 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.io/license\n */\nimport {Directive, ElementRef, Inject, PLATFORM_ID, Injectable, Input} from '@angular/core';\nimport {isPlatformServer} from '@angular/common';\nimport {\n MediaMarshaller,\n BaseDirective2,\n SERVER_TOKEN,\n StyleBuilder,\n StyleDefinition,\n StyleUtils,\n} from '@angular/flex-layout/core';\n\n@Injectable({providedIn: 'root'})\nexport class ImgSrcStyleBuilder extends StyleBuilder {\n buildStyles(url: string) {\n return {'content': url ? `url(${url})` : ''};\n }\n}\n\n@Directive()\nexport class ImgSrcDirective extends BaseDirective2 {\n protected DIRECTIVE_KEY = 'img-src';\n protected defaultSrc = '';\n\n @Input('src')\n set src(val: string) {\n this.defaultSrc = val;\n this.setValue(this.defaultSrc, '');\n }\n\n constructor(elementRef: ElementRef,\n styleBuilder: ImgSrcStyleBuilder,\n styler: StyleUtils,\n marshal: MediaMarshaller,\n @Inject(PLATFORM_ID) protected platformId: Object,\n @Inject(SERVER_TOKEN) protected serverModuleLoaded: boolean) {\n super(elementRef, styleBuilder, styler, marshal);\n this.init();\n this.setValue(this.nativeElement.getAttribute('src') || '', '');\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.nativeElement.setAttribute('src', '');\n }\n }\n\n /**\n * Use the [responsively] activated input value to update\n * the host img src attribute or assign a default `img.src=''`\n * if the src has not been defined.\n *\n * Do nothing to standard `<img src=\"\">` usages, only when responsive\n * keys are present do we actually call `setAttribute()`\n */\n protected updateWithValue(value?: string) {\n const url = value || this.defaultSrc;\n if (isPlatformServer(this.platformId) && this.serverModuleLoaded) {\n this.addStyles(url);\n } else {\n this.nativeElement.setAttribute('src', url);\n }\n }\n\n protected styleCache = imgSrcCache;\n}\n\nconst imgSrcCache: Map<string, StyleDefinition> = new Map();\n\nconst inputs = [\n 'src.xs', 'src.sm', 'src.md', 'src.lg', 'src.xl',\n 'src.lt-sm', 'src.lt-md', 'src.lt-lg', 'src.lt-xl',\n 'src.gt-xs', 'src.gt-sm', 'src.gt-md', 'src.gt-lg'\n];\n\nconst selector = `\n img[src.xs], img[src.sm], img[src.md], img[src.lg], img[src.xl],\n img[src.lt-sm], img[src.lt-md], img[src.lt-lg], img[src.lt-xl],\n img[src.gt-xs], img[src.gt-sm], img[src.gt-md], img[src.gt-lg]\n`;\n\n/**\n * This directive provides a responsive API for the HTML <img> 'src' attribute\n * and will update the img.src property upon each responsive activation.\n *\n * e.g.\n * <img src=\"defaultScene.jpg\" src.xs=\"mobileScene.jpg\"></img>\n *\n * @see https://css-tricks.com/responsive-images-youre-just-changing-resolutions-use-src/\n */\n@Directive({selector, inputs})\nexport class DefaultImgSrcDirective extends ImgSrcDirective {\n protected inputs = inputs;\n}\n"],"names":["buildMapFromList","selector","inputs"],"mappings":"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"}