@haiilo/catalyst 2.4.8 → 2.4.9
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/dist/catalyst/catalyst.esm.js +1 -1
- package/dist/catalyst/index.esm.js +1 -1
- package/dist/catalyst/p-602c38be.entry.js +2 -0
- package/dist/catalyst/p-602c38be.entry.js.map +1 -0
- package/dist/catalyst/p-ccfebe33.js +2 -0
- package/dist/catalyst/p-ccfebe33.js.map +1 -0
- package/dist/cjs/cat-alert_23.cjs.entry.js +2 -3
- package/dist/cjs/cat-alert_23.cjs.entry.js.map +1 -1
- package/dist/cjs/{cat-icon-registry-32ed379a.js → cat-icon-registry-671af264.js} +60 -32
- package/dist/cjs/cat-icon-registry-671af264.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/collection/components/cat-i18n/cat-i18n-registry.js +28 -7
- package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
- package/dist/collection/components/cat-icon/cat-icon-registry.js +31 -24
- package/dist/collection/components/cat-icon/cat-icon-registry.js.map +1 -1
- package/dist/collection/components/cat-icon/cat-icon.js +2 -3
- package/dist/collection/components/cat-icon/cat-icon.js.map +1 -1
- package/dist/components/cat-i18n-registry.js +28 -7
- package/dist/components/cat-i18n-registry.js.map +1 -1
- package/dist/components/cat-icon2.js +32 -26
- package/dist/components/cat-icon2.js.map +1 -1
- package/dist/esm/cat-alert_23.entry.js +2 -3
- package/dist/esm/cat-alert_23.entry.js.map +1 -1
- package/dist/esm/{cat-icon-registry-7c4007ff.js → cat-icon-registry-d6b80490.js} +60 -32
- package/dist/esm/cat-icon-registry-d6b80490.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/types/components/cat-i18n/cat-i18n-registry.d.ts +3 -2
- package/dist/types/components/cat-icon/cat-icon-registry.d.ts +3 -5
- package/dist/types/components/cat-icon/cat-icon.d.ts +0 -1
- package/package.json +2 -2
- package/dist/catalyst/p-5362e648.js +0 -2
- package/dist/catalyst/p-5362e648.js.map +0 -1
- package/dist/catalyst/p-c2bf7e26.entry.js +0 -2
- package/dist/catalyst/p-c2bf7e26.entry.js.map +0 -1
- package/dist/cjs/cat-icon-registry-32ed379a.js.map +0 -1
- package/dist/esm/cat-icon-registry-7c4007ff.js.map +0 -1
|
@@ -314,8 +314,28 @@ var loglevel = createCommonjsModule(function (module) {
|
|
|
314
314
|
|
|
315
315
|
class CatI18nRegistry {
|
|
316
316
|
constructor() {
|
|
317
|
-
this.i18n = new Map();
|
|
318
317
|
// hide constructor
|
|
318
|
+
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
319
|
+
this.i18n = new Map();
|
|
320
|
+
// In rare cases, the registry can be initialized twice. This can happen in
|
|
321
|
+
// a micro frontend architecture where the registry is initialized in the
|
|
322
|
+
// host application and in the micro frontend. To prevent the registry in
|
|
323
|
+
// one application from overwriting the registry in the other, we listen for
|
|
324
|
+
// events that are dispatched when messages are added or removed in other
|
|
325
|
+
// applications and add or remove messages if the event was not dispatched
|
|
326
|
+
// by this registry.
|
|
327
|
+
window.addEventListener('cat-i18n-set', event => {
|
|
328
|
+
const { detail } = event || {};
|
|
329
|
+
if (detail && detail.id !== this.id) {
|
|
330
|
+
this.set(detail.i18n, true);
|
|
331
|
+
}
|
|
332
|
+
});
|
|
333
|
+
window.addEventListener('cat-i18n-clear', event => {
|
|
334
|
+
const { detail } = event || {};
|
|
335
|
+
if (detail && detail.id !== this.id) {
|
|
336
|
+
this.clear(true);
|
|
337
|
+
}
|
|
338
|
+
});
|
|
319
339
|
}
|
|
320
340
|
static getInstance() {
|
|
321
341
|
if (!CatI18nRegistry.instance) {
|
|
@@ -323,15 +343,16 @@ class CatI18nRegistry {
|
|
|
323
343
|
}
|
|
324
344
|
return CatI18nRegistry.instance;
|
|
325
345
|
}
|
|
326
|
-
set(i18n) {
|
|
327
|
-
Object.entries(i18n)
|
|
328
|
-
|
|
329
|
-
|
|
346
|
+
set(i18n, silent = false) {
|
|
347
|
+
const i18nEntries = Object.entries(i18n);
|
|
348
|
+
i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));
|
|
349
|
+
loglevel.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);
|
|
350
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));
|
|
330
351
|
}
|
|
331
|
-
clear() {
|
|
352
|
+
clear(silent = false) {
|
|
332
353
|
this.i18n.clear();
|
|
333
354
|
loglevel.info(`[CatI18nRegistry] Cleared messages`);
|
|
334
|
-
window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
|
|
355
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
|
|
335
356
|
}
|
|
336
357
|
t(key, params) {
|
|
337
358
|
const message = this.i18n.get(key);
|
|
@@ -353,16 +374,33 @@ const catI18nRegistry = CatI18nRegistry.getInstance();
|
|
|
353
374
|
|
|
354
375
|
class CatIconRegistry {
|
|
355
376
|
constructor() {
|
|
356
|
-
this.icons = new Map();
|
|
357
|
-
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
358
|
-
console.log('CatIconRegistry created', this.id);
|
|
359
377
|
// hide constructor
|
|
378
|
+
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
379
|
+
this.icons = new Map();
|
|
380
|
+
// In rare cases, the registry can be initialized twice. This can happen in
|
|
381
|
+
// a micro frontend architecture where the registry is initialized in the
|
|
382
|
+
// host application and in the micro frontend. To prevent the registry in
|
|
383
|
+
// one application from overwriting the registry in the other, we listen for
|
|
384
|
+
// events that are dispatched when icons are added or removed in other
|
|
385
|
+
// applications and add or remove icons if the event was not dispatched by
|
|
386
|
+
// this registry.
|
|
387
|
+
window.addEventListener('cat-icons-added', event => {
|
|
388
|
+
const { detail } = event || {};
|
|
389
|
+
if (detail && detail.id !== this.id) {
|
|
390
|
+
this.addIcons(detail.icons, detail.setName, true);
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
window.addEventListener('cat-icons-removed', event => {
|
|
394
|
+
const { detail } = event || {};
|
|
395
|
+
if (detail && detail.id !== this.id) {
|
|
396
|
+
this.removeIcons(detail.names, detail.setName, true);
|
|
397
|
+
}
|
|
398
|
+
});
|
|
360
399
|
}
|
|
361
400
|
static getInstance() {
|
|
362
401
|
if (!CatIconRegistry.instance) {
|
|
363
402
|
CatIconRegistry.instance = new CatIconRegistry();
|
|
364
403
|
}
|
|
365
|
-
console.log('getInstance', CatIconRegistry.instance);
|
|
366
404
|
return CatIconRegistry.instance;
|
|
367
405
|
}
|
|
368
406
|
getIcon(name, setName) {
|
|
@@ -372,29 +410,19 @@ class CatIconRegistry {
|
|
|
372
410
|
}
|
|
373
411
|
return icon;
|
|
374
412
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
addIcons(icons, setName) {
|
|
382
|
-
console.log('addIcons', setName, icons);
|
|
383
|
-
Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
|
|
384
|
-
loglevel.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);
|
|
385
|
-
window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));
|
|
386
|
-
return this;
|
|
387
|
-
}
|
|
388
|
-
removeIcon(name, setName) {
|
|
389
|
-
this.icons.delete(this.buildName(name, setName));
|
|
390
|
-
loglevel.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);
|
|
391
|
-
window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));
|
|
413
|
+
addIcons(icons, setName, silent = false) {
|
|
414
|
+
const iconEntries = Object.entries(icons);
|
|
415
|
+
const iconSize = iconEntries.length;
|
|
416
|
+
iconEntries.forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
|
|
417
|
+
loglevel.info(`[CatIconRegistry] Added ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` to set ${setName}` : ''}`);
|
|
418
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-icons-added', { id: this.id, icons, setName }));
|
|
392
419
|
return this;
|
|
393
420
|
}
|
|
394
|
-
removeIcons(names, setName) {
|
|
421
|
+
removeIcons(names, setName, silent = false) {
|
|
422
|
+
const iconSize = names.length;
|
|
395
423
|
names.forEach(name => this.icons.delete(this.buildName(name, setName)));
|
|
396
|
-
loglevel.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}
|
|
397
|
-
window.dispatchEvent(this.buildEvent('cat-icons-removed', { names, setName }));
|
|
424
|
+
loglevel.info(`[CatIconRegistry] Removed ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` from set ${setName}` : ''}`);
|
|
425
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-icons-removed', { id: this.id, names, setName }));
|
|
398
426
|
return this;
|
|
399
427
|
}
|
|
400
428
|
buildName(name, setName) {
|
|
@@ -418,4 +446,4 @@ exports.commonjsGlobal = commonjsGlobal;
|
|
|
418
446
|
exports.createCommonjsModule = createCommonjsModule;
|
|
419
447
|
exports.loglevel = loglevel;
|
|
420
448
|
|
|
421
|
-
//# sourceMappingURL=cat-icon-registry-
|
|
449
|
+
//# sourceMappingURL=cat-icon-registry-671af264.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"cat-icon-registry-671af264.js","mappings":"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","names":["this","log"],"sources":["../node_modules/loglevel/lib/loglevel.js","./src/components/cat-i18n/cat-i18n-registry.ts","./src/components/cat-icon/cat-icon-registry.ts"],"sourcesContent":["/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n \"use strict\";\n if (typeof define === 'function' && define.amd) {\n define(definition);\n } else if (typeof module === 'object' && module.exports) {\n module.exports = definition();\n } else {\n root.log = definition();\n }\n}(this, function () {\n \"use strict\";\n\n // Slightly dubious tricks to cut down minimized file size\n var noop = function() {};\n var undefinedType = \"undefined\";\n var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n /Trident\\/|MSIE /.test(window.navigator.userAgent)\n );\n\n var logMethods = [\n \"trace\",\n \"debug\",\n \"info\",\n \"warn\",\n \"error\"\n ];\n\n // Cross-browser bind equivalent that works at least back to IE6\n function bindMethod(obj, methodName) {\n var method = obj[methodName];\n if (typeof method.bind === 'function') {\n return method.bind(obj);\n } else {\n try {\n return Function.prototype.bind.call(method, obj);\n } catch (e) {\n // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n return function() {\n return Function.prototype.apply.apply(method, [obj, arguments]);\n };\n }\n }\n }\n\n // Trace() doesn't print the message in IE, so for that case we need to wrap it\n function traceForIE() {\n if (console.log) {\n if (console.log.apply) {\n console.log.apply(console, arguments);\n } else {\n // In old IE, native console methods themselves don't have apply().\n Function.prototype.apply.apply(console.log, [console, arguments]);\n }\n }\n if (console.trace) console.trace();\n }\n\n // Build the best logging method possible for this env\n // Wherever possible we want to bind, not wrap, to preserve stack traces\n function realMethod(methodName) {\n if (methodName === 'debug') {\n methodName = 'log';\n }\n\n if (typeof console === undefinedType) {\n return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n } else if (methodName === 'trace' && isIE) {\n return traceForIE;\n } else if (console[methodName] !== undefined) {\n return bindMethod(console, methodName);\n } else if (console.log !== undefined) {\n return bindMethod(console, 'log');\n } else {\n return noop;\n }\n }\n\n // These private functions always need `this` to be set properly\n\n function replaceLoggingMethods(level, loggerName) {\n /*jshint validthis:true */\n for (var i = 0; i < logMethods.length; i++) {\n var methodName = logMethods[i];\n this[methodName] = (i < level) ?\n noop :\n this.methodFactory(methodName, level, loggerName);\n }\n\n // Define log.log as an alias for log.debug\n this.log = this.debug;\n }\n\n // In old IE versions, the console isn't present until you first open it.\n // We build realMethod() replacements here that regenerate logging methods\n function enableLoggingWhenConsoleArrives(methodName, level, loggerName) {\n return function () {\n if (typeof console !== undefinedType) {\n replaceLoggingMethods.call(this, level, loggerName);\n this[methodName].apply(this, arguments);\n }\n };\n }\n\n // By default, we use closely bound real methods wherever possible, and\n // otherwise we wait for a console to appear, and then try again.\n function defaultMethodFactory(methodName, level, loggerName) {\n /*jshint validthis:true */\n return realMethod(methodName) ||\n enableLoggingWhenConsoleArrives.apply(this, arguments);\n }\n\n function Logger(name, defaultLevel, factory) {\n var self = this;\n var currentLevel;\n defaultLevel = defaultLevel == null ? \"WARN\" : defaultLevel;\n\n var storageKey = \"loglevel\";\n if (typeof name === \"string\") {\n storageKey += \":\" + name;\n } else if (typeof name === \"symbol\") {\n storageKey = undefined;\n }\n\n function persistLevelIfPossible(levelNum) {\n var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage[storageKey] = levelName;\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n } catch (ignore) {}\n }\n\n function getPersistedLevel() {\n var storedLevel;\n\n if (typeof window === undefinedType || !storageKey) return;\n\n try {\n storedLevel = window.localStorage[storageKey];\n } catch (ignore) {}\n\n // Fallback to cookies if local storage gives us nothing\n if (typeof storedLevel === undefinedType) {\n try {\n var cookie = window.document.cookie;\n var location = cookie.indexOf(\n encodeURIComponent(storageKey) + \"=\");\n if (location !== -1) {\n storedLevel = /^([^;]+)/.exec(cookie.slice(location))[1];\n }\n } catch (ignore) {}\n }\n\n // If the stored level is not valid, treat it as if nothing was stored.\n if (self.levels[storedLevel] === undefined) {\n storedLevel = undefined;\n }\n\n return storedLevel;\n }\n\n function clearPersistedLevel() {\n if (typeof window === undefinedType || !storageKey) return;\n\n // Use localStorage if available\n try {\n window.localStorage.removeItem(storageKey);\n return;\n } catch (ignore) {}\n\n // Use session cookie as fallback\n try {\n window.document.cookie =\n encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n } catch (ignore) {}\n }\n\n /*\n *\n * Public logger API - see https://github.com/pimterry/loglevel for details\n *\n */\n\n self.name = name;\n\n self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n \"ERROR\": 4, \"SILENT\": 5};\n\n self.methodFactory = factory || defaultMethodFactory;\n\n self.getLevel = function () {\n return currentLevel;\n };\n\n self.setLevel = function (level, persist) {\n if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n level = self.levels[level.toUpperCase()];\n }\n if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n currentLevel = level;\n if (persist !== false) { // defaults to true\n persistLevelIfPossible(level);\n }\n replaceLoggingMethods.call(self, level, name);\n if (typeof console === undefinedType && level < self.levels.SILENT) {\n return \"No console available for logging\";\n }\n } else {\n throw \"log.setLevel() called with invalid level: \" + level;\n }\n };\n\n self.setDefaultLevel = function (level) {\n defaultLevel = level;\n if (!getPersistedLevel()) {\n self.setLevel(level, false);\n }\n };\n\n self.resetLevel = function () {\n self.setLevel(defaultLevel, false);\n clearPersistedLevel();\n };\n\n self.enableAll = function(persist) {\n self.setLevel(self.levels.TRACE, persist);\n };\n\n self.disableAll = function(persist) {\n self.setLevel(self.levels.SILENT, persist);\n };\n\n // Initialize with the right level\n var initialLevel = getPersistedLevel();\n if (initialLevel == null) {\n initialLevel = defaultLevel;\n }\n self.setLevel(initialLevel, false);\n }\n\n /*\n *\n * Top-level API\n *\n */\n\n var defaultLogger = new Logger();\n\n var _loggersByName = {};\n defaultLogger.getLogger = function getLogger(name) {\n if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n throw new TypeError(\"You must supply a name when creating a logger.\");\n }\n\n var logger = _loggersByName[name];\n if (!logger) {\n logger = _loggersByName[name] = new Logger(\n name, defaultLogger.getLevel(), defaultLogger.methodFactory);\n }\n return logger;\n };\n\n // Grab the current global log variable in case of overwrite\n var _log = (typeof window !== undefinedType) ? window.log : undefined;\n defaultLogger.noConflict = function() {\n if (typeof window !== undefinedType &&\n window.log === defaultLogger) {\n window.log = _log;\n }\n\n return defaultLogger;\n };\n\n defaultLogger.getLoggers = function getLoggers() {\n return _loggersByName;\n };\n\n // ES6 default export, for compatibility\n defaultLogger['default'] = defaultLogger;\n\n return defaultLogger;\n}));\n","import log from 'loglevel';\n\nexport class CatI18nRegistry {\n private static instance: CatI18nRegistry;\n\n private readonly id = (Math.random() + 1).toString(36).substring(2);\n private readonly i18n: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\n\n // In rare cases, the registry can be initialized twice. This can happen in\n // a micro frontend architecture where the registry is initialized in the\n // host application and in the micro frontend. To prevent the registry in\n // one application from overwriting the registry in the other, we listen for\n // events that are dispatched when messages are added or removed in other\n // applications and add or remove messages if the event was not dispatched\n // by this registry.\n window.addEventListener('cat-i18n-set', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.set(detail.i18n, true);\n }\n });\n window.addEventListener('cat-i18n-clear', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.clear(true);\n }\n });\n }\n\n static getInstance(): CatI18nRegistry {\n if (!CatI18nRegistry.instance) {\n CatI18nRegistry.instance = new CatI18nRegistry();\n }\n return CatI18nRegistry.instance;\n }\n\n set(i18n: { [key: string]: string }, silent = false): void {\n const i18nEntries = Object.entries(i18n);\n i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));\n log.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));\n }\n\n clear(silent = false): void {\n this.i18n.clear();\n log.info(`[CatI18nRegistry] Cleared messages`);\n !silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));\n }\n\n t(key: string, params?: { [key: string]: string | number }): string {\n const message = this.i18n.get(key);\n if (message === undefined) {\n log.error(`[CatI18nRegistry] Unknown message key: ${key}`);\n return key;\n }\n return message.replace(/{{\\s*([-a-zA-Z._]+)\\s*}}/g, (_match, key) => `${params?.[key] ?? ''}`);\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n}\n\nexport const catI18nRegistry = CatI18nRegistry.getInstance();\n","import log from 'loglevel';\n\nexport class CatIconRegistry {\n private static instance: CatIconRegistry;\n\n private readonly id = (Math.random() + 1).toString(36).substring(2);\n private readonly icons: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\n\n // In rare cases, the registry can be initialized twice. This can happen in\n // a micro frontend architecture where the registry is initialized in the\n // host application and in the micro frontend. To prevent the registry in\n // one application from overwriting the registry in the other, we listen for\n // events that are dispatched when icons are added or removed in other\n // applications and add or remove icons if the event was not dispatched by\n // this registry.\n window.addEventListener('cat-icons-added', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.addIcons(detail.icons, detail.setName, true);\n }\n });\n window.addEventListener('cat-icons-removed', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.removeIcons(detail.names, detail.setName, true);\n }\n });\n }\n\n static getInstance(): CatIconRegistry {\n if (!CatIconRegistry.instance) {\n CatIconRegistry.instance = new CatIconRegistry();\n }\n return CatIconRegistry.instance;\n }\n\n getIcon(name: string, setName?: string): string | undefined {\n const icon = this.icons.get(this.buildName(name, setName));\n if (!icon) {\n log.error(`[CatIconRegistry] Unknown icon${setName ? ` in set ${setName}` : ''}: ${name}`);\n }\n return icon;\n }\n\n addIcons(icons: { [name: string]: string }, setName?: string, silent = false): CatIconRegistry {\n const iconEntries = Object.entries(icons);\n const iconSize = iconEntries.length;\n iconEntries.forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));\n log.info(`[CatIconRegistry] Added ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` to set ${setName}` : ''}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-icons-added', { id: this.id, icons, setName }));\n return this;\n }\n\n removeIcons(names: string[], setName?: string, silent = false): CatIconRegistry {\n const iconSize = names.length;\n names.forEach(name => this.icons.delete(this.buildName(name, setName)));\n log.info(`[CatIconRegistry] Removed ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` from set ${setName}` : ''}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-icons-removed', { id: this.id, names, setName }));\n return this;\n }\n\n private buildName(name: string, setName?: string) {\n return setName ? `${setName}:name` : name;\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n}\n\nexport const catIconRegistry = CatIconRegistry.getInstance();\n"],"version":3}
|
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const catIconRegistry = require('./cat-icon-registry-
|
|
5
|
+
const catIconRegistry = require('./cat-icon-registry-671af264.js');
|
|
6
6
|
|
|
7
7
|
var toastify = catIconRegistry.createCommonjsModule(function (module) {
|
|
8
8
|
/*!
|
|
@@ -1,8 +1,28 @@
|
|
|
1
1
|
import log from 'loglevel';
|
|
2
2
|
export class CatI18nRegistry {
|
|
3
3
|
constructor() {
|
|
4
|
-
this.i18n = new Map();
|
|
5
4
|
// hide constructor
|
|
5
|
+
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
6
|
+
this.i18n = new Map();
|
|
7
|
+
// In rare cases, the registry can be initialized twice. This can happen in
|
|
8
|
+
// a micro frontend architecture where the registry is initialized in the
|
|
9
|
+
// host application and in the micro frontend. To prevent the registry in
|
|
10
|
+
// one application from overwriting the registry in the other, we listen for
|
|
11
|
+
// events that are dispatched when messages are added or removed in other
|
|
12
|
+
// applications and add or remove messages if the event was not dispatched
|
|
13
|
+
// by this registry.
|
|
14
|
+
window.addEventListener('cat-i18n-set', event => {
|
|
15
|
+
const { detail } = event || {};
|
|
16
|
+
if (detail && detail.id !== this.id) {
|
|
17
|
+
this.set(detail.i18n, true);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
window.addEventListener('cat-i18n-clear', event => {
|
|
21
|
+
const { detail } = event || {};
|
|
22
|
+
if (detail && detail.id !== this.id) {
|
|
23
|
+
this.clear(true);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
6
26
|
}
|
|
7
27
|
static getInstance() {
|
|
8
28
|
if (!CatI18nRegistry.instance) {
|
|
@@ -10,15 +30,16 @@ export class CatI18nRegistry {
|
|
|
10
30
|
}
|
|
11
31
|
return CatI18nRegistry.instance;
|
|
12
32
|
}
|
|
13
|
-
set(i18n) {
|
|
14
|
-
Object.entries(i18n)
|
|
15
|
-
|
|
16
|
-
|
|
33
|
+
set(i18n, silent = false) {
|
|
34
|
+
const i18nEntries = Object.entries(i18n);
|
|
35
|
+
i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));
|
|
36
|
+
log.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);
|
|
37
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));
|
|
17
38
|
}
|
|
18
|
-
clear() {
|
|
39
|
+
clear(silent = false) {
|
|
19
40
|
this.i18n.clear();
|
|
20
41
|
log.info(`[CatI18nRegistry] Cleared messages`);
|
|
21
|
-
window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
|
|
42
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
|
|
22
43
|
}
|
|
23
44
|
t(key, params) {
|
|
24
45
|
const message = this.i18n.get(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat-i18n-registry.js","sourceRoot":"","sources":["../../../src/components/cat-i18n/cat-i18n-registry.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"cat-i18n-registry.js","sourceRoot":"","sources":["../../../src/components/cat-i18n/cat-i18n-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import log from 'loglevel';\n\nexport class CatI18nRegistry {\n private static instance: CatI18nRegistry;\n\n private readonly id = (Math.random() + 1).toString(36).substring(2);\n private readonly i18n: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\n\n // In rare cases, the registry can be initialized twice. This can happen in\n // a micro frontend architecture where the registry is initialized in the\n // host application and in the micro frontend. To prevent the registry in\n // one application from overwriting the registry in the other, we listen for\n // events that are dispatched when messages are added or removed in other\n // applications and add or remove messages if the event was not dispatched\n // by this registry.\n window.addEventListener('cat-i18n-set', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.set(detail.i18n, true);\n }\n });\n window.addEventListener('cat-i18n-clear', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.clear(true);\n }\n });\n }\n\n static getInstance(): CatI18nRegistry {\n if (!CatI18nRegistry.instance) {\n CatI18nRegistry.instance = new CatI18nRegistry();\n }\n return CatI18nRegistry.instance;\n }\n\n set(i18n: { [key: string]: string }, silent = false): void {\n const i18nEntries = Object.entries(i18n);\n i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));\n log.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));\n }\n\n clear(silent = false): void {\n this.i18n.clear();\n log.info(`[CatI18nRegistry] Cleared messages`);\n !silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));\n }\n\n t(key: string, params?: { [key: string]: string | number }): string {\n const message = this.i18n.get(key);\n if (message === undefined) {\n log.error(`[CatI18nRegistry] Unknown message key: ${key}`);\n return key;\n }\n return message.replace(/{{\\s*([-a-zA-Z._]+)\\s*}}/g, (_match, key) => `${params?.[key] ?? ''}`);\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n}\n\nexport const catI18nRegistry = CatI18nRegistry.getInstance();\n"]}
|
|
@@ -1,16 +1,33 @@
|
|
|
1
1
|
import log from 'loglevel';
|
|
2
2
|
export class CatIconRegistry {
|
|
3
3
|
constructor() {
|
|
4
|
-
this.icons = new Map();
|
|
5
|
-
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
6
|
-
console.log('CatIconRegistry created', this.id);
|
|
7
4
|
// hide constructor
|
|
5
|
+
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
6
|
+
this.icons = new Map();
|
|
7
|
+
// In rare cases, the registry can be initialized twice. This can happen in
|
|
8
|
+
// a micro frontend architecture where the registry is initialized in the
|
|
9
|
+
// host application and in the micro frontend. To prevent the registry in
|
|
10
|
+
// one application from overwriting the registry in the other, we listen for
|
|
11
|
+
// events that are dispatched when icons are added or removed in other
|
|
12
|
+
// applications and add or remove icons if the event was not dispatched by
|
|
13
|
+
// this registry.
|
|
14
|
+
window.addEventListener('cat-icons-added', event => {
|
|
15
|
+
const { detail } = event || {};
|
|
16
|
+
if (detail && detail.id !== this.id) {
|
|
17
|
+
this.addIcons(detail.icons, detail.setName, true);
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
window.addEventListener('cat-icons-removed', event => {
|
|
21
|
+
const { detail } = event || {};
|
|
22
|
+
if (detail && detail.id !== this.id) {
|
|
23
|
+
this.removeIcons(detail.names, detail.setName, true);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
8
26
|
}
|
|
9
27
|
static getInstance() {
|
|
10
28
|
if (!CatIconRegistry.instance) {
|
|
11
29
|
CatIconRegistry.instance = new CatIconRegistry();
|
|
12
30
|
}
|
|
13
|
-
console.log('getInstance', CatIconRegistry.instance);
|
|
14
31
|
return CatIconRegistry.instance;
|
|
15
32
|
}
|
|
16
33
|
getIcon(name, setName) {
|
|
@@ -20,29 +37,19 @@ export class CatIconRegistry {
|
|
|
20
37
|
}
|
|
21
38
|
return icon;
|
|
22
39
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
addIcons(icons, setName) {
|
|
30
|
-
console.log('addIcons', setName, icons);
|
|
31
|
-
Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
|
|
32
|
-
log.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);
|
|
33
|
-
window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));
|
|
34
|
-
return this;
|
|
35
|
-
}
|
|
36
|
-
removeIcon(name, setName) {
|
|
37
|
-
this.icons.delete(this.buildName(name, setName));
|
|
38
|
-
log.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);
|
|
39
|
-
window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));
|
|
40
|
+
addIcons(icons, setName, silent = false) {
|
|
41
|
+
const iconEntries = Object.entries(icons);
|
|
42
|
+
const iconSize = iconEntries.length;
|
|
43
|
+
iconEntries.forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
|
|
44
|
+
log.info(`[CatIconRegistry] Added ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` to set ${setName}` : ''}`);
|
|
45
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-icons-added', { id: this.id, icons, setName }));
|
|
40
46
|
return this;
|
|
41
47
|
}
|
|
42
|
-
removeIcons(names, setName) {
|
|
48
|
+
removeIcons(names, setName, silent = false) {
|
|
49
|
+
const iconSize = names.length;
|
|
43
50
|
names.forEach(name => this.icons.delete(this.buildName(name, setName)));
|
|
44
|
-
log.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}
|
|
45
|
-
window.dispatchEvent(this.buildEvent('cat-icons-removed', { names, setName }));
|
|
51
|
+
log.info(`[CatIconRegistry] Removed ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` from set ${setName}` : ''}`);
|
|
52
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-icons-removed', { id: this.id, names, setName }));
|
|
46
53
|
return this;
|
|
47
54
|
}
|
|
48
55
|
buildName(name, setName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat-icon-registry.js","sourceRoot":"","sources":["../../../src/components/cat-icon/cat-icon-registry.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,MAAM,OAAO,eAAe;
|
|
1
|
+
{"version":3,"file":"cat-icon-registry.js","sourceRoot":"","sources":["../../../src/components/cat-icon/cat-icon-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import log from 'loglevel';\n\nexport class CatIconRegistry {\n private static instance: CatIconRegistry;\n\n private readonly id = (Math.random() + 1).toString(36).substring(2);\n private readonly icons: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\n\n // In rare cases, the registry can be initialized twice. This can happen in\n // a micro frontend architecture where the registry is initialized in the\n // host application and in the micro frontend. To prevent the registry in\n // one application from overwriting the registry in the other, we listen for\n // events that are dispatched when icons are added or removed in other\n // applications and add or remove icons if the event was not dispatched by\n // this registry.\n window.addEventListener('cat-icons-added', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.addIcons(detail.icons, detail.setName, true);\n }\n });\n window.addEventListener('cat-icons-removed', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.removeIcons(detail.names, detail.setName, true);\n }\n });\n }\n\n static getInstance(): CatIconRegistry {\n if (!CatIconRegistry.instance) {\n CatIconRegistry.instance = new CatIconRegistry();\n }\n return CatIconRegistry.instance;\n }\n\n getIcon(name: string, setName?: string): string | undefined {\n const icon = this.icons.get(this.buildName(name, setName));\n if (!icon) {\n log.error(`[CatIconRegistry] Unknown icon${setName ? ` in set ${setName}` : ''}: ${name}`);\n }\n return icon;\n }\n\n addIcons(icons: { [name: string]: string }, setName?: string, silent = false): CatIconRegistry {\n const iconEntries = Object.entries(icons);\n const iconSize = iconEntries.length;\n iconEntries.forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));\n log.info(`[CatIconRegistry] Added ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` to set ${setName}` : ''}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-icons-added', { id: this.id, icons, setName }));\n return this;\n }\n\n removeIcons(names: string[], setName?: string, silent = false): CatIconRegistry {\n const iconSize = names.length;\n names.forEach(name => this.icons.delete(this.buildName(name, setName)));\n log.info(`[CatIconRegistry] Removed ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` from set ${setName}` : ''}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-icons-removed', { id: this.id, names, setName }));\n return this;\n }\n\n private buildName(name: string, setName?: string) {\n return setName ? `${setName}:name` : name;\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n}\n\nexport const catIconRegistry = CatIconRegistry.getInstance();\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, h, Prop } from '@stencil/core';
|
|
2
|
-
import {
|
|
2
|
+
import { catIconRegistry as icons } from './cat-icon-registry';
|
|
3
3
|
/**
|
|
4
4
|
* Icons are used to provide additional meaning or in places where text label
|
|
5
5
|
* doesn't fit.
|
|
@@ -8,7 +8,6 @@ import { CatIconRegistry } from './cat-icon-registry';
|
|
|
8
8
|
*/
|
|
9
9
|
export class CatIcon {
|
|
10
10
|
constructor() {
|
|
11
|
-
this.iconRegistry = CatIconRegistry.getInstance();
|
|
12
11
|
/**
|
|
13
12
|
* The name of the icon.
|
|
14
13
|
*/
|
|
@@ -19,7 +18,7 @@ export class CatIcon {
|
|
|
19
18
|
this.size = 'm';
|
|
20
19
|
}
|
|
21
20
|
render() {
|
|
22
|
-
return (h("span", { innerHTML:
|
|
21
|
+
return (h("span", { innerHTML: icons.getIcon(this.icon), "aria-label": this.a11yLabel, "aria-hidden": this.a11yLabel ? null : 'true', part: "icon", class: {
|
|
23
22
|
icon: true,
|
|
24
23
|
[`icon-${this.size}`]: this.size !== 'inline'
|
|
25
24
|
} }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cat-icon.js","sourceRoot":"","sources":["../../../src/components/cat-icon/cat-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"cat-icon.js","sourceRoot":"","sources":["../../../src/components/cat-icon/cat-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,IAAI,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;GAKG;AAMH,MAAM,OAAO,OAAO;EALpB;IAME;;OAEG;IACK,SAAI,GAAG,EAAE,CAAC;IAElB;;OAEG;IACK,SAAI,GAA6C,GAAG,CAAC;GAsB9D;EAdC,MAAM;IACJ,OAAO,CACL,YACE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,gBACvB,IAAI,CAAC,SAAS,iBACb,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC3C,IAAI,EAAC,MAAM,EACX,KAAK,EAAE;QACL,IAAI,EAAE,IAAI;QACV,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,KAAK,QAAQ;OAC9C,GACK,CACT,CAAC;EACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, h, Prop } from '@stencil/core';\nimport { catIconRegistry as icons } from './cat-icon-registry';\n\n/**\n * Icons are used to provide additional meaning or in places where text label\n * doesn't fit.\n *\n * @part icon - The span element wrapping the SVG icon.\n */\n@Component({\n tag: 'cat-icon',\n styleUrl: 'cat-icon.scss',\n shadow: true\n})\nexport class CatIcon {\n /**\n * The name of the icon.\n */\n @Prop() icon = '';\n\n /**\n * The size of the icon.\n */\n @Prop() size: 'xs' | 's' | 'm' | 'l' | 'xl' | 'inline' = 'm';\n\n /**\n * Adds accessible label for the icon that is only shown for screen\n * readers. The `aria-hidden` attribute will be set if no label is present.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n render() {\n return (\n <span\n innerHTML={icons.getIcon(this.icon)}\n aria-label={this.a11yLabel}\n aria-hidden={this.a11yLabel ? null : 'true'}\n part=\"icon\"\n class={{\n icon: true,\n [`icon-${this.size}`]: this.size !== 'inline'\n }}\n ></span>\n );\n }\n}\n"]}
|
|
@@ -2,8 +2,28 @@ import { l as loglevel } from './loglevel.js';
|
|
|
2
2
|
|
|
3
3
|
class CatI18nRegistry {
|
|
4
4
|
constructor() {
|
|
5
|
-
this.i18n = new Map();
|
|
6
5
|
// hide constructor
|
|
6
|
+
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
7
|
+
this.i18n = new Map();
|
|
8
|
+
// In rare cases, the registry can be initialized twice. This can happen in
|
|
9
|
+
// a micro frontend architecture where the registry is initialized in the
|
|
10
|
+
// host application and in the micro frontend. To prevent the registry in
|
|
11
|
+
// one application from overwriting the registry in the other, we listen for
|
|
12
|
+
// events that are dispatched when messages are added or removed in other
|
|
13
|
+
// applications and add or remove messages if the event was not dispatched
|
|
14
|
+
// by this registry.
|
|
15
|
+
window.addEventListener('cat-i18n-set', event => {
|
|
16
|
+
const { detail } = event || {};
|
|
17
|
+
if (detail && detail.id !== this.id) {
|
|
18
|
+
this.set(detail.i18n, true);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
window.addEventListener('cat-i18n-clear', event => {
|
|
22
|
+
const { detail } = event || {};
|
|
23
|
+
if (detail && detail.id !== this.id) {
|
|
24
|
+
this.clear(true);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
7
27
|
}
|
|
8
28
|
static getInstance() {
|
|
9
29
|
if (!CatI18nRegistry.instance) {
|
|
@@ -11,15 +31,16 @@ class CatI18nRegistry {
|
|
|
11
31
|
}
|
|
12
32
|
return CatI18nRegistry.instance;
|
|
13
33
|
}
|
|
14
|
-
set(i18n) {
|
|
15
|
-
Object.entries(i18n)
|
|
16
|
-
|
|
17
|
-
|
|
34
|
+
set(i18n, silent = false) {
|
|
35
|
+
const i18nEntries = Object.entries(i18n);
|
|
36
|
+
i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));
|
|
37
|
+
loglevel.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);
|
|
38
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));
|
|
18
39
|
}
|
|
19
|
-
clear() {
|
|
40
|
+
clear(silent = false) {
|
|
20
41
|
this.i18n.clear();
|
|
21
42
|
loglevel.info(`[CatI18nRegistry] Cleared messages`);
|
|
22
|
-
window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
|
|
43
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
|
|
23
44
|
}
|
|
24
45
|
t(key, params) {
|
|
25
46
|
const message = this.i18n.get(key);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"cat-i18n-registry.js","mappings":";;MAEa,eAAe;
|
|
1
|
+
{"file":"cat-i18n-registry.js","mappings":";;MAEa,eAAe;EAM1B;;IAHiB,OAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnD,SAAI,GAAwB,IAAI,GAAG,EAAE,CAAC;;;;;;;;IAYrD,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAK;MAC3C,MAAM,EAAE,MAAM,EAAE,GAAI,KAAqB,IAAI,EAAE,CAAC;MAChD,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;OAC7B;KACF,CAAC,CAAC;IACH,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK;MAC7C,MAAM,EAAE,MAAM,EAAE,GAAI,KAAqB,IAAI,EAAE,CAAC;MAChD,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;OAClB;KACF,CAAC,CAAC;GACJ;EAED,OAAO,WAAW;IAChB,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE;MAC7B,eAAe,CAAC,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;KAClD;IACD,OAAO,eAAe,CAAC,QAAQ,CAAC;GACjC;EAED,GAAG,CAAC,IAA+B,EAAE,MAAM,GAAG,KAAK;IACjD,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACrEA,QAAG,CAAC,IAAI,CAAC,gCAAgC,WAAW,CAAC,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,SAAS,EAAE,CAAC,CAAC;IAC9F,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;GACzF;EAED,KAAK,CAAC,MAAM,GAAG,KAAK;IAClB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClBA,QAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAC/C,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;GACpE;EAED,CAAC,CAAC,GAAW,EAAE,MAA2C;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE;MACzBA,QAAG,CAAC,KAAK,CAAC,0CAA0C,GAAG,EAAE,CAAC,CAAC;MAC3D,OAAO,GAAG,CAAC;KACZ;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,MAAM,EAAE,GAAG,eAAK,OAAA,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,GAAG,CAAC,mCAAI,EAAE,EAAE,CAAA,EAAA,CAAC,CAAC;GAChG;EAEO,UAAU,CAAI,IAAY,EAAE,MAAU;IAC5C,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE;MAC3B,OAAO,EAAE,IAAI;MACb,QAAQ,EAAE,IAAI;MACd,MAAM;KACP,CAAC,CAAC;GACJ;CACF;MAEY,eAAe,GAAG,eAAe,CAAC,WAAW;;;;","names":["log"],"sources":["./src/components/cat-i18n/cat-i18n-registry.ts"],"sourcesContent":["import log from 'loglevel';\n\nexport class CatI18nRegistry {\n private static instance: CatI18nRegistry;\n\n private readonly id = (Math.random() + 1).toString(36).substring(2);\n private readonly i18n: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\n\n // In rare cases, the registry can be initialized twice. This can happen in\n // a micro frontend architecture where the registry is initialized in the\n // host application and in the micro frontend. To prevent the registry in\n // one application from overwriting the registry in the other, we listen for\n // events that are dispatched when messages are added or removed in other\n // applications and add or remove messages if the event was not dispatched\n // by this registry.\n window.addEventListener('cat-i18n-set', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.set(detail.i18n, true);\n }\n });\n window.addEventListener('cat-i18n-clear', event => {\n const { detail } = (event as CustomEvent) || {};\n if (detail && detail.id !== this.id) {\n this.clear(true);\n }\n });\n }\n\n static getInstance(): CatI18nRegistry {\n if (!CatI18nRegistry.instance) {\n CatI18nRegistry.instance = new CatI18nRegistry();\n }\n return CatI18nRegistry.instance;\n }\n\n set(i18n: { [key: string]: string }, silent = false): void {\n const i18nEntries = Object.entries(i18n);\n i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));\n log.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);\n !silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));\n }\n\n clear(silent = false): void {\n this.i18n.clear();\n log.info(`[CatI18nRegistry] Cleared messages`);\n !silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));\n }\n\n t(key: string, params?: { [key: string]: string | number }): string {\n const message = this.i18n.get(key);\n if (message === undefined) {\n log.error(`[CatI18nRegistry] Unknown message key: ${key}`);\n return key;\n }\n return message.replace(/{{\\s*([-a-zA-Z._]+)\\s*}}/g, (_match, key) => `${params?.[key] ?? ''}`);\n }\n\n private buildEvent<T>(name: string, detail?: T) {\n return new CustomEvent(name, {\n bubbles: true,\n composed: true,\n detail\n });\n }\n}\n\nexport const catI18nRegistry = CatI18nRegistry.getInstance();\n"],"version":3}
|
|
@@ -3,16 +3,33 @@ import { l as loglevel } from './loglevel.js';
|
|
|
3
3
|
|
|
4
4
|
class CatIconRegistry {
|
|
5
5
|
constructor() {
|
|
6
|
-
this.icons = new Map();
|
|
7
|
-
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
8
|
-
console.log('CatIconRegistry created', this.id);
|
|
9
6
|
// hide constructor
|
|
7
|
+
this.id = (Math.random() + 1).toString(36).substring(2);
|
|
8
|
+
this.icons = new Map();
|
|
9
|
+
// In rare cases, the registry can be initialized twice. This can happen in
|
|
10
|
+
// a micro frontend architecture where the registry is initialized in the
|
|
11
|
+
// host application and in the micro frontend. To prevent the registry in
|
|
12
|
+
// one application from overwriting the registry in the other, we listen for
|
|
13
|
+
// events that are dispatched when icons are added or removed in other
|
|
14
|
+
// applications and add or remove icons if the event was not dispatched by
|
|
15
|
+
// this registry.
|
|
16
|
+
window.addEventListener('cat-icons-added', event => {
|
|
17
|
+
const { detail } = event || {};
|
|
18
|
+
if (detail && detail.id !== this.id) {
|
|
19
|
+
this.addIcons(detail.icons, detail.setName, true);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
window.addEventListener('cat-icons-removed', event => {
|
|
23
|
+
const { detail } = event || {};
|
|
24
|
+
if (detail && detail.id !== this.id) {
|
|
25
|
+
this.removeIcons(detail.names, detail.setName, true);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
10
28
|
}
|
|
11
29
|
static getInstance() {
|
|
12
30
|
if (!CatIconRegistry.instance) {
|
|
13
31
|
CatIconRegistry.instance = new CatIconRegistry();
|
|
14
32
|
}
|
|
15
|
-
console.log('getInstance', CatIconRegistry.instance);
|
|
16
33
|
return CatIconRegistry.instance;
|
|
17
34
|
}
|
|
18
35
|
getIcon(name, setName) {
|
|
@@ -22,29 +39,19 @@ class CatIconRegistry {
|
|
|
22
39
|
}
|
|
23
40
|
return icon;
|
|
24
41
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
addIcons(icons, setName) {
|
|
32
|
-
console.log('addIcons', setName, icons);
|
|
33
|
-
Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
|
|
34
|
-
loglevel.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);
|
|
35
|
-
window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));
|
|
36
|
-
return this;
|
|
37
|
-
}
|
|
38
|
-
removeIcon(name, setName) {
|
|
39
|
-
this.icons.delete(this.buildName(name, setName));
|
|
40
|
-
loglevel.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);
|
|
41
|
-
window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));
|
|
42
|
+
addIcons(icons, setName, silent = false) {
|
|
43
|
+
const iconEntries = Object.entries(icons);
|
|
44
|
+
const iconSize = iconEntries.length;
|
|
45
|
+
iconEntries.forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
|
|
46
|
+
loglevel.info(`[CatIconRegistry] Added ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` to set ${setName}` : ''}`);
|
|
47
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-icons-added', { id: this.id, icons, setName }));
|
|
42
48
|
return this;
|
|
43
49
|
}
|
|
44
|
-
removeIcons(names, setName) {
|
|
50
|
+
removeIcons(names, setName, silent = false) {
|
|
51
|
+
const iconSize = names.length;
|
|
45
52
|
names.forEach(name => this.icons.delete(this.buildName(name, setName)));
|
|
46
|
-
loglevel.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}
|
|
47
|
-
window.dispatchEvent(this.buildEvent('cat-icons-removed', { names, setName }));
|
|
53
|
+
loglevel.info(`[CatIconRegistry] Removed ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` from set ${setName}` : ''}`);
|
|
54
|
+
!silent && window.dispatchEvent(this.buildEvent('cat-icons-removed', { id: this.id, names, setName }));
|
|
48
55
|
return this;
|
|
49
56
|
}
|
|
50
57
|
buildName(name, setName) {
|
|
@@ -67,7 +74,6 @@ const CatIcon = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
67
74
|
super();
|
|
68
75
|
this.__registerHost();
|
|
69
76
|
this.__attachShadow();
|
|
70
|
-
this.iconRegistry = CatIconRegistry.getInstance();
|
|
71
77
|
/**
|
|
72
78
|
* The name of the icon.
|
|
73
79
|
*/
|
|
@@ -78,7 +84,7 @@ const CatIcon = /*@__PURE__*/ proxyCustomElement(class extends HTMLElement {
|
|
|
78
84
|
this.size = 'm';
|
|
79
85
|
}
|
|
80
86
|
render() {
|
|
81
|
-
return (h("span", { innerHTML:
|
|
87
|
+
return (h("span", { innerHTML: catIconRegistry.getIcon(this.icon), "aria-label": this.a11yLabel, "aria-hidden": this.a11yLabel ? null : 'true', part: "icon", class: {
|
|
82
88
|
icon: true,
|
|
83
89
|
[`icon-${this.size}`]: this.size !== 'inline'
|
|
84
90
|
} }));
|