vadivam-angular 0.0.46 → 0.0.48
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 +27122 -12953
- package/dist/fesm2022/vadivam-angular.mjs.map +1 -1
- package/dist/icons/bolt.d.ts +1 -0
- package/dist/icons/bolt.js +1 -0
- package/dist/icons/book-text.d.ts +1 -0
- package/dist/icons/book-text.js +1 -0
- 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/brush-cleaning.d.ts +1 -0
- package/dist/icons/brush-cleaning.js +1 -0
- package/dist/icons/building-complex.d.ts +1 -0
- package/dist/icons/building-complex.js +1 -0
- package/dist/icons/calendar-check.d.ts +1 -0
- package/dist/icons/calendar-check.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/circle-play.d.ts +1 -0
- package/dist/icons/circle-play.js +1 -0
- package/dist/icons/clipboard-check.d.ts +1 -0
- package/dist/icons/clipboard-check.js +1 -0
- package/dist/icons/clipboard-clock.d.ts +1 -0
- package/dist/icons/clipboard-clock.js +1 -0
- package/dist/icons/delete.d.ts +1 -0
- package/dist/icons/delete.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/eye-closed.d.ts +1 -0
- package/dist/icons/eye-closed.js +1 -0
- package/dist/icons/file-pen-line.d.ts +1 -0
- package/dist/icons/file-pen-line.js +1 -0
- package/dist/icons/file-spreadsheet.d.ts +1 -0
- package/dist/icons/file-spreadsheet.js +1 -0
- package/dist/icons/file-user.d.ts +1 -0
- package/dist/icons/file-user.js +1 -0
- package/dist/icons/files.d.ts +1 -0
- package/dist/icons/files.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/hand.d.ts +1 -0
- package/dist/icons/hand.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/images.d.ts +1 -0
- package/dist/icons/images.js +1 -0
- package/dist/icons/indian-rupee.d.ts +1 -0
- package/dist/icons/indian-rupee.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/library-big.d.ts +1 -0
- package/dist/icons/library-big.js +1 -0
- package/dist/icons/logs.d.ts +1 -0
- package/dist/icons/logs.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-more.d.ts +1 -0
- package/dist/icons/message-square-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/notepad-text.d.ts +1 -0
- package/dist/icons/notepad-text.js +1 -0
- package/dist/icons/octagon-alert.d.ts +1 -0
- package/dist/icons/octagon-alert.js +1 -0
- package/dist/icons/party-popper.d.ts +1 -0
- package/dist/icons/party-popper.js +1 -0
- package/dist/icons/pen-line.d.ts +1 -0
- package/dist/icons/pen-line.js +1 -0
- package/dist/icons/pen.d.ts +1 -0
- package/dist/icons/pen.js +1 -0
- package/dist/icons/person-standing.d.ts +1 -0
- package/dist/icons/person-standing.js +1 -0
- package/dist/icons/phone-call.d.ts +1 -0
- package/dist/icons/phone-call.js +1 -0
- package/dist/icons/plane.d.ts +1 -0
- package/dist/icons/plane.js +1 -0
- package/dist/icons/printer.d.ts +1 -0
- package/dist/icons/printer.js +1 -0
- package/dist/icons/receipt-text.d.ts +1 -0
- package/dist/icons/receipt-text.js +1 -0
- package/dist/icons/receipt.d.ts +1 -0
- package/dist/icons/receipt.js +1 -0
- package/dist/icons/route.d.ts +1 -0
- package/dist/icons/route.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/shopping-basket.d.ts +1 -0
- package/dist/icons/shopping-basket.js +1 -0
- package/dist/icons/sparkle.d.ts +1 -0
- package/dist/icons/sparkle.js +1 -0
- package/dist/icons/sprout.d.ts +1 -0
- package/dist/icons/sprout.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-big.d.ts +1 -0
- package/dist/icons/square-check-big.js +1 -0
- package/dist/icons/square-check.d.ts +1 -0
- package/dist/icons/square-check.js +1 -0
- package/dist/icons/square-plus.d.ts +1 -0
- package/dist/icons/square-plus.js +1 -0
- package/dist/icons/store.d.ts +1 -0
- package/dist/icons/store.js +1 -0
- package/dist/icons/sun-moon.d.ts +1 -0
- package/dist/icons/sun-moon.js +1 -0
- package/dist/icons/text-align-justify.d.ts +1 -0
- package/dist/icons/text-align-justify.js +1 -0
- package/dist/icons/ticket.d.ts +1 -0
- package/dist/icons/ticket.js +1 -0
- package/dist/icons/truck.d.ts +1 -0
- package/dist/icons/truck.js +1 -0
- package/dist/icons/user-cog.d.ts +1 -0
- package/dist/icons/user-cog.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-pen.d.ts +1 -0
- package/dist/icons/user-round-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/icons/utensils.d.ts +1 -0
- package/dist/icons/utensils.js +1 -0
- package/dist/icons/wand-sparkles.d.ts +1 -0
- package/dist/icons/wand-sparkles.js +1 -0
- package/dist/types/vadivam-angular.d.ts +7666 -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\" | \"bolt\" | \"book-open-check\" | \"book-open-text\" | \"book-open\" | \"book-text\" | \"book\" | \"bookmark\" | \"bot-message-square\" | \"bot\" | \"box\" | \"boxes\" | \"braces\" | \"brain-circuit\" | \"brain\" | \"briefcase-business\" | \"briefcase\" | \"brush-cleaning\" | \"bug\" | \"building-complex\" | \"building\" | \"calculator\" | \"calendar-check\" | \"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-play\" | \"circle-plus\" | \"circle-question-mark\" | \"circle-stop\" | \"circle-user-round\" | \"circle-user\" | \"circle-x\" | \"circle\" | \"clipboard-check\" | \"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\" | \"delete\" | \"dollar-sign\" | \"dot\" | \"download\" | \"earth\" | \"eighth-notes\" | \"ellipsis-vertical\" | \"ellipsis\" | \"eraser\" | \"expand\" | \"external-link\" | \"eye-closed\" | \"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-pen-line\" | \"file-plus-corner\" | \"file-plus\" | \"file-search-corner\" | \"file-search\" | \"file-spreadsheet\" | \"file-text\" | \"file-up\" | \"file-user\" | \"file\" | \"files\" | \"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\" | \"hand\" | \"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\" | \"images\" | \"inbox\" | \"indian-rupee\" | \"info\" | \"italic\" | \"key-round\" | \"key\" | \"keyboard\" | \"landmark\" | \"languages\" | \"laptop\" | \"layers\" | \"layout-dashboard\" | \"layout-grid\" | \"leaf\" | \"library-big\" | \"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\" | \"logs\" | \"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-more\" | \"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\" | \"notepad-text\" | \"octagon-alert\" | \"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\" | \"party-popper\" | \"pause\" | \"pen-line\" | \"pen\" | \"pencil-line\" | \"pencil\" | \"person-standing\" | \"phone-call\" | \"phone\" | \"pin\" | \"plane\" | \"play\" | \"plug\" | \"plus\" | \"popcorn\" | \"power\" | \"presentation\" | \"printer\" | \"puzzle\" | \"qr-code\" | \"quote\" | \"radar\" | \"radio\" | \"receipt-text\" | \"receipt\" | \"redo\" | \"refresh-ccw\" | \"refresh-cw\" | \"repeat\" | \"rocket\" | \"rotate-ccw-clock\" | \"rotate-ccw\" | \"rotate-cw\" | \"route\" | \"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-basket\" | \"shopping-cart\" | \"shuffle\" | \"skip-forward\" | \"slash\" | \"sliders-horizontal\" | \"smartphone\" | \"sparkle\" | \"sparkles\" | \"sprout\" | \"square-arrow-out-up-right\" | \"square-bookmark\" | \"square-centerline-dashed-horizontal\" | \"square-centerline-dashed-vertical\" | \"square-check-big\" | \"square-check\" | \"square-dashed\" | \"square-pen\" | \"square-plus\" | \"square-terminal\" | \"square\" | \"star-off\" | \"star\" | \"store\" | \"strikethrough\" | \"sun-moon\" | \"sun\" | \"table\" | \"tablet\" | \"tag\" | \"target\" | \"telescope\" | \"terminal\" | \"text-align-center\" | \"text-align-end\" | \"text-align-justify\" | \"text-align-start\" | \"thermometer\" | \"thumbs-down\" | \"thumbs-up\" | \"ticket\" | \"timer-off\" | \"timer\" | \"trash\" | \"trending-down\" | \"trending-up\" | \"triangle-alert\" | \"trophy\" | \"truck\" | \"tv\" | \"type\" | \"underline\" | \"undo-2\" | \"undo\" | \"upload\" | \"user-check\" | \"user-cog\" | \"user-pen\" | \"user-plus\" | \"user-round-pen\" | \"user-round-plus\" | \"user-round-x\" | \"user-round\" | \"user-star\" | \"user\" | \"users-round\" | \"users\" | \"utensils\" | \"video\" | \"volume-1\" | \"volume-2\" | \"volume-off\" | \"volume-x\" | \"volume\" | \"wallet\" | \"wand-sparkles\" | \"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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"}
|