vadivam-angular 0.0.44 → 0.0.47
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/README.md +1 -1
- package/dist/fesm2022/vadivam-angular-core-BAHrSm4q.mjs +469 -0
- package/dist/fesm2022/vadivam-angular-core-BAHrSm4q.mjs.map +1 -0
- package/dist/fesm2022/vadivam-angular.mjs +25275 -12950
- package/dist/fesm2022/vadivam-angular.mjs.map +1 -1
- package/dist/icons/bot-message-square.d.ts +1 -0
- package/dist/icons/bot-message-square.js +1 -0
- package/dist/icons/brain-circuit.d.ts +1 -0
- package/dist/icons/brain-circuit.js +1 -0
- package/dist/icons/building-complex.d.ts +1 -0
- package/dist/icons/building-complex.js +1 -0
- package/dist/icons/chart-column.d.ts +1 -0
- package/dist/icons/chart-column.js +1 -0
- package/dist/icons/chart-no-axes-combined.d.ts +1 -0
- package/dist/icons/chart-no-axes-combined.js +1 -0
- package/dist/icons/circle-dollar-sign.d.ts +1 -0
- package/dist/icons/circle-dollar-sign.js +1 -0
- package/dist/icons/clipboard-clock.d.ts +1 -0
- package/dist/icons/clipboard-clock.js +1 -0
- package/dist/icons/earth.d.ts +1 -0
- package/dist/icons/earth.js +1 -0
- package/dist/icons/eighth-notes.d.ts +1 -0
- package/dist/icons/eighth-notes.js +1 -0
- package/dist/icons/expand.d.ts +1 -0
- package/dist/icons/expand.js +1 -0
- package/dist/icons/gem.d.ts +1 -0
- package/dist/icons/gem.js +1 -0
- package/dist/icons/graduation-cap.d.ts +1 -0
- package/dist/icons/graduation-cap.js +1 -0
- package/dist/icons/hand-coins.d.ts +1 -0
- package/dist/icons/hand-coins.js +1 -0
- package/dist/icons/handshake.d.ts +1 -0
- package/dist/icons/handshake.js +1 -0
- package/dist/icons/headset.d.ts +1 -0
- package/dist/icons/headset.js +1 -0
- package/dist/icons/heart-handshake.d.ts +1 -0
- package/dist/icons/heart-handshake.js +1 -0
- package/dist/icons/hourglass.d.ts +1 -0
- package/dist/icons/hourglass.js +1 -0
- package/dist/icons/id-card.d.ts +1 -0
- package/dist/icons/id-card.js +1 -0
- package/dist/icons/landmark.d.ts +1 -0
- package/dist/icons/landmark.js +1 -0
- package/dist/icons/leaf.d.ts +1 -0
- package/dist/icons/leaf.js +1 -0
- package/dist/icons/map-pin-house.d.ts +1 -0
- package/dist/icons/map-pin-house.js +1 -0
- package/dist/icons/map-pinned.d.ts +1 -0
- package/dist/icons/map-pinned.js +1 -0
- package/dist/icons/megaphone.d.ts +1 -0
- package/dist/icons/megaphone.js +1 -0
- package/dist/icons/message-circle-more.d.ts +1 -0
- package/dist/icons/message-circle-more.js +1 -0
- package/dist/icons/message-square-text.d.ts +1 -0
- package/dist/icons/message-square-text.js +1 -0
- package/dist/icons/messages-square.d.ts +1 -0
- package/dist/icons/messages-square.js +1 -0
- package/dist/icons/move-left.d.ts +1 -0
- package/dist/icons/move-left.js +1 -0
- package/dist/icons/move-up-right.d.ts +1 -0
- package/dist/icons/move-up-right.js +1 -0
- package/dist/icons/newspaper.d.ts +1 -0
- package/dist/icons/newspaper.js +1 -0
- package/dist/icons/notebook-pen.d.ts +1 -0
- package/dist/icons/notebook-pen.js +1 -0
- package/dist/icons/receipt-text.d.ts +1 -0
- package/dist/icons/receipt-text.js +1 -0
- package/dist/icons/send-horizontal.d.ts +1 -0
- package/dist/icons/send-horizontal.js +1 -0
- package/dist/icons/shield-user.d.ts +1 -0
- package/dist/icons/shield-user.js +1 -0
- package/dist/icons/sparkle.d.ts +1 -0
- package/dist/icons/sparkle.js +1 -0
- package/dist/icons/square-arrow-out-up-right.d.ts +1 -0
- package/dist/icons/square-arrow-out-up-right.js +1 -0
- package/dist/icons/square-bookmark.d.ts +1 -0
- package/dist/icons/square-bookmark.js +1 -0
- package/dist/icons/square-check.d.ts +1 -0
- package/dist/icons/square-check.js +1 -0
- package/dist/icons/store.d.ts +1 -0
- package/dist/icons/store.js +1 -0
- package/dist/icons/truck.d.ts +1 -0
- package/dist/icons/truck.js +1 -0
- package/dist/icons/user-pen.d.ts +1 -0
- package/dist/icons/user-pen.js +1 -0
- package/dist/icons/user-round-plus.d.ts +1 -0
- package/dist/icons/user-round-plus.js +1 -0
- package/dist/icons/user-star.d.ts +1 -0
- package/dist/icons/user-star.js +1 -0
- package/dist/icons/users-round.d.ts +1 -0
- package/dist/icons/users-round.js +1 -0
- package/dist/types/vadivam-angular.d.ts +7146 -12687
- package/package.json +1 -1
- package/dist/icons/album.d.ts +0 -1
- package/dist/icons/album.js +0 -1
- package/dist/icons/building-2.d.ts +0 -1
- package/dist/icons/building-2.js +0 -1
- package/dist/icons/music.d.ts +0 -1
- package/dist/icons/music.js +0 -1
- package/dist/icons/trash-2.d.ts +0 -1
- package/dist/icons/trash-2.js +0 -1
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@ Tree-shakeable 24px outline SVG icon directives for Angular.
|
|
|
8
8
|
[](https://www.npmjs.com/package/vadivam-angular)
|
|
9
9
|
[](https://github.com/praveenjuge/vadivam/blob/main/LICENSE)
|
|
10
10
|
|
|
11
|
-

|
|
12
12
|
|
|
13
13
|
```sh
|
|
14
14
|
npm install vadivam-angular
|
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
import { Directive, ElementRef, InjectionToken, Renderer2, effect, inject, input } from "@angular/core";
|
|
3
|
+
const SAFE_ICON_TAGS = /* @__PURE__ */ new Set([
|
|
4
|
+
"circle",
|
|
5
|
+
"ellipse",
|
|
6
|
+
"line",
|
|
7
|
+
"path",
|
|
8
|
+
"polygon",
|
|
9
|
+
"polyline",
|
|
10
|
+
"rect"
|
|
11
|
+
]);
|
|
12
|
+
const GEOMETRY_ATTRIBUTES = {
|
|
13
|
+
circle: /* @__PURE__ */ new Set([
|
|
14
|
+
"cx",
|
|
15
|
+
"cy",
|
|
16
|
+
"r"
|
|
17
|
+
]),
|
|
18
|
+
ellipse: /* @__PURE__ */ new Set([
|
|
19
|
+
"cx",
|
|
20
|
+
"cy",
|
|
21
|
+
"rx",
|
|
22
|
+
"ry"
|
|
23
|
+
]),
|
|
24
|
+
line: /* @__PURE__ */ new Set([
|
|
25
|
+
"x1",
|
|
26
|
+
"y1",
|
|
27
|
+
"x2",
|
|
28
|
+
"y2"
|
|
29
|
+
]),
|
|
30
|
+
path: /* @__PURE__ */ new Set(["d", "pathLength"]),
|
|
31
|
+
polygon: /* @__PURE__ */ new Set(["points", "pathLength"]),
|
|
32
|
+
polyline: /* @__PURE__ */ new Set(["points", "pathLength"]),
|
|
33
|
+
rect: /* @__PURE__ */ new Set([
|
|
34
|
+
"x",
|
|
35
|
+
"y",
|
|
36
|
+
"width",
|
|
37
|
+
"height",
|
|
38
|
+
"rx",
|
|
39
|
+
"ry",
|
|
40
|
+
"pathLength"
|
|
41
|
+
])
|
|
42
|
+
};
|
|
43
|
+
const PRESENTATION_ATTRIBUTES = /* @__PURE__ */ new Set([
|
|
44
|
+
"class",
|
|
45
|
+
"className",
|
|
46
|
+
"id",
|
|
47
|
+
"role",
|
|
48
|
+
"key",
|
|
49
|
+
"opacity",
|
|
50
|
+
"transform",
|
|
51
|
+
"clip-rule",
|
|
52
|
+
"clipRule",
|
|
53
|
+
"fill",
|
|
54
|
+
"fill-opacity",
|
|
55
|
+
"fillOpacity",
|
|
56
|
+
"fill-rule",
|
|
57
|
+
"fillRule",
|
|
58
|
+
"shape-rendering",
|
|
59
|
+
"shapeRendering",
|
|
60
|
+
"stroke",
|
|
61
|
+
"stroke-dasharray",
|
|
62
|
+
"strokeDasharray",
|
|
63
|
+
"stroke-dashoffset",
|
|
64
|
+
"strokeDashoffset",
|
|
65
|
+
"stroke-linecap",
|
|
66
|
+
"strokeLinecap",
|
|
67
|
+
"stroke-linejoin",
|
|
68
|
+
"strokeLinejoin",
|
|
69
|
+
"stroke-miterlimit",
|
|
70
|
+
"strokeMiterlimit",
|
|
71
|
+
"stroke-opacity",
|
|
72
|
+
"strokeOpacity",
|
|
73
|
+
"stroke-width",
|
|
74
|
+
"strokeWidth",
|
|
75
|
+
"vector-effect",
|
|
76
|
+
"vectorEffect"
|
|
77
|
+
]);
|
|
78
|
+
const SAFE_ATTRIBUTE_NAME = /^[A-Za-z_][A-Za-z0-9_.-]*$/;
|
|
79
|
+
const SAFE_DATA_ATTRIBUTE = /^data-[A-Za-z0-9_.-]+$/;
|
|
80
|
+
const SAFE_ARIA_ATTRIBUTE = /^aria-[A-Za-z0-9_.-]+$/;
|
|
81
|
+
const SAFE_STYLE_NAME = /^(?:--[A-Za-z0-9_-]+|[A-Za-z_][A-Za-z0-9_-]*)$/;
|
|
82
|
+
const URL_VALUE_ATTRIBUTE = /^(?:fill|stroke|filter|clipPath|clip-path|mask|marker|markerStart|marker-start|markerMid|marker-mid|markerEnd|marker-end|cursor)$/;
|
|
83
|
+
const SCRIPT_SCHEME = /(?:java|vb)script\s*:/i;
|
|
84
|
+
const URL_FUNCTION = /url\s*\(/i;
|
|
85
|
+
const COMPLETE_URL_FUNCTION = /url\s*\(\s*(["']?)([^"')\s]+)\1\s*\)/gi;
|
|
86
|
+
const EXTERNAL_SCHEME = /(?:https?|data|blob|file|ftp)\s*:/i;
|
|
87
|
+
const CSS_ESCAPE = /\\/;
|
|
88
|
+
const CSS_RESOURCE_FUNCTION = /(?:image-set|cross-fade|image|src)\s*\(/i;
|
|
89
|
+
const CSS_IMPORT = /@import\b/i;
|
|
90
|
+
const MAX_ICON_DEPTH = 32;
|
|
91
|
+
const MAX_ICON_NODES = 1024;
|
|
92
|
+
function isRecord(value) {
|
|
93
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
94
|
+
}
|
|
95
|
+
function isSafeValue(name, value) {
|
|
96
|
+
if (value === void 0 || value === null || typeof value === "function") return false;
|
|
97
|
+
if (typeof value === "object") return false;
|
|
98
|
+
if (typeof value === "string" && SCRIPT_SCHEME.test(value)) return false;
|
|
99
|
+
if ((name === "fill" || name === "stroke") && typeof value === "string" && hasExternalUrl(value)) return false;
|
|
100
|
+
return typeof value === "string" || typeof value === "number" || typeof value === "boolean";
|
|
101
|
+
}
|
|
102
|
+
function hasExternalUrl(value) {
|
|
103
|
+
if (!URL_FUNCTION.test(value)) return false;
|
|
104
|
+
COMPLETE_URL_FUNCTION.lastIndex = 0;
|
|
105
|
+
let matched = false;
|
|
106
|
+
let match;
|
|
107
|
+
while ((match = COMPLETE_URL_FUNCTION.exec(value)) !== null) {
|
|
108
|
+
matched = true;
|
|
109
|
+
if (!match[2].startsWith("#")) return true;
|
|
110
|
+
}
|
|
111
|
+
return !matched;
|
|
112
|
+
}
|
|
113
|
+
function hasUnsafeStyleValue(value) {
|
|
114
|
+
return SCRIPT_SCHEME.test(value) || EXTERNAL_SCHEME.test(value) || CSS_ESCAPE.test(value) || CSS_RESOURCE_FUNCTION.test(value) || CSS_IMPORT.test(value) || hasExternalUrl(value);
|
|
115
|
+
}
|
|
116
|
+
function isSafeIconAttribute(tag, name) {
|
|
117
|
+
return SAFE_ATTRIBUTE_NAME.test(name) && (GEOMETRY_ATTRIBUTES[tag]?.has(name) || PRESENTATION_ATTRIBUTES.has(name) || SAFE_DATA_ATTRIBUTE.test(name) || SAFE_ARIA_ATTRIBUTE.test(name));
|
|
118
|
+
}
|
|
119
|
+
function sanitizeStyle(value) {
|
|
120
|
+
if (typeof value === "string") return hasUnsafeStyleValue(value) ? void 0 : value;
|
|
121
|
+
if (Array.isArray(value)) {
|
|
122
|
+
const safeValues = value.map(sanitizeStyle).filter((entry) => entry !== void 0);
|
|
123
|
+
return safeValues.length ? safeValues : void 0;
|
|
124
|
+
}
|
|
125
|
+
if (!isRecord(value)) return void 0;
|
|
126
|
+
const safeStyle = {};
|
|
127
|
+
for (const [name, entry] of Object.entries(value)) {
|
|
128
|
+
if (!SAFE_STYLE_NAME.test(name) || typeof entry !== "string" && typeof entry !== "number") continue;
|
|
129
|
+
if (typeof entry === "string" && hasUnsafeStyleValue(entry)) continue;
|
|
130
|
+
safeStyle[name] = entry;
|
|
131
|
+
}
|
|
132
|
+
return Object.keys(safeStyle).length ? safeStyle : void 0;
|
|
133
|
+
}
|
|
134
|
+
function safeRootValue(name, value) {
|
|
135
|
+
if (name === "style") return sanitizeStyle(value);
|
|
136
|
+
if (value === void 0 || value === null || typeof value === "object" || typeof value === "function") return void 0;
|
|
137
|
+
if (typeof value === "string" && URL_VALUE_ATTRIBUTE.test(name) && (SCRIPT_SCHEME.test(value) || hasExternalUrl(value))) return void 0;
|
|
138
|
+
return value;
|
|
139
|
+
}
|
|
140
|
+
function sanitizePaint(value, fallback = "currentColor") {
|
|
141
|
+
const safeValue = safeRootValue("stroke", value);
|
|
142
|
+
return typeof safeValue === "string" || typeof safeValue === "number" ? safeValue : fallback;
|
|
143
|
+
}
|
|
144
|
+
function sanitizeNodes(iconNode, activeArrays, state, depth) {
|
|
145
|
+
if (!Array.isArray(iconNode) || depth > MAX_ICON_DEPTH || activeArrays.has(iconNode)) return [];
|
|
146
|
+
activeArrays.add(iconNode);
|
|
147
|
+
const safeNodes = [];
|
|
148
|
+
for (const node of iconNode) {
|
|
149
|
+
state.count += 1;
|
|
150
|
+
if (state.count > MAX_ICON_NODES) break;
|
|
151
|
+
if (!Array.isArray(node) || typeof node[0] !== "string" || !SAFE_ICON_TAGS.has(node[0]) || !isRecord(node[1])) continue;
|
|
152
|
+
const [tag, attrs, children] = node;
|
|
153
|
+
const safeAttrs = {};
|
|
154
|
+
for (const [name, value] of Object.entries(attrs)) if (isSafeIconAttribute(tag, name) && isSafeValue(name, value)) safeAttrs[name] = value;
|
|
155
|
+
safeNodes.push([tag, safeAttrs]);
|
|
156
|
+
}
|
|
157
|
+
activeArrays.delete(iconNode);
|
|
158
|
+
return safeNodes;
|
|
159
|
+
}
|
|
160
|
+
function sanitizeIconNode(iconNode) {
|
|
161
|
+
return sanitizeNodes(iconNode, /* @__PURE__ */ new WeakSet(), { count: 0 }, 0);
|
|
162
|
+
}
|
|
163
|
+
const VADIVAM_CONFIG = new InjectionToken("vadivam-icons", { factory: () => ({}) });
|
|
164
|
+
function provideVadivamConfig(config) {
|
|
165
|
+
return {
|
|
166
|
+
provide: VADIVAM_CONFIG,
|
|
167
|
+
useValue: Object.freeze({ ...config })
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function createVadivamIcon(name, iconNode) {
|
|
171
|
+
return Object.freeze({
|
|
172
|
+
name,
|
|
173
|
+
iconNode
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
const defaults = {
|
|
177
|
+
size: 24,
|
|
178
|
+
color: "currentColor",
|
|
179
|
+
strokeWidth: 2
|
|
180
|
+
};
|
|
181
|
+
var VadivamIconBase = class VadivamIconBase {
|
|
182
|
+
defaultName = "";
|
|
183
|
+
defaultIconNode = [];
|
|
184
|
+
name = input(...ngDevMode ? [void 0, { debugName: "name" }] : /* istanbul ignore next */ []);
|
|
185
|
+
iconNode = input(...ngDevMode ? [void 0, { debugName: "iconNode" }] : /* istanbul ignore next */ []);
|
|
186
|
+
size = input(...ngDevMode ? [void 0, { debugName: "size" }] : /* istanbul ignore next */ []);
|
|
187
|
+
color = input(...ngDevMode ? [void 0, { debugName: "color" }] : /* istanbul ignore next */ []);
|
|
188
|
+
strokeWidth = input(...ngDevMode ? [void 0, { debugName: "strokeWidth" }] : /* istanbul ignore next */ []);
|
|
189
|
+
absoluteStrokeWidth = input(...ngDevMode ? [void 0, { debugName: "absoluteStrokeWidth" }] : /* istanbul ignore next */ []);
|
|
190
|
+
title = input(...ngDevMode ? [void 0, { debugName: "title" }] : /* istanbul ignore next */ []);
|
|
191
|
+
element = inject(ElementRef).nativeElement;
|
|
192
|
+
renderer = inject(Renderer2);
|
|
193
|
+
config = inject(VADIVAM_CONFIG);
|
|
194
|
+
runtimeName;
|
|
195
|
+
runtimeIconNode;
|
|
196
|
+
rendered = [];
|
|
197
|
+
generatedClasses = /* @__PURE__ */ new Set();
|
|
198
|
+
decorative = false;
|
|
199
|
+
constructor() {
|
|
200
|
+
effect(() => {
|
|
201
|
+
this.name();
|
|
202
|
+
this.iconNode();
|
|
203
|
+
this.size();
|
|
204
|
+
this.color();
|
|
205
|
+
this.strokeWidth();
|
|
206
|
+
this.absoluteStrokeWidth();
|
|
207
|
+
this.title();
|
|
208
|
+
this.render();
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
setRuntimeIcon(name, iconNode) {
|
|
212
|
+
this.runtimeName = name;
|
|
213
|
+
this.runtimeIconNode = iconNode;
|
|
214
|
+
this.render();
|
|
215
|
+
}
|
|
216
|
+
render() {
|
|
217
|
+
for (const child of this.rendered) this.renderer.removeChild(this.element, child);
|
|
218
|
+
for (const className of this.generatedClasses) this.renderer.removeClass(this.element, className);
|
|
219
|
+
if (this.decorative) this.renderer.removeAttribute(this.element, "aria-hidden");
|
|
220
|
+
this.rendered = [];
|
|
221
|
+
this.generatedClasses.clear();
|
|
222
|
+
this.decorative = false;
|
|
223
|
+
const name = this.runtimeName ?? this.name() ?? this.defaultName;
|
|
224
|
+
const iconNode = sanitizeIconNode(this.runtimeIconNode ?? this.iconNode() ?? this.defaultIconNode);
|
|
225
|
+
const size = this.size() ?? this.config.size ?? defaults.size;
|
|
226
|
+
const stroke = this.strokeWidth() ?? this.config.strokeWidth ?? defaults.strokeWidth;
|
|
227
|
+
const numericSize = Number(size);
|
|
228
|
+
const numericStroke = Number(stroke);
|
|
229
|
+
const absoluteInput = this.absoluteStrokeWidth();
|
|
230
|
+
const calculated = (absoluteInput === "" || absoluteInput === true || absoluteInput === "true" || absoluteInput == null && this.config.absoluteStrokeWidth === true) && Number.isFinite(numericSize) && numericSize !== 0 && Number.isFinite(numericStroke) ? numericStroke * 24 / numericSize : stroke;
|
|
231
|
+
const attrs = {
|
|
232
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
233
|
+
width: size,
|
|
234
|
+
height: size,
|
|
235
|
+
viewBox: "0 0 24 24",
|
|
236
|
+
fill: "none",
|
|
237
|
+
stroke: sanitizePaint(this.color() ?? this.config.color),
|
|
238
|
+
"stroke-width": calculated,
|
|
239
|
+
"stroke-linecap": "round",
|
|
240
|
+
"stroke-linejoin": "round"
|
|
241
|
+
};
|
|
242
|
+
for (const [key, value] of Object.entries(attrs)) this.renderer.setAttribute(this.element, key, String(value));
|
|
243
|
+
const classes = [
|
|
244
|
+
"vadivam",
|
|
245
|
+
name && `vadivam-${name}`,
|
|
246
|
+
...(this.config.class ?? "").split(/\s+/)
|
|
247
|
+
].filter(Boolean);
|
|
248
|
+
for (const className of new Set(classes)) {
|
|
249
|
+
this.renderer.addClass(this.element, className);
|
|
250
|
+
this.generatedClasses.add(className);
|
|
251
|
+
}
|
|
252
|
+
const titleText = this.title();
|
|
253
|
+
if (titleText) {
|
|
254
|
+
const title = this.renderer.createElement("title", "svg");
|
|
255
|
+
this.renderer.appendChild(title, this.renderer.createText(titleText));
|
|
256
|
+
this.renderer.appendChild(this.element, title);
|
|
257
|
+
this.rendered.push(title);
|
|
258
|
+
this.renderer.setAttribute(this.element, "role", "img");
|
|
259
|
+
}
|
|
260
|
+
if (!(titleText || Array.from(this.element.attributes).some(({ name: attribute }) => attribute.startsWith("aria-") || attribute === "role"))) {
|
|
261
|
+
this.renderer.setAttribute(this.element, "aria-hidden", "true");
|
|
262
|
+
this.decorative = true;
|
|
263
|
+
}
|
|
264
|
+
for (const [tag, nodeAttrs] of iconNode) {
|
|
265
|
+
const child = this.renderer.createElement(tag, "svg");
|
|
266
|
+
for (const [key, value] of Object.entries(nodeAttrs)) if (key !== "key") this.renderer.setAttribute(child, key, String(value));
|
|
267
|
+
this.renderer.appendChild(this.element, child);
|
|
268
|
+
this.rendered.push(child);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
272
|
+
minVersion: "12.0.0",
|
|
273
|
+
version: "22.2.3",
|
|
274
|
+
ngImport: i0,
|
|
275
|
+
type: VadivamIconBase,
|
|
276
|
+
deps: [],
|
|
277
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
278
|
+
});
|
|
279
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
280
|
+
minVersion: "17.1.0",
|
|
281
|
+
version: "22.2.3",
|
|
282
|
+
type: VadivamIconBase,
|
|
283
|
+
isStandalone: true,
|
|
284
|
+
inputs: {
|
|
285
|
+
name: {
|
|
286
|
+
classPropertyName: "name",
|
|
287
|
+
publicName: "name",
|
|
288
|
+
isSignal: true,
|
|
289
|
+
isRequired: false,
|
|
290
|
+
transformFunction: null
|
|
291
|
+
},
|
|
292
|
+
iconNode: {
|
|
293
|
+
classPropertyName: "iconNode",
|
|
294
|
+
publicName: "iconNode",
|
|
295
|
+
isSignal: true,
|
|
296
|
+
isRequired: false,
|
|
297
|
+
transformFunction: null
|
|
298
|
+
},
|
|
299
|
+
size: {
|
|
300
|
+
classPropertyName: "size",
|
|
301
|
+
publicName: "size",
|
|
302
|
+
isSignal: true,
|
|
303
|
+
isRequired: false,
|
|
304
|
+
transformFunction: null
|
|
305
|
+
},
|
|
306
|
+
color: {
|
|
307
|
+
classPropertyName: "color",
|
|
308
|
+
publicName: "color",
|
|
309
|
+
isSignal: true,
|
|
310
|
+
isRequired: false,
|
|
311
|
+
transformFunction: null
|
|
312
|
+
},
|
|
313
|
+
strokeWidth: {
|
|
314
|
+
classPropertyName: "strokeWidth",
|
|
315
|
+
publicName: "strokeWidth",
|
|
316
|
+
isSignal: true,
|
|
317
|
+
isRequired: false,
|
|
318
|
+
transformFunction: null
|
|
319
|
+
},
|
|
320
|
+
absoluteStrokeWidth: {
|
|
321
|
+
classPropertyName: "absoluteStrokeWidth",
|
|
322
|
+
publicName: "absoluteStrokeWidth",
|
|
323
|
+
isSignal: true,
|
|
324
|
+
isRequired: false,
|
|
325
|
+
transformFunction: null
|
|
326
|
+
},
|
|
327
|
+
title: {
|
|
328
|
+
classPropertyName: "title",
|
|
329
|
+
publicName: "title",
|
|
330
|
+
isSignal: true,
|
|
331
|
+
isRequired: false,
|
|
332
|
+
transformFunction: null
|
|
333
|
+
}
|
|
334
|
+
},
|
|
335
|
+
ngImport: i0
|
|
336
|
+
});
|
|
337
|
+
};
|
|
338
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
339
|
+
minVersion: "12.0.0",
|
|
340
|
+
version: "22.2.3",
|
|
341
|
+
ngImport: i0,
|
|
342
|
+
type: VadivamIconBase,
|
|
343
|
+
decorators: [{
|
|
344
|
+
type: Directive,
|
|
345
|
+
args: [{ standalone: true }]
|
|
346
|
+
}],
|
|
347
|
+
ctorParameters: () => [],
|
|
348
|
+
propDecorators: {
|
|
349
|
+
name: [{
|
|
350
|
+
type: i0.Input,
|
|
351
|
+
args: [{
|
|
352
|
+
isSignal: true,
|
|
353
|
+
alias: "name",
|
|
354
|
+
required: false
|
|
355
|
+
}]
|
|
356
|
+
}],
|
|
357
|
+
iconNode: [{
|
|
358
|
+
type: i0.Input,
|
|
359
|
+
args: [{
|
|
360
|
+
isSignal: true,
|
|
361
|
+
alias: "iconNode",
|
|
362
|
+
required: false
|
|
363
|
+
}]
|
|
364
|
+
}],
|
|
365
|
+
size: [{
|
|
366
|
+
type: i0.Input,
|
|
367
|
+
args: [{
|
|
368
|
+
isSignal: true,
|
|
369
|
+
alias: "size",
|
|
370
|
+
required: false
|
|
371
|
+
}]
|
|
372
|
+
}],
|
|
373
|
+
color: [{
|
|
374
|
+
type: i0.Input,
|
|
375
|
+
args: [{
|
|
376
|
+
isSignal: true,
|
|
377
|
+
alias: "color",
|
|
378
|
+
required: false
|
|
379
|
+
}]
|
|
380
|
+
}],
|
|
381
|
+
strokeWidth: [{
|
|
382
|
+
type: i0.Input,
|
|
383
|
+
args: [{
|
|
384
|
+
isSignal: true,
|
|
385
|
+
alias: "strokeWidth",
|
|
386
|
+
required: false
|
|
387
|
+
}]
|
|
388
|
+
}],
|
|
389
|
+
absoluteStrokeWidth: [{
|
|
390
|
+
type: i0.Input,
|
|
391
|
+
args: [{
|
|
392
|
+
isSignal: true,
|
|
393
|
+
alias: "absoluteStrokeWidth",
|
|
394
|
+
required: false
|
|
395
|
+
}]
|
|
396
|
+
}],
|
|
397
|
+
title: [{
|
|
398
|
+
type: i0.Input,
|
|
399
|
+
args: [{
|
|
400
|
+
isSignal: true,
|
|
401
|
+
alias: "title",
|
|
402
|
+
required: false
|
|
403
|
+
}]
|
|
404
|
+
}]
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
var Icon = class Icon extends VadivamIconBase {
|
|
408
|
+
definition = input(null, {
|
|
409
|
+
...ngDevMode ? { debugName: "definition" } : /* istanbul ignore next */ {},
|
|
410
|
+
alias: "vadivamIcon"
|
|
411
|
+
});
|
|
412
|
+
constructor() {
|
|
413
|
+
super();
|
|
414
|
+
effect(() => {
|
|
415
|
+
const value = this.definition();
|
|
416
|
+
if (Array.isArray(value)) this.setRuntimeIcon("", value);
|
|
417
|
+
else if (value && "name" in value) this.setRuntimeIcon(value.name, value.iconNode);
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
421
|
+
minVersion: "12.0.0",
|
|
422
|
+
version: "22.2.3",
|
|
423
|
+
ngImport: i0,
|
|
424
|
+
type: Icon,
|
|
425
|
+
deps: [],
|
|
426
|
+
target: i0.ɵɵFactoryTarget.Directive
|
|
427
|
+
});
|
|
428
|
+
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
429
|
+
minVersion: "17.1.0",
|
|
430
|
+
version: "22.2.3",
|
|
431
|
+
type: Icon,
|
|
432
|
+
isStandalone: true,
|
|
433
|
+
selector: "svg[vadivamIcon]",
|
|
434
|
+
inputs: { definition: {
|
|
435
|
+
classPropertyName: "definition",
|
|
436
|
+
publicName: "vadivamIcon",
|
|
437
|
+
isSignal: true,
|
|
438
|
+
isRequired: false,
|
|
439
|
+
transformFunction: null
|
|
440
|
+
} },
|
|
441
|
+
usesInheritance: true,
|
|
442
|
+
ngImport: i0
|
|
443
|
+
});
|
|
444
|
+
};
|
|
445
|
+
i0.ɵɵngDeclareClassMetadata({
|
|
446
|
+
minVersion: "12.0.0",
|
|
447
|
+
version: "22.2.3",
|
|
448
|
+
ngImport: i0,
|
|
449
|
+
type: Icon,
|
|
450
|
+
decorators: [{
|
|
451
|
+
type: Directive,
|
|
452
|
+
args: [{
|
|
453
|
+
selector: "svg[vadivamIcon]",
|
|
454
|
+
standalone: true
|
|
455
|
+
}]
|
|
456
|
+
}],
|
|
457
|
+
ctorParameters: () => [],
|
|
458
|
+
propDecorators: { definition: [{
|
|
459
|
+
type: i0.Input,
|
|
460
|
+
args: [{
|
|
461
|
+
isSignal: true,
|
|
462
|
+
alias: "vadivamIcon",
|
|
463
|
+
required: false
|
|
464
|
+
}]
|
|
465
|
+
}] }
|
|
466
|
+
});
|
|
467
|
+
export { provideVadivamConfig as a, createVadivamIcon as i, VADIVAM_CONFIG as n, VadivamIconBase as r, Icon as t };
|
|
468
|
+
|
|
469
|
+
//# sourceMappingURL=vadivam-angular-core-BAHrSm4q.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vadivam-angular-core-BAHrSm4q.mjs","names":[],"sources":["../../.generated/src/runtime-policy.ts","../../.generated/src/core.ts"],"sourcesContent":["export type SVGElementType = \"circle\" | \"ellipse\" | \"line\" | \"path\" | \"polygon\" | \"polyline\" | \"rect\";\nexport type IconNode = readonly [tag: SVGElementType, attrs: Record<string, string | number | boolean>][];\nconst SAFE_ICON_TAGS = new Set([\"circle\",\"ellipse\",\"line\",\"path\",\"polygon\",\"polyline\",\"rect\"]);\nconst GEOMETRY_ATTRIBUTES = {\n circle: new Set([\"cx\", \"cy\", \"r\"]),\n ellipse: new Set([\"cx\", \"cy\", \"rx\", \"ry\"]),\n line: new Set([\"x1\", \"y1\", \"x2\", \"y2\"]),\n path: new Set([\"d\", \"pathLength\"]),\n polygon: new Set([\"points\", \"pathLength\"]),\n polyline: new Set([\"points\", \"pathLength\"]),\n rect: new Set([\"x\", \"y\", \"width\", \"height\", \"rx\", \"ry\", \"pathLength\"]),\n};\nconst PRESENTATION_ATTRIBUTES = new Set([\n \"class\", \"className\", \"id\", \"role\", \"key\", \"opacity\", \"transform\",\n \"clip-rule\", \"clipRule\", \"fill\", \"fill-opacity\", \"fillOpacity\", \"fill-rule\", \"fillRule\",\n \"shape-rendering\", \"shapeRendering\", \"stroke\", \"stroke-dasharray\", \"strokeDasharray\",\n \"stroke-dashoffset\", \"strokeDashoffset\", \"stroke-linecap\", \"strokeLinecap\",\n \"stroke-linejoin\", \"strokeLinejoin\", \"stroke-miterlimit\", \"strokeMiterlimit\",\n \"stroke-opacity\", \"strokeOpacity\", \"stroke-width\", \"strokeWidth\", \"vector-effect\", \"vectorEffect\",\n]);\nconst SAFE_ATTRIBUTE_NAME = /^[A-Za-z_][A-Za-z0-9_.-]*$/;\nconst SAFE_DATA_ATTRIBUTE = /^data-[A-Za-z0-9_.-]+$/;\nconst SAFE_ARIA_ATTRIBUTE = /^aria-[A-Za-z0-9_.-]+$/;\nconst SAFE_STYLE_NAME = /^(?:--[A-Za-z0-9_-]+|[A-Za-z_][A-Za-z0-9_-]*)$/;\nconst SAFE_EVENT_NAME = /^on(?::[A-Za-z][A-Za-z0-9_.-]*|[A-Za-z][A-Za-z0-9_.-]*)$/;\nconst UNSAFE_ROOT_ATTRIBUTE = /^(?:dangerouslySetInnerHTML|innerHTML|innerText|textContent|children|href|xlinkHref|src|srcdoc)$/i;\nconst URL_VALUE_ATTRIBUTE = /^(?:fill|stroke|filter|clipPath|clip-path|mask|marker|markerStart|marker-start|markerMid|marker-mid|markerEnd|marker-end|cursor)$/;\nconst SCRIPT_SCHEME = /(?:java|vb)script\\s*:/i;\nconst URL_FUNCTION = /url\\s*\\(/i;\nconst COMPLETE_URL_FUNCTION = /url\\s*\\(\\s*([\"']?)([^\"')\\s]+)\\1\\s*\\)/gi;\nconst EXTERNAL_SCHEME = /(?:https?|data|blob|file|ftp)\\s*:/i;\nconst CSS_ESCAPE = /\\\\/;\nconst CSS_RESOURCE_FUNCTION = /(?:image-set|cross-fade|image|src)\\s*\\(/i;\nconst CSS_IMPORT = /@import\\b/i;\nconst MAX_ICON_DEPTH = 32;\nconst MAX_ICON_NODES = 1024;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction isSafeValue(name: string, value: unknown): value is string | number | boolean {\n if (value === undefined || value === null || typeof value === \"function\") return false;\n if (typeof value === \"object\") return false;\n if (typeof value === \"string\" && SCRIPT_SCHEME.test(value)) return false;\n if ((name === \"fill\" || name === \"stroke\") && typeof value === \"string\" && hasExternalUrl(value)) return false;\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\n}\n\nfunction hasExternalUrl(value: string) {\n if (!URL_FUNCTION.test(value)) return false;\n COMPLETE_URL_FUNCTION.lastIndex = 0;\n let matched = false;\n let match: RegExpExecArray | null;\n while ((match = COMPLETE_URL_FUNCTION.exec(value)) !== null) {\n matched = true;\n if (!match[2].startsWith(\"#\")) return true;\n }\n return !matched;\n}\n\nfunction hasUnsafeStyleValue(value: string) {\n return SCRIPT_SCHEME.test(value) || EXTERNAL_SCHEME.test(value) || CSS_ESCAPE.test(value) ||\n CSS_RESOURCE_FUNCTION.test(value) || CSS_IMPORT.test(value) || hasExternalUrl(value);\n}\n\nfunction isSafeIconAttribute(tag: SVGElementType, name: string) {\n return SAFE_ATTRIBUTE_NAME.test(name) && (\n GEOMETRY_ATTRIBUTES[tag]?.has(name) ||\n PRESENTATION_ATTRIBUTES.has(name) ||\n SAFE_DATA_ATTRIBUTE.test(name) ||\n SAFE_ARIA_ATTRIBUTE.test(name)\n );\n}\n\nfunction sanitizeStyle(value: unknown): unknown {\n if (typeof value === \"string\") return hasUnsafeStyleValue(value) ? undefined : value;\n if (Array.isArray(value)) {\n const safeValues = value.map(sanitizeStyle).filter((entry) => entry !== undefined);\n return safeValues.length ? safeValues : undefined;\n }\n if (!isRecord(value)) return undefined;\n const safeStyle: Record<string, string | number> = {};\n for (const [name, entry] of Object.entries(value)) {\n if (!SAFE_STYLE_NAME.test(name) || (typeof entry !== \"string\" && typeof entry !== \"number\")) continue;\n if (typeof entry === \"string\" && hasUnsafeStyleValue(entry)) continue;\n safeStyle[name] = entry;\n }\n return Object.keys(safeStyle).length ? safeStyle : undefined;\n}\n\nfunction safeRootValue(name: string, value: unknown): unknown {\n if (name === \"style\") return sanitizeStyle(value);\n if (value === undefined || value === null || typeof value === \"object\" || typeof value === \"function\") return undefined;\n if (typeof value === \"string\" && URL_VALUE_ATTRIBUTE.test(name) && (SCRIPT_SCHEME.test(value) || hasExternalUrl(value))) return undefined;\n return value;\n}\n\nexport function sanitizePaint(value: unknown, fallback = \"currentColor\") {\n const safeValue = safeRootValue(\"stroke\", value);\n return typeof safeValue === \"string\" || typeof safeValue === \"number\" ? safeValue : fallback;\n}\n\nfunction sanitizeNodes(iconNode: unknown, activeArrays: WeakSet<object>, state: { count: number }, depth: number): IconNode {\n if (!Array.isArray(iconNode) || depth > MAX_ICON_DEPTH || activeArrays.has(iconNode)) return [];\n activeArrays.add(iconNode);\n const safeNodes: [SVGElementType, Record<string, string | number | boolean>][] = [];\n for (const node of iconNode) {\n state.count += 1;\n if (state.count > MAX_ICON_NODES) break;\n if (!Array.isArray(node) || typeof node[0] !== \"string\" || !SAFE_ICON_TAGS.has(node[0]) || !isRecord(node[1])) continue;\n const [tag, attrs, children] = node as [SVGElementType, Record<string, unknown>, unknown?];\n const safeAttrs: Record<string, string | number | boolean> = {};\n for (const [name, value] of Object.entries(attrs)) {\n if (isSafeIconAttribute(tag, name) && isSafeValue(name, value)) safeAttrs[name] = value;\n }\n safeNodes.push([tag, safeAttrs]);\n }\n activeArrays.delete(iconNode);\n return safeNodes;\n}\n\nexport function sanitizeIconNode(iconNode: unknown): IconNode {\n return sanitizeNodes(iconNode, new WeakSet(), { count: 0 }, 0);\n}\n\nexport function sanitizeRootAttributes(attrs: unknown, allowEventFunctions = false): Record<string, unknown> {\n if (!isRecord(attrs)) return {};\n const safeAttrs: Record<string, unknown> = {};\n for (const name of Object.keys(attrs)) {\n const value = attrs[name];\n if (/^on/i.test(name)) {\n if (allowEventFunctions && typeof value === \"function\" && SAFE_EVENT_NAME.test(name)) {\n Object.defineProperty(safeAttrs, name, { enumerable: true, get: () => typeof attrs[name] === \"function\" ? attrs[name] : undefined });\n }\n continue;\n }\n if (!SAFE_ATTRIBUTE_NAME.test(name) || UNSAFE_ROOT_ATTRIBUTE.test(name) || /^prop/i.test(name)) continue;\n if (safeRootValue(name, value) === undefined) continue;\n Object.defineProperty(safeAttrs, name, { enumerable: true, get: () => safeRootValue(name, attrs[name]) });\n }\n return safeAttrs;\n}\n","import { Directive, ElementRef, effect, inject, InjectionToken, input, Provider, Renderer2 } from \"@angular/core\";\nimport { sanitizeIconNode, sanitizePaint } from \"./runtime-policy\";\nimport type { IconNode, SVGElementType } from \"./runtime-policy\";\nexport type { IconNode, SVGElementType } from \"./runtime-policy\";\nexport interface VadivamIconData { name: string; iconNode: IconNode; }\nexport interface VadivamConfig { size?: string | number; color?: string; strokeWidth?: string | number; absoluteStrokeWidth?: boolean; class?: string; }\nexport type IconName = \"a-arrow-down\" | \"a-arrow-up\" | \"a-large-small\" | \"accessibility\" | \"activity\" | \"air-vent\" | \"airplay\" | \"alarm-clock-check\" | \"alarm-clock-minus\" | \"alarm-clock-off\" | \"alarm-clock-plus\" | \"alarm-clock\" | \"alarm-smoke\" | \"align-center-horizontal\" | \"align-center-vertical\" | \"align-end-horizontal\" | \"align-end-vertical\" | \"align-horizontal-distribute-center\" | \"align-horizontal-distribute-end\" | \"align-horizontal-distribute-start\" | \"align-horizontal-justify-center\" | \"align-horizontal-justify-end\" | \"align-horizontal-justify-start\" | \"align-horizontal-space-around\" | \"align-horizontal-space-between\" | \"align-start-horizontal\" | \"align-start-vertical\" | \"align-vertical-distribute-center\" | \"align-vertical-distribute-end\" | \"align-vertical-distribute-start\" | \"align-vertical-justify-center\" | \"align-vertical-justify-end\" | \"align-vertical-justify-start\" | \"align-vertical-space-around\" | \"align-vertical-space-between\" | \"ambulance\" | \"ampersand\" | \"ampersands\" | \"amphora\" | \"anchor\" | \"antenna\" | \"anvil\" | \"aperture\" | \"app-window-mac\" | \"app-window\" | \"apple\" | \"archive-restore\" | \"archive-x\" | \"archive\" | \"armchair\" | \"arrow-big-down-dash\" | \"arrow-big-down\" | \"arrow-big-left-dash\" | \"arrow-big-left\" | \"arrow-big-right-dash\" | \"arrow-big-right\" | \"arrow-big-up-dash\" | \"arrow-big-up\" | \"arrow-down-0-1\" | \"arrow-down-1-0\" | \"arrow-down-a-z\" | \"arrow-down-from-line\" | \"arrow-down-left\" | \"arrow-down-narrow-wide\" | \"arrow-down-right\" | \"arrow-down-to-dot\" | \"arrow-down-to-line\" | \"arrow-down-up\" | \"arrow-down-wide-narrow\" | \"arrow-down-z-a\" | \"arrow-down\" | \"arrow-left-from-line\" | \"arrow-left-right\" | \"arrow-left-to-line\" | \"arrow-left\" | \"arrow-right-from-line\" | \"arrow-right-left\" | \"arrow-right-to-line\" | \"arrow-right\" | \"arrow-up-0-1\" | \"arrow-up-1-0\" | \"arrow-up-a-z\" | \"arrow-up-down\" | \"arrow-up-from-dot\" | \"arrow-up-from-line\" | \"arrow-up-left\" | \"arrow-up-narrow-wide\" | \"arrow-up-right\" | \"arrow-up-to-line\" | \"arrow-up-wide-narrow\" | \"arrow-up-z-a\" | \"arrow-up\" | \"arrows-up-from-line\" | \"asterisk\" | \"astroid\" | \"at-sign\" | \"atom\" | \"audio-lines\" | \"audio-waveform\" | \"award\" | \"axe\" | \"axis-3d\" | \"baby\" | \"backpack\" | \"badge-alert\" | \"badge-cent\" | \"badge-check\" | \"badge-dollar-sign\" | \"badge-euro\" | \"badge-indian-rupee\" | \"badge-info\" | \"badge-japanese-yen\" | \"badge-minus\" | \"badge-percent\" | \"badge-plus\" | \"badge-pound-sterling\" | \"badge-question-mark\" | \"badge-russian-ruble\" | \"badge-swiss-franc\" | \"badge-turkish-lira\" | \"badge-x\" | \"badge\" | \"baggage-claim\" | \"balloon\" | \"ban\" | \"banana\" | \"bandage\" | \"banknote-arrow-down\" | \"banknote-arrow-up\" | \"banknote-x\" | \"banknote\" | \"barcode\" | \"barrel\" | \"baseline\" | \"bath\" | \"battery-charging\" | \"battery-full\" | \"battery-low\" | \"battery-medium\" | \"battery-plus\" | \"battery-warning\" | \"battery\" | \"beaker\" | \"bean-off\" | \"bean\" | \"bed-double\" | \"bed-single\" | \"bed\" | \"beef-off\" | \"beef\" | \"beer-off\" | \"beer\" | \"bell-check\" | \"bell-dot\" | \"bell-electric\" | \"bell-minus\" | \"bell-off\" | \"bell-plus\" | \"bell-ring\" | \"bell\" | \"between-horizontal-end\" | \"between-horizontal-start\" | \"between-vertical-end\" | \"between-vertical-start\" | \"blocks\" | \"bluetooth\" | \"bold\" | \"book-open-check\" | \"book-open-text\" | \"book-open\" | \"book\" | \"bookmark\" | \"bot-message-square\" | \"bot\" | \"box\" | \"boxes\" | \"braces\" | \"brain-circuit\" | \"brain\" | \"briefcase-business\" | \"briefcase\" | \"bug\" | \"building-complex\" | \"building\" | \"calculator\" | \"calendar-clock\" | \"calendar-days\" | \"calendar-minus\" | \"calendar-plus\" | \"calendar\" | \"camera\" | \"captions\" | \"car\" | \"chart-area\" | \"chart-bar\" | \"chart-column-big\" | \"chart-column\" | \"chart-line\" | \"chart-no-axes-combined\" | \"chart-pie\" | \"check-check\" | \"check\" | \"chevron-down\" | \"chevron-left\" | \"chevron-right\" | \"chevron-up\" | \"chevrons-left\" | \"chevrons-right\" | \"chevrons-up-down\" | \"circle-alert\" | \"circle-arrow-down\" | \"circle-arrow-left\" | \"circle-arrow-right\" | \"circle-arrow-up\" | \"circle-check-big\" | \"circle-check\" | \"circle-dashed\" | \"circle-dollar-sign\" | \"circle-dot-dashed\" | \"circle-dot\" | \"circle-fading-arrow-up\" | \"circle-fading-plus\" | \"circle-off\" | \"circle-plus\" | \"circle-question-mark\" | \"circle-stop\" | \"circle-user-round\" | \"circle-user\" | \"circle-x\" | \"circle\" | \"clipboard-clock\" | \"clipboard-list\" | \"clipboard-paste\" | \"clipboard\" | \"clock-1\" | \"clock-10\" | \"clock-11\" | \"clock-12\" | \"clock-2\" | \"clock-3\" | \"clock-4\" | \"clock-5\" | \"clock-6\" | \"clock-7\" | \"clock-8\" | \"clock-9\" | \"clock\" | \"cloud-upload\" | \"cloud\" | \"code-xml\" | \"code\" | \"coffee\" | \"cog\" | \"coins\" | \"columns-2\" | \"columns-3\" | \"columns-4\" | \"command\" | \"compass\" | \"container\" | \"copy\" | \"corner-down-left\" | \"corner-down-right\" | \"corner-left-down\" | \"corner-left-up\" | \"corner-right-down\" | \"corner-right-up\" | \"corner-up-left\" | \"corner-up-right\" | \"cpu\" | \"credit-card\" | \"crown\" | \"database\" | \"dollar-sign\" | \"dot\" | \"download\" | \"earth\" | \"eighth-notes\" | \"ellipsis-vertical\" | \"ellipsis\" | \"eraser\" | \"expand\" | \"external-link\" | \"eye-off\" | \"eye\" | \"face-angry\" | \"face-expressionless\" | \"face-slightly-smiling\" | \"file-archive\" | \"file-chart-column-increasing\" | \"file-chart-column\" | \"file-code\" | \"file-down\" | \"file-exclamation-point\" | \"file-image\" | \"file-minus-corner\" | \"file-minus\" | \"file-plus-corner\" | \"file-plus\" | \"file-search-corner\" | \"file-search\" | \"file-text\" | \"file-up\" | \"file\" | \"film\" | \"flag-triangle-left\" | \"flag-triangle-right\" | \"flag\" | \"flame\" | \"flask-conical\" | \"folder-code\" | \"folder-open\" | \"folder-plus\" | \"folder-search-2\" | \"folder-search\" | \"folder\" | \"footprints\" | \"forward\" | \"frame\" | \"fullscreen\" | \"funnel\" | \"gallery-horizontal-end\" | \"gallery-horizontal\" | \"gallery-thumbnails\" | \"gallery-vertical-end\" | \"gallery-vertical\" | \"gauge\" | \"gem\" | \"gift\" | \"git-branch-minus\" | \"git-branch-plus\" | \"git-branch\" | \"git-commit-horizontal\" | \"git-commit-vertical\" | \"globe\" | \"graduation-cap\" | \"grip-horizontal\" | \"grip-vertical\" | \"hand-coins\" | \"handshake\" | \"hard-drive\" | \"hash\" | \"heading-1\" | \"heading-2\" | \"heading-3\" | \"heading-4\" | \"heading-5\" | \"heading-6\" | \"heading\" | \"headset\" | \"heart-handshake\" | \"heart\" | \"hexagon\" | \"hourglass\" | \"house\" | \"id-card\" | \"image\" | \"inbox\" | \"info\" | \"italic\" | \"key-round\" | \"key\" | \"keyboard\" | \"landmark\" | \"languages\" | \"laptop\" | \"layers\" | \"layout-dashboard\" | \"layout-grid\" | \"leaf\" | \"library\" | \"life-buoy\" | \"lightbulb\" | \"link-2\" | \"link\" | \"list-checks\" | \"list-filter\" | \"list-ordered\" | \"list-todo\" | \"list\" | \"loader-circle\" | \"loader\" | \"lock-keyhole\" | \"lock\" | \"log-in\" | \"log-out\" | \"mail-check\" | \"mail\" | \"map-pin-house\" | \"map-pin\" | \"map-pinned\" | \"map\" | \"maximize-2\" | \"maximize\" | \"megaphone\" | \"menu\" | \"message-circle-dashed\" | \"message-circle-more\" | \"message-circle-question-mark\" | \"message-circle\" | \"message-square-text\" | \"message-square\" | \"messages-square\" | \"mic\" | \"minimize-2\" | \"minimize\" | \"minus\" | \"monitor\" | \"moon\" | \"mouse-pointer-2\" | \"mouse-pointer-click\" | \"mouse-pointer\" | \"move-left\" | \"move-right\" | \"move-up-right\" | \"network\" | \"newspaper\" | \"notebook-pen\" | \"octagon-x\" | \"package\" | \"paintbrush\" | \"palette\" | \"panel-left-close\" | \"panel-left-open\" | \"panel-left\" | \"panel-right-close\" | \"panel-right-open\" | \"panel-right\" | \"panels-top-left\" | \"paperclip\" | \"pause\" | \"pencil-line\" | \"pencil\" | \"phone\" | \"pin\" | \"play\" | \"plug\" | \"plus\" | \"popcorn\" | \"power\" | \"presentation\" | \"puzzle\" | \"qr-code\" | \"quote\" | \"radar\" | \"radio\" | \"receipt-text\" | \"redo\" | \"refresh-ccw\" | \"refresh-cw\" | \"repeat\" | \"rocket\" | \"rotate-ccw-clock\" | \"rotate-ccw\" | \"rotate-cw\" | \"save\" | \"scale\" | \"scissors\" | \"scroll-text\" | \"scroll\" | \"search\" | \"send-horizontal\" | \"send\" | \"server\" | \"settings-2\" | \"settings\" | \"share-2\" | \"share\" | \"shield-alert\" | \"shield-check\" | \"shield-user\" | \"shield\" | \"shopping-bag\" | \"shopping-cart\" | \"shuffle\" | \"skip-forward\" | \"slash\" | \"sliders-horizontal\" | \"smartphone\" | \"sparkle\" | \"sparkles\" | \"square-arrow-out-up-right\" | \"square-bookmark\" | \"square-centerline-dashed-horizontal\" | \"square-centerline-dashed-vertical\" | \"square-check\" | \"square-dashed\" | \"square-pen\" | \"square-terminal\" | \"square\" | \"star-off\" | \"star\" | \"store\" | \"strikethrough\" | \"sun\" | \"table\" | \"tablet\" | \"tag\" | \"target\" | \"telescope\" | \"terminal\" | \"text-align-center\" | \"text-align-end\" | \"text-align-start\" | \"thermometer\" | \"thumbs-down\" | \"thumbs-up\" | \"timer-off\" | \"timer\" | \"trash\" | \"trending-down\" | \"trending-up\" | \"triangle-alert\" | \"trophy\" | \"truck\" | \"tv\" | \"type\" | \"underline\" | \"undo-2\" | \"undo\" | \"upload\" | \"user-check\" | \"user-pen\" | \"user-plus\" | \"user-round-plus\" | \"user-round-x\" | \"user-round\" | \"user-star\" | \"user\" | \"users-round\" | \"users\" | \"video\" | \"volume-1\" | \"volume-2\" | \"volume-off\" | \"volume-x\" | \"volume\" | \"wallet\" | \"waves-horizontal\" | \"wifi-off\" | \"wifi\" | \"workflow\" | \"wrench\" | \"x\" | \"zap\" | \"zoom-in\" | \"zoom-out\";\nexport const VADIVAM_CONFIG = new InjectionToken<VadivamConfig>(\"vadivam-icons\", { factory: () => ({}) });\nexport function provideVadivamConfig(config: VadivamConfig): Provider { return { provide: VADIVAM_CONFIG, useValue: Object.freeze({ ...config }) }; }\nexport function createVadivamIcon(name: string, iconNode: IconNode): VadivamIconData { return Object.freeze({ name, iconNode }); }\nconst defaults = { size: 24, color: \"currentColor\", strokeWidth: 2 };\n@Directive({ standalone: true })\nexport abstract class VadivamIconBase {\n protected defaultName = \"\";\n protected defaultIconNode: IconNode = [];\n readonly name = input<string>();\n readonly iconNode = input<IconNode>();\n readonly size = input<string | number>();\n readonly color = input<string>();\n readonly strokeWidth = input<string | number>();\n readonly absoluteStrokeWidth = input<boolean | string>();\n readonly title = input<string>();\n protected readonly element = inject<ElementRef<SVGSVGElement>>(ElementRef).nativeElement;\n protected readonly renderer = inject(Renderer2);\n protected readonly config = inject(VADIVAM_CONFIG);\n private runtimeName?: string;\n private runtimeIconNode?: IconNode;\n private rendered: Node[] = [];\n private generatedClasses = new Set<string>();\n private decorative = false;\n constructor() { effect(() => { this.name(); this.iconNode(); this.size(); this.color(); this.strokeWidth(); this.absoluteStrokeWidth(); this.title(); this.render(); }); }\n protected setRuntimeIcon(name: string, iconNode: IconNode) { this.runtimeName = name; this.runtimeIconNode = iconNode; this.render(); }\n protected render() {\n for (const child of this.rendered) this.renderer.removeChild(this.element, child);\n for (const className of this.generatedClasses) this.renderer.removeClass(this.element, className);\n if (this.decorative) this.renderer.removeAttribute(this.element, \"aria-hidden\");\n this.rendered = [];\n this.generatedClasses.clear();\n this.decorative = false;\n const name = this.runtimeName ?? this.name() ?? this.defaultName;\n const iconNode = sanitizeIconNode(this.runtimeIconNode ?? this.iconNode() ?? this.defaultIconNode);\n const size = this.size() ?? this.config.size ?? defaults.size;\n const stroke = this.strokeWidth() ?? this.config.strokeWidth ?? defaults.strokeWidth;\n const numericSize = Number(size);\n const numericStroke = Number(stroke);\n const absoluteInput = this.absoluteStrokeWidth();\n const absolute = absoluteInput === \"\" || absoluteInput === true || absoluteInput === \"true\" || (absoluteInput == null && this.config.absoluteStrokeWidth === true);\n const calculated = absolute && Number.isFinite(numericSize) && numericSize !== 0 && Number.isFinite(numericStroke) ? numericStroke * 24 / numericSize : stroke;\n const attrs: Record<string, string | number> = { xmlns: \"http://www.w3.org/2000/svg\", width: size, height: size, viewBox: \"0 0 24 24\", fill: \"none\", stroke: sanitizePaint(this.color() ?? this.config.color), \"stroke-width\": calculated, \"stroke-linecap\": \"round\", \"stroke-linejoin\": \"round\" };\n for (const [key, value] of Object.entries(attrs)) this.renderer.setAttribute(this.element, key, String(value));\n const classes = [\"vadivam\", name && `vadivam-${name}`, ...(this.config.class ?? \"\").split(/\\s+/)].filter(Boolean) as string[];\n for (const className of new Set(classes)) { this.renderer.addClass(this.element, className); this.generatedClasses.add(className); }\n const titleText = this.title();\n if (titleText) { const title = this.renderer.createElement(\"title\", \"svg\"); this.renderer.appendChild(title, this.renderer.createText(titleText)); this.renderer.appendChild(this.element, title); this.rendered.push(title); this.renderer.setAttribute(this.element, \"role\", \"img\"); }\n const labelled = titleText || Array.from(this.element.attributes).some(({ name: attribute }) => attribute.startsWith(\"aria-\") || attribute === \"role\");\n if (!labelled) { this.renderer.setAttribute(this.element, \"aria-hidden\", \"true\"); this.decorative = true; }\n for (const [tag, nodeAttrs] of iconNode) { const child = this.renderer.createElement(tag, \"svg\"); for (const [key, value] of Object.entries(nodeAttrs)) if (key !== \"key\") this.renderer.setAttribute(child, key, String(value)); this.renderer.appendChild(this.element, child); this.rendered.push(child); }\n }\n}\n@Directive({ selector: \"svg[vadivamIcon]\", standalone: true })\nexport class Icon extends VadivamIconBase {\n readonly definition = input<VadivamIconData | IconNode | null>(null, { alias: \"vadivamIcon\" });\n constructor() { super(); effect(() => { const value = this.definition(); if (Array.isArray(value)) this.setRuntimeIcon(\"\", value as IconNode); else if (value && \"name\" in value) this.setRuntimeIcon(value.name, value.iconNode); }); }\n}\n"],"mappings":"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"}
|