UNPKG

14.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["icon/icon.ts"],"names":[],"mappings":";;;;;;;;;;;;;;OAAO,EACH,QAAQ,EAER,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,KAAK,EAGL,QAAQ,EAER,iBAAiB,EAEpB,MAAM,eAAe;OACf,EAAC,UAAU,EAAC,MAAM,eAAe;OACjC,EAAC,OAAO,EAAC,MAAM,yBAAyB;OACxC,EAAC,cAAc,EAAC,MAAM,iBAAiB;AAC9C,SAAQ,cAAc,QAAO,iBAAiB,CAAC;AAG/C,oFAAoF;AACpF;IAA4C,0CAAO;IACjD,gCAAY,QAAgB;QACxB,kBAAM,0BAAuB,QAAQ,OAAG,CAAC,CAAC;IAC9C,CAAC;IACH,6BAAC;AAAD,CAJA,AAIC,CAJ2C,OAAO,GAIlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAYH;IAYE,gBACY,QAAoB,EACpB,SAAmB,EACnB,eAA+B;QAF/B,aAAQ,GAAR,QAAQ,CAAY;QACpB,cAAS,GAAT,SAAS,CAAU;QACnB,oBAAe,GAAf,eAAe,CAAgB;QARtB,kBAAa,GAAW,EAAE,CAAC;IAQD,CAAC;IAEhD;;;;;;;;;;;;OAYG;IACK,+BAAc,GAAtB,UAAuB,QAAgB;QACrC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACrB,KAAK,CAAC;gBACJ,yBAAyB;gBACzB,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,KAAK,CAAC;gBACJ,MAAM,CAAmB,KAAK,CAAC;YACjC;gBACE,MAAM,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,4BAAW,GAAX,UAAY,OAAiD;QAA7D,iBAmBC;QAlBC,IAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3C,8FAA8F;QAC9F,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjB,IAAA,sCAA+D,EAAxD,iBAAS,EAAE,gBAAQ,CAAsC;gBAChE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAC/D,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAxB,CAAwB,EAC/B,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,GAAG,CAAC,4BAA0B,GAAK,CAAC,EAA5C,CAA4C,CAAC,CAAC;YAClE,CAAC;YAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,SAAS,CACzD,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAxB,CAAwB,EAC/B,UAAC,GAAQ,IAAK,OAAA,OAAO,CAAC,GAAG,CAAC,4BAA0B,GAAK,CAAC,EAA5C,CAA4C,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,qBAAqB;IACrB,yBAAQ,GAAR;QACE,6FAA6F;QAC7F,+FAA+F;QAC/F,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,mCAAkB,GAAlB;QACE,8EAA8E;QAC9E,oDAAoD;QACpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,iCAAgB,GAAxB;QACI,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;QAC3F,CAAC;IACL,CAAC;IAEO,8BAAa,GAArB;QACE,2FAA2F;QAC3F,6FAA6F;QAC7F,qCAAqC;QACrC,IAAM,KAAK,GACP,IAAI,CAAC,aAAa;YAClB,IAAI,CAAC,GAAG;YACR,IAAI,CAAC,QAAQ;YACb,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACV,MAAM,CAAC,KAAK,CAAC;QACf,CAAC;QACD,sDAAsD;QACtD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC1B,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,CAAC;YACrD,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACT,MAAM,CAAC,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,+BAA+B;QAC/B,MAAM,CAAC,IAAI,CAAC;IACd,CAAC;IAEO,+BAAc,GAAtB;QACE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAEO,+BAAc,GAAtB,UAAuB,GAAe;QACpC,IAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QAClD,2DAA2D;QAC3D,+EAA+E;QAC/E,uEAAuE;QACvE,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IAEO,uCAAsB,GAA9B;QACE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAC3B,MAAM,CAAC;QACT,CAAC;QACD,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;QACzC,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO;YAC7B,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;QAClD,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC/C,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;YACD,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,CAAC,qBAAqB,GAAG,YAAY,CAAC;QAC5C,CAAC;QAED,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjD,EAAE,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC3E,CAAC;YACD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC;YACD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9C,CAAC;IACH,CAAC;IAzJD;QAAC,KAAK,EAAE;;0CAAA;IACR;QAAC,KAAK,EAAE;;2CAAA;IACR;QAAC,KAAK,EAAE;;2CAAA;IACR;QAAC,KAAK,EAAE;;4CAAA;IACR;QAAC,KAAK,EAAE;;uCAAA;IAER;QAAC,KAAK,CAAC,YAAY,CAAC;;iDAAA;IAlBtB;QAAC,SAAS,CAAC;YACT,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,QAAQ,EAAE,2BAA2B;YACrC,QAAQ,EAAE,SAAS;YACnB,SAAS,EAAE,CAAC,UAAU,CAAC;YACvB,IAAI,EAAE;gBACJ,MAAM,EAAE,KAAK;aACd;YACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;YACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;SAChD,CAAC;;cAAA;IA4JF,aAAC;AAAD,CA3JA,AA2JC,IAAA;AAQD;IAAA;IAOA,CAAC;IANQ,oBAAO,GAAd;QACE,MAAM,CAAC;YACL,QAAQ,EAAE,YAAY;YACtB,SAAS,EAAE,CAAC,cAAc,CAAC;SAC5B,CAAC;IACJ,CAAC;IAXH;QAAC,QAAQ,CAAC;YACR,OAAO,EAAE,CAAC,UAAU,CAAC;YACrB,OAAO,EAAE,CAAC,MAAM,CAAC;YACjB,YAAY,EAAE,CAAC,MAAM,CAAC;SACvB,CAAC;;oBAAA;IAQF,mBAAC;AAAD,CAPA,AAOC,IAAA","file":"icon/icon.js","sourcesContent":["import {\n NgModule,\n ModuleWithProviders,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n Renderer,\n SimpleChange,\n ViewEncapsulation,\n AfterViewChecked\n} from '@angular/core';\nimport {HttpModule} from '@angular/http';\nimport {MdError} from '@angular2-material/core';\nimport {MdIconRegistry} from './icon-registry';\nexport {MdIconRegistry} from './icon-registry';\n\n\n/** Exception thrown when an invalid icon name is passed to an md-icon component. */\nexport class MdIconInvalidNameError extends MdError {\n constructor(iconName: string) {\n super(`Invalid icon name: \"${iconName}\"`);\n }\n}\n\n/**\n * Component to display an icon. It can be used in the following ways:\n * - Specify the svgSrc input to load an SVG icon from a URL. The SVG content is directly inlined\n * as a child of the <md-icon> component, so that CSS styles can easily be applied to it.\n * The URL is loaded via an XMLHttpRequest, so it must be on the same domain as the page or its\n * server must be configured to allow cross-domain requests.\n * Example:\n * <md-icon svgSrc=\"assets/arrow.svg\"></md-icon>\n *\n * - Specify the svgIcon input to load an SVG icon from a URL previously registered with the\n * addSvgIcon, addSvgIconInNamespace, addSvgIconSet, or addSvgIconSetInNamespace methods of\n * MdIconRegistry. If the svgIcon value contains a colon it is assumed to be in the format\n * \"[namespace]:[name]\", if not the value will be the name of an icon in the default namespace.\n * Examples:\n * <md-icon svgIcon=\"left-arrow\"></md-icon>\n * <md-icon svgIcon=\"animals:cat\"></md-icon>\n *\n * - Use a font ligature as an icon by putting the ligature text in the content of the <md-icon>\n * component. By default the Material icons font is used as described at\n * http://google.github.io/material-design-icons/#icon-font-for-the-web. You can specify an\n * alternate font by setting the fontSet input to either the CSS class to apply to use the\n * desired font, or to an alias previously registered with MdIconRegistry.registerFontClassAlias.\n * Examples:\n * <md-icon>home</md-icon>\n * <md-icon fontSet=\"myfont\">sun</md-icon>\n *\n * - Specify a font glyph to be included via CSS rules by setting the fontSet input to specify the\n * font, and the fontIcon input to specify the icon. Typically the fontIcon will specify a\n * CSS class which causes the glyph to be displayed via a :before selector, as in\n * https://fortawesome.github.io/Font-Awesome/examples/\n * Example:\n * <md-icon fontSet=\"fa\" fontIcon=\"alarm\"></md-icon>\n */\n@Component({\n moduleId: module.id,\n template: '<ng-content></ng-content>',\n selector: 'md-icon',\n styleUrls: ['icon.css'],\n host: {\n 'role': 'img',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MdIcon implements OnChanges, OnInit, AfterViewChecked {\n @Input() svgSrc: string;\n @Input() svgIcon: string;\n @Input() fontSet: string;\n @Input() fontIcon: string;\n @Input() alt: string;\n\n @Input('aria-label') hostAriaLabel: string = '';\n\n private _previousFontSetClass: string;\n private _previousFontIconClass: string;\n\n constructor(\n private _element: ElementRef,\n private _renderer: Renderer,\n private _mdIconRegistry: MdIconRegistry) { }\n\n /**\n * Splits an svgIcon binding value into its icon set and icon name components.\n * Returns a 2-element array of [(icon set), (icon name)].\n * The separator for the two fields is ':'. If there is no separator, an empty\n * string is returned for the icon set and the entire value is returned for\n * the icon name. If the argument is falsy, returns an array of two empty strings.\n * Throws a MdIconInvalidNameError if the name contains two or more ':' separators.\n * Examples:\n * 'social:cake' -> ['social', 'cake']\n * 'penguin' -> ['', 'penguin']\n * null -> ['', '']\n * 'a:b:c' -> (throws MdIconInvalidNameError)\n */\n private _splitIconName(iconName: string): [string, string] {\n if (!iconName) {\n return ['', ''];\n }\n const parts = iconName.split(':');\n switch (parts.length) {\n case 1:\n // Use default namespace.\n return ['', parts[0]];\n case 2:\n return <[string, string]>parts;\n default:\n throw new MdIconInvalidNameError(iconName);\n }\n }\n\n /** TODO: internal */\n ngOnChanges(changes: { [propertyName: string]: SimpleChange }) {\n const changedInputs = Object.keys(changes);\n // Only update the inline SVG icon if the inputs changed, to avoid unnecessary DOM operations.\n if (changedInputs.indexOf('svgIcon') != -1 || changedInputs.indexOf('svgSrc') != -1) {\n if (this.svgIcon) {\n const [namespace, iconName] = this._splitIconName(this.svgIcon);\n this._mdIconRegistry.getNamedSvgIcon(iconName, namespace).subscribe(\n svg => this._setSvgElement(svg),\n (err: any) => console.log(`Error retrieving icon: ${err}`));\n } else if (this.svgSrc) {\n this._mdIconRegistry.getSvgIconFromUrl(this.svgSrc).subscribe(\n svg => this._setSvgElement(svg),\n (err: any) => console.log(`Error retrieving icon: ${err}`));\n }\n }\n if (this._usingFontIcon()) {\n this._updateFontIconClasses();\n }\n this._updateAriaLabel();\n }\n\n /** TODO: internal */\n ngOnInit() {\n // Update font classes because ngOnChanges won't be called if none of the inputs are present,\n // e.g. <md-icon>arrow</md-icon>. In this case we need to add a CSS class for the default font.\n if (this._usingFontIcon()) {\n this._updateFontIconClasses();\n }\n }\n\n /** TODO: internal */\n ngAfterViewChecked() {\n // Update aria label here because it may depend on the projected text content.\n // (e.g. <md-icon>home</md-icon> should use 'home').\n this._updateAriaLabel();\n }\n\n private _updateAriaLabel() {\n const ariaLabel = this._getAriaLabel();\n if (ariaLabel) {\n this._renderer.setElementAttribute(this._element.nativeElement, 'aria-label', ariaLabel);\n }\n }\n\n private _getAriaLabel() {\n // If the parent provided an aria-label attribute value, use it as-is. Otherwise look for a\n // reasonable value from the alt attribute, font icon name, SVG icon name, or (for ligatures)\n // the text content of the directive.\n const label =\n this.hostAriaLabel ||\n this.alt ||\n this.fontIcon ||\n this._splitIconName(this.svgIcon)[1];\n if (label) {\n return label;\n }\n // The \"content\" of an SVG icon is not a useful label.\n if (this._usingFontIcon()) {\n const text = this._element.nativeElement.textContent;\n if (text) {\n return text;\n }\n }\n // TODO: Warn here in dev mode.\n return null;\n }\n\n private _usingFontIcon(): boolean {\n return !(this.svgIcon || this.svgSrc);\n }\n\n private _setSvgElement(svg: SVGElement) {\n const layoutElement = this._element.nativeElement;\n // Remove existing child nodes and add the new SVG element.\n // We would use renderer.detachView(Array.from(layoutElement.childNodes)) here,\n // but it fails in IE11: https://github.com/angular/angular/issues/6327\n layoutElement.innerHTML = '';\n this._renderer.projectNodes(layoutElement, [svg]);\n }\n\n private _updateFontIconClasses() {\n if (!this._usingFontIcon()) {\n return;\n }\n const elem = this._element.nativeElement;\n const fontSetClass = this.fontSet ?\n this._mdIconRegistry.classNameForFontAlias(this.fontSet) :\n this._mdIconRegistry.getDefaultFontSetClass();\n if (fontSetClass != this._previousFontSetClass) {\n if (this._previousFontSetClass) {\n this._renderer.setElementClass(elem, this._previousFontSetClass, false);\n }\n if (fontSetClass) {\n this._renderer.setElementClass(elem, fontSetClass, true);\n }\n this._previousFontSetClass = fontSetClass;\n }\n\n if (this.fontIcon != this._previousFontIconClass) {\n if (this._previousFontIconClass) {\n this._renderer.setElementClass(elem, this._previousFontIconClass, false);\n }\n if (this.fontIcon) {\n this._renderer.setElementClass(elem, this.fontIcon, true);\n }\n this._previousFontIconClass = this.fontIcon;\n }\n }\n}\n\n\n@NgModule({\n imports: [HttpModule],\n exports: [MdIcon],\n declarations: [MdIcon],\n})\nexport class MdIconModule {\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: MdIconModule,\n providers: [MdIconRegistry],\n };\n }\n}\n"],"sourceRoot":"/source/"}
\No newline at end of file