@hugeicons/angular 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/LICENSE.md +21 -0
- package/PRO-LICENSE.md +14 -0
- package/README.md +89 -132
- package/dist/README.md +89 -132
- package/dist/components/hugeicons-icon.component.d.ts +19 -22
- package/dist/esm2022/components/hugeicons-icon.component.mjs +59 -80
- package/dist/esm2022/lib/types.mjs +1 -1
- package/dist/fesm2022/hugeicons-angular.mjs +58 -79
- package/dist/fesm2022/hugeicons-angular.mjs.map +1 -1
- package/dist/lib/types.d.ts +17 -1
- package/package.json +32 -19
package/dist/README.md
CHANGED
|
@@ -1,25 +1,36 @@
|
|
|
1
|
-

|
|
2
2
|
|
|
3
3
|
# @hugeicons/angular
|
|
4
4
|
|
|
5
|
-
>
|
|
5
|
+
> Hugeicons Angular rendering library for fast, customizable icons with TypeScript and tree-shaking support
|
|
6
6
|
|
|
7
|
-
## What is
|
|
7
|
+
## What is Hugeicons?
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Hugeicons is a large icon set for modern web and mobile apps. The free package includes 4,600+ Stroke Rounded icons. The Pro package provides 46,000+ icons across 10 styles.
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
This package (`@hugeicons/angular`) is a **rendering library** - it provides the `HugeiconsIconComponent` that displays icons in your Angular app. The icons themselves come from separate icon packages:
|
|
14
|
+
|
|
15
|
+
- **Free icons**: `@hugeicons/core-free-icons` (4,600+ icons)
|
|
16
|
+
- **Pro icons**: `@hugeicons-pro/core-*` packages (46,000+ icons, requires license)
|
|
10
17
|
|
|
11
18
|
### Key Highlights
|
|
12
|
-
- **4,
|
|
13
|
-
- **
|
|
19
|
+
- **4,600+ Free Icons**: Stroke Rounded set for unlimited personal and commercial projects
|
|
20
|
+
- **46,000+ Pro Icons, 10 Styles**: Stroke, Solid, Bulk, Duotone, and Twotone families for sharp, rounded, and standard needs with richer variants
|
|
21
|
+
- **Pixel Perfect Grid**: Built on a 24x24 grid for crisp rendering at any size
|
|
14
22
|
- **Customizable**: Easily adjust colors, sizes, and styles to match your design needs
|
|
23
|
+
- **Tree Shaking Ready**: Named exports keep bundles lean in modern bundlers
|
|
15
24
|
- **Regular Updates**: New icons added regularly to keep up with evolving design trends
|
|
16
25
|
|
|
17
|
-
> 📚 **Looking for Pro Icons?** Check out our comprehensive documentation at [docs.hugeicons.com](https://docs.hugeicons.com) for detailed information about pro icons, styles, and advanced usage.
|
|
18
26
|
|
|
19
|
-
|
|
27
|
+
> **Looking for Pro Icons?** Check out our docs at [hugeicons.com/docs](https://hugeicons.com/docs) for detailed information about pro icons, styles, and advanced usage.
|
|
28
|
+
|
|
29
|
+

|
|
20
30
|
|
|
21
31
|
## Table of Contents
|
|
22
|
-
- [What is
|
|
32
|
+
- [What is Hugeicons?](#what-is-hugeicons)
|
|
33
|
+
- [How It Works](#how-it-works)
|
|
23
34
|
- [Features](#features)
|
|
24
35
|
- [Installation](#installation)
|
|
25
36
|
- [Usage](#usage)
|
|
@@ -27,7 +38,7 @@ HugeIcons is a comprehensive icon library designed for modern web and mobile app
|
|
|
27
38
|
- [Examples](#examples)
|
|
28
39
|
- [Basic Usage](#basic-usage)
|
|
29
40
|
- [Custom Size and Color](#custom-size-and-color)
|
|
30
|
-
- [
|
|
41
|
+
- [More examples and patterns](#more-examples-and-patterns)
|
|
31
42
|
- [Performance](#performance)
|
|
32
43
|
- [Troubleshooting](#troubleshooting)
|
|
33
44
|
- [Browser Support](#browser-support)
|
|
@@ -38,12 +49,12 @@ HugeIcons is a comprehensive icon library designed for modern web and mobile app
|
|
|
38
49
|
|
|
39
50
|
## Features
|
|
40
51
|
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
52
|
+
- Customizable colors, sizes, and stroke width
|
|
53
|
+
- TypeScript support with full type definitions
|
|
54
|
+
- Tree shakeable for optimal bundle size
|
|
55
|
+
- Standalone component (Angular 17.1+)
|
|
56
|
+
- Signal-based inputs for optimal performance
|
|
57
|
+
- Alternate icon support for dynamic interactions
|
|
47
58
|
|
|
48
59
|
## Installation
|
|
49
60
|
|
|
@@ -63,177 +74,114 @@ bun add @hugeicons/angular @hugeicons/core-free-icons
|
|
|
63
74
|
|
|
64
75
|
## Usage
|
|
65
76
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
```typescript
|
|
69
|
-
import { NgModule } from '@angular/core';
|
|
70
|
-
import { HugeiconsModule } from '@hugeicons/angular';
|
|
71
|
-
|
|
72
|
-
@NgModule({
|
|
73
|
-
imports: [
|
|
74
|
-
HugeiconsModule
|
|
75
|
-
],
|
|
76
|
-
// ...
|
|
77
|
-
})
|
|
78
|
-
export class AppModule { }
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Then use it in your component:
|
|
77
|
+
The `HugeiconsIconComponent` is a standalone component. Import it directly in your component:
|
|
82
78
|
|
|
83
79
|
```typescript
|
|
84
|
-
// your.component.ts
|
|
85
80
|
import { Component } from '@angular/core';
|
|
81
|
+
import { HugeiconsIconComponent } from '@hugeicons/angular';
|
|
86
82
|
import { SearchIcon } from '@hugeicons/core-free-icons';
|
|
87
83
|
|
|
88
84
|
@Component({
|
|
89
|
-
selector: 'app-
|
|
85
|
+
selector: 'app-example',
|
|
86
|
+
standalone: true,
|
|
87
|
+
imports: [HugeiconsIconComponent],
|
|
90
88
|
template: `
|
|
91
89
|
<hugeicons-icon
|
|
92
|
-
[icon]="
|
|
90
|
+
[icon]="SearchIcon"
|
|
93
91
|
[size]="24"
|
|
94
92
|
color="currentColor"
|
|
95
93
|
[strokeWidth]="1.5"
|
|
96
|
-
|
|
94
|
+
/>
|
|
97
95
|
`
|
|
98
96
|
})
|
|
99
|
-
export class
|
|
100
|
-
|
|
97
|
+
export class ExampleComponent {
|
|
98
|
+
SearchIcon = SearchIcon;
|
|
101
99
|
}
|
|
102
100
|
```
|
|
103
101
|
|
|
102
|
+
### NgModule Usage (Legacy)
|
|
103
|
+
|
|
104
|
+
If you're using NgModules, import the component in your module:
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import { NgModule } from '@angular/core';
|
|
108
|
+
import { HugeiconsIconComponent } from '@hugeicons/angular';
|
|
109
|
+
|
|
110
|
+
@NgModule({
|
|
111
|
+
imports: [HugeiconsIconComponent],
|
|
112
|
+
// ...
|
|
113
|
+
})
|
|
114
|
+
export class AppModule { }
|
|
115
|
+
```
|
|
116
|
+
|
|
104
117
|
## Inputs
|
|
105
118
|
|
|
106
119
|
| Input | Type | Default | Description |
|
|
107
120
|
|-------|------|---------|-------------|
|
|
108
|
-
| `icon` | `
|
|
109
|
-
| `
|
|
110
|
-
| `strokeWidth` | `number \| undefined` | `undefined` | Width of the icon strokes (works with stroke-style icons) |
|
|
111
|
-
| `absoluteStrokeWidth` | `boolean` | `false` | When true, stroke width is scaled based on icon size (24px base). When false, stroke width is used as-is |
|
|
112
|
-
| `altIcon` | `[string, Record<string, any>][]` | `undefined` | Alternative icon that can be used for states, interactions, or animations |
|
|
121
|
+
| `icon` | `IconSvgObject` | Required | The main icon to display |
|
|
122
|
+
| `altIcon` | `IconSvgObject` | - | Alternative icon for states, interactions, or dynamic icon swapping |
|
|
113
123
|
| `showAlt` | `boolean` | `false` | When true, displays the altIcon instead of the main icon |
|
|
124
|
+
| `size` | `number \| string` | `24` | Icon size in pixels |
|
|
114
125
|
| `color` | `string` | `currentColor` | Icon color (CSS color value) |
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- The `size` input accepts both numbers and strings, but strings will be parsed to numbers and must result in a positive number.
|
|
119
|
-
- Icon arrays are tuples of `[elementName: string, attributes: Record<string, any>][]` representing SVG elements.
|
|
120
|
-
- When `absoluteStrokeWidth` is true, the stroke width is scaled proportionally to the icon size (based on a 24px base size).
|
|
126
|
+
| `strokeWidth` | `number` | - | Width of the icon strokes |
|
|
127
|
+
| `absoluteStrokeWidth` | `boolean` | `false` | When true, the stroke width will be scaled relative to the icon size |
|
|
128
|
+
| `class` | `string` | - | CSS classes to apply to the icon |
|
|
121
129
|
|
|
122
130
|
## Examples
|
|
123
131
|
|
|
124
132
|
### Basic Usage
|
|
125
133
|
```typescript
|
|
126
|
-
// basic.component.ts
|
|
127
134
|
import { Component } from '@angular/core';
|
|
128
|
-
import {
|
|
135
|
+
import { HugeiconsIconComponent } from '@hugeicons/angular';
|
|
136
|
+
import { Video01Icon } from '@hugeicons/core-free-icons';
|
|
129
137
|
|
|
130
138
|
@Component({
|
|
131
139
|
selector: 'app-basic',
|
|
140
|
+
standalone: true,
|
|
141
|
+
imports: [HugeiconsIconComponent],
|
|
132
142
|
template: `
|
|
133
|
-
<hugeicons-icon [icon]="
|
|
143
|
+
<hugeicons-icon [icon]="Video01Icon" />
|
|
134
144
|
`
|
|
135
145
|
})
|
|
136
146
|
export class BasicComponent {
|
|
137
|
-
|
|
147
|
+
Video01Icon = Video01Icon;
|
|
138
148
|
}
|
|
139
149
|
```
|
|
140
150
|
|
|
141
151
|
### Custom Size and Color
|
|
142
152
|
```typescript
|
|
143
|
-
// custom.component.ts
|
|
144
153
|
import { Component } from '@angular/core';
|
|
145
|
-
import {
|
|
154
|
+
import { HugeiconsIconComponent } from '@hugeicons/angular';
|
|
155
|
+
import { Notification02Icon } from '@hugeicons/core-free-icons';
|
|
146
156
|
|
|
147
157
|
@Component({
|
|
148
158
|
selector: 'app-custom',
|
|
159
|
+
standalone: true,
|
|
160
|
+
imports: [HugeiconsIconComponent],
|
|
149
161
|
template: `
|
|
150
162
|
<hugeicons-icon
|
|
151
|
-
[icon]="
|
|
163
|
+
[icon]="Notification02Icon"
|
|
152
164
|
[size]="32"
|
|
153
165
|
color="#FF5733"
|
|
154
|
-
|
|
155
|
-
[absoluteStrokeWidth]="true"
|
|
156
|
-
></hugeicons-icon>
|
|
166
|
+
/>
|
|
157
167
|
`
|
|
158
168
|
})
|
|
159
169
|
export class CustomComponent {
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Interactive Examples
|
|
165
|
-
|
|
166
|
-
#### Search Bar with Clear Button
|
|
167
|
-
```typescript
|
|
168
|
-
// search.component.ts
|
|
169
|
-
import { Component } from '@angular/core';
|
|
170
|
-
import { SearchIcon, CloseCircleIcon } from '@hugeicons/core-free-icons';
|
|
171
|
-
|
|
172
|
-
@Component({
|
|
173
|
-
selector: 'app-search',
|
|
174
|
-
template: `
|
|
175
|
-
<div>
|
|
176
|
-
<input
|
|
177
|
-
[(ngModel)]="searchValue"
|
|
178
|
-
type="text"
|
|
179
|
-
placeholder="Search..."
|
|
180
|
-
/>
|
|
181
|
-
<hugeicons-icon
|
|
182
|
-
[icon]="SearchIcon"
|
|
183
|
-
[altIcon]="CloseCircleIcon"
|
|
184
|
-
[showAlt]="searchValue.length > 0"
|
|
185
|
-
(click)="clearSearch()"
|
|
186
|
-
></hugeicons-icon>
|
|
187
|
-
</div>
|
|
188
|
-
`
|
|
189
|
-
})
|
|
190
|
-
export class SearchComponent {
|
|
191
|
-
searchValue = '';
|
|
192
|
-
SearchIcon = SearchIcon;
|
|
193
|
-
CloseCircleIcon = CloseCircleIcon;
|
|
194
|
-
|
|
195
|
-
clearSearch(): void {
|
|
196
|
-
if (this.searchValue.length > 0) {
|
|
197
|
-
this.searchValue = '';
|
|
198
|
-
}
|
|
199
|
-
}
|
|
170
|
+
Notification02Icon = Notification02Icon;
|
|
200
171
|
}
|
|
201
172
|
```
|
|
202
173
|
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
// theme-toggle.component.ts
|
|
206
|
-
import { Component } from '@angular/core';
|
|
207
|
-
import { SunIcon, MoonIcon } from '@hugeicons/core-free-icons';
|
|
174
|
+
### More examples and patterns
|
|
208
175
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
template: `
|
|
212
|
-
<button (click)="toggleTheme()">
|
|
213
|
-
<hugeicons-icon
|
|
214
|
-
[icon]="SunIcon"
|
|
215
|
-
[altIcon]="MoonIcon"
|
|
216
|
-
[showAlt]="isDark"
|
|
217
|
-
></hugeicons-icon>
|
|
218
|
-
</button>
|
|
219
|
-
`
|
|
220
|
-
})
|
|
221
|
-
export class ThemeToggleComponent {
|
|
222
|
-
isDark = false;
|
|
223
|
-
SunIcon = SunIcon;
|
|
224
|
-
MoonIcon = MoonIcon;
|
|
225
|
-
|
|
226
|
-
toggleTheme(): void {
|
|
227
|
-
this.isDark = !this.isDark;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
```
|
|
176
|
+
- Examples: https://hugeicons.com/docs/integrations/angular/examples
|
|
177
|
+
- Best practices: https://hugeicons.com/docs/integrations/angular/best-practices
|
|
231
178
|
|
|
232
179
|
## Performance
|
|
233
180
|
|
|
234
181
|
- **Tree-shaking**: The package is fully tree-shakeable, ensuring only the icons you use are included in your final bundle
|
|
235
182
|
- **Optimized SVGs**: All icons are optimized for size and performance
|
|
236
183
|
- **Code Splitting**: Icons can be easily code-split when using dynamic imports
|
|
184
|
+
- **OnPush Change Detection**: Uses ChangeDetectionStrategy.OnPush for optimal performance
|
|
237
185
|
|
|
238
186
|
## Troubleshooting
|
|
239
187
|
|
|
@@ -241,12 +189,12 @@ export class ThemeToggleComponent {
|
|
|
241
189
|
|
|
242
190
|
1. **Icons not showing up?**
|
|
243
191
|
- Make sure you've installed both `@hugeicons/angular` and `@hugeicons/core-free-icons`
|
|
244
|
-
- Check that
|
|
192
|
+
- Check that `HugeiconsIconComponent` is imported in your component or module
|
|
245
193
|
- Verify that icon names are correctly imported
|
|
246
194
|
|
|
247
195
|
2. **TypeScript errors?**
|
|
248
196
|
- Ensure your `tsconfig.json` includes the necessary type definitions
|
|
249
|
-
- Check that you're using
|
|
197
|
+
- Check that you're using Angular 17.1+ for signal inputs support
|
|
250
198
|
|
|
251
199
|
3. **Bundle size concerns?**
|
|
252
200
|
- Use named imports instead of importing the entire icon set
|
|
@@ -265,8 +213,8 @@ The library supports all modern browsers.
|
|
|
265
213
|
|
|
266
214
|
## Pro Version
|
|
267
215
|
|
|
268
|
-
>
|
|
269
|
-
> Check out our [Pro Version](https://hugeicons.com/pricing) and visit [docs
|
|
216
|
+
> **Want access to 46,000+ icons and 10 unique styles?**
|
|
217
|
+
> Check out our [Pro Version](https://hugeicons.com/pricing) and visit our [docs](https://hugeicons.com/docs) for detailed documentation.
|
|
270
218
|
|
|
271
219
|
### Available Pro Styles
|
|
272
220
|
- **Stroke Styles**
|
|
@@ -280,13 +228,22 @@ The library supports all modern browsers.
|
|
|
280
228
|
- **Special Styles**
|
|
281
229
|
- Bulk Rounded (`@hugeicons-pro/core-bulk-rounded`)
|
|
282
230
|
- Duotone Rounded (`@hugeicons-pro/core-duotone-rounded`)
|
|
231
|
+
- Duotone Standard (`@hugeicons-pro/core-duotone-standard`)
|
|
283
232
|
- Twotone Rounded (`@hugeicons-pro/core-twotone-rounded`)
|
|
284
233
|
|
|
285
234
|
## License
|
|
286
235
|
|
|
287
|
-
|
|
236
|
+
The code in this package (`@hugeicons/angular`) is licensed under the MIT License.
|
|
237
|
+
|
|
238
|
+
This package only provides rendering utilities. It does not include or grant any rights to Hugeicons icon assets. Using Pro icon styles requires a valid Hugeicons Pro license.
|
|
239
|
+
|
|
240
|
+
Hugeicons icon packs are licensed separately:
|
|
241
|
+
- **Free icon packs**: use the license included with the specific free icon package you install.
|
|
242
|
+
- **Pro icon packs (`@hugeicons-pro/*`)**: require a paid Hugeicons Pro license and are governed by the Hugeicons Pro Terms (see [Pro License](PRO-LICENSE.md).).
|
|
243
|
+
|
|
288
244
|
|
|
289
245
|
## Related
|
|
290
246
|
|
|
247
|
+
- [Changelog](CHANGELOG.md) - Version history and release notes
|
|
291
248
|
- [@hugeicons/core-free-icons](https://www.npmjs.com/package/@hugeicons/core-free-icons) - Free icon package
|
|
292
|
-
- [
|
|
249
|
+
- [Hugeicons Website](https://hugeicons.com) - Browse all available icons
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
|
|
2
1
|
import { IconSvgObject } from '../lib/types';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
interface PathData {
|
|
4
|
+
d: string;
|
|
5
|
+
fill: string;
|
|
6
|
+
opacity?: string;
|
|
7
|
+
fillRule?: string;
|
|
8
|
+
stroke?: string;
|
|
6
9
|
strokeWidth?: number;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
stroke?: string;
|
|
19
|
-
strokeWidth?: number;
|
|
20
|
-
}>;
|
|
21
|
-
ngOnInit(): void;
|
|
22
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
23
|
-
private updatePaths;
|
|
24
|
-
trackByFn(index: number): number;
|
|
10
|
+
}
|
|
11
|
+
export declare class HugeiconsIconComponent {
|
|
12
|
+
readonly size: import("@angular/core").InputSignal<string | number>;
|
|
13
|
+
readonly strokeWidth: import("@angular/core").InputSignal<number>;
|
|
14
|
+
readonly absoluteStrokeWidth: import("@angular/core").InputSignal<boolean>;
|
|
15
|
+
readonly icon: import("@angular/core").InputSignal<IconSvgObject>;
|
|
16
|
+
readonly altIcon: import("@angular/core").InputSignal<IconSvgObject>;
|
|
17
|
+
readonly color: import("@angular/core").InputSignal<string>;
|
|
18
|
+
readonly iconClass: import("@angular/core").InputSignal<string>;
|
|
19
|
+
readonly showAlt: import("@angular/core").InputSignal<boolean>;
|
|
20
|
+
readonly paths: import("@angular/core").Signal<PathData[]>;
|
|
25
21
|
static ɵfac: i0.ɵɵFactoryDeclaration<HugeiconsIconComponent, never>;
|
|
26
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HugeiconsIconComponent, "hugeicons-icon", never, { "size": { "alias": "size"; "required": false; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; }; "absoluteStrokeWidth": { "alias": "absoluteStrokeWidth"; "required": false; }; "icon": { "alias": "icon"; "required":
|
|
22
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HugeiconsIconComponent, "hugeicons-icon", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "absoluteStrokeWidth": { "alias": "absoluteStrokeWidth"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "altIcon": { "alias": "altIcon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "iconClass": { "alias": "class"; "required": false; "isSignal": true; }; "showAlt": { "alias": "showAlt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
27
23
|
}
|
|
24
|
+
export {};
|
|
@@ -1,114 +1,93 @@
|
|
|
1
|
-
import { Component,
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
1
|
+
import { Component, ChangeDetectionStrategy, computed, input } from '@angular/core';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
3
|
export class HugeiconsIconComponent {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
ngOnChanges(changes) {
|
|
19
|
-
this.updatePaths();
|
|
20
|
-
}
|
|
21
|
-
updatePaths() {
|
|
22
|
-
const currentIcon = this.showAlt && this.altIcon ? this.altIcon : this.icon;
|
|
4
|
+
// Signal inputs - modern Angular 17.1+ approach
|
|
5
|
+
size = input(24);
|
|
6
|
+
strokeWidth = input(undefined);
|
|
7
|
+
absoluteStrokeWidth = input(false);
|
|
8
|
+
icon = input.required();
|
|
9
|
+
altIcon = input(undefined);
|
|
10
|
+
color = input('currentColor');
|
|
11
|
+
iconClass = input('', { alias: 'class' });
|
|
12
|
+
showAlt = input(false);
|
|
13
|
+
// Computed signal for reactive path updates
|
|
14
|
+
paths = computed(() => {
|
|
15
|
+
const currentIcon = this.showAlt() && this.altIcon() ? this.altIcon() : this.icon();
|
|
23
16
|
if (!currentIcon || !Array.isArray(currentIcon)) {
|
|
24
|
-
|
|
25
|
-
return;
|
|
17
|
+
return [];
|
|
26
18
|
}
|
|
27
|
-
const
|
|
28
|
-
|
|
19
|
+
const strokeWidthValue = this.strokeWidth();
|
|
20
|
+
const calculatedStrokeWidth = strokeWidthValue !== undefined
|
|
21
|
+
? (this.absoluteStrokeWidth()
|
|
22
|
+
? (Number(strokeWidthValue) * 24) / Number(this.size())
|
|
23
|
+
: strokeWidthValue)
|
|
29
24
|
: undefined;
|
|
30
|
-
const strokeProps = calculatedStrokeWidth !== undefined
|
|
31
|
-
strokeWidth: calculatedStrokeWidth,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.paths = currentIcon.map(([_, attrs]) => ({
|
|
25
|
+
const strokeProps = calculatedStrokeWidth !== undefined
|
|
26
|
+
? { strokeWidth: calculatedStrokeWidth, stroke: 'currentColor' }
|
|
27
|
+
: {};
|
|
28
|
+
return currentIcon.map(([_, attrs]) => ({
|
|
35
29
|
d: attrs['d'],
|
|
36
30
|
fill: attrs['fill'] || 'none',
|
|
37
31
|
opacity: attrs['opacity'],
|
|
38
32
|
fillRule: attrs['fillRule'],
|
|
39
33
|
...strokeProps
|
|
40
34
|
}));
|
|
41
|
-
}
|
|
42
|
-
trackByFn(index) {
|
|
43
|
-
return index;
|
|
44
|
-
}
|
|
35
|
+
});
|
|
45
36
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HugeiconsIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
37
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: HugeiconsIconComponent, isStandalone: true, selector: "hugeicons-icon", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, strokeWidth: { classPropertyName: "strokeWidth", publicName: "strokeWidth", isSignal: true, isRequired: false, transformFunction: null }, absoluteStrokeWidth: { classPropertyName: "absoluteStrokeWidth", publicName: "absoluteStrokeWidth", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, altIcon: { classPropertyName: "altIcon", publicName: "altIcon", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, showAlt: { classPropertyName: "showAlt", publicName: "showAlt", isSignal: true, isRequired: false, transformFunction: null } }, host: { styleAttribute: "display: inline-flex; align-items: center; justify-content: center;" }, ngImport: i0, template: `
|
|
47
38
|
<svg
|
|
48
|
-
[attr.width]="size"
|
|
49
|
-
[attr.height]="size"
|
|
39
|
+
[attr.width]="size()"
|
|
40
|
+
[attr.height]="size()"
|
|
50
41
|
viewBox="0 0 24 24"
|
|
51
42
|
fill="none"
|
|
52
|
-
[attr.color]="color"
|
|
53
|
-
[class]="
|
|
43
|
+
[attr.color]="color()"
|
|
44
|
+
[class]="iconClass()"
|
|
54
45
|
xmlns="http://www.w3.org/2000/svg"
|
|
55
46
|
>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
47
|
+
@for (path of paths(); track $index) {
|
|
48
|
+
<path
|
|
49
|
+
[attr.d]="path.d"
|
|
50
|
+
[attr.fill]="path.fill"
|
|
51
|
+
[attr.opacity]="path.opacity"
|
|
52
|
+
[attr.fill-rule]="path.fillRule"
|
|
53
|
+
[attr.stroke]="path.stroke"
|
|
54
|
+
[attr.stroke-width]="path.strokeWidth"
|
|
55
|
+
/>
|
|
56
|
+
}
|
|
65
57
|
</svg>
|
|
66
|
-
`, isInline: true,
|
|
58
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
67
59
|
}
|
|
68
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HugeiconsIconComponent, decorators: [{
|
|
69
61
|
type: Component,
|
|
70
62
|
args: [{
|
|
71
63
|
selector: 'hugeicons-icon',
|
|
72
64
|
standalone: true,
|
|
73
|
-
imports: [CommonModule],
|
|
74
65
|
template: `
|
|
75
66
|
<svg
|
|
76
|
-
[attr.width]="size"
|
|
77
|
-
[attr.height]="size"
|
|
67
|
+
[attr.width]="size()"
|
|
68
|
+
[attr.height]="size()"
|
|
78
69
|
viewBox="0 0 24 24"
|
|
79
70
|
fill="none"
|
|
80
|
-
[attr.color]="color"
|
|
81
|
-
[class]="
|
|
71
|
+
[attr.color]="color()"
|
|
72
|
+
[class]="iconClass()"
|
|
82
73
|
xmlns="http://www.w3.org/2000/svg"
|
|
83
74
|
>
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
75
|
+
@for (path of paths(); track $index) {
|
|
76
|
+
<path
|
|
77
|
+
[attr.d]="path.d"
|
|
78
|
+
[attr.fill]="path.fill"
|
|
79
|
+
[attr.opacity]="path.opacity"
|
|
80
|
+
[attr.fill-rule]="path.fillRule"
|
|
81
|
+
[attr.stroke]="path.stroke"
|
|
82
|
+
[attr.stroke-width]="path.strokeWidth"
|
|
83
|
+
/>
|
|
84
|
+
}
|
|
93
85
|
</svg>
|
|
94
86
|
`,
|
|
87
|
+
host: {
|
|
88
|
+
style: 'display: inline-flex; align-items: center; justify-content: center;'
|
|
89
|
+
},
|
|
95
90
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
96
91
|
}]
|
|
97
|
-
}]
|
|
98
|
-
|
|
99
|
-
}], strokeWidth: [{
|
|
100
|
-
type: Input
|
|
101
|
-
}], absoluteStrokeWidth: [{
|
|
102
|
-
type: Input
|
|
103
|
-
}], icon: [{
|
|
104
|
-
type: Input
|
|
105
|
-
}], altIcon: [{
|
|
106
|
-
type: Input
|
|
107
|
-
}], color: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], class: [{
|
|
110
|
-
type: Input
|
|
111
|
-
}], showAlt: [{
|
|
112
|
-
type: Input
|
|
113
|
-
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVnZWljb25zLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaHVnZWljb25zLWljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixFQUFvQyxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQStCL0MsTUFBTSxPQUFPLHNCQUFzQjtJQUN4QixJQUFJLEdBQW9CLEVBQUUsQ0FBQztJQUMzQixXQUFXLENBQVU7SUFDckIsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksQ0FBaUI7SUFDckIsT0FBTyxDQUFpQjtJQUN4QixLQUFLLEdBQUcsY0FBYyxDQUFDO0lBQ3ZCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDWCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRXpCLEtBQUssR0FPQSxFQUFFLENBQUM7SUFFUixRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUU1RSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixPQUFPO1NBQ1I7UUFFRCxNQUFNLHFCQUFxQixHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUztZQUMxRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQ3JHLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxNQUFNLFdBQVcsR0FBRyxxQkFBcUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3hELFdBQVcsRUFBRSxxQkFBcUI7WUFDbEMsTUFBTSxFQUFFLGNBQWM7U0FDdkIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDNUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU07WUFDN0IsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDekIsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDM0IsR0FBRyxXQUFXO1NBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWE7UUFDckIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXZEVSxzQkFBc0I7NEZBQXRCLHNCQUFzQix1UkF4QnZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVCwyREFyQlMsWUFBWTs7NEZBeUJYLHNCQUFzQjtrQkE1QmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CVDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7OEJBR1UsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uU3ZnT2JqZWN0IH0gZnJvbSAnLi4vbGliL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaHVnZWljb25zLWljb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8c3ZnXG4gICAgICBbYXR0ci53aWR0aF09XCJzaXplXCJcbiAgICAgIFthdHRyLmhlaWdodF09XCJzaXplXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgW2F0dHIuY29sb3JdPVwiY29sb3JcIlxuICAgICAgW2NsYXNzXT1cImNsYXNzXCJcbiAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgID5cbiAgICAgIDxwYXRoXG4gICAgICAgICpuZ0Zvcj1cImxldCBwYXRoIG9mIHBhdGhzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICBbYXR0ci5kXT1cInBhdGguZFwiXG4gICAgICAgIFthdHRyLmZpbGxdPVwicGF0aC5maWxsXCJcbiAgICAgICAgW2F0dHIub3BhY2l0eV09XCJwYXRoLm9wYWNpdHlcIlxuICAgICAgICBbYXR0ci5maWxsLXJ1bGVdPVwicGF0aC5maWxsUnVsZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZV09XCJwYXRoLnN0cm9rZVwiXG4gICAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwYXRoLnN0cm9rZVdpZHRoXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuXG5leHBvcnQgY2xhc3MgSHVnZWljb25zSWNvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgc2l6ZTogc3RyaW5nIHwgbnVtYmVyID0gMjQ7XG4gIEBJbnB1dCgpIHN0cm9rZVdpZHRoPzogbnVtYmVyO1xuICBASW5wdXQoKSBhYnNvbHV0ZVN0cm9rZVdpZHRoID0gZmFsc2U7XG4gIEBJbnB1dCgpIGljb24hOiBJY29uU3ZnT2JqZWN0O1xuICBASW5wdXQoKSBhbHRJY29uPzogSWNvblN2Z09iamVjdDtcbiAgQElucHV0KCkgY29sb3IgPSAnY3VycmVudENvbG9yJztcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgc2hvd0FsdCA9IGZhbHNlO1xuXG4gIHBhdGhzOiBBcnJheTx7XG4gICAgZDogc3RyaW5nO1xuICAgIGZpbGw6IHN0cmluZztcbiAgICBvcGFjaXR5Pzogc3RyaW5nO1xuICAgIGZpbGxSdWxlPzogc3RyaW5nO1xuICAgIHN0cm9rZT86IHN0cmluZztcbiAgICBzdHJva2VXaWR0aD86IG51bWJlcjtcbiAgfT4gPSBbXTtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVBhdGhzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgdGhpcy51cGRhdGVQYXRocygpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVQYXRocygpIHtcbiAgICBjb25zdCBjdXJyZW50SWNvbiA9IHRoaXMuc2hvd0FsdCAmJiB0aGlzLmFsdEljb24gPyB0aGlzLmFsdEljb24gOiB0aGlzLmljb247XG5cbiAgICBpZiAoIWN1cnJlbnRJY29uIHx8ICFBcnJheS5pc0FycmF5KGN1cnJlbnRJY29uKSkge1xuICAgICAgdGhpcy5wYXRocyA9IFtdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNhbGN1bGF0ZWRTdHJva2VXaWR0aCA9IHRoaXMuc3Ryb2tlV2lkdGggIT09IHVuZGVmaW5lZFxuICAgICAgPyAodGhpcy5hYnNvbHV0ZVN0cm9rZVdpZHRoID8gKE51bWJlcih0aGlzLnN0cm9rZVdpZHRoKSAqIDI0KSAvIE51bWJlcih0aGlzLnNpemUpIDogdGhpcy5zdHJva2VXaWR0aClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc3Ryb2tlUHJvcHMgPSBjYWxjdWxhdGVkU3Ryb2tlV2lkdGggIT09IHVuZGVmaW5lZCA/IHtcbiAgICAgIHN0cm9rZVdpZHRoOiBjYWxjdWxhdGVkU3Ryb2tlV2lkdGgsXG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InXG4gICAgfSA6IHt9O1xuXG4gICAgdGhpcy5wYXRocyA9IGN1cnJlbnRJY29uLm1hcCgoW18sIGF0dHJzXSkgPT4gKHtcbiAgICAgIGQ6IGF0dHJzWydkJ10sXG4gICAgICBmaWxsOiBhdHRyc1snZmlsbCddIHx8ICdub25lJyxcbiAgICAgIG9wYWNpdHk6IGF0dHJzWydvcGFjaXR5J10sXG4gICAgICBmaWxsUnVsZTogYXR0cnNbJ2ZpbGxSdWxlJ10sXG4gICAgICAuLi5zdHJva2VQcm9wc1xuICAgIH0pKTtcbiAgfVxuXG4gIHRyYWNrQnlGbihpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG59Il19
|
|
92
|
+
}] });
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVnZWljb25zLWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaHVnZWljb25zLWljb24uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUEwQ3BGLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsZ0RBQWdEO0lBQ3ZDLElBQUksR0FBRyxLQUFLLENBQWtCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLFdBQVcsR0FBRyxLQUFLLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQ25ELG1CQUFtQixHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUM1QyxJQUFJLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBaUIsQ0FBQztJQUN2QyxPQUFPLEdBQUcsS0FBSyxDQUE0QixTQUFTLENBQUMsQ0FBQztJQUN0RCxLQUFLLEdBQUcsS0FBSyxDQUFTLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLFNBQVMsR0FBRyxLQUFLLENBQVMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDbEQsT0FBTyxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUV6Qyw0Q0FBNEM7SUFDbkMsS0FBSyxHQUFHLFFBQVEsQ0FBYSxHQUFHLEVBQUU7UUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckYsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDL0MsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVDLE1BQU0scUJBQXFCLEdBQUcsZ0JBQWdCLEtBQUssU0FBUztZQUMxRCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ3pCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztZQUN2QixDQUFDLENBQUMsU0FBUyxDQUFDO1FBRWQsTUFBTSxXQUFXLEdBQUcscUJBQXFCLEtBQUssU0FBUztZQUNyRCxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRTtZQUNoRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRVAsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDYixJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU07WUFDN0IsT0FBTyxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDekIsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUM7WUFDM0IsR0FBRyxXQUFXO1NBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDLENBQUMsQ0FBQzt3R0FyQ1Esc0JBQXNCOzRGQUF0QixzQkFBc0IsZ3NDQTNCdkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVDs7NEZBTVUsc0JBQXNCO2tCQTlCbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQlQ7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxxRUFBcUU7cUJBQzdFO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWNvblN2Z09iamVjdCB9IGZyb20gJy4uL2xpYi90eXBlcyc7XG5cbmludGVyZmFjZSBQYXRoRGF0YSB7XG4gIGQ6IHN0cmluZztcbiAgZmlsbDogc3RyaW5nO1xuICBvcGFjaXR5Pzogc3RyaW5nO1xuICBmaWxsUnVsZT86IHN0cmluZztcbiAgc3Ryb2tlPzogc3RyaW5nO1xuICBzdHJva2VXaWR0aD86IG51bWJlcjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaHVnZWljb25zLWljb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxzdmdcbiAgICAgIFthdHRyLndpZHRoXT1cInNpemUoKVwiXG4gICAgICBbYXR0ci5oZWlnaHRdPVwic2l6ZSgpXCJcbiAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgW2F0dHIuY29sb3JdPVwiY29sb3IoKVwiXG4gICAgICBbY2xhc3NdPVwiaWNvbkNsYXNzKClcIlxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgQGZvciAocGF0aCBvZiBwYXRocygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBbYXR0ci5kXT1cInBhdGguZFwiXG4gICAgICAgICAgW2F0dHIuZmlsbF09XCJwYXRoLmZpbGxcIlxuICAgICAgICAgIFthdHRyLm9wYWNpdHldPVwicGF0aC5vcGFjaXR5XCJcbiAgICAgICAgICBbYXR0ci5maWxsLXJ1bGVdPVwicGF0aC5maWxsUnVsZVwiXG4gICAgICAgICAgW2F0dHIuc3Ryb2tlXT1cInBhdGguc3Ryb2tlXCJcbiAgICAgICAgICBbYXR0ci5zdHJva2Utd2lkdGhdPVwicGF0aC5zdHJva2VXaWR0aFwiXG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPC9zdmc+XG4gIGAsXG4gIGhvc3Q6IHtcbiAgICBzdHlsZTogJ2Rpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsnXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEh1Z2VpY29uc0ljb25Db21wb25lbnQge1xuICAvLyBTaWduYWwgaW5wdXRzIC0gbW9kZXJuIEFuZ3VsYXIgMTcuMSsgYXBwcm9hY2hcbiAgcmVhZG9ubHkgc2l6ZSA9IGlucHV0PHN0cmluZyB8IG51bWJlcj4oMjQpO1xuICByZWFkb25seSBzdHJva2VXaWR0aCA9IGlucHV0PG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgYWJzb2x1dGVTdHJva2VXaWR0aCA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaWNvbiA9IGlucHV0LnJlcXVpcmVkPEljb25TdmdPYmplY3Q+KCk7XG4gIHJlYWRvbmx5IGFsdEljb24gPSBpbnB1dDxJY29uU3ZnT2JqZWN0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBjb2xvciA9IGlucHV0PHN0cmluZz4oJ2N1cnJlbnRDb2xvcicpO1xuICByZWFkb25seSBpY29uQ2xhc3MgPSBpbnB1dDxzdHJpbmc+KCcnLCB7IGFsaWFzOiAnY2xhc3MnIH0pO1xuICByZWFkb25seSBzaG93QWx0ID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIC8vIENvbXB1dGVkIHNpZ25hbCBmb3IgcmVhY3RpdmUgcGF0aCB1cGRhdGVzXG4gIHJlYWRvbmx5IHBhdGhzID0gY29tcHV0ZWQ8UGF0aERhdGFbXT4oKCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRJY29uID0gdGhpcy5zaG93QWx0KCkgJiYgdGhpcy5hbHRJY29uKCkgPyB0aGlzLmFsdEljb24oKSEgOiB0aGlzLmljb24oKTtcblxuICAgIGlmICghY3VycmVudEljb24gfHwgIUFycmF5LmlzQXJyYXkoY3VycmVudEljb24pKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3Qgc3Ryb2tlV2lkdGhWYWx1ZSA9IHRoaXMuc3Ryb2tlV2lkdGgoKTtcbiAgICBjb25zdCBjYWxjdWxhdGVkU3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgID8gKHRoaXMuYWJzb2x1dGVTdHJva2VXaWR0aCgpIFxuICAgICAgICAgID8gKE51bWJlcihzdHJva2VXaWR0aFZhbHVlKSAqIDI0KSAvIE51bWJlcih0aGlzLnNpemUoKSkgXG4gICAgICAgICAgOiBzdHJva2VXaWR0aFZhbHVlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBzdHJva2VQcm9wcyA9IGNhbGN1bGF0ZWRTdHJva2VXaWR0aCAhPT0gdW5kZWZpbmVkIFxuICAgICAgPyB7IHN0cm9rZVdpZHRoOiBjYWxjdWxhdGVkU3Ryb2tlV2lkdGgsIHN0cm9rZTogJ2N1cnJlbnRDb2xvcicgfSBcbiAgICAgIDoge307XG5cbiAgICByZXR1cm4gY3VycmVudEljb24ubWFwKChbXywgYXR0cnNdKSA9PiAoe1xuICAgICAgZDogYXR0cnNbJ2QnXSxcbiAgICAgIGZpbGw6IGF0dHJzWydmaWxsJ10gfHwgJ25vbmUnLFxuICAgICAgb3BhY2l0eTogYXR0cnNbJ29wYWNpdHknXSxcbiAgICAgIGZpbGxSdWxlOiBhdHRyc1snZmlsbFJ1bGUnXSxcbiAgICAgIC4uLnN0cm9rZVByb3BzXG4gICAgfSkpO1xuICB9KTtcbn0iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU1ZHIHBhdGggYXR0cmlidXRlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBTdmdQYXRoQXR0cmlidXRlcyB7XG4gIGQ6IHN0cmluZztcbiAgZmlsbD86IHN0cmluZztcbiAgb3BhY2l0eT86IHN0cmluZztcbiAgZmlsbFJ1bGU/OiAnbm9uemVybycgfCAnZXZlbm9kZCc7XG4gIHN0cm9rZT86IHN0cmluZztcbiAgc3Ryb2tlV2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIHN0cm9rZUxpbmVjYXA/OiAnYnV0dCcgfCAncm91bmQnIHwgJ3NxdWFyZSc7XG4gIHN0cm9rZUxpbmVqb2luPzogJ21pdGVyJyB8ICdyb3VuZCcgfCAnYmV2ZWwnO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG4vKiogSWNvbiBTVkcgb2JqZWN0IHR5cGUgLSB0dXBsZSBvZiBbZWxlbWVudCBuYW1lLCBhdHRyaWJ1dGVzXSAqL1xuZXhwb3J0IHR5cGUgSWNvblN2Z09iamVjdCA9IHJlYWRvbmx5IChyZWFkb25seSBbc3RyaW5nLCBTdmdQYXRoQXR0cmlidXRlc10pW107XG5cbmV4cG9ydCB0eXBlIEljb25OYW1lID0gc3RyaW5nO1xuXG4vKiogSWNvbiBzdHlsZSB2YXJpYW50cyAqL1xuZXhwb3J0IHR5cGUgSWNvblN0eWxlID0gXG4gIHwgJ3N0cm9rZS1yb3VuZGVkJ1xuICB8ICdzdHJva2Utc2hhcnAnXG4gIHwgJ3N0cm9rZS1zdGFuZGFyZCdcbiAgfCAnc29saWQtcm91bmRlZCdcbiAgfCAnc29saWQtc2hhcnAnXG4gIHwgJ3NvbGlkLXN0YW5kYXJkJ1xuICB8ICdidWxrLXJvdW5kZWQnXG4gIHwgJ2R1b3RvbmUtcm91bmRlZCdcbiAgfCAnZHVvdG9uZS1zdGFuZGFyZCdcbiAgfCAndHdvdG9uZS1yb3VuZGVkJztcblxuZXhwb3J0IGludGVyZmFjZSBJY29uTWV0YWRhdGEge1xuICBuYW1lOiBJY29uTmFtZTtcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgdGFnczogc3RyaW5nW107XG4gIHBhY2s6IHN0cmluZztcbiAgc3R5bGU/OiBJY29uU3R5bGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWNvbkRhdGEge1xuICBpY29uOiBJY29uU3ZnT2JqZWN0O1xuICBtZXRhZGF0YTogSWNvbk1ldGFkYXRhO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEh1Z2VpY29uc1Byb3BzIHtcbiAgc2l6ZT86IHN0cmluZyB8IG51bWJlcjtcbiAgc3Ryb2tlV2lkdGg/OiBudW1iZXI7XG4gIGFic29sdXRlU3Ryb2tlV2lkdGg/OiBib29sZWFuO1xuICBpY29uOiBJY29uU3ZnT2JqZWN0O1xuICBhbHRJY29uPzogSWNvblN2Z09iamVjdDtcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNsYXNzPzogc3RyaW5nO1xuICBzaG93QWx0PzogYm9vbGVhbjtcbn0gIl19
|