@haiilo/catalyst 2.4.7 → 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.
Files changed (36) hide show
  1. package/dist/catalyst/catalyst.esm.js +1 -1
  2. package/dist/catalyst/index.esm.js +1 -1
  3. package/dist/catalyst/p-602c38be.entry.js +2 -0
  4. package/dist/catalyst/p-602c38be.entry.js.map +1 -0
  5. package/dist/catalyst/p-ccfebe33.js +2 -0
  6. package/dist/catalyst/p-ccfebe33.js.map +1 -0
  7. package/dist/cjs/cat-alert_23.cjs.entry.js +2 -3
  8. package/dist/cjs/cat-alert_23.cjs.entry.js.map +1 -1
  9. package/dist/cjs/{cat-icon-registry-32ed379a.js → cat-icon-registry-671af264.js} +60 -32
  10. package/dist/cjs/cat-icon-registry-671af264.js.map +1 -0
  11. package/dist/cjs/index.cjs.js +1 -1
  12. package/dist/collection/components/cat-i18n/cat-i18n-registry.js +28 -7
  13. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  14. package/dist/collection/components/cat-icon/cat-icon-registry.js +31 -24
  15. package/dist/collection/components/cat-icon/cat-icon-registry.js.map +1 -1
  16. package/dist/collection/components/cat-icon/cat-icon.js +2 -3
  17. package/dist/collection/components/cat-icon/cat-icon.js.map +1 -1
  18. package/dist/components/cat-i18n-registry.js +28 -7
  19. package/dist/components/cat-i18n-registry.js.map +1 -1
  20. package/dist/components/cat-icon2.js +32 -26
  21. package/dist/components/cat-icon2.js.map +1 -1
  22. package/dist/esm/cat-alert_23.entry.js +2 -3
  23. package/dist/esm/cat-alert_23.entry.js.map +1 -1
  24. package/dist/esm/{cat-icon-registry-7c4007ff.js → cat-icon-registry-d6b80490.js} +60 -32
  25. package/dist/esm/cat-icon-registry-d6b80490.js.map +1 -0
  26. package/dist/esm/index.js +2 -2
  27. package/dist/types/components/cat-i18n/cat-i18n-registry.d.ts +3 -2
  28. package/dist/types/components/cat-icon/cat-icon-registry.d.ts +3 -5
  29. package/dist/types/components/cat-icon/cat-icon.d.ts +0 -1
  30. package/package.json +2 -2
  31. package/dist/catalyst/p-5362e648.js +0 -2
  32. package/dist/catalyst/p-5362e648.js.map +0 -1
  33. package/dist/catalyst/p-c2bf7e26.entry.js +0 -2
  34. package/dist/catalyst/p-c2bf7e26.entry.js.map +0 -1
  35. package/dist/cjs/cat-icon-registry-32ed379a.js.map +0 -1
  36. package/dist/esm/cat-icon-registry-7c4007ff.js.map +0 -1
@@ -312,8 +312,28 @@ var loglevel = createCommonjsModule(function (module) {
312
312
 
313
313
  class CatI18nRegistry {
314
314
  constructor() {
315
- this.i18n = new Map();
316
315
  // hide constructor
316
+ this.id = (Math.random() + 1).toString(36).substring(2);
317
+ this.i18n = new Map();
318
+ // In rare cases, the registry can be initialized twice. This can happen in
319
+ // a micro frontend architecture where the registry is initialized in the
320
+ // host application and in the micro frontend. To prevent the registry in
321
+ // one application from overwriting the registry in the other, we listen for
322
+ // events that are dispatched when messages are added or removed in other
323
+ // applications and add or remove messages if the event was not dispatched
324
+ // by this registry.
325
+ window.addEventListener('cat-i18n-set', event => {
326
+ const { detail } = event || {};
327
+ if (detail && detail.id !== this.id) {
328
+ this.set(detail.i18n, true);
329
+ }
330
+ });
331
+ window.addEventListener('cat-i18n-clear', event => {
332
+ const { detail } = event || {};
333
+ if (detail && detail.id !== this.id) {
334
+ this.clear(true);
335
+ }
336
+ });
317
337
  }
318
338
  static getInstance() {
319
339
  if (!CatI18nRegistry.instance) {
@@ -321,15 +341,16 @@ class CatI18nRegistry {
321
341
  }
322
342
  return CatI18nRegistry.instance;
323
343
  }
324
- set(i18n) {
325
- Object.entries(i18n).forEach(([key, message]) => this.i18n.set(key, message));
326
- loglevel.info(`[CatI18nRegistry] Registered messages`, i18n);
327
- window.dispatchEvent(this.buildEvent('cat-i18n-set', { messages: i18n }));
344
+ set(i18n, silent = false) {
345
+ const i18nEntries = Object.entries(i18n);
346
+ i18nEntries.forEach(([key, message]) => this.i18n.set(key, message));
347
+ loglevel.info(`[CatI18nRegistry] Registered ${i18nEntries.length !== 1 ? 'messages' : 'message'}`);
348
+ !silent && window.dispatchEvent(this.buildEvent('cat-i18n-set', { i18n, id: this.id }));
328
349
  }
329
- clear() {
350
+ clear(silent = false) {
330
351
  this.i18n.clear();
331
352
  loglevel.info(`[CatI18nRegistry] Cleared messages`);
332
- window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
353
+ !silent && window.dispatchEvent(this.buildEvent('cat-i18n-clear'));
333
354
  }
334
355
  t(key, params) {
335
356
  const message = this.i18n.get(key);
@@ -351,16 +372,33 @@ const catI18nRegistry = CatI18nRegistry.getInstance();
351
372
 
352
373
  class CatIconRegistry {
353
374
  constructor() {
354
- this.icons = new Map();
355
- this.id = (Math.random() + 1).toString(36).substring(2);
356
- console.log('CatIconRegistry created', this.id);
357
375
  // hide constructor
376
+ this.id = (Math.random() + 1).toString(36).substring(2);
377
+ this.icons = new Map();
378
+ // In rare cases, the registry can be initialized twice. This can happen in
379
+ // a micro frontend architecture where the registry is initialized in the
380
+ // host application and in the micro frontend. To prevent the registry in
381
+ // one application from overwriting the registry in the other, we listen for
382
+ // events that are dispatched when icons are added or removed in other
383
+ // applications and add or remove icons if the event was not dispatched by
384
+ // this registry.
385
+ window.addEventListener('cat-icons-added', event => {
386
+ const { detail } = event || {};
387
+ if (detail && detail.id !== this.id) {
388
+ this.addIcons(detail.icons, detail.setName, true);
389
+ }
390
+ });
391
+ window.addEventListener('cat-icons-removed', event => {
392
+ const { detail } = event || {};
393
+ if (detail && detail.id !== this.id) {
394
+ this.removeIcons(detail.names, detail.setName, true);
395
+ }
396
+ });
358
397
  }
359
398
  static getInstance() {
360
399
  if (!CatIconRegistry.instance) {
361
400
  CatIconRegistry.instance = new CatIconRegistry();
362
401
  }
363
- console.log('getInstance', CatIconRegistry.instance);
364
402
  return CatIconRegistry.instance;
365
403
  }
366
404
  getIcon(name, setName) {
@@ -370,29 +408,19 @@ class CatIconRegistry {
370
408
  }
371
409
  return icon;
372
410
  }
373
- addIcon(name, data, setName) {
374
- this.icons.set(this.buildName(name, setName), data);
375
- loglevel.info(`[CatIconRegistry] Added icon${setName ? ` to set ${setName}` : ''}: ${name}`);
376
- window.dispatchEvent(this.buildEvent('cat-icon-added', { name, setName }));
377
- return this;
378
- }
379
- addIcons(icons, setName) {
380
- console.log('addIcons', setName, icons);
381
- Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
382
- loglevel.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);
383
- window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));
384
- return this;
385
- }
386
- removeIcon(name, setName) {
387
- this.icons.delete(this.buildName(name, setName));
388
- loglevel.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);
389
- window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));
411
+ addIcons(icons, setName, silent = false) {
412
+ const iconEntries = Object.entries(icons);
413
+ const iconSize = iconEntries.length;
414
+ iconEntries.forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));
415
+ loglevel.info(`[CatIconRegistry] Added ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` to set ${setName}` : ''}`);
416
+ !silent && window.dispatchEvent(this.buildEvent('cat-icons-added', { id: this.id, icons, setName }));
390
417
  return this;
391
418
  }
392
- removeIcons(names, setName) {
419
+ removeIcons(names, setName, silent = false) {
420
+ const iconSize = names.length;
393
421
  names.forEach(name => this.icons.delete(this.buildName(name, setName)));
394
- loglevel.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}: ${names.concat(', ')}`);
395
- window.dispatchEvent(this.buildEvent('cat-icons-removed', { names, setName }));
422
+ loglevel.info(`[CatIconRegistry] Removed ${iconSize !== 1 ? 'icons' : 'icon'}${setName ? ` from set ${setName}` : ''}`);
423
+ !silent && window.dispatchEvent(this.buildEvent('cat-icons-removed', { id: this.id, names, setName }));
396
424
  return this;
397
425
  }
398
426
  buildName(name, setName) {
@@ -410,4 +438,4 @@ const catIconRegistry = CatIconRegistry.getInstance();
410
438
 
411
439
  export { CatI18nRegistry as C, commonjsGlobal as a, catI18nRegistry as b, createCommonjsModule as c, catIconRegistry as d, CatIconRegistry as e, loglevel as l };
412
440
 
413
- //# sourceMappingURL=cat-icon-registry-7c4007ff.js.map
441
+ //# sourceMappingURL=cat-icon-registry-d6b80490.js.map
@@ -0,0 +1 @@
1
+ {"file":"cat-icon-registry-d6b80490.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/esm/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { c as createCommonjsModule, a as commonjsGlobal, b as catI18nRegistry } from './cat-icon-registry-7c4007ff.js';
2
- export { C as CatI18nRegistry, e as CatIconRegistry, b as catI18nRegistry, d as catIconRegistry } from './cat-icon-registry-7c4007ff.js';
1
+ import { c as createCommonjsModule, a as commonjsGlobal, b as catI18nRegistry } from './cat-icon-registry-d6b80490.js';
2
+ export { C as CatI18nRegistry, e as CatIconRegistry, b as catI18nRegistry, d as catIconRegistry } from './cat-icon-registry-d6b80490.js';
3
3
 
4
4
  var toastify = createCommonjsModule(function (module) {
5
5
  /*!
@@ -1,12 +1,13 @@
1
1
  export declare class CatI18nRegistry {
2
2
  private static instance;
3
+ private readonly id;
3
4
  private readonly i18n;
4
5
  private constructor();
5
6
  static getInstance(): CatI18nRegistry;
6
7
  set(i18n: {
7
8
  [key: string]: string;
8
- }): void;
9
- clear(): void;
9
+ }, silent?: boolean): void;
10
+ clear(silent?: boolean): void;
10
11
  t(key: string, params?: {
11
12
  [key: string]: string | number;
12
13
  }): string;
@@ -1,16 +1,14 @@
1
1
  export declare class CatIconRegistry {
2
2
  private static instance;
3
+ private readonly id;
3
4
  private readonly icons;
4
- readonly id: string;
5
5
  private constructor();
6
6
  static getInstance(): CatIconRegistry;
7
7
  getIcon(name: string, setName?: string): string | undefined;
8
- addIcon(name: string, data: string, setName?: string): CatIconRegistry;
9
8
  addIcons(icons: {
10
9
  [name: string]: string;
11
- }, setName?: string): CatIconRegistry;
12
- removeIcon(name: string, setName?: string): CatIconRegistry;
13
- removeIcons(names: string[], setName?: string): CatIconRegistry;
10
+ }, setName?: string, silent?: boolean): CatIconRegistry;
11
+ removeIcons(names: string[], setName?: string, silent?: boolean): CatIconRegistry;
14
12
  private buildName;
15
13
  private buildEvent;
16
14
  }
@@ -5,7 +5,6 @@
5
5
  * @part icon - The span element wrapping the SVG icon.
6
6
  */
7
7
  export declare class CatIcon {
8
- private readonly iconRegistry;
9
8
  /**
10
9
  * The name of the icon.
11
10
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haiilo/catalyst",
3
- "version": "2.4.7",
3
+ "version": "2.4.9",
4
4
  "description": "Catalyst Design System",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -45,7 +45,7 @@
45
45
  },
46
46
  "dependencies": {
47
47
  "@floating-ui/dom": "1.0.3",
48
- "@haiilo/catalyst-tokens": "2.4.6",
48
+ "@haiilo/catalyst-tokens": "2.4.9",
49
49
  "@stencil/core": "2.17.4",
50
50
  "autosize": "5.0.1",
51
51
  "autosize-input": "1.0.2",
@@ -1,2 +0,0 @@
1
- var e=typeof globalThis!=="undefined"?globalThis:typeof window!=="undefined"?window:typeof global!=="undefined"?global:typeof self!=="undefined"?self:{};function n(e,n,o){return o={path:n,exports:{},require:function(e,n){return t()}},e(o,o.exports),o.exports}function t(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}var o=n((function(n){(function(e,t){if(n.exports){n.exports=t()}else{e.log=t()}})(e,(function(){var e=function(){};var n="undefined";var t=typeof window!==n&&typeof window.navigator!==n&&/Trident\/|MSIE /.test(window.navigator.userAgent);var o=["trace","debug","info","warn","error"];function i(e,n){var t=e[n];if(typeof t.bind==="function"){return t.bind(e)}else{try{return Function.prototype.bind.call(t,e)}catch(n){return function(){return Function.prototype.apply.apply(t,[e,arguments])}}}}function r(){if(console.log){if(console.log.apply){console.log.apply(console,arguments)}else{Function.prototype.apply.apply(console.log,[console,arguments])}}if(console.trace)console.trace()}function s(o){if(o==="debug"){o="log"}if(typeof console===n){return false}else if(o==="trace"&&t){return r}else if(console[o]!==undefined){return i(console,o)}else if(console.log!==undefined){return i(console,"log")}else{return e}}function c(n,t){for(var i=0;i<o.length;i++){var r=o[i];this[r]=i<n?e:this.methodFactory(r,n,t)}this.log=this.debug}function a(e,t,o){return function(){if(typeof console!==n){c.call(this,t,o);this[e].apply(this,arguments)}}}function u(e,n,t){return s(e)||a.apply(this,arguments)}function f(e,t,i){var r=this;var s;t=t==null?"WARN":t;var a="loglevel";if(typeof e==="string"){a+=":"+e}else if(typeof e==="symbol"){a=undefined}function f(e){var t=(o[e]||"silent").toUpperCase();if(typeof window===n||!a)return;try{window.localStorage[a]=t;return}catch(e){}try{window.document.cookie=encodeURIComponent(a)+"="+t+";"}catch(e){}}function d(){var e;if(typeof window===n||!a)return;try{e=window.localStorage[a]}catch(e){}if(typeof e===n){try{var t=window.document.cookie;var o=t.indexOf(encodeURIComponent(a)+"=");if(o!==-1){e=/^([^;]+)/.exec(t.slice(o))[1]}}catch(e){}}if(r.levels[e]===undefined){e=undefined}return e}function l(){if(typeof window===n||!a)return;try{window.localStorage.removeItem(a);return}catch(e){}try{window.document.cookie=encodeURIComponent(a)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}r.name=e;r.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5};r.methodFactory=i||u;r.getLevel=function(){return s};r.setLevel=function(t,o){if(typeof t==="string"&&r.levels[t.toUpperCase()]!==undefined){t=r.levels[t.toUpperCase()]}if(typeof t==="number"&&t>=0&&t<=r.levels.SILENT){s=t;if(o!==false){f(t)}c.call(r,t,e);if(typeof console===n&&t<r.levels.SILENT){return"No console available for logging"}}else{throw"log.setLevel() called with invalid level: "+t}};r.setDefaultLevel=function(e){t=e;if(!d()){r.setLevel(e,false)}};r.resetLevel=function(){r.setLevel(t,false);l()};r.enableAll=function(e){r.setLevel(r.levels.TRACE,e)};r.disableAll=function(e){r.setLevel(r.levels.SILENT,e)};var w=d();if(w==null){w=t}r.setLevel(w,false)}var d=new f;var l={};d.getLogger=function e(n){if(typeof n!=="symbol"&&typeof n!=="string"||n===""){throw new TypeError("You must supply a name when creating a logger.")}var t=l[n];if(!t){t=l[n]=new f(n,d.getLevel(),d.methodFactory)}return t};var w=typeof window!==n?window.log:undefined;d.noConflict=function(){if(typeof window!==n&&window.log===d){window.log=w}return d};d.getLoggers=function e(){return l};d["default"]=d;return d}))}));class i{constructor(){this.i18n=new Map}static getInstance(){if(!i.instance){i.instance=new i}return i.instance}set(e){Object.entries(e).forEach((([e,n])=>this.i18n.set(e,n)));o.info(`[CatI18nRegistry] Registered messages`,e);window.dispatchEvent(this.buildEvent("cat-i18n-set",{messages:e}))}clear(){this.i18n.clear();o.info(`[CatI18nRegistry] Cleared messages`);window.dispatchEvent(this.buildEvent("cat-i18n-clear"))}t(e,n){const t=this.i18n.get(e);if(t===undefined){o.error(`[CatI18nRegistry] Unknown message key: ${e}`);return e}return t.replace(/{{\s*([-a-zA-Z._]+)\s*}}/g,((e,t)=>{var o;return`${(o=n===null||n===void 0?void 0:n[t])!==null&&o!==void 0?o:""}`}))}buildEvent(e,n){return new CustomEvent(e,{bubbles:true,composed:true,detail:n})}}const r=i.getInstance();class s{constructor(){this.icons=new Map;this.id=(Math.random()+1).toString(36).substring(2);console.log("CatIconRegistry created",this.id)}static getInstance(){if(!s.instance){s.instance=new s}console.log("getInstance",s.instance);return s.instance}getIcon(e,n){const t=this.icons.get(this.buildName(e,n));if(!t){o.error(`[CatIconRegistry] Unknown icon${n?` in set ${n}`:""}: ${e}`)}return t}addIcon(e,n,t){this.icons.set(this.buildName(e,t),n);o.info(`[CatIconRegistry] Added icon${t?` to set ${t}`:""}: ${e}`);window.dispatchEvent(this.buildEvent("cat-icon-added",{name:e,setName:t}));return this}addIcons(e,n){console.log("addIcons",n,e);Object.entries(e).forEach((([e,t])=>this.icons.set(this.buildName(e,n),t)));o.info(`[CatIconRegistry] Added icons${n?` to set ${n}`:""}: ${Object.keys(e).concat(", ")}`);window.dispatchEvent(this.buildEvent("cat-icons-added",{names:Object.keys(e),setName:n}));return this}removeIcon(e,n){this.icons.delete(this.buildName(e,n));o.info(`[CatIconRegistry] Removed icon${n?` from set ${n}`:""}: ${e}`);window.dispatchEvent(this.buildEvent("cat-icon-removed",{name:e,setName:n}));return this}removeIcons(e,n){e.forEach((e=>this.icons.delete(this.buildName(e,n))));o.info(`[CatIconRegistry] Removed icons${n?` from set ${n}`:""}: ${e.concat(", ")}`);window.dispatchEvent(this.buildEvent("cat-icons-removed",{names:e,setName:n}));return this}buildName(e,n){return n?`${n}:name`:e}buildEvent(e,n){return new CustomEvent(e,{bubbles:true,composed:true,detail:n})}}const c=s.getInstance();export{i as C,e as a,r as b,n as c,c as d,s as e,o as l};
2
- //# sourceMappingURL=p-5362e648.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../node_modules/loglevel/lib/loglevel.js","src/components/cat-i18n/cat-i18n-registry.ts","src/components/cat-icon/cat-icon-registry.ts"],"names":["root","definition","module","exports","log","this","noop","undefinedType","isIE","window","navigator","test","userAgent","logMethods","bindMethod","obj","methodName","method","bind","Function","prototype","call","e","apply","arguments","traceForIE","console","trace","realMethod","undefined","replaceLoggingMethods","level","loggerName","i","length","methodFactory","debug","enableLoggingWhenConsoleArrives","defaultMethodFactory","Logger","name","defaultLevel","factory","self","currentLevel","storageKey","persistLevelIfPossible","levelNum","levelName","toUpperCase","localStorage","ignore","document","cookie","encodeURIComponent","getPersistedLevel","storedLevel","location","indexOf","exec","slice","levels","clearPersistedLevel","removeItem","TRACE","DEBUG","INFO","WARN","ERROR","SILENT","getLevel","setLevel","persist","setDefaultLevel","resetLevel","enableAll","disableAll","initialLevel","defaultLogger","_loggersByName","getLogger","TypeError","logger","_log","noConflict","getLoggers","CatI18nRegistry","[object Object]","i18n","Map","instance","Object","entries","forEach","key","message","set","info","dispatchEvent","buildEvent","messages","clear","params","get","error","replace","_match","_a","detail","CustomEvent","bubbles","composed","catI18nRegistry","getInstance","CatIconRegistry","icons","id","Math","random","toString","substring","setName","icon","buildName","data","keys","concat","names","delete","catIconRegistry"],"mappings":"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","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 i18n: Map<string, string> = new Map();\n\n private constructor() {\n // hide constructor\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 }): void {\n Object.entries(i18n).forEach(([key, message]) => this.i18n.set(key, message));\n log.info(`[CatI18nRegistry] Registered messages`, i18n);\n window.dispatchEvent(this.buildEvent('cat-i18n-set', { messages: i18n }));\n }\n\n clear(): void {\n this.i18n.clear();\n log.info(`[CatI18nRegistry] Cleared messages`);\n 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 icons: Map<string, string> = new Map();\n\n readonly id: string;\n\n private constructor() {\n this.id = (Math.random() + 1).toString(36).substring(2);\n console.log('CatIconRegistry created', this.id);\n // hide constructor\n }\n\n static getInstance(): CatIconRegistry {\n if (!CatIconRegistry.instance) {\n CatIconRegistry.instance = new CatIconRegistry();\n }\n console.log('getInstance', CatIconRegistry.instance);\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 addIcon(name: string, data: string, setName?: string): CatIconRegistry {\n this.icons.set(this.buildName(name, setName), data);\n log.info(`[CatIconRegistry] Added icon${setName ? ` to set ${setName}` : ''}: ${name}`);\n window.dispatchEvent(this.buildEvent('cat-icon-added', { name, setName }));\n return this;\n }\n\n addIcons(icons: { [name: string]: string }, setName?: string): CatIconRegistry {\n console.log('addIcons', setName, icons);\n Object.entries(icons).forEach(([name, data]) => this.icons.set(this.buildName(name, setName), data));\n log.info(`[CatIconRegistry] Added icons${setName ? ` to set ${setName}` : ''}: ${Object.keys(icons).concat(', ')}`);\n window.dispatchEvent(this.buildEvent('cat-icons-added', { names: Object.keys(icons), setName }));\n return this;\n }\n\n removeIcon(name: string, setName?: string): CatIconRegistry {\n this.icons.delete(this.buildName(name, setName));\n log.info(`[CatIconRegistry] Removed icon${setName ? ` from set ${setName}` : ''}: ${name}`);\n window.dispatchEvent(this.buildEvent('cat-icon-removed', { name, setName }));\n return this;\n }\n\n removeIcons(names: string[], setName?: string): CatIconRegistry {\n names.forEach(name => this.icons.delete(this.buildName(name, setName)));\n log.info(`[CatIconRegistry] Removed icons${setName ? ` from set ${setName}` : ''}: ${names.concat(', ')}`);\n window.dispatchEvent(this.buildEvent('cat-icons-removed', { 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"]}