@alyle/ui
Version:
Minimal Design, a set of components for Angular
1 lines • 20.7 kB
Source Map (JSON)
{"version":3,"file":"alyle-ui-icon.mjs","sources":["../../../lib/icon/icon.service.ts","../../../lib/icon/icon.ts","../../../lib/icon/icon.module.ts","../../../lib/icon/alyle-ui-icon.ts"],"sourcesContent":["import { Injectable, Optional, Inject, SecurityContext } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DOCUMENT } from '@angular/common';\nimport { Observable } from 'rxjs';\nimport { map, share } from 'rxjs/operators';\nimport { LyTheme2 } from '@alyle/ui';\nimport { SafeHtml, DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nconst STYLE_PRIORITY = -2;\n\nexport interface FontClassOptions {\n key: string;\n /** Class name */\n class?: string;\n /** Frefix class */\n prefix?: string;\n}\n\n/** The following styles will never be updated */\nconst styles = {\n svg: {\n width: 'inherit',\n height: 'inherit',\n fill: 'currentColor',\n }\n};\n\nexport interface SvgIcon {\n obs?: Observable<SVGElement>;\n svg?: SVGElement;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LyIconService {\n private _defaultClass?: string = 'material-icons';\n private _defaultClassPrefix?: string;\n private svgMap = new Map<string, SvgIcon>();\n private _fontClasses = new Map<string, FontClassOptions>();\n /**\n * Styles\n * @docs-private\n */\n readonly classes = this.theme.addStyleSheet(styles, STYLE_PRIORITY);\n readonly defaultSvgIcon: string;\n get defaultClass() {\n return this._defaultClass;\n }\n get defaultClassPrefix() {\n return this._defaultClassPrefix;\n }\n\n constructor(\n private http: HttpClient,\n private _sanitizer: DomSanitizer,\n @Optional() @Inject(DOCUMENT) private _document: any,\n private theme: LyTheme2\n ) {\n this.defaultSvgIcon = '<svg viewBox=\"0 0 20 20\"><circle cx=\"10\" cy=\"10\" r=\"10\"></circle></svg>';\n }\n\n setSvg(key: string, url: SafeResourceUrl) {\n if (!this.svgMap.has(key)) {\n const urlSanitized = this._sanitizer.sanitize(SecurityContext.RESOURCE_URL, url);\n const svgIcon: SvgIcon = {\n obs: this.http.get(`${urlSanitized}.svg`, { responseType: 'text' })\n .pipe(\n share(),\n map(svgText => {\n if (svgIcon.svg) {\n return svgIcon.svg;\n }\n const svg = this._textToSvg(svgText);\n this._cacheSvgIcon(svg, key);\n return svg;\n }),\n )\n };\n this.svgMap.set(key, svgIcon);\n }\n }\n\n addSvgIconLiteral(key: string, literal: SafeHtml) {\n if (!this.svgMap.has(key)) {\n const sanitizedLiteral = this._sanitizer.sanitize(SecurityContext.HTML, literal);\n if (!sanitizedLiteral) {\n throw new Error(`LyIconService: Failed sanitize '${key}'`);\n }\n const svg = this._textToSvg(sanitizedLiteral);\n this.svgMap.set(key, {\n svg\n });\n }\n }\n\n /** String to SVG */\n _textToSvg(str: string): SVGElement {\n const div = this._document.createElement('DIV');\n div.innerHTML = str;\n const svg = div.querySelector('svg') as SVGElement;\n return svg;\n }\n\n private _cacheSvgIcon(svg: SVGElement, key: string) {\n const svgIconInfo = this.svgMap.get(key);\n if (!svgIconInfo!.svg) {\n this.svgMap.get(key)!.svg = svg;\n }\n }\n\n getSvg(key: string): SvgIcon {\n if (!this.svgMap.has(key)) {\n throw new Error(`LyIconService: Icon ${key} not found`);\n }\n return this.svgMap.get(key)!;\n }\n /**\n * Set default className for `ly-icon`\n * @param className class name\n * @param prefix Class prefix,\n * For example if you use FontAwesome your prefix would be `fa-`,\n * then in the template it is no longer necessary to use the prefix\n * Example: `<ly-icon fontIcon=\"alarm\">`\n */\n setDefaultClass(className?: string, prefix?: string) {\n this._defaultClass = className;\n this._defaultClassPrefix = prefix;\n }\n\n /**\n * Register new font class alias\n * demo:\n * For FontAwesome\n * registerFontClass({\n * key: 'fa',\n * class: 'fa'\n * prefix: 'fa-'\n * })\n */\n registerFontClass(opt: FontClassOptions) {\n this._fontClasses.set(opt.key, opt);\n }\n\n getFontClass(key: string) {\n return this._fontClasses.get(key);\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Renderer2\n } from '@angular/core';\nimport { FontClassOptions, LyIconService, SvgIcon } from './icon.service';\nimport {\n LyTheme2,\n mixinBg,\n mixinColor,\n mixinElevation,\n mixinOutlined,\n mixinRaised,\n mixinShadowColor,\n mixinStyleUpdater,\n ThemeVariables,\n keyframesUniqueId,\n StyleRenderer } from '@alyle/ui';\nimport { take } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\n\nconst STYLE_PRIORITY = -2;\nexport const STYLES = (theme: ThemeVariables) => {\n const loading = keyframesUniqueId.next();\n const { primary, secondary, tertiary } = theme.background;\n const lum = primary.default.luminance();\n let one = (lum < .5\n ? tertiary\n : secondary);\n let two = (lum < .5\n ? secondary\n : tertiary);\n one = one.darken(.25 * (lum < .5 ? -1 : 1.1));\n two = two.darken(.25 * (lum < .5 ? -1 : 1.1));\n return {\n $priority: STYLE_PRIORITY,\n $global: (_className: string) => `@keyframes ${loading}{0%{background-position:200% 50%;}100%{background-position:-200% 50%;}}`,\n root: () => (_className: string) => `${_className}{font-size:${theme.icon.fontSize};width:1em;position:relative;height:1em;display:inline-flex;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}`,\n loading: (_className: string) => `${_className}{background:${\n `linear-gradient(270deg, ${\n one\n }, ${\n two\n }, ${\n two\n }, ${\n one\n })`};background-size:400% 400%;animation:${loading} 8s ease-in-out infinite;}`,\n defaultIcon: (_className: string) => `${_className}{border-radius:50px;}`\n };\n};\n\n/** @docs-private */\nexport class LyIconBase {\n constructor(\n public _theme: LyTheme2\n ) { }\n}\n\n/** @docs-private */\nexport const LyIconMixinBase = mixinStyleUpdater(\nmixinBg(\n mixinColor(\n mixinRaised(\n mixinOutlined(\n mixinElevation(\n mixinShadowColor(LyIconBase)))))));\n\n\n@Directive({\n selector: 'ly-icon',\n inputs: [\n 'bg',\n 'color',\n 'raised',\n 'outlined',\n 'elevation',\n 'shadowColor',\n ],\n exportAs: 'lyIcon',\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyIcon extends LyIconMixinBase implements OnChanges, OnInit, OnDestroy {\n readonly classes = this.sRenderer.renderSheet(STYLES, true);\n private _icon: string;\n private _fontSet: string;\n private _previousFontSet: FontClassOptions;\n private _currentClass: string;\n private _fontIcon: string;\n private _iconElement?: SVGElement;\n\n @Input()\n get icon() {\n return this._icon;\n }\n set icon(val: string) {\n this._icon = val;\n this._addDefaultIcon();\n if (this._platform.isBrowser) {\n this._prepareSvgIcon(this.iconService.getSvg(val));\n }\n }\n\n @Input()\n get fontSet(): string {\n return this._fontSet;\n }\n set fontSet(key: string) {\n this._fontSet = key;\n }\n\n @Input()\n get fontIcon(): string {\n return this._fontIcon;\n }\n set fontIcon(key: string) {\n this._fontIcon = key;\n }\n\n /** @docs-private */\n get hostElement() {\n return this._el.nativeElement;\n }\n\n constructor(\n private iconService: LyIconService,\n private _el: ElementRef,\n private _renderer: Renderer2,\n theme: LyTheme2,\n readonly sRenderer: StyleRenderer,\n private _platform: Platform\n ) {\n super(theme);\n this.setAutoContrast();\n }\n\n ngOnChanges() {\n if (this.fontSet || this.fontIcon) {\n this._updateFontClass();\n }\n this.updateStyle(this._el);\n }\n\n private _isDefault() {\n return !(this.icon || this.fontSet);\n }\n\n private _prepareSvgIcon(svgIcon: SvgIcon) {\n if (svgIcon.svg) {\n this._appendChild(svgIcon.svg.cloneNode(true) as SVGElement);\n } else {\n svgIcon.obs!\n .pipe(\n take(1)\n )\n .subscribe((svgElement) => {\n this._appendChild(svgElement.cloneNode(true) as SVGElement);\n });\n }\n }\n\n private _appendChild(svg: SVGElement) {\n this._cleanIcon();\n this._iconElement = svg;\n this._renderer.addClass(svg, this.iconService.classes.svg);\n this._renderer.appendChild(this._el.nativeElement, svg);\n }\n\n private _addDefaultIcon() {\n this.sRenderer.addClass(this.classes.defaultIcon);\n this.sRenderer.addClass(this.classes.loading);\n }\n\n // private _appendDefaultSvgIcon() {\n // const svgIcon = this.iconService._textToSvg(this.iconService.defaultSvgIcon) as SVGAElement;\n // svgIcon.classList.add(this.classes.loading);\n // this._appendChild(svgIcon);\n // }\n\n private _updateClass() {\n if (this._isDefault() && this.iconService.defaultClass) {\n this._renderer.addClass(this._el.nativeElement, this.iconService.defaultClass);\n }\n }\n\n ngOnInit() {\n this._updateClass();\n }\n\n ngOnDestroy() {\n this._cleanIcon();\n }\n\n /**\n * run only browser\n * remove current icon\n */\n private _cleanIcon() {\n const icon = this._iconElement;\n this.sRenderer.removeClass(this.classes.defaultIcon);\n this.sRenderer.removeClass(this.classes.loading);\n if (icon) {\n this._renderer.removeChild(this._el.nativeElement, icon);\n this._iconElement = undefined;\n }\n }\n\n private _updateFontClass() {\n\n const currentClass = this._currentClass;\n const fontSetKey = this.fontSet;\n const icon = this.fontIcon;\n const el = this._el.nativeElement;\n const iconClass = this.iconService.getFontClass(fontSetKey);\n if (currentClass) {\n this._renderer.removeClass(el, currentClass);\n }\n if (this._previousFontSet) {\n if (this._previousFontSet.class) {\n this._renderer.removeClass(el, this._previousFontSet.class);\n }\n }\n if (iconClass) {\n this._previousFontSet = iconClass;\n } else {\n throw new Error(`Icon with key${fontSetKey} not found`);\n }\n this._currentClass = `${iconClass.prefix}${icon}`;\n this._renderer.addClass(el, this._currentClass);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { LyCommonModule } from '@alyle/ui';\n\nimport { LyIcon } from './icon';\n\n@NgModule({\n declarations: [LyIcon],\n exports: [LyIcon, LyCommonModule]\n})\nexport class LyIconModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["STYLE_PRIORITY","i3","i1.LyIconService","i2"],"mappings":"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"}