@lucca/prisme 22.0.4-rc.1 → 22.1.0-rc.1

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.
@@ -1,6 +1,7 @@
1
- import { NgClass } from '@angular/common';
1
+ import { isPlatformBrowser, NgClass } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { input, booleanAttribute, computed, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { ViewEncapsulation, ChangeDetectionStrategy, Component, inject, ApplicationRef, EnvironmentInjector, PLATFORM_ID, createComponent, Injectable, input, booleanAttribute, computed, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';
4
+ import { LuSafeExternalSvgPipe } from '@lucca/prisme/safe-content';
4
5
 
5
6
  /**
6
7
  * Available IconComponent types
@@ -8,8 +9,328 @@ import { input, booleanAttribute, computed, ViewEncapsulation, ChangeDetectionSt
8
9
  const ICON_SIZE = ['XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL'];
9
10
  const ICON_COLOR = ['product', 'error', 'warning', 'success', 'light', 'placeholder', 'inherit'];
10
11
 
12
+ const ICON_ALIASES = {
13
+ adduser: 'peopleAdd',
14
+ alarm: 'timeAlarm',
15
+ analytics: 'chartVerticalBar',
16
+ answer: 'bubbleAnswer',
17
+ apiSync: 'databaseArrow',
18
+ apps: 'app',
19
+ archive: 'boxArchive',
20
+ arrowDouble: 'arrowForward',
21
+ arrowEast: 'arrowChevronRight',
22
+ arrowFullEast: 'arrowRight',
23
+ arrowFullNorth: 'arrowTop',
24
+ arrowFullSouth: 'arrowBottom',
25
+ arrowFullWest: 'arrowLeft',
26
+ arrowNorth: 'arrowChevronTop',
27
+ arrowOppositeHorizontal: 'arrowOppositeLeftRight',
28
+ arrowSouth: 'arrowChevronBottom',
29
+ arrowWest: 'arrowChevronLeft',
30
+ attach: 'formatClipperAttachment',
31
+ backward: 'arrowBackward',
32
+ bank: 'moneyBuildingBank',
33
+ bankingCard: 'moneyPaymentCard',
34
+ bed: 'hotelBed',
35
+ bill: 'moneyBill',
36
+ birthday: 'foodBirthdayCake',
37
+ breakfast: 'foodCroissant',
38
+ breaktime: 'foodCoffee',
39
+ brokenHeart: 'heartStrikethrough',
40
+ build: 'signConstruction',
41
+ building: 'buildingCompany',
42
+ bus: 'transportBus',
43
+ calendar: 'calendarDate',
44
+ calendarOff: 'calendarStrikethrough',
45
+ camera: 'deviceCamera',
46
+ cancel: 'signCancel',
47
+ car: 'transportCar',
48
+ certifKo: 'certificationFailed',
49
+ certifOk: 'certificationSuccess',
50
+ certifWaiting: 'certificationWaiting',
51
+ chair: 'officeChair',
52
+ charts: 'chartVerticalBar',
53
+ chat: 'bubbleSpeech',
54
+ chevronBottom: 'arrowChevronBottom',
55
+ chevronEast: 'arrowChevronRight',
56
+ chevronLeft: 'arrowChevronLeft',
57
+ chevronNorth: 'arrowChevronTop',
58
+ chevronRight: 'arrowChevronRight',
59
+ chevronSouth: 'arrowChevronBottom',
60
+ chevronTop: 'arrowChevronTop',
61
+ chevronWest: 'arrowChevronLeft',
62
+ chronoOn: 'timeTimer',
63
+ cleanCar: 'transportCarwashStation',
64
+ clock: 'timeClock',
65
+ close: 'mathsMultiplicate',
66
+ cloudUpload: 'arrowUpload',
67
+ coffee: 'foodCoffee',
68
+ collapse: 'arrowUnfoldLess',
69
+ compass: 'officeCompass',
70
+ computer: 'deviceComputer',
71
+ computerMouse: 'deviceMouse',
72
+ confirm: 'signConfirm',
73
+ contract: 'fileContract',
74
+ copy: 'fileCopy',
75
+ creditDebit: 'arrowOppositeVertical',
76
+ cross: 'mathsMultiplicate',
77
+ crossBold: 'mathsMultiplicate',
78
+ crown: 'capCrown',
79
+ cut: 'officeScissors',
80
+ dashboard: 'chartPie',
81
+ dialog: 'bubbleSpeech',
82
+ diner: 'foodClocheDish',
83
+ discount: 'signDiscount',
84
+ distribute: 'arrowCorner',
85
+ divide: 'mathsDivide',
86
+ dollar: 'moneyCurrencyDollar',
87
+ donut: 'chartDonut',
88
+ donutChart: 'chartDonut',
89
+ dossierRh: 'peopleId',
90
+ download: 'arrowDownload',
91
+ drag: 'dotsDrag',
92
+ drink: 'foodCocktail',
93
+ eastArrow: 'arrowChevronRight',
94
+ eastThinArrow: 'arrowChevronRight',
95
+ edit: 'officePen',
96
+ editFrame: 'officePenWriting',
97
+ editMini: 'officePen',
98
+ editWrite: 'officePenWriting',
99
+ ellipsis: 'menuDots',
100
+ error: 'signError',
101
+ establishment: 'buildingCompany',
102
+ euro: 'moneyCurrencyEuro',
103
+ evolution: 'trendingGrowth',
104
+ evolutionDown: 'trendingLoss',
105
+ expand: 'arrowUnfoldMore',
106
+ face: 'peoplePerson',
107
+ familyTree: 'chartFlow',
108
+ file: 'fileDocument',
109
+ files: 'fileDocument',
110
+ filter: 'filtersFunnel',
111
+ filterAbstract: 'filtersDescending',
112
+ floor: 'layers',
113
+ folder: 'fileFolder',
114
+ forbidden: 'signBan',
115
+ formatBold: 'formatTextBold',
116
+ formatClear: 'formatTextClear',
117
+ formatItalic: 'formatTextItalic',
118
+ formatJustify: 'formatText',
119
+ formatListNb: 'formatNumberedList',
120
+ formatRedo: 'formatCornerUpRight',
121
+ formatSize: 'formatTextSize',
122
+ formatStrikethrough: 'formatTextStrikethrough',
123
+ formatUnderlined: 'formatTextUnderline',
124
+ formatUndo: 'formatCornerUpLeft',
125
+ forward: 'arrowForward',
126
+ fullscreen: 'cornersFullscreenOpen',
127
+ fullscreenExit: 'cornersFullscreenExit',
128
+ funnel: 'filtersFunnel',
129
+ gallery: 'pictureGallery',
130
+ gasoline: 'transportGazStation',
131
+ globe: 'mapGlobe',
132
+ graduate: 'capGraduate',
133
+ group: 'peopleGroup',
134
+ hamburgerMenu: 'menuBurger',
135
+ hanger: 'hotelHanger',
136
+ help: 'signHelp',
137
+ helpOutline: 'signHelp',
138
+ high: 'priorityHigh',
139
+ higher: 'priorityHigher',
140
+ highest: 'priorityHighest',
141
+ history: 'timePast',
142
+ home: 'buildingHouse',
143
+ homeFill: 'buildingHouseFilled',
144
+ homeStarred: 'buildingHouseStarred',
145
+ horizontalBarChart: 'chartHorizontalBar',
146
+ hotel: 'hotelBed',
147
+ house: 'buildingHouse',
148
+ houseFilled: 'buildingHouseFilled',
149
+ houseStarred: 'buildingHouseStarred',
150
+ identityCard: 'peopleId',
151
+ image: 'pictureImage',
152
+ importCb: 'moneyCardImport',
153
+ importDirty: 'fileImport',
154
+ importPristine: 'fileImport',
155
+ info: 'signInfo',
156
+ iron: 'hotelIron',
157
+ key: 'lockKey',
158
+ laptop: 'deviceLaptop',
159
+ level: 'chartLevels',
160
+ lightBulb: 'bulb',
161
+ list: 'formatBulletedList',
162
+ listTodo: 'listChecklist',
163
+ location: 'mapLocation',
164
+ lock: 'lockClose',
165
+ login: 'arrowLogin',
166
+ logout: 'arrowLogout',
167
+ low: 'priorityLow',
168
+ lower: 'priorityLower',
169
+ lowest: 'priorityLowest',
170
+ lucca: 'jumpingCc',
171
+ luggage: 'hotelLuggage',
172
+ lunch: 'foodBurger',
173
+ lunchAlternative: 'foodBobun',
174
+ mail: 'mailEnvelope',
175
+ mailbox: 'mailMailbox',
176
+ meal: 'foodCutlery',
177
+ medium: 'priorityMedium',
178
+ menu: 'menuBurger',
179
+ menuEllipsis: 'menuDots',
180
+ messenger: 'bubbleConversation',
181
+ mileage: 'transportSpeedometer',
182
+ milestone: 'journey',
183
+ minimize: 'mathsMinus',
184
+ minus: 'mathsMinus',
185
+ money: 'moneyCoins',
186
+ moneybag: 'moneyBag',
187
+ mosaic: 'app',
188
+ nineTiles: 'app',
189
+ noMoney: 'moneyBagStrikethrough',
190
+ northArrow: 'arrowChevronTop',
191
+ northThinArrow: 'arrowChevronTop',
192
+ notification: 'bell',
193
+ orgTree: 'chartFlow',
194
+ outside: 'arrowExternal',
195
+ overplanned: 'timeTimerStrikethrough',
196
+ palette: 'picturePalette',
197
+ parking: 'signParking',
198
+ partial: 'mathsMinus',
199
+ paste: 'clipboard',
200
+ pause: 'playerPauseCircle',
201
+ payPeriod: 'calendarPlanning',
202
+ payment: 'moneyCoins',
203
+ piggyBank: 'moneyPiggyBank',
204
+ pin: 'mapPin',
205
+ plane: 'transportPlane',
206
+ planning: 'calendarDate',
207
+ planningEdit: 'calendarEdit',
208
+ planningManage: 'calendarSettings',
209
+ play: 'playerPlayCircle',
210
+ playFull: 'playerPlay',
211
+ plus: 'mathsPlus',
212
+ plusBold: 'mathsPlus',
213
+ postage: 'mailMailbox',
214
+ postpone: 'timeFuture',
215
+ present: 'gift',
216
+ pressing: 'hotelIron',
217
+ pricetag: 'priceTag',
218
+ print: 'devicePrinter',
219
+ puzzle: 'jigsawPuzzle',
220
+ refresh: 'arrowReset',
221
+ reorder: 'filtersSort',
222
+ reply: 'arrowReply',
223
+ restaurant: 'foodChefHat',
224
+ rocket: 'transportRocket',
225
+ rotate: 'rotationLeft',
226
+ rotateRight: 'rotationRight',
227
+ save: 'floppyDiskSave',
228
+ school: 'capGraduate',
229
+ search: 'searchMagnifyingGlass',
230
+ send: 'mailPaperPlane',
231
+ send2user: 'peopleSwitch',
232
+ settings: 'settingsGear',
233
+ sign: 'fileSign',
234
+ sliders: 'settingsEqualizer',
235
+ snack: 'foodSandwich',
236
+ sort: 'filtersSort',
237
+ southArrow: 'arrowChevronBottom',
238
+ southThinArrow: 'arrowChevronBottom',
239
+ speedometer: 'transportSpeedometer',
240
+ stamp: 'mailMailbox',
241
+ stop: 'playerStopCircle',
242
+ store: 'buildingStore',
243
+ subway: 'transportSubway',
244
+ success: 'signSuccess',
245
+ supplies: 'officeSupplies',
246
+ swap: 'arrowOppositeLeftRight',
247
+ sync: 'arrowSync',
248
+ syncDisabled: 'arrowSyncStrikethrough',
249
+ table: 'dataTable',
250
+ talk: 'bubbleSpeech',
251
+ taxi: 'transportTaxi',
252
+ teacher: 'peopleTeacher',
253
+ telephone: 'officePhone',
254
+ test: 'laboratoryTestFlask',
255
+ thinCross: 'mathsMultiplicate',
256
+ tick: 'signConfirm',
257
+ tickBold: 'signConfirm',
258
+ tickThin: 'signConfirm',
259
+ tiles: 'app',
260
+ timer: 'timeHourglass',
261
+ timesheet: 'timeTimesheet',
262
+ toll: 'transportToll',
263
+ tollDollar: 'transportToll',
264
+ tollEuro: 'transportToll',
265
+ tools: 'settingsTools',
266
+ train: 'transportTrain',
267
+ trash: 'trashDelete',
268
+ truck: 'transportTruck',
269
+ unarchive: 'boxUnarchive',
270
+ unlink: 'formatUnlink',
271
+ unlock: 'lockOpen',
272
+ unstared: 'star',
273
+ unwatch: 'eyeStrikethrough',
274
+ update: 'arrowReset',
275
+ upload: 'arrowUpload',
276
+ user: 'peoplePerson',
277
+ userAdd: 'peopleAdd',
278
+ userFile: 'peopleId',
279
+ userGroup: 'peopleGroup',
280
+ userRemove: 'peopleRemove',
281
+ userRoles: 'peopleLocked',
282
+ userSendTo: 'peopleSwitch',
283
+ wallet: 'moneyWallet',
284
+ warning: 'signWarning',
285
+ watch: 'eye',
286
+ weatherStorm: 'weatherStormy',
287
+ weatherSun: 'weatherSunny',
288
+ westArrow: 'arrowChevronLeft',
289
+ westThinArrow: 'arrowChevronLeft',
290
+ };
291
+
292
+ const ICON_SPRITE_URL = 'https://cdn.lucca.fr/transverse/prisme/icons/svg/sprite.svg';
293
+ class IconSpriteComponent {
294
+ constructor() {
295
+ this.spriteUrl = ICON_SPRITE_URL;
296
+ }
297
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconSpriteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: IconSpriteComponent, isStandalone: true, selector: "pr-icon-sprite", host: { attributes: { "aria-hidden": "true" }, classAttribute: "pr-u-mask" }, ngImport: i0, template: "<div [innerHTML]=\"spriteUrl | luSafeExternalSvg\"></div>\n", dependencies: [{ kind: "pipe", type: LuSafeExternalSvgPipe, name: "luSafeExternalSvg" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
299
+ }
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconSpriteComponent, decorators: [{
301
+ type: Component,
302
+ args: [{ selector: 'pr-icon-sprite', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [LuSafeExternalSvgPipe], host: {
303
+ class: 'pr-u-mask',
304
+ 'aria-hidden': 'true',
305
+ }, template: "<div [innerHTML]=\"spriteUrl | luSafeExternalSvg\"></div>\n" }]
306
+ }] });
307
+
308
+ class IconSpriteService {
309
+ #applicationRef = inject(ApplicationRef);
310
+ #environmentInjector = inject(EnvironmentInjector);
311
+ #platformId = inject(PLATFORM_ID);
312
+ #requested = false;
313
+ ensureSpriteLoaded() {
314
+ if (this.#requested || !isPlatformBrowser(this.#platformId)) {
315
+ return;
316
+ }
317
+ this.#requested = true;
318
+ const componentRef = createComponent(IconSpriteComponent, { environmentInjector: this.#environmentInjector });
319
+ document.body.append(componentRef.location.nativeElement);
320
+ this.#applicationRef.attachView(componentRef.hostView);
321
+ }
322
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconSpriteService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
323
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconSpriteService, providedIn: 'root' }); }
324
+ }
325
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconSpriteService, decorators: [{
326
+ type: Injectable,
327
+ args: [{ providedIn: 'root' }]
328
+ }] });
329
+
11
330
  class IconComponent {
331
+ #iconSpriteService;
12
332
  constructor() {
333
+ this.#iconSpriteService = inject(IconSpriteService);
13
334
  /**
14
335
  * Defines icon to display
15
336
  */
@@ -26,38 +347,59 @@ class IconComponent {
26
347
  this.size = input(/* @ts-ignore */
27
348
  ...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
28
349
  /**
29
- * Changes the color of the icon (inherit by default)
350
+ * Changes the color of the icon (inherits from context by default)
30
351
  */
31
- this.color = input('inherit', /* @ts-ignore */
32
- ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
352
+ this.color = input(/* @ts-ignore */
353
+ ...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
33
354
  /**
34
355
  * Display icon in AI mode
35
356
  */
36
357
  this.AI = input(false, { ...(ngDevMode ? { debugName: "AI" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
37
358
  this.iconClasses = computed(() => {
38
359
  const size = this.size();
360
+ const color = this.color();
39
361
  return {
40
362
  [`mod-${size}`]: !!size,
363
+ [`icon-color-${color}`]: !!color && color !== 'inherit',
41
364
  };
42
365
  }, /* @ts-ignore */
43
366
  ...(ngDevMode ? [{ debugName: "iconClasses" }] : /* istanbul ignore next */ []));
367
+ this.spriteIconId = computed(() => {
368
+ const icon = this.icon();
369
+ const canonicalIcon = ICON_ALIASES[icon] ?? icon;
370
+ return canonicalIcon.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
371
+ }, /* @ts-ignore */
372
+ ...(ngDevMode ? [{ debugName: "spriteIconId" }] : /* istanbul ignore next */ []));
373
+ this.#iconSpriteService.ensureSpriteLoaded();
44
374
  }
45
375
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: IconComponent, isStandalone: true, selector: "lu-icon, pr-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, AI: { classPropertyName: "AI", publicName: "AI", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<span\n\taria-hidden=\"true\"\n\t[class.mod-AI]=\"AI()\"\n\tclass=\"lucca-icon icon-{{ icon() }} icon-color-{{ color() }}\"\n\t[ngClass]=\"iconClasses()\"\n></span>\n@if (alt()) {\n\t<span class=\"pr-u-mask\">{{ alt() }}</span>\n}\n", styles: ["@layer base{lu-icon{display:inline-flex}}@layer mods{.icon-color-product{color:var(--palettes-product-700)}.icon-color-error{color:var(--palettes-error-700)}.icon-color-warning{color:var(--palettes-warning-700)}.icon-color-success{color:var(--palettes-success-700)}.icon-color-light{color:var(--palettes-neutral-600)}.icon-color-placeholder{color:var(--palettes-neutral-400)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
376
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: IconComponent, isStandalone: true, selector: "lu-icon, pr-icon", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: true, transformFunction: null }, alt: { classPropertyName: "alt", publicName: "alt", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, AI: { classPropertyName: "AI", publicName: "AI", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<svg\n\tclass=\"lucca-icon\"\n\t[class.mod-AI]=\"AI()\"\n\t[ngClass]=\"iconClasses()\"\n\t[attr.aria-hidden]=\"this.alt() ? null : 'true'\"\n\t[attr.role]=\"this.alt() ? 'img' : null\"\n\t[attr.aria-label]=\"alt()\"\n>\n\t<use [attr.href]=\"'#' + spriteIconId()\" />\n</svg>\n", styles: ["@layer components{:where(lu-icon,pr-icon) .lucca-icon{--components-icon-color: inherit;--components-icon-sizeDefault: 1.5rem;block-size:var(--components-icon-size, var(--icon-size, var(--components-icon-sizeDefault)));inline-size:var(--components-icon-size, var(--icon-size, var(--components-icon-sizeDefault)));color:var(--components-icon-color);fill:currentColor}}@layer mods{:where(lu-icon,pr-icon) .lucca-icon.mod-XXS{--components-icon-size: .75rem}:where(lu-icon,pr-icon) .lucca-icon.mod-XS{--components-icon-size: 1rem}:where(lu-icon,pr-icon) .lucca-icon.mod-S{--components-icon-size: 1.25rem}:where(lu-icon,pr-icon) .lucca-icon.mod-M{--components-icon-size: 1.5rem}:where(lu-icon,pr-icon) .lucca-icon.mod-L{--components-icon-size: 1.75rem}:where(lu-icon,pr-icon) .lucca-icon.mod-XL{--components-icon-size: 2rem}:where(lu-icon,pr-icon) .lucca-icon.mod-XXL{--components-icon-size: 2.5rem}:where(lu-icon,pr-icon) .lucca-icon.icon-color-product{--components-icon-color: var(--palettes-product-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-error{--components-icon-color: var(--palettes-error-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-warning{--components-icon-color: var(--palettes-warning-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-success{--components-icon-color: var(--palettes-success-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-light{--components-icon-color: var(--palettes-neutral-600)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-placeholder{--components-icon-color: var(--palettes-neutral-400)}:where(lu-icon,pr-icon) .lucca-icon.mod-AI{fill:url(#lu-icon-ai-gradient)}}@layer base{lu-icon,pr-icon{display:inline-flex;vertical-align:bottom}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
47
377
  }
48
378
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: IconComponent, decorators: [{
49
379
  type: Component,
50
- args: [{ selector: 'lu-icon, pr-icon', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<span\n\taria-hidden=\"true\"\n\t[class.mod-AI]=\"AI()\"\n\tclass=\"lucca-icon icon-{{ icon() }} icon-color-{{ color() }}\"\n\t[ngClass]=\"iconClasses()\"\n></span>\n@if (alt()) {\n\t<span class=\"pr-u-mask\">{{ alt() }}</span>\n}\n", styles: ["@layer base{lu-icon{display:inline-flex}}@layer mods{.icon-color-product{color:var(--palettes-product-700)}.icon-color-error{color:var(--palettes-error-700)}.icon-color-warning{color:var(--palettes-warning-700)}.icon-color-success{color:var(--palettes-success-700)}.icon-color-light{color:var(--palettes-neutral-600)}.icon-color-placeholder{color:var(--palettes-neutral-400)}}\n"] }]
51
- }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], AI: [{ type: i0.Input, args: [{ isSignal: true, alias: "AI", required: false }] }] } });
380
+ args: [{ selector: 'lu-icon, pr-icon', imports: [NgClass], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<svg\n\tclass=\"lucca-icon\"\n\t[class.mod-AI]=\"AI()\"\n\t[ngClass]=\"iconClasses()\"\n\t[attr.aria-hidden]=\"this.alt() ? null : 'true'\"\n\t[attr.role]=\"this.alt() ? 'img' : null\"\n\t[attr.aria-label]=\"alt()\"\n>\n\t<use [attr.href]=\"'#' + spriteIconId()\" />\n</svg>\n", styles: ["@layer components{:where(lu-icon,pr-icon) .lucca-icon{--components-icon-color: inherit;--components-icon-sizeDefault: 1.5rem;block-size:var(--components-icon-size, var(--icon-size, var(--components-icon-sizeDefault)));inline-size:var(--components-icon-size, var(--icon-size, var(--components-icon-sizeDefault)));color:var(--components-icon-color);fill:currentColor}}@layer mods{:where(lu-icon,pr-icon) .lucca-icon.mod-XXS{--components-icon-size: .75rem}:where(lu-icon,pr-icon) .lucca-icon.mod-XS{--components-icon-size: 1rem}:where(lu-icon,pr-icon) .lucca-icon.mod-S{--components-icon-size: 1.25rem}:where(lu-icon,pr-icon) .lucca-icon.mod-M{--components-icon-size: 1.5rem}:where(lu-icon,pr-icon) .lucca-icon.mod-L{--components-icon-size: 1.75rem}:where(lu-icon,pr-icon) .lucca-icon.mod-XL{--components-icon-size: 2rem}:where(lu-icon,pr-icon) .lucca-icon.mod-XXL{--components-icon-size: 2.5rem}:where(lu-icon,pr-icon) .lucca-icon.icon-color-product{--components-icon-color: var(--palettes-product-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-error{--components-icon-color: var(--palettes-error-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-warning{--components-icon-color: var(--palettes-warning-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-success{--components-icon-color: var(--palettes-success-700)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-light{--components-icon-color: var(--palettes-neutral-600)}:where(lu-icon,pr-icon) .lucca-icon.icon-color-placeholder{--components-icon-color: var(--palettes-neutral-400)}:where(lu-icon,pr-icon) .lucca-icon.mod-AI{fill:url(#lu-icon-ai-gradient)}}@layer base{lu-icon,pr-icon{display:inline-flex;vertical-align:bottom}}\n"] }]
381
+ }], ctorParameters: () => [], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], alt: [{ type: i0.Input, args: [{ isSignal: true, alias: "alt", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], AI: [{ type: i0.Input, args: [{ isSignal: true, alias: "AI", required: false }] }] } });
382
+
383
+ /**
384
+ * Triggers the icon sprite fetch at application startup instead of waiting for the first `<lu-icon>`/`<pr-icon>` to mount.
385
+ * Optional: without it, the sprite still loads lazily on first icon usage.
386
+ */
387
+ function provideLuIconSpritePreload() {
388
+ return makeEnvironmentProviders([
389
+ provideAppInitializer(() => {
390
+ inject(IconSpriteService).ensureSpriteLoaded();
391
+ }),
392
+ ]);
393
+ }
52
394
 
53
395
  // *******************************************
54
396
  // *** THIS FILE IS GENERATED, DO NOT EDIT ***
55
- // *** The generator is update-icons.js ***
397
+ // *** The generator is packages/prisme/icon/update-icons.js ***
56
398
  // *******************************************
57
399
 
58
400
  /**
59
401
  * Generated bundle index. Do not edit.
60
402
  */
61
403
 
62
- export { ICON_COLOR, ICON_SIZE, IconComponent };
404
+ export { ICON_COLOR, ICON_SIZE, IconComponent, provideLuIconSpritePreload };
63
405
  //# sourceMappingURL=lucca-prisme-icon.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"lucca-prisme-icon.mjs","sources":["../../../packages/prisme/icon/icon.type.ts","../../../packages/prisme/icon/icon.component.ts","../../../packages/prisme/icon/icon.component.html","../../../packages/prisme/icon/icons.ts","../../../packages/prisme/icon/lucca-prisme-icon.ts"],"sourcesContent":["/**\n * Available IconComponent types\n */\n\nexport const ICON_SIZE = ['XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL'] as const;\nexport type IconSize = (typeof ICON_SIZE)[number];\n\nexport const ICON_COLOR = ['product', 'error', 'warning', 'success', 'light', 'placeholder', 'inherit'] as const;\nexport type IconColor = (typeof ICON_COLOR)[number];\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { IconColor, IconSize } from './icon.type';\nimport type { LuccaIcon } from './icons';\n\n@Component({\n\tselector: 'lu-icon, pr-icon',\n\timports: [NgClass],\n\ttemplateUrl: './icon.component.html',\n\tstyleUrl: './icon.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class IconComponent {\n\t/**\n\t * Defines icon to display\n\t */\n\treadonly icon = input.required<LuccaIcon>();\n\n\t/**\n\t * Information conveyed by the screen reader\n\t */\n\treadonly alt = input<string>();\n\n\t/**\n\t * Which size should the icon be? XXS to XXL\n\t */\n\treadonly size = input<IconSize>();\n\n\t/**\n\t * Changes the color of the icon (inherit by default)\n\t */\n\treadonly color = input<IconColor>('inherit');\n\n\t/**\n\t * Display icon in AI mode\n\t */\n\treadonly AI = input<boolean, boolean | `${boolean}` | ''>(false, { transform: booleanAttribute });\n\n\treadonly iconClasses = computed(() => {\n\t\tconst size = this.size();\n\t\treturn {\n\t\t\t[`mod-${size}`]: !!size,\n\t\t};\n\t});\n}\n","<span\n\taria-hidden=\"true\"\n\t[class.mod-AI]=\"AI()\"\n\tclass=\"lucca-icon icon-{{ icon() }} icon-color-{{ color() }}\"\n\t[ngClass]=\"iconClasses()\"\n></span>\n@if (alt()) {\n\t<span class=\"pr-u-mask\">{{ alt() }}</span>\n}\n","// *******************************************\n// *** THIS FILE IS GENERATED, DO NOT EDIT ***\n// *** The generator is update-icons.js\t\t ***\n// *******************************************\n\nexport type LuccaIcon =\n\t| 'app'\n\t| 'apps'\n\t| 'nineTiles'\n\t| 'mosaic'\n\t| 'tiles'\n\t| 'appWidget'\n\t| 'arrowBackward'\n\t| 'backward'\n\t| 'arrowBottom'\n\t| 'arrowFullSouth'\n\t| 'arrowBottomLeft'\n\t| 'arrowBottomRight'\n\t| 'arrowCenterReduce'\n\t| 'arrowChevronBottom'\n\t| 'arrowSouth'\n\t| 'southArrow'\n\t| 'southThinArrow'\n\t| 'chevronSouth'\n\t| 'chevronBottom'\n\t| 'arrowChevronLeft'\n\t| 'arrowWest'\n\t| 'westArrow'\n\t| 'westThinArrow'\n\t| 'chevronWest'\n\t| 'chevronLeft'\n\t| 'arrowChevronRight'\n\t| 'arrowEast'\n\t| 'eastArrow'\n\t| 'eastThinArrow'\n\t| 'chevronEast'\n\t| 'chevronRight'\n\t| 'arrowChevronTop'\n\t| 'arrowNorth'\n\t| 'northArrow'\n\t| 'northThinArrow'\n\t| 'chevronNorth'\n\t| 'chevronTop'\n\t| 'arrowCorner'\n\t| 'distribute'\n\t| 'arrowCornerExpand'\n\t| 'arrowCurvedDownRight'\n\t| 'arrowDownload'\n\t| 'download'\n\t| 'arrowExternal'\n\t| 'outside'\n\t| 'arrowForward'\n\t| 'arrowDouble'\n\t| 'forward'\n\t| 'arrowLeft'\n\t| 'arrowFullWest'\n\t| 'arrowLineBottom'\n\t| 'arrowLineTop'\n\t| 'arrowLogin'\n\t| 'login'\n\t| 'arrowLogout'\n\t| 'logout'\n\t| 'arrowOppositeLeftRight'\n\t| 'arrowOppositeHorizontal'\n\t| 'swap'\n\t| 'arrowOppositeRightLeft'\n\t| 'arrowOppositeTopBottom'\n\t| 'arrowOppositeVertical'\n\t| 'creditDebit'\n\t| 'arrowRedo'\n\t| 'arrowReply'\n\t| 'reply'\n\t| 'arrowReset'\n\t| 'refresh'\n\t| 'update'\n\t| 'arrowRight'\n\t| 'arrowFullEast'\n\t| 'arrowSync'\n\t| 'sync'\n\t| 'arrowSyncStrikethrough'\n\t| 'syncDisabled'\n\t| 'arrowTop'\n\t| 'arrowFullNorth'\n\t| 'arrowTopLeft'\n\t| 'arrowTopRight'\n\t| 'arrowUndo'\n\t| 'arrowUnfoldLess'\n\t| 'collapse'\n\t| 'arrowUnfoldMore'\n\t| 'expand'\n\t| 'arrowUpload'\n\t| 'upload'\n\t| 'cloudUpload'\n\t| 'bell'\n\t| 'notification'\n\t| 'bellStrikethrough'\n\t| 'book'\n\t| 'bookmark'\n\t| 'bookmarkFilled'\n\t| 'boxArchive'\n\t| 'archive'\n\t| 'boxUnarchive'\n\t| 'unarchive'\n\t| 'branch'\n\t| 'bubbleAnswer'\n\t| 'answer'\n\t| 'bubbleConversation'\n\t| 'messenger'\n\t| 'bubbleSpeech'\n\t| 'chat'\n\t| 'talk'\n\t| 'dialog'\n\t| 'bubbleSpeechStrikethrough'\n\t| 'bubbleStars'\n\t| 'buildingCompany'\n\t| 'building'\n\t| 'establishment'\n\t| 'buildingHouse'\n\t| 'house'\n\t| 'home'\n\t| 'buildingHouseFilled'\n\t| 'houseFilled'\n\t| 'homeFill'\n\t| 'buildingHouseStarred'\n\t| 'houseStarred'\n\t| 'homeStarred'\n\t| 'buildingStore'\n\t| 'store'\n\t| 'bulb'\n\t| 'lightBulb'\n\t| 'calendarChecked'\n\t| 'calendarDate'\n\t| 'calendar'\n\t| 'planning'\n\t| 'calendarEdit'\n\t| 'planningEdit'\n\t| 'calendarPlanning'\n\t| 'payPeriod'\n\t| 'calendarSettings'\n\t| 'planningManage'\n\t| 'calendarStrikethrough'\n\t| 'calendarOff'\n\t| 'capCrown'\n\t| 'crown'\n\t| 'capCrownFilled'\n\t| 'capGraduate'\n\t| 'graduate'\n\t| 'school'\n\t| 'certificationFailed'\n\t| 'certifKo'\n\t| 'certificationSuccess'\n\t| 'certifOk'\n\t| 'certificationWaiting'\n\t| 'certifWaiting'\n\t| 'chartDonut'\n\t| 'donut'\n\t| 'donutChart'\n\t| 'chartFlow'\n\t| 'familyTree'\n\t| 'orgTree'\n\t| 'chartHorizontalBar'\n\t| 'horizontalBarChart'\n\t| 'chartLevels'\n\t| 'level'\n\t| 'chartPie'\n\t| 'dashboard'\n\t| 'chartSpider'\n\t| 'chartTree'\n\t| 'chartVerticalBar'\n\t| 'analytics'\n\t| 'charts'\n\t| 'clipboard'\n\t| 'paste'\n\t| 'completion'\n\t| 'cornersFocus'\n\t| 'cornersFullscreenExit'\n\t| 'fullscreenExit'\n\t| 'cornersFullscreenOpen'\n\t| 'fullscreen'\n\t| 'dataTable'\n\t| 'table'\n\t| 'database'\n\t| 'databaseArrow'\n\t| 'apiSync'\n\t| 'deviceCamera'\n\t| 'camera'\n\t| 'deviceComputer'\n\t| 'computer'\n\t| 'deviceLaptop'\n\t| 'laptop'\n\t| 'deviceMobile'\n\t| 'deviceMouse'\n\t| 'computerMouse'\n\t| 'devicePrinter'\n\t| 'print'\n\t| 'deviceTablet'\n\t| 'deviceVideo'\n\t| 'dotsDrag'\n\t| 'drag'\n\t| 'emojiSmile'\n\t| 'eye'\n\t| 'watch'\n\t| 'eyeStrikethrough'\n\t| 'unwatch'\n\t| 'fileContract'\n\t| 'contract'\n\t| 'fileCopy'\n\t| 'copy'\n\t| 'fileDocument'\n\t| 'file'\n\t| 'files'\n\t| 'fileExport'\n\t| 'fileFolder'\n\t| 'folder'\n\t| 'fileImport'\n\t| 'importDirty'\n\t| 'importPristine'\n\t| 'filePlus'\n\t| 'fileSign'\n\t| 'sign'\n\t| 'filtersDescending'\n\t| 'filterAbstract'\n\t| 'filtersFunnel'\n\t| 'funnel'\n\t| 'filter'\n\t| 'filtersSort'\n\t| 'sort'\n\t| 'reorder'\n\t| 'flag'\n\t| 'floppyDiskSave'\n\t| 'save'\n\t| 'foodBirthdayCake'\n\t| 'birthday'\n\t| 'foodBobun'\n\t| 'lunchAlternative'\n\t| 'foodBurger'\n\t| 'lunch'\n\t| 'foodChefHat'\n\t| 'restaurant'\n\t| 'foodClocheDish'\n\t| 'diner'\n\t| 'foodCocktail'\n\t| 'drink'\n\t| 'foodCoffee'\n\t| 'coffee'\n\t| 'breaktime'\n\t| 'foodCroissant'\n\t| 'breakfast'\n\t| 'foodCutlery'\n\t| 'meal'\n\t| 'foodSandwich'\n\t| 'snack'\n\t| 'formatBulletedList'\n\t| 'list'\n\t| 'formatClipperAttachment'\n\t| 'attach'\n\t| 'formatCornerUpLeft'\n\t| 'formatUndo'\n\t| 'formatCornerUpRight'\n\t| 'formatRedo'\n\t| 'formatLink'\n\t| 'formatNumberedList'\n\t| 'formatListNb'\n\t| 'formatText'\n\t| 'formatJustify'\n\t| 'formatTextBold'\n\t| 'formatBold'\n\t| 'formatTextClear'\n\t| 'formatClear'\n\t| 'formatTextItalic'\n\t| 'formatItalic'\n\t| 'formatTextSize'\n\t| 'formatSize'\n\t| 'formatTextStrikethrough'\n\t| 'formatStrikethrough'\n\t| 'formatTextUnderline'\n\t| 'formatUnderlined'\n\t| 'formatUnlink'\n\t| 'unlink'\n\t| 'gift'\n\t| 'present'\n\t| 'heart'\n\t| 'heartFilled'\n\t| 'heartStrikethrough'\n\t| 'brokenHeart'\n\t| 'hotelBed'\n\t| 'bed'\n\t| 'hotel'\n\t| 'hotelHanger'\n\t| 'hanger'\n\t| 'hotelIron'\n\t| 'iron'\n\t| 'pressing'\n\t| 'hotelLuggage'\n\t| 'luggage'\n\t| 'jigsawPuzzle'\n\t| 'puzzle'\n\t| 'journey'\n\t| 'milestone'\n\t| 'jumpingCc'\n\t| 'lucca'\n\t| 'laboratoryTestFlask'\n\t| 'test'\n\t| 'layers'\n\t| 'floor'\n\t| 'listChecked'\n\t| 'listChecklist'\n\t| 'listTodo'\n\t| 'listMultipleChoices'\n\t| 'lockClose'\n\t| 'lock'\n\t| 'lockKey'\n\t| 'key'\n\t| 'lockOpen'\n\t| 'unlock'\n\t| 'mailEnvelope'\n\t| 'mail'\n\t| 'mailMailbox'\n\t| 'mailbox'\n\t| 'stamp'\n\t| 'postage'\n\t| 'mailPaperPlane'\n\t| 'send'\n\t| 'mapGlobe'\n\t| 'globe'\n\t| 'mapLocation'\n\t| 'location'\n\t| 'mapPin'\n\t| 'pin'\n\t| 'mapPlan'\n\t| 'mapTripStep'\n\t| 'mathsDivide'\n\t| 'divide'\n\t| 'mathsEquals'\n\t| 'mathsMinus'\n\t| 'minus'\n\t| 'partial'\n\t| 'minimize'\n\t| 'mathsMultiplicate'\n\t| 'close'\n\t| 'thinCross'\n\t| 'cross'\n\t| 'crossBold'\n\t| 'mathsNotEqual'\n\t| 'mathsPlus'\n\t| 'plus'\n\t| 'plusBold'\n\t| 'medicalDoctor'\n\t| 'menuBurger'\n\t| 'menu'\n\t| 'hamburgerMenu'\n\t| 'menuDots'\n\t| 'menuEllipsis'\n\t| 'ellipsis'\n\t| 'moneyBag'\n\t| 'moneybag'\n\t| 'moneyBagStrikethrough'\n\t| 'noMoney'\n\t| 'moneyBankImport'\n\t| 'moneyBanknoteStrikethrough'\n\t| 'moneyBill'\n\t| 'bill'\n\t| 'moneyBuildingBank'\n\t| 'bank'\n\t| 'moneyCardCheck'\n\t| 'moneyCardImport'\n\t| 'importCb'\n\t| 'moneyCheck'\n\t| 'moneyCoins'\n\t| 'money'\n\t| 'payment'\n\t| 'moneyCurrencyDollar'\n\t| 'dollar'\n\t| 'moneyCurrencyEuro'\n\t| 'euro'\n\t| 'moneyIban'\n\t| 'moneyPaymentCard'\n\t| 'bankingCard'\n\t| 'moneyPaymentCards'\n\t| 'moneyPiggyBank'\n\t| 'piggyBank'\n\t| 'moneyWallet'\n\t| 'wallet'\n\t| 'officeBriefcase'\n\t| 'officeChair'\n\t| 'chair'\n\t| 'officeCompass'\n\t| 'compass'\n\t| 'officeElectricalPlug'\n\t| 'officeFirstAid'\n\t| 'officeMicrophone'\n\t| 'officePen'\n\t| 'edit'\n\t| 'editMini'\n\t| 'officePenStar'\n\t| 'officePenWriting'\n\t| 'editWrite'\n\t| 'editFrame'\n\t| 'officePhone'\n\t| 'telephone'\n\t| 'officeScissors'\n\t| 'cut'\n\t| 'officeSupplies'\n\t| 'supplies'\n\t| 'peopleAccessibility'\n\t| 'peopleAdd'\n\t| 'userAdd'\n\t| 'adduser'\n\t| 'peopleArrowUp'\n\t| 'peopleEdit'\n\t| 'peopleFolder'\n\t| 'peopleGroup'\n\t| 'userGroup'\n\t| 'group'\n\t| 'peopleHouse'\n\t| 'peopleId'\n\t| 'identityCard'\n\t| 'userFile'\n\t| 'dossierRh'\n\t| 'peopleLocked'\n\t| 'userRoles'\n\t| 'peoplePerson'\n\t| 'user'\n\t| 'face'\n\t| 'peopleRemove'\n\t| 'userRemove'\n\t| 'peopleSwitch'\n\t| 'send2user'\n\t| 'userSendTo'\n\t| 'peopleTeacher'\n\t| 'teacher'\n\t| 'pictureGallery'\n\t| 'gallery'\n\t| 'pictureImage'\n\t| 'image'\n\t| 'picturePalette'\n\t| 'palette'\n\t| 'playerPauseCircle'\n\t| 'pause'\n\t| 'playerPlay'\n\t| 'playFull'\n\t| 'playerPlayCircle'\n\t| 'play'\n\t| 'playerRecording'\n\t| 'playerStopCircle'\n\t| 'stop'\n\t| 'priceTag'\n\t| 'pricetag'\n\t| 'priorityHigh'\n\t| 'high'\n\t| 'priorityHigher'\n\t| 'higher'\n\t| 'priorityHighest'\n\t| 'highest'\n\t| 'priorityLow'\n\t| 'low'\n\t| 'priorityLower'\n\t| 'lower'\n\t| 'priorityLowest'\n\t| 'lowest'\n\t| 'priorityMedium'\n\t| 'medium'\n\t| 'rotationLeft'\n\t| 'rotate'\n\t| 'rotationRight'\n\t| 'rotateRight'\n\t| 'searchMagnifyingGlass'\n\t| 'search'\n\t| 'searchZoomIn'\n\t| 'searchZoomOut'\n\t| 'settingsEqualizer'\n\t| 'sliders'\n\t| 'settingsGear'\n\t| 'settings'\n\t| 'settingsTools'\n\t| 'tools'\n\t| 'share'\n\t| 'signAt'\n\t| 'signBan'\n\t| 'forbidden'\n\t| 'signCancel'\n\t| 'cancel'\n\t| 'signCheckbox'\n\t| 'signClose'\n\t| 'signConfirm'\n\t| 'confirm'\n\t| 'tick'\n\t| 'tickThin'\n\t| 'tickBold'\n\t| 'signConstruction'\n\t| 'build'\n\t| 'signDecimal'\n\t| 'signDiscount'\n\t| 'discount'\n\t| 'signError'\n\t| 'error'\n\t| 'signHelp'\n\t| 'help'\n\t| 'helpOutline'\n\t| 'signInfo'\n\t| 'info'\n\t| 'signParking'\n\t| 'parking'\n\t| 'signRating'\n\t| 'signShieldCancel'\n\t| 'signShieldError'\n\t| 'signShieldSuccess'\n\t| 'signShieldWarning'\n\t| 'signSimpleChoice'\n\t| 'signSuccess'\n\t| 'success'\n\t| 'signTag'\n\t| 'signTranslation'\n\t| 'signWarning'\n\t| 'warning'\n\t| 'signWebhook'\n\t| 'soundMegaphone'\n\t| 'star'\n\t| 'unstared'\n\t| 'starFilled'\n\t| 'target'\n\t| 'thumbDown'\n\t| 'thumbDownFilled'\n\t| 'thumbUp'\n\t| 'thumbUpFilled'\n\t| 'thumbnail'\n\t| 'timeAlarm'\n\t| 'alarm'\n\t| 'timeClock'\n\t| 'clock'\n\t| 'timeFuture'\n\t| 'postpone'\n\t| 'timeHourglass'\n\t| 'timer'\n\t| 'timePast'\n\t| 'history'\n\t| 'timeTimer'\n\t| 'chronoOn'\n\t| 'timeTimerStrikethrough'\n\t| 'overplanned'\n\t| 'timeTimesheet'\n\t| 'timesheet'\n\t| 'transportBus'\n\t| 'bus'\n\t| 'transportCar'\n\t| 'car'\n\t| 'transportCarElectric'\n\t| 'transportCarwashStation'\n\t| 'cleanCar'\n\t| 'transportGazStation'\n\t| 'gasoline'\n\t| 'transportMotocycle'\n\t| 'transportMotocycleElectric'\n\t| 'transportPlane'\n\t| 'plane'\n\t| 'transportRocket'\n\t| 'rocket'\n\t| 'transportScooter'\n\t| 'transportScooterElectric'\n\t| 'transportSpeedometer'\n\t| 'speedometer'\n\t| 'mileage'\n\t| 'transportSubway'\n\t| 'subway'\n\t| 'transportTaxi'\n\t| 'taxi'\n\t| 'transportToll'\n\t| 'toll'\n\t| 'tollDollar'\n\t| 'tollEuro'\n\t| 'transportTrain'\n\t| 'train'\n\t| 'transportTruck'\n\t| 'truck'\n\t| 'trashDelete'\n\t| 'trash'\n\t| 'trendingGrowth'\n\t| 'evolution'\n\t| 'trendingLoss'\n\t| 'evolutionDown'\n\t| 'weatherCloudy'\n\t| 'weatherLightning'\n\t| 'weatherStars'\n\t| 'weatherStormy'\n\t| 'weatherStorm'\n\t| 'weatherSunny'\n\t| 'weatherSun'\n\t| 'weight'\n\t| 'window'\n\t| 'windowAside'\n\t| 'windowAsideLarge'\n\t| 'windowCornerBottom'\n\t| 'windowCornerTop';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lucca-prisme-icon.mjs","sources":["../../../packages/prisme/icon/icon.type.ts","../../../packages/prisme/icon/icon-aliases.ts","../../../packages/prisme/icon/icon-sprite.component.ts","../../../packages/prisme/icon/icon-sprite.component.html","../../../packages/prisme/icon/icon-sprite.service.ts","../../../packages/prisme/icon/icon.component.ts","../../../packages/prisme/icon/icon.component.html","../../../packages/prisme/icon/icon-sprite.providers.ts","../../../packages/prisme/icon/icons.ts","../../../packages/prisme/icon/lucca-prisme-icon.ts"],"sourcesContent":["/**\n * Available IconComponent types\n */\n\nexport const ICON_SIZE = ['XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL'] as const;\nexport type IconSize = (typeof ICON_SIZE)[number];\n\nexport const ICON_COLOR = ['product', 'error', 'warning', 'success', 'light', 'placeholder', 'inherit'] as const;\nexport type IconColor = (typeof ICON_COLOR)[number];\n","import type { LuccaIcon } from './icons';\n\nexport const ICON_ALIASES: Partial<Record<LuccaIcon, LuccaIcon>> = {\n\tadduser: 'peopleAdd',\n\talarm: 'timeAlarm',\n\tanalytics: 'chartVerticalBar',\n\tanswer: 'bubbleAnswer',\n\tapiSync: 'databaseArrow',\n\tapps: 'app',\n\tarchive: 'boxArchive',\n\tarrowDouble: 'arrowForward',\n\tarrowEast: 'arrowChevronRight',\n\tarrowFullEast: 'arrowRight',\n\tarrowFullNorth: 'arrowTop',\n\tarrowFullSouth: 'arrowBottom',\n\tarrowFullWest: 'arrowLeft',\n\tarrowNorth: 'arrowChevronTop',\n\tarrowOppositeHorizontal: 'arrowOppositeLeftRight',\n\tarrowSouth: 'arrowChevronBottom',\n\tarrowWest: 'arrowChevronLeft',\n\tattach: 'formatClipperAttachment',\n\tbackward: 'arrowBackward',\n\tbank: 'moneyBuildingBank',\n\tbankingCard: 'moneyPaymentCard',\n\tbed: 'hotelBed',\n\tbill: 'moneyBill',\n\tbirthday: 'foodBirthdayCake',\n\tbreakfast: 'foodCroissant',\n\tbreaktime: 'foodCoffee',\n\tbrokenHeart: 'heartStrikethrough',\n\tbuild: 'signConstruction',\n\tbuilding: 'buildingCompany',\n\tbus: 'transportBus',\n\tcalendar: 'calendarDate',\n\tcalendarOff: 'calendarStrikethrough',\n\tcamera: 'deviceCamera',\n\tcancel: 'signCancel',\n\tcar: 'transportCar',\n\tcertifKo: 'certificationFailed',\n\tcertifOk: 'certificationSuccess',\n\tcertifWaiting: 'certificationWaiting',\n\tchair: 'officeChair',\n\tcharts: 'chartVerticalBar',\n\tchat: 'bubbleSpeech',\n\tchevronBottom: 'arrowChevronBottom',\n\tchevronEast: 'arrowChevronRight',\n\tchevronLeft: 'arrowChevronLeft',\n\tchevronNorth: 'arrowChevronTop',\n\tchevronRight: 'arrowChevronRight',\n\tchevronSouth: 'arrowChevronBottom',\n\tchevronTop: 'arrowChevronTop',\n\tchevronWest: 'arrowChevronLeft',\n\tchronoOn: 'timeTimer',\n\tcleanCar: 'transportCarwashStation',\n\tclock: 'timeClock',\n\tclose: 'mathsMultiplicate',\n\tcloudUpload: 'arrowUpload',\n\tcoffee: 'foodCoffee',\n\tcollapse: 'arrowUnfoldLess',\n\tcompass: 'officeCompass',\n\tcomputer: 'deviceComputer',\n\tcomputerMouse: 'deviceMouse',\n\tconfirm: 'signConfirm',\n\tcontract: 'fileContract',\n\tcopy: 'fileCopy',\n\tcreditDebit: 'arrowOppositeVertical',\n\tcross: 'mathsMultiplicate',\n\tcrossBold: 'mathsMultiplicate',\n\tcrown: 'capCrown',\n\tcut: 'officeScissors',\n\tdashboard: 'chartPie',\n\tdialog: 'bubbleSpeech',\n\tdiner: 'foodClocheDish',\n\tdiscount: 'signDiscount',\n\tdistribute: 'arrowCorner',\n\tdivide: 'mathsDivide',\n\tdollar: 'moneyCurrencyDollar',\n\tdonut: 'chartDonut',\n\tdonutChart: 'chartDonut',\n\tdossierRh: 'peopleId',\n\tdownload: 'arrowDownload',\n\tdrag: 'dotsDrag',\n\tdrink: 'foodCocktail',\n\teastArrow: 'arrowChevronRight',\n\teastThinArrow: 'arrowChevronRight',\n\tedit: 'officePen',\n\teditFrame: 'officePenWriting',\n\teditMini: 'officePen',\n\teditWrite: 'officePenWriting',\n\tellipsis: 'menuDots',\n\terror: 'signError',\n\testablishment: 'buildingCompany',\n\teuro: 'moneyCurrencyEuro',\n\tevolution: 'trendingGrowth',\n\tevolutionDown: 'trendingLoss',\n\texpand: 'arrowUnfoldMore',\n\tface: 'peoplePerson',\n\tfamilyTree: 'chartFlow',\n\tfile: 'fileDocument',\n\tfiles: 'fileDocument',\n\tfilter: 'filtersFunnel',\n\tfilterAbstract: 'filtersDescending',\n\tfloor: 'layers',\n\tfolder: 'fileFolder',\n\tforbidden: 'signBan',\n\tformatBold: 'formatTextBold',\n\tformatClear: 'formatTextClear',\n\tformatItalic: 'formatTextItalic',\n\tformatJustify: 'formatText',\n\tformatListNb: 'formatNumberedList',\n\tformatRedo: 'formatCornerUpRight',\n\tformatSize: 'formatTextSize',\n\tformatStrikethrough: 'formatTextStrikethrough',\n\tformatUnderlined: 'formatTextUnderline',\n\tformatUndo: 'formatCornerUpLeft',\n\tforward: 'arrowForward',\n\tfullscreen: 'cornersFullscreenOpen',\n\tfullscreenExit: 'cornersFullscreenExit',\n\tfunnel: 'filtersFunnel',\n\tgallery: 'pictureGallery',\n\tgasoline: 'transportGazStation',\n\tglobe: 'mapGlobe',\n\tgraduate: 'capGraduate',\n\tgroup: 'peopleGroup',\n\thamburgerMenu: 'menuBurger',\n\thanger: 'hotelHanger',\n\thelp: 'signHelp',\n\thelpOutline: 'signHelp',\n\thigh: 'priorityHigh',\n\thigher: 'priorityHigher',\n\thighest: 'priorityHighest',\n\thistory: 'timePast',\n\thome: 'buildingHouse',\n\thomeFill: 'buildingHouseFilled',\n\thomeStarred: 'buildingHouseStarred',\n\thorizontalBarChart: 'chartHorizontalBar',\n\thotel: 'hotelBed',\n\thouse: 'buildingHouse',\n\thouseFilled: 'buildingHouseFilled',\n\thouseStarred: 'buildingHouseStarred',\n\tidentityCard: 'peopleId',\n\timage: 'pictureImage',\n\timportCb: 'moneyCardImport',\n\timportDirty: 'fileImport',\n\timportPristine: 'fileImport',\n\tinfo: 'signInfo',\n\tiron: 'hotelIron',\n\tkey: 'lockKey',\n\tlaptop: 'deviceLaptop',\n\tlevel: 'chartLevels',\n\tlightBulb: 'bulb',\n\tlist: 'formatBulletedList',\n\tlistTodo: 'listChecklist',\n\tlocation: 'mapLocation',\n\tlock: 'lockClose',\n\tlogin: 'arrowLogin',\n\tlogout: 'arrowLogout',\n\tlow: 'priorityLow',\n\tlower: 'priorityLower',\n\tlowest: 'priorityLowest',\n\tlucca: 'jumpingCc',\n\tluggage: 'hotelLuggage',\n\tlunch: 'foodBurger',\n\tlunchAlternative: 'foodBobun',\n\tmail: 'mailEnvelope',\n\tmailbox: 'mailMailbox',\n\tmeal: 'foodCutlery',\n\tmedium: 'priorityMedium',\n\tmenu: 'menuBurger',\n\tmenuEllipsis: 'menuDots',\n\tmessenger: 'bubbleConversation',\n\tmileage: 'transportSpeedometer',\n\tmilestone: 'journey',\n\tminimize: 'mathsMinus',\n\tminus: 'mathsMinus',\n\tmoney: 'moneyCoins',\n\tmoneybag: 'moneyBag',\n\tmosaic: 'app',\n\tnineTiles: 'app',\n\tnoMoney: 'moneyBagStrikethrough',\n\tnorthArrow: 'arrowChevronTop',\n\tnorthThinArrow: 'arrowChevronTop',\n\tnotification: 'bell',\n\torgTree: 'chartFlow',\n\toutside: 'arrowExternal',\n\toverplanned: 'timeTimerStrikethrough',\n\tpalette: 'picturePalette',\n\tparking: 'signParking',\n\tpartial: 'mathsMinus',\n\tpaste: 'clipboard',\n\tpause: 'playerPauseCircle',\n\tpayPeriod: 'calendarPlanning',\n\tpayment: 'moneyCoins',\n\tpiggyBank: 'moneyPiggyBank',\n\tpin: 'mapPin',\n\tplane: 'transportPlane',\n\tplanning: 'calendarDate',\n\tplanningEdit: 'calendarEdit',\n\tplanningManage: 'calendarSettings',\n\tplay: 'playerPlayCircle',\n\tplayFull: 'playerPlay',\n\tplus: 'mathsPlus',\n\tplusBold: 'mathsPlus',\n\tpostage: 'mailMailbox',\n\tpostpone: 'timeFuture',\n\tpresent: 'gift',\n\tpressing: 'hotelIron',\n\tpricetag: 'priceTag',\n\tprint: 'devicePrinter',\n\tpuzzle: 'jigsawPuzzle',\n\trefresh: 'arrowReset',\n\treorder: 'filtersSort',\n\treply: 'arrowReply',\n\trestaurant: 'foodChefHat',\n\trocket: 'transportRocket',\n\trotate: 'rotationLeft',\n\trotateRight: 'rotationRight',\n\tsave: 'floppyDiskSave',\n\tschool: 'capGraduate',\n\tsearch: 'searchMagnifyingGlass',\n\tsend: 'mailPaperPlane',\n\tsend2user: 'peopleSwitch',\n\tsettings: 'settingsGear',\n\tsign: 'fileSign',\n\tsliders: 'settingsEqualizer',\n\tsnack: 'foodSandwich',\n\tsort: 'filtersSort',\n\tsouthArrow: 'arrowChevronBottom',\n\tsouthThinArrow: 'arrowChevronBottom',\n\tspeedometer: 'transportSpeedometer',\n\tstamp: 'mailMailbox',\n\tstop: 'playerStopCircle',\n\tstore: 'buildingStore',\n\tsubway: 'transportSubway',\n\tsuccess: 'signSuccess',\n\tsupplies: 'officeSupplies',\n\tswap: 'arrowOppositeLeftRight',\n\tsync: 'arrowSync',\n\tsyncDisabled: 'arrowSyncStrikethrough',\n\ttable: 'dataTable',\n\ttalk: 'bubbleSpeech',\n\ttaxi: 'transportTaxi',\n\tteacher: 'peopleTeacher',\n\ttelephone: 'officePhone',\n\ttest: 'laboratoryTestFlask',\n\tthinCross: 'mathsMultiplicate',\n\ttick: 'signConfirm',\n\ttickBold: 'signConfirm',\n\ttickThin: 'signConfirm',\n\ttiles: 'app',\n\ttimer: 'timeHourglass',\n\ttimesheet: 'timeTimesheet',\n\ttoll: 'transportToll',\n\ttollDollar: 'transportToll',\n\ttollEuro: 'transportToll',\n\ttools: 'settingsTools',\n\ttrain: 'transportTrain',\n\ttrash: 'trashDelete',\n\ttruck: 'transportTruck',\n\tunarchive: 'boxUnarchive',\n\tunlink: 'formatUnlink',\n\tunlock: 'lockOpen',\n\tunstared: 'star',\n\tunwatch: 'eyeStrikethrough',\n\tupdate: 'arrowReset',\n\tupload: 'arrowUpload',\n\tuser: 'peoplePerson',\n\tuserAdd: 'peopleAdd',\n\tuserFile: 'peopleId',\n\tuserGroup: 'peopleGroup',\n\tuserRemove: 'peopleRemove',\n\tuserRoles: 'peopleLocked',\n\tuserSendTo: 'peopleSwitch',\n\twallet: 'moneyWallet',\n\twarning: 'signWarning',\n\twatch: 'eye',\n\tweatherStorm: 'weatherStormy',\n\tweatherSun: 'weatherSunny',\n\twestArrow: 'arrowChevronLeft',\n\twestThinArrow: 'arrowChevronLeft',\n};\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { LuSafeExternalSvgPipe } from '@lucca/prisme/safe-content';\n\nconst ICON_SPRITE_URL = 'https://cdn.lucca.fr/transverse/prisme/icons/svg/sprite.svg';\n\n@Component({\n\t// eslint-disable-next-line @angular-eslint/component-selector\n\tselector: 'pr-icon-sprite',\n\ttemplateUrl: './icon-sprite.component.html',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\timports: [LuSafeExternalSvgPipe],\n\thost: {\n\t\tclass: 'pr-u-mask',\n\t\t'aria-hidden': 'true',\n\t},\n})\nexport class IconSpriteComponent {\n\tprotected readonly spriteUrl = ICON_SPRITE_URL;\n}\n","<div [innerHTML]=\"spriteUrl | luSafeExternalSvg\"></div>\n","import { isPlatformBrowser } from '@angular/common';\nimport { ApplicationRef, createComponent, EnvironmentInjector, inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { IconSpriteComponent } from './icon-sprite.component';\n\n@Injectable({ providedIn: 'root' })\nexport class IconSpriteService {\n\t#applicationRef = inject(ApplicationRef);\n\t#environmentInjector = inject(EnvironmentInjector);\n\t#platformId = inject(PLATFORM_ID);\n\t#requested = false;\n\n\tensureSpriteLoaded(): void {\n\t\tif (this.#requested || !isPlatformBrowser(this.#platformId)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.#requested = true;\n\n\t\tconst componentRef = createComponent(IconSpriteComponent, { environmentInjector: this.#environmentInjector });\n\t\tdocument.body.append(componentRef.location.nativeElement as HTMLElement);\n\t\tthis.#applicationRef.attachView(componentRef.hostView);\n\t}\n}\n","import { NgClass } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation } from '@angular/core';\nimport { ICON_ALIASES } from './icon-aliases';\nimport { IconSpriteService } from './icon-sprite.service';\nimport { IconColor, IconSize } from './icon.type';\nimport type { LuccaIcon } from './icons';\n\n@Component({\n\tselector: 'lu-icon, pr-icon',\n\timports: [NgClass],\n\ttemplateUrl: './icon.component.html',\n\tstyleUrl: './icon.component.scss',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n})\nexport class IconComponent {\n\t#iconSpriteService = inject(IconSpriteService);\n\n\t/**\n\t * Defines icon to display\n\t */\n\treadonly icon = input.required<LuccaIcon>();\n\n\t/**\n\t * Information conveyed by the screen reader\n\t */\n\treadonly alt = input<string>();\n\n\t/**\n\t * Which size should the icon be? XXS to XXL\n\t */\n\treadonly size = input<IconSize>();\n\n\t/**\n\t * Changes the color of the icon (inherits from context by default)\n\t */\n\treadonly color = input<IconColor>();\n\n\t/**\n\t * Display icon in AI mode\n\t */\n\treadonly AI = input<boolean, boolean | `${boolean}` | ''>(false, { transform: booleanAttribute });\n\n\treadonly iconClasses = computed(() => {\n\t\tconst size = this.size();\n\t\tconst color = this.color();\n\t\treturn {\n\t\t\t[`mod-${size}`]: !!size,\n\t\t\t[`icon-color-${color}`]: !!color && color !== 'inherit',\n\t\t};\n\t});\n\n\treadonly spriteIconId = computed(() => {\n\t\tconst icon = this.icon();\n\t\tconst canonicalIcon = ICON_ALIASES[icon] ?? icon;\n\t\treturn canonicalIcon.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n\t});\n\n\tconstructor() {\n\t\tthis.#iconSpriteService.ensureSpriteLoaded();\n\t}\n}\n","<svg\n\tclass=\"lucca-icon\"\n\t[class.mod-AI]=\"AI()\"\n\t[ngClass]=\"iconClasses()\"\n\t[attr.aria-hidden]=\"this.alt() ? null : 'true'\"\n\t[attr.role]=\"this.alt() ? 'img' : null\"\n\t[attr.aria-label]=\"alt()\"\n>\n\t<use [attr.href]=\"'#' + spriteIconId()\" />\n</svg>\n","import { EnvironmentProviders, inject, makeEnvironmentProviders, provideAppInitializer } from '@angular/core';\nimport { IconSpriteService } from './icon-sprite.service';\n\n/**\n * Triggers the icon sprite fetch at application startup instead of waiting for the first `<lu-icon>`/`<pr-icon>` to mount.\n * Optional: without it, the sprite still loads lazily on first icon usage.\n */\nexport function provideLuIconSpritePreload(): EnvironmentProviders {\n\treturn makeEnvironmentProviders([\n\t\tprovideAppInitializer(() => {\n\t\t\tinject(IconSpriteService).ensureSpriteLoaded();\n\t\t}),\n\t]);\n}\n","// *******************************************\n// *** THIS FILE IS GENERATED, DO NOT EDIT ***\n// *** The generator is packages/prisme/icon/update-icons.js ***\n// *******************************************\n\nexport type LuccaIcon =\n\t| 'app'\n\t| 'apps'\n\t| 'mosaic'\n\t| 'nineTiles'\n\t| 'tiles'\n\t| 'appWidget'\n\t| 'arrowBackward'\n\t| 'backward'\n\t| 'arrowBottom'\n\t| 'arrowFullSouth'\n\t| 'arrowBottomLeft'\n\t| 'arrowBottomRight'\n\t| 'arrowCenterReduce'\n\t| 'arrowChevronBottom'\n\t| 'arrowSouth'\n\t| 'chevronBottom'\n\t| 'chevronSouth'\n\t| 'southArrow'\n\t| 'southThinArrow'\n\t| 'arrowChevronLeft'\n\t| 'arrowWest'\n\t| 'chevronLeft'\n\t| 'chevronWest'\n\t| 'westArrow'\n\t| 'westThinArrow'\n\t| 'arrowChevronRight'\n\t| 'arrowEast'\n\t| 'chevronEast'\n\t| 'chevronRight'\n\t| 'eastArrow'\n\t| 'eastThinArrow'\n\t| 'arrowChevronTop'\n\t| 'arrowNorth'\n\t| 'chevronNorth'\n\t| 'chevronTop'\n\t| 'northArrow'\n\t| 'northThinArrow'\n\t| 'arrowCorner'\n\t| 'distribute'\n\t| 'arrowCornerExpand'\n\t| 'arrowCurvedDownRight'\n\t| 'arrowDownload'\n\t| 'download'\n\t| 'arrowExternal'\n\t| 'outside'\n\t| 'arrowForward'\n\t| 'arrowDouble'\n\t| 'forward'\n\t| 'arrowLeft'\n\t| 'arrowFullWest'\n\t| 'arrowLineBottom'\n\t| 'arrowLineTop'\n\t| 'arrowLogin'\n\t| 'login'\n\t| 'arrowLogout'\n\t| 'logout'\n\t| 'arrowOppositeLeftRight'\n\t| 'arrowOppositeHorizontal'\n\t| 'swap'\n\t| 'arrowOppositeRightLeft'\n\t| 'arrowOppositeTopBottom'\n\t| 'arrowOppositeVertical'\n\t| 'creditDebit'\n\t| 'arrowRedo'\n\t| 'arrowReply'\n\t| 'reply'\n\t| 'arrowReset'\n\t| 'refresh'\n\t| 'update'\n\t| 'arrowRight'\n\t| 'arrowFullEast'\n\t| 'arrowSync'\n\t| 'sync'\n\t| 'arrowSyncStrikethrough'\n\t| 'syncDisabled'\n\t| 'arrowTop'\n\t| 'arrowFullNorth'\n\t| 'arrowTopLeft'\n\t| 'arrowTopRight'\n\t| 'arrowUndo'\n\t| 'arrowUnfoldLess'\n\t| 'collapse'\n\t| 'arrowUnfoldMore'\n\t| 'expand'\n\t| 'arrowUpload'\n\t| 'cloudUpload'\n\t| 'upload'\n\t| 'bell'\n\t| 'notification'\n\t| 'bellStrikethrough'\n\t| 'book'\n\t| 'bookmark'\n\t| 'bookmarkFilled'\n\t| 'boxArchive'\n\t| 'archive'\n\t| 'boxUnarchive'\n\t| 'unarchive'\n\t| 'branch'\n\t| 'bubbleAnswer'\n\t| 'answer'\n\t| 'bubbleConversation'\n\t| 'messenger'\n\t| 'bubbleSpeech'\n\t| 'chat'\n\t| 'dialog'\n\t| 'talk'\n\t| 'bubbleSpeechStrikethrough'\n\t| 'bubbleStars'\n\t| 'buildingCompany'\n\t| 'building'\n\t| 'establishment'\n\t| 'buildingHouse'\n\t| 'home'\n\t| 'house'\n\t| 'buildingHouseFilled'\n\t| 'homeFill'\n\t| 'houseFilled'\n\t| 'buildingHouseStarred'\n\t| 'homeStarred'\n\t| 'houseStarred'\n\t| 'buildingStore'\n\t| 'store'\n\t| 'bulb'\n\t| 'lightBulb'\n\t| 'calendarChecked'\n\t| 'calendarDate'\n\t| 'calendar'\n\t| 'planning'\n\t| 'calendarEdit'\n\t| 'planningEdit'\n\t| 'calendarPlanning'\n\t| 'payPeriod'\n\t| 'calendarSettings'\n\t| 'planningManage'\n\t| 'calendarStrikethrough'\n\t| 'calendarOff'\n\t| 'capCrown'\n\t| 'crown'\n\t| 'capCrownFilled'\n\t| 'capGraduate'\n\t| 'graduate'\n\t| 'school'\n\t| 'certificationFailed'\n\t| 'certifKo'\n\t| 'certificationSuccess'\n\t| 'certifOk'\n\t| 'certificationWaiting'\n\t| 'certifWaiting'\n\t| 'chartDonut'\n\t| 'donut'\n\t| 'donutChart'\n\t| 'chartFlow'\n\t| 'familyTree'\n\t| 'orgTree'\n\t| 'chartHorizontalBar'\n\t| 'horizontalBarChart'\n\t| 'chartLevels'\n\t| 'level'\n\t| 'chartPie'\n\t| 'dashboard'\n\t| 'chartSpider'\n\t| 'chartTree'\n\t| 'chartVerticalBar'\n\t| 'analytics'\n\t| 'charts'\n\t| 'clipboard'\n\t| 'paste'\n\t| 'completion'\n\t| 'cornersFocus'\n\t| 'cornersFullscreenExit'\n\t| 'fullscreenExit'\n\t| 'cornersFullscreenOpen'\n\t| 'fullscreen'\n\t| 'dataTable'\n\t| 'table'\n\t| 'database'\n\t| 'databaseArrow'\n\t| 'apiSync'\n\t| 'deviceCamera'\n\t| 'camera'\n\t| 'deviceComputer'\n\t| 'computer'\n\t| 'deviceLaptop'\n\t| 'laptop'\n\t| 'deviceMobile'\n\t| 'deviceMouse'\n\t| 'computerMouse'\n\t| 'devicePrinter'\n\t| 'print'\n\t| 'deviceTablet'\n\t| 'deviceVideo'\n\t| 'dotsDrag'\n\t| 'drag'\n\t| 'emojiSmile'\n\t| 'eye'\n\t| 'watch'\n\t| 'eyeStrikethrough'\n\t| 'unwatch'\n\t| 'fileContract'\n\t| 'contract'\n\t| 'fileCopy'\n\t| 'copy'\n\t| 'fileDocument'\n\t| 'file'\n\t| 'files'\n\t| 'fileExport'\n\t| 'fileFolder'\n\t| 'folder'\n\t| 'fileImport'\n\t| 'importDirty'\n\t| 'importPristine'\n\t| 'filePlus'\n\t| 'fileSign'\n\t| 'sign'\n\t| 'filtersDescending'\n\t| 'filterAbstract'\n\t| 'filtersFunnel'\n\t| 'filter'\n\t| 'funnel'\n\t| 'filtersSort'\n\t| 'reorder'\n\t| 'sort'\n\t| 'flag'\n\t| 'floppyDiskSave'\n\t| 'save'\n\t| 'foodBirthdayCake'\n\t| 'birthday'\n\t| 'foodBobun'\n\t| 'lunchAlternative'\n\t| 'foodBurger'\n\t| 'lunch'\n\t| 'foodChefHat'\n\t| 'restaurant'\n\t| 'foodClocheDish'\n\t| 'diner'\n\t| 'foodCocktail'\n\t| 'drink'\n\t| 'foodCoffee'\n\t| 'breaktime'\n\t| 'coffee'\n\t| 'foodCroissant'\n\t| 'breakfast'\n\t| 'foodCutlery'\n\t| 'meal'\n\t| 'foodSandwich'\n\t| 'snack'\n\t| 'formatBulletedList'\n\t| 'list'\n\t| 'formatClipperAttachment'\n\t| 'attach'\n\t| 'formatCornerUpLeft'\n\t| 'formatUndo'\n\t| 'formatCornerUpRight'\n\t| 'formatRedo'\n\t| 'formatLink'\n\t| 'formatNumberedList'\n\t| 'formatListNb'\n\t| 'formatText'\n\t| 'formatJustify'\n\t| 'formatTextBold'\n\t| 'formatBold'\n\t| 'formatTextClear'\n\t| 'formatClear'\n\t| 'formatTextItalic'\n\t| 'formatItalic'\n\t| 'formatTextSize'\n\t| 'formatSize'\n\t| 'formatTextStrikethrough'\n\t| 'formatStrikethrough'\n\t| 'formatTextUnderline'\n\t| 'formatUnderlined'\n\t| 'formatUnlink'\n\t| 'unlink'\n\t| 'gift'\n\t| 'present'\n\t| 'heart'\n\t| 'heartFilled'\n\t| 'heartStrikethrough'\n\t| 'brokenHeart'\n\t| 'hotelBed'\n\t| 'bed'\n\t| 'hotel'\n\t| 'hotelHanger'\n\t| 'hanger'\n\t| 'hotelIron'\n\t| 'iron'\n\t| 'pressing'\n\t| 'hotelLuggage'\n\t| 'luggage'\n\t| 'jigsawPuzzle'\n\t| 'puzzle'\n\t| 'journey'\n\t| 'milestone'\n\t| 'jumpingCc'\n\t| 'lucca'\n\t| 'laboratoryTestFlask'\n\t| 'test'\n\t| 'layers'\n\t| 'floor'\n\t| 'listChecked'\n\t| 'listChecklist'\n\t| 'listTodo'\n\t| 'listMultipleChoices'\n\t| 'lockClose'\n\t| 'lock'\n\t| 'lockKey'\n\t| 'key'\n\t| 'lockOpen'\n\t| 'unlock'\n\t| 'mailEnvelope'\n\t| 'mail'\n\t| 'mailMailbox'\n\t| 'mailbox'\n\t| 'postage'\n\t| 'stamp'\n\t| 'mailPaperPlane'\n\t| 'send'\n\t| 'mapGlobe'\n\t| 'globe'\n\t| 'mapLocation'\n\t| 'location'\n\t| 'mapPin'\n\t| 'pin'\n\t| 'mapPlan'\n\t| 'mapTripStep'\n\t| 'mathsDivide'\n\t| 'divide'\n\t| 'mathsEquals'\n\t| 'mathsMinus'\n\t| 'minimize'\n\t| 'minus'\n\t| 'partial'\n\t| 'mathsMultiplicate'\n\t| 'close'\n\t| 'cross'\n\t| 'crossBold'\n\t| 'thinCross'\n\t| 'mathsNotEqual'\n\t| 'mathsPlus'\n\t| 'plus'\n\t| 'plusBold'\n\t| 'medicalDoctor'\n\t| 'menuBurger'\n\t| 'hamburgerMenu'\n\t| 'menu'\n\t| 'menuDots'\n\t| 'ellipsis'\n\t| 'menuEllipsis'\n\t| 'moneyBag'\n\t| 'moneybag'\n\t| 'moneyBagStrikethrough'\n\t| 'noMoney'\n\t| 'moneyBankImport'\n\t| 'moneyBanknoteStrikethrough'\n\t| 'moneyBill'\n\t| 'bill'\n\t| 'moneyBuildingBank'\n\t| 'bank'\n\t| 'moneyCardCheck'\n\t| 'moneyCardImport'\n\t| 'importCb'\n\t| 'moneyCheck'\n\t| 'moneyCoins'\n\t| 'money'\n\t| 'payment'\n\t| 'moneyCurrencyDollar'\n\t| 'dollar'\n\t| 'moneyCurrencyEuro'\n\t| 'euro'\n\t| 'moneyIban'\n\t| 'moneyPaymentCard'\n\t| 'bankingCard'\n\t| 'moneyPaymentCards'\n\t| 'moneyPiggyBank'\n\t| 'piggyBank'\n\t| 'moneyWallet'\n\t| 'wallet'\n\t| 'officeBriefcase'\n\t| 'officeChair'\n\t| 'chair'\n\t| 'officeCompass'\n\t| 'compass'\n\t| 'officeElectricalPlug'\n\t| 'officeFirstAid'\n\t| 'officeMicrophone'\n\t| 'officePen'\n\t| 'edit'\n\t| 'editMini'\n\t| 'officePenStar'\n\t| 'officePenWriting'\n\t| 'editFrame'\n\t| 'editWrite'\n\t| 'officePhone'\n\t| 'telephone'\n\t| 'officeScissors'\n\t| 'cut'\n\t| 'officeSupplies'\n\t| 'supplies'\n\t| 'peopleAccessibility'\n\t| 'peopleAdd'\n\t| 'adduser'\n\t| 'userAdd'\n\t| 'peopleArrowUp'\n\t| 'peopleEdit'\n\t| 'peopleFolder'\n\t| 'peopleGroup'\n\t| 'group'\n\t| 'userGroup'\n\t| 'peopleHouse'\n\t| 'peopleId'\n\t| 'dossierRh'\n\t| 'identityCard'\n\t| 'userFile'\n\t| 'peopleLocked'\n\t| 'userRoles'\n\t| 'peoplePerson'\n\t| 'face'\n\t| 'user'\n\t| 'peopleRemove'\n\t| 'userRemove'\n\t| 'peopleSwitch'\n\t| 'send2user'\n\t| 'userSendTo'\n\t| 'peopleTeacher'\n\t| 'teacher'\n\t| 'pictureGallery'\n\t| 'gallery'\n\t| 'pictureImage'\n\t| 'image'\n\t| 'picturePalette'\n\t| 'palette'\n\t| 'playerPauseCircle'\n\t| 'pause'\n\t| 'playerPlay'\n\t| 'playFull'\n\t| 'playerPlayCircle'\n\t| 'play'\n\t| 'playerRecording'\n\t| 'playerStopCircle'\n\t| 'stop'\n\t| 'priceTag'\n\t| 'pricetag'\n\t| 'priorityHigh'\n\t| 'high'\n\t| 'priorityHigher'\n\t| 'higher'\n\t| 'priorityHighest'\n\t| 'highest'\n\t| 'priorityLow'\n\t| 'low'\n\t| 'priorityLower'\n\t| 'lower'\n\t| 'priorityLowest'\n\t| 'lowest'\n\t| 'priorityMedium'\n\t| 'medium'\n\t| 'rotationLeft'\n\t| 'rotate'\n\t| 'rotationRight'\n\t| 'rotateRight'\n\t| 'searchMagnifyingGlass'\n\t| 'search'\n\t| 'searchZoomIn'\n\t| 'searchZoomOut'\n\t| 'settingsEqualizer'\n\t| 'sliders'\n\t| 'settingsGear'\n\t| 'settings'\n\t| 'settingsTools'\n\t| 'tools'\n\t| 'share'\n\t| 'signAt'\n\t| 'signBan'\n\t| 'forbidden'\n\t| 'signCancel'\n\t| 'cancel'\n\t| 'signCheckbox'\n\t| 'signClose'\n\t| 'signConfirm'\n\t| 'confirm'\n\t| 'tick'\n\t| 'tickBold'\n\t| 'tickThin'\n\t| 'signConstruction'\n\t| 'build'\n\t| 'signDecimal'\n\t| 'signDiscount'\n\t| 'discount'\n\t| 'signError'\n\t| 'error'\n\t| 'signHelp'\n\t| 'help'\n\t| 'helpOutline'\n\t| 'signInfo'\n\t| 'info'\n\t| 'signParking'\n\t| 'parking'\n\t| 'signRating'\n\t| 'signShieldCancel'\n\t| 'signShieldError'\n\t| 'signShieldSuccess'\n\t| 'signShieldWarning'\n\t| 'signSimpleChoice'\n\t| 'signSuccess'\n\t| 'success'\n\t| 'signTag'\n\t| 'signTranslation'\n\t| 'signWarning'\n\t| 'warning'\n\t| 'signWebhook'\n\t| 'soundMegaphone'\n\t| 'star'\n\t| 'unstared'\n\t| 'starFilled'\n\t| 'target'\n\t| 'thumbDown'\n\t| 'thumbDownFilled'\n\t| 'thumbUp'\n\t| 'thumbUpFilled'\n\t| 'thumbnail'\n\t| 'timeAlarm'\n\t| 'alarm'\n\t| 'timeClock'\n\t| 'clock'\n\t| 'timeFuture'\n\t| 'postpone'\n\t| 'timeHourglass'\n\t| 'timer'\n\t| 'timePast'\n\t| 'history'\n\t| 'timeTimer'\n\t| 'chronoOn'\n\t| 'timeTimerStrikethrough'\n\t| 'overplanned'\n\t| 'timeTimesheet'\n\t| 'timesheet'\n\t| 'transportBus'\n\t| 'bus'\n\t| 'transportCar'\n\t| 'car'\n\t| 'transportCarElectric'\n\t| 'transportCarwashStation'\n\t| 'cleanCar'\n\t| 'transportGazStation'\n\t| 'gasoline'\n\t| 'transportMotocycle'\n\t| 'transportMotocycleElectric'\n\t| 'transportPlane'\n\t| 'plane'\n\t| 'transportRocket'\n\t| 'rocket'\n\t| 'transportScooter'\n\t| 'transportScooterElectric'\n\t| 'transportSpeedometer'\n\t| 'mileage'\n\t| 'speedometer'\n\t| 'transportSubway'\n\t| 'subway'\n\t| 'transportTaxi'\n\t| 'taxi'\n\t| 'transportToll'\n\t| 'toll'\n\t| 'tollDollar'\n\t| 'tollEuro'\n\t| 'transportTrain'\n\t| 'train'\n\t| 'transportTruck'\n\t| 'truck'\n\t| 'trashDelete'\n\t| 'trash'\n\t| 'trendingGrowth'\n\t| 'evolution'\n\t| 'trendingLoss'\n\t| 'evolutionDown'\n\t| 'weatherCloudy'\n\t| 'weatherLightning'\n\t| 'weatherStars'\n\t| 'weatherStormy'\n\t| 'weatherStorm'\n\t| 'weatherSunny'\n\t| 'weatherSun'\n\t| 'weight'\n\t| 'window'\n\t| 'windowAside'\n\t| 'windowAsideLarge'\n\t| 'windowCornerBottom'\n\t| 'windowCornerTop'\n\t| (string & {});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import * as i0 from '@angular/core';
3
+ import { inject, ChangeDetectorRef, Pipe } from '@angular/core';
4
+ import { DomSanitizer } from '@angular/platform-browser';
5
+ import DOMPurify from 'isomorphic-dompurify';
6
+ import { map } from 'rxjs';
7
+
8
+ class LuSafeExternalSvgPipe {
9
+ #httpClient = inject(HttpClient);
10
+ #domSanitizer = inject(DomSanitizer);
11
+ #cdr = inject(ChangeDetectorRef);
12
+ #lastSvgUrl;
13
+ #lastSvgValue = '';
14
+ #subscription;
15
+ transform(url) {
16
+ if (url && url !== this.#lastSvgUrl) {
17
+ this.#lastSvgUrl = url;
18
+ this.#subscribeToSvg(url);
19
+ }
20
+ return this.#lastSvgValue;
21
+ }
22
+ #subscribeToSvg(url) {
23
+ this.#subscription?.unsubscribe();
24
+ this.#subscription = this.#httpClient
25
+ .get(url, { responseType: 'text' })
26
+ .pipe(map((svg) => DOMPurify.sanitize(svg, { USE_PROFILES: { svg: true } })), map((svg) => this.#domSanitizer.bypassSecurityTrustHtml(svg)))
27
+ .subscribe((svg) => {
28
+ this.#lastSvgValue = svg;
29
+ this.#cdr.markForCheck();
30
+ });
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSafeExternalSvgPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
33
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: LuSafeExternalSvgPipe, isStandalone: true, name: "luSafeExternalSvg", pure: false }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: LuSafeExternalSvgPipe, decorators: [{
36
+ type: Pipe,
37
+ args: [{
38
+ name: 'luSafeExternalSvg',
39
+ pure: false,
40
+ }]
41
+ }] });
42
+
43
+ /**
44
+ * Generated bundle index. Do not edit.
45
+ */
46
+
47
+ export { LuSafeExternalSvgPipe };
48
+ //# sourceMappingURL=lucca-prisme-safe-content.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lucca-prisme-safe-content.mjs","sources":["../../../packages/prisme/safe-content/safe-external-svg.pipe.ts","../../../packages/prisme/safe-content/lucca-prisme-safe-content.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { ChangeDetectorRef, inject, Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport DOMPurify from 'isomorphic-dompurify';\nimport { map, Subscription } from 'rxjs';\n\n@Pipe({\n\tname: 'luSafeExternalSvg',\n\tpure: false,\n})\nexport class LuSafeExternalSvgPipe implements PipeTransform {\n\t#httpClient = inject(HttpClient);\n\t#domSanitizer = inject(DomSanitizer);\n\t#cdr = inject(ChangeDetectorRef);\n\t#lastSvgUrl?: string;\n\t#lastSvgValue: SafeHtml = '';\n\t#subscription?: Subscription;\n\n\ttransform(url: string): SafeHtml {\n\t\tif (url && url !== this.#lastSvgUrl) {\n\t\t\tthis.#lastSvgUrl = url;\n\t\t\tthis.#subscribeToSvg(url);\n\t\t}\n\n\t\treturn this.#lastSvgValue;\n\t}\n\n\t#subscribeToSvg(url: string) {\n\t\tthis.#subscription?.unsubscribe();\n\t\tthis.#subscription = this.#httpClient\n\t\t\t.get(url, { responseType: 'text' })\n\t\t\t.pipe(\n\t\t\t\tmap((svg) => DOMPurify.sanitize(svg, { USE_PROFILES: { svg: true } })),\n\t\t\t\tmap((svg) => this.#domSanitizer.bypassSecurityTrustHtml(svg)),\n\t\t\t)\n\t\t\t.subscribe((svg) => {\n\t\t\t\tthis.#lastSvgValue = svg;\n\t\t\t\tthis.#cdr.markForCheck();\n\t\t\t});\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAUa,qBAAqB,CAAA;AACjC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;AACpC,IAAA,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAChC,IAAA,WAAW;IACX,aAAa,GAAa,EAAE;AAC5B,IAAA,aAAa;AAEb,IAAA,SAAS,CAAC,GAAW,EAAA;QACpB,IAAI,GAAG,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,GAAG;AACtB,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;QAC1B;QAEA,OAAO,IAAI,CAAC,aAAa;IAC1B;AAEA,IAAA,eAAe,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aACxB,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;AACjC,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EACtE,GAAG,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAE7D,aAAA,SAAS,CAAC,CAAC,GAAG,KAAI;AAClB,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG;AACxB,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;8GA7BY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACL,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,IAAI,EAAE,KAAK;AACX,iBAAA;;;ACTD;;AAEG;;"}