@cratis/scene.engine 4.3.0 → 4.5.0

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 (141) hide show
  1. package/dist/cjs/editing/collectIconUsages.js +86 -0
  2. package/dist/cjs/editing/collectIconUsages.js.map +1 -0
  3. package/dist/cjs/editing/diagnoseIcons.js +67 -0
  4. package/dist/cjs/editing/diagnoseIcons.js.map +1 -0
  5. package/dist/cjs/editing/iconDiagnostics.js +103 -0
  6. package/dist/cjs/editing/iconDiagnostics.js.map +1 -0
  7. package/dist/cjs/editing/inspect.js +28 -1
  8. package/dist/cjs/editing/inspect.js.map +1 -1
  9. package/dist/cjs/editing/instanceEdits.js +15 -3
  10. package/dist/cjs/editing/instanceEdits.js.map +1 -1
  11. package/dist/cjs/editing/propertyEdits.js +7 -0
  12. package/dist/cjs/editing/propertyEdits.js.map +1 -1
  13. package/dist/cjs/icons/EffectiveIconCatalog.js +212 -0
  14. package/dist/cjs/icons/EffectiveIconCatalog.js.map +1 -0
  15. package/dist/cjs/icons/EffectiveIconEntry.js +22 -0
  16. package/dist/cjs/icons/EffectiveIconEntry.js.map +1 -0
  17. package/dist/cjs/icons/analyzeIconImpact.js +48 -0
  18. package/dist/cjs/icons/analyzeIconImpact.js.map +1 -0
  19. package/dist/cjs/icons/matchesIconQuery.js +22 -0
  20. package/dist/cjs/icons/matchesIconQuery.js.map +1 -0
  21. package/dist/cjs/icons/resolveIconLibraries.js +45 -0
  22. package/dist/cjs/icons/resolveIconLibraries.js.map +1 -0
  23. package/dist/cjs/index.js +16 -0
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/esm/editing/EditingContext.d.ts +2 -0
  26. package/dist/esm/editing/EditingContext.d.ts.map +1 -1
  27. package/dist/esm/editing/collectIconUsages.d.ts +5 -0
  28. package/dist/esm/editing/collectIconUsages.d.ts.map +1 -0
  29. package/dist/esm/editing/collectIconUsages.js +84 -0
  30. package/dist/esm/editing/collectIconUsages.js.map +1 -0
  31. package/dist/esm/editing/diagnoseIcons.d.ts +4 -0
  32. package/dist/esm/editing/diagnoseIcons.d.ts.map +1 -0
  33. package/dist/esm/editing/diagnoseIcons.js +65 -0
  34. package/dist/esm/editing/diagnoseIcons.js.map +1 -0
  35. package/dist/esm/editing/iconDiagnostics.d.ts +11 -0
  36. package/dist/esm/editing/iconDiagnostics.d.ts.map +1 -0
  37. package/dist/esm/editing/iconDiagnostics.js +99 -0
  38. package/dist/esm/editing/iconDiagnostics.js.map +1 -0
  39. package/dist/esm/editing/index.d.ts +3 -0
  40. package/dist/esm/editing/index.d.ts.map +1 -1
  41. package/dist/esm/editing/index.js +3 -0
  42. package/dist/esm/editing/index.js.map +1 -1
  43. package/dist/esm/editing/inspect.d.ts.map +1 -1
  44. package/dist/esm/editing/inspect.js +29 -2
  45. package/dist/esm/editing/inspect.js.map +1 -1
  46. package/dist/esm/editing/instanceEdits.d.ts.map +1 -1
  47. package/dist/esm/editing/instanceEdits.js +17 -5
  48. package/dist/esm/editing/instanceEdits.js.map +1 -1
  49. package/dist/esm/editing/propertyEdits.d.ts.map +1 -1
  50. package/dist/esm/editing/propertyEdits.js +9 -2
  51. package/dist/esm/editing/propertyEdits.js.map +1 -1
  52. package/dist/esm/icons/EffectiveIconCatalog.d.ts +25 -0
  53. package/dist/esm/icons/EffectiveIconCatalog.d.ts.map +1 -0
  54. package/dist/esm/icons/EffectiveIconCatalog.js +210 -0
  55. package/dist/esm/icons/EffectiveIconCatalog.js.map +1 -0
  56. package/dist/esm/icons/EffectiveIconEntry.d.ts +9 -0
  57. package/dist/esm/icons/EffectiveIconEntry.d.ts.map +1 -0
  58. package/dist/esm/icons/EffectiveIconEntry.js +20 -0
  59. package/dist/esm/icons/EffectiveIconEntry.js.map +1 -0
  60. package/dist/esm/icons/IconCatalogSource.d.ts +6 -0
  61. package/dist/esm/icons/IconCatalogSource.d.ts.map +1 -0
  62. package/dist/esm/icons/IconCatalogSource.js +2 -0
  63. package/dist/esm/icons/IconCatalogSource.js.map +1 -0
  64. package/dist/esm/icons/IconDiagnostic.d.ts +9 -0
  65. package/dist/esm/icons/IconDiagnostic.d.ts.map +1 -0
  66. package/dist/esm/icons/IconDiagnostic.js +2 -0
  67. package/dist/esm/icons/IconDiagnostic.js.map +1 -0
  68. package/dist/esm/icons/IconImpactReport.d.ts +18 -0
  69. package/dist/esm/icons/IconImpactReport.d.ts.map +1 -0
  70. package/dist/esm/icons/IconImpactReport.js +2 -0
  71. package/dist/esm/icons/IconImpactReport.js.map +1 -0
  72. package/dist/esm/icons/IconLibraryResolution.d.ts +7 -0
  73. package/dist/esm/icons/IconLibraryResolution.d.ts.map +1 -0
  74. package/dist/esm/icons/IconLibraryResolution.js +2 -0
  75. package/dist/esm/icons/IconLibraryResolution.js.map +1 -0
  76. package/dist/esm/icons/IconQuery.d.ts +7 -0
  77. package/dist/esm/icons/IconQuery.d.ts.map +1 -0
  78. package/dist/esm/icons/IconQuery.js +2 -0
  79. package/dist/esm/icons/IconQuery.js.map +1 -0
  80. package/dist/esm/icons/IconResolution.d.ts +14 -0
  81. package/dist/esm/icons/IconResolution.d.ts.map +1 -0
  82. package/dist/esm/icons/IconResolution.js +2 -0
  83. package/dist/esm/icons/IconResolution.js.map +1 -0
  84. package/dist/esm/icons/IconSearchResult.d.ts +7 -0
  85. package/dist/esm/icons/IconSearchResult.d.ts.map +1 -0
  86. package/dist/esm/icons/IconSearchResult.js +2 -0
  87. package/dist/esm/icons/IconSearchResult.js.map +1 -0
  88. package/dist/esm/icons/IconUsage.d.ts +6 -0
  89. package/dist/esm/icons/IconUsage.d.ts.map +1 -0
  90. package/dist/esm/icons/IconUsage.js +2 -0
  91. package/dist/esm/icons/IconUsage.js.map +1 -0
  92. package/dist/esm/icons/ResolvedIconLibrary.d.ts +8 -0
  93. package/dist/esm/icons/ResolvedIconLibrary.d.ts.map +1 -0
  94. package/dist/esm/icons/ResolvedIconLibrary.js +2 -0
  95. package/dist/esm/icons/ResolvedIconLibrary.js.map +1 -0
  96. package/dist/esm/icons/analyzeIconImpact.d.ts +5 -0
  97. package/dist/esm/icons/analyzeIconImpact.d.ts.map +1 -0
  98. package/dist/esm/icons/analyzeIconImpact.js +46 -0
  99. package/dist/esm/icons/analyzeIconImpact.js.map +1 -0
  100. package/dist/esm/icons/index.d.ts +14 -0
  101. package/dist/esm/icons/index.d.ts.map +1 -0
  102. package/dist/esm/icons/index.js +14 -0
  103. package/dist/esm/icons/index.js.map +1 -0
  104. package/dist/esm/icons/matchesIconQuery.d.ts +4 -0
  105. package/dist/esm/icons/matchesIconQuery.d.ts.map +1 -0
  106. package/dist/esm/icons/matchesIconQuery.js +20 -0
  107. package/dist/esm/icons/matchesIconQuery.js.map +1 -0
  108. package/dist/esm/icons/resolveIconLibraries.d.ts +4 -0
  109. package/dist/esm/icons/resolveIconLibraries.d.ts.map +1 -0
  110. package/dist/esm/icons/resolveIconLibraries.js +43 -0
  111. package/dist/esm/icons/resolveIconLibraries.js.map +1 -0
  112. package/dist/esm/index.d.ts +1 -0
  113. package/dist/esm/index.d.ts.map +1 -1
  114. package/dist/esm/index.js +7 -0
  115. package/dist/esm/index.js.map +1 -1
  116. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  117. package/editing/EditingContext.ts +11 -0
  118. package/editing/collectIconUsages.ts +78 -0
  119. package/editing/diagnoseIcons.ts +60 -0
  120. package/editing/iconDiagnostics.ts +90 -0
  121. package/editing/index.ts +3 -0
  122. package/editing/inspect.ts +25 -2
  123. package/editing/instanceEdits.ts +13 -5
  124. package/editing/propertyEdits.ts +10 -2
  125. package/icons/EffectiveIconCatalog.ts +199 -0
  126. package/icons/EffectiveIconEntry.ts +36 -0
  127. package/icons/IconCatalogSource.ts +23 -0
  128. package/icons/IconDiagnostic.ts +45 -0
  129. package/icons/IconImpactReport.ts +63 -0
  130. package/icons/IconLibraryResolution.ts +22 -0
  131. package/icons/IconQuery.ts +27 -0
  132. package/icons/IconResolution.ts +25 -0
  133. package/icons/IconSearchResult.ts +21 -0
  134. package/icons/IconUsage.ts +21 -0
  135. package/icons/ResolvedIconLibrary.ts +32 -0
  136. package/icons/analyzeIconImpact.ts +41 -0
  137. package/icons/index.ts +16 -0
  138. package/icons/matchesIconQuery.ts +19 -0
  139. package/icons/resolveIconLibraries.ts +47 -0
  140. package/index.ts +1 -0
  141. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectiveIconCatalog.js","sources":["../../../icons/EffectiveIconCatalog.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { IconEntry, IconReference, formatIconReference } from '@cratis/scene.model';\nimport { EffectiveIconEntry, referencesOfEntry } from './EffectiveIconEntry';\nimport { IconCatalogSource } from './IconCatalogSource';\nimport { IconDiagnostic } from './IconDiagnostic';\nimport { IconLibraryResolution } from './IconLibraryResolution';\nimport { IconQuery } from './IconQuery';\nimport { IconResolution } from './IconResolution';\nimport { IconSearchResult } from './IconSearchResult';\nimport { ResolvedIconLibrary } from './ResolvedIconLibrary';\nimport { matchesIconQuery } from './matchesIconQuery';\n\n/**\n * The icons a profile can actually use: the active libraries from {@link resolveIconLibraries}, with their\n * catalogs loaded on demand.\n *\n * Opening it costs nothing - no catalog is read until a query or a lookup needs that library, and a\n * query narrowed to one library reads only that one. A catalog is loaded once and kept; a load that\n * fails is not kept, so the next call tries again. Everything that goes wrong is reported as an\n * {@link IconDiagnostic}; nothing is ever answered with a different icon than the one asked for.\n */\nexport class EffectiveIconCatalog {\n readonly #sources: Map<string, IconCatalogSource>;\n readonly #loads = new Map<string, Promise<IconEntry[]>>();\n readonly #loadedEntries = new Map<string, IconEntry[]>();\n\n /**\n * @param resolution The active libraries and the problems found with them.\n * @param sources The catalog source of each library; a library with none is active but reports\n * 'catalog-unavailable' when its icons are needed.\n */\n constructor(readonly resolution: IconLibraryResolution, sources: IconCatalogSource[]) {\n this.#sources = new Map(sources.map((source) => [source.library, source]));\n }\n\n /**\n * The active libraries, with provenance.\n */\n get libraries(): ResolvedIconLibrary[] {\n return this.resolution.libraries;\n }\n\n /**\n * Problems with the libraries themselves, known without loading any catalog.\n */\n get diagnostics(): IconDiagnostic[] {\n return this.resolution.diagnostics;\n }\n\n /**\n * Whether a library's catalog has been read yet.\n */\n isLoaded(library: string): boolean {\n return this.#loadedEntries.has(library);\n }\n\n /**\n * The entries of one library, loading its catalog if this is the first time it is needed.\n * Resolves to `undefined` when the library is not active.\n *\n * @throws Whatever the library's source throws, or an Error when an active library has no source.\n */\n async entriesOf(library: string): Promise<IconEntry[] | undefined> {\n if (!this.libraries.some((resolved) => resolved.library === library)) return undefined;\n\n let load = this.#loads.get(library);\n if (!load) {\n const source = this.#sources.get(library);\n if (!source) throw new Error(`The icon library '${library}' is active but has no catalog source`);\n\n load = source.loadEntries();\n this.#loads.set(library, load);\n load.then(\n (entries) => this.#loadedEntries.set(library, entries),\n () => this.#loads.delete(library)\n );\n }\n\n return load;\n }\n\n /**\n * Searches the catalogs of the libraries the query covers - all of them, or the one it names.\n */\n async search(query: IconQuery = {}): Promise<IconSearchResult> {\n const covered = this.libraries.filter((resolved) => query.library === undefined || resolved.library === query.library);\n const outcomes = await Promise.all(covered.map(async (resolved) => this.#entriesOrDiagnostic(resolved)));\n\n const entries: EffectiveIconEntry[] = [];\n const diagnostics: IconDiagnostic[] = [];\n outcomes.forEach((outcome, position) => {\n const library = covered[position];\n if ('diagnostic' in outcome) {\n diagnostics.push(outcome.diagnostic);\n return;\n }\n\n for (const entry of outcome.entries.filter((candidate) => matchesIconQuery(candidate, query))) {\n entries.push({ library, entry, references: referencesOfEntry(library.library, entry) });\n }\n });\n\n return { entries, diagnostics };\n }\n\n /**\n * Every active library's icons whose name or key is exactly `name` (ignoring case) - the several\n * candidates a bare legacy icon name could have meant. More than one is a real answer, not a tie to\n * break: it is the author's decision which library the icon comes from.\n */\n async findByName(name: string): Promise<EffectiveIconEntry[]> {\n const wanted = name.trim().toLowerCase();\n const { entries } = await this.search({});\n return entries.filter(({ entry }) => entry.key.toLowerCase() === wanted || entry.name.toLowerCase() === wanted);\n }\n\n /**\n * The categories in use, sorted, across all libraries or one.\n */\n async categories(library?: string): Promise<string[]> {\n const { entries } = await this.search({ library });\n return [...new Set(entries.flatMap(({ entry }) => entry.categories))].sort();\n }\n\n /**\n * Looks a reference up: the icon it names, or exactly why there is none.\n */\n async resolve(reference: IconReference): Promise<IconResolution> {\n const library = this.libraries.find((resolved) => resolved.library === reference.library);\n if (library && !this.isLoaded(library.library) && !this.#incompatibility(library)) {\n const outcome = await this.#entriesOrDiagnostic(library);\n if ('diagnostic' in outcome) return { isResolved: false, reference, diagnostic: { ...outcome.diagnostic, reference } };\n }\n\n return this.lookup(reference) as IconResolution;\n }\n\n /**\n * Looks a reference up without loading anything, for callers that cannot wait - an edit is applied\n * synchronously. Resolves everything that is decidable from what is already known: a library that is not\n * active, one at an incompatible version, and - once the library's catalog has been loaded - a missing\n * icon or variant.\n *\n * @returns The resolution, or `undefined` when the library is active but its catalog has not been loaded,\n * so nothing can be said about the icon yet. Call {@link load} first to make the answer definite.\n */\n lookup(reference: IconReference): IconResolution | undefined {\n const library = this.libraries.find((resolved) => resolved.library === reference.library);\n if (!library) {\n return this.#unresolved(reference, 'missing-library', `The icon library '${reference.library}' is not active in this profile`);\n }\n\n const incompatible = this.#incompatibility(library);\n if (incompatible) return { isResolved: false, reference, diagnostic: { ...incompatible, reference } };\n\n const entries = this.#loadedEntries.get(library.library);\n if (!entries) return undefined;\n\n const entry = entries.find((candidate) => candidate.key === reference.key);\n if (!entry) {\n return this.#unresolved(reference, 'missing-icon', `The icon library '${library.library}' has no icon '${reference.key}'`);\n }\n\n if (reference.variant !== undefined && !(entry.variants ?? []).includes(reference.variant)) {\n return this.#unresolved(reference, 'missing-variant', `The icon '${formatIconReference({ library: library.library, key: entry.key })}' has no '${reference.variant}' variant`);\n }\n\n return { isResolved: true, reference, library, entry };\n }\n\n /**\n * Loads the catalogs of one library, or of every active library, so that {@link lookup} can answer\n * definitely. Libraries whose catalog cannot be loaded are reported, not thrown.\n */\n async load(library?: string): Promise<IconDiagnostic[]> {\n const covered = this.libraries.filter((resolved) => library === undefined || resolved.library === library);\n const outcomes = await Promise.all(covered.map(async (resolved) => this.#entriesOrDiagnostic(resolved)));\n return outcomes.flatMap((outcome) => ('diagnostic' in outcome ? [outcome.diagnostic] : []));\n }\n\n #incompatibility(library: ResolvedIconLibrary): IconDiagnostic | undefined {\n return this.diagnostics.find((diagnostic) => diagnostic.kind === 'incompatible-version' && diagnostic.library === library.library);\n }\n\n async #entriesOrDiagnostic(library: ResolvedIconLibrary): Promise<{ entries: IconEntry[] } | { diagnostic: IconDiagnostic }> {\n try {\n return { entries: (await this.entriesOf(library.library)) ?? [] };\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n return { diagnostic: { kind: 'catalog-unavailable', library: library.library, message: `The catalog of '${library.library}' could not be loaded: ${reason}` } };\n }\n }\n\n #unresolved(reference: IconReference, kind: IconDiagnostic['kind'], message: string): IconResolution & { isResolved: false } {\n return { isResolved: false, reference, diagnostic: { kind, library: reference.library, message, reference } };\n }\n}\n"],"names":["EffectiveIconCatalog","Map","resolution","sources","map","source","library","libraries","diagnostics","isLoaded","has","entriesOf","some","resolved","undefined","load","get","Error","loadEntries","set","then","entries","delete","search","query","covered","filter","outcomes","Promise","all","forEach","outcome","position","push","diagnostic","entry","candidate","matchesIconQuery","references","referencesOfEntry","findByName","name","wanted","trim","toLowerCase","key","categories","Set","flatMap","sort","resolve","reference","find","isResolved","lookup","incompatible","variant","variants","includes","formatIconReference","kind","error","reason","message","String"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { IconEntry, IconReference } from '@cratis/scene.model';
2
+ import { ResolvedIconLibrary } from './ResolvedIconLibrary';
3
+ export interface EffectiveIconEntry {
4
+ library: ResolvedIconLibrary;
5
+ entry: IconEntry;
6
+ references: IconReference[];
7
+ }
8
+ export declare function referencesOfEntry(library: string, entry: IconEntry): IconReference[];
9
+ //# sourceMappingURL=EffectiveIconEntry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectiveIconEntry.d.ts","sourceRoot":"","sources":["../../../icons/EffectiveIconEntry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,MAAM,WAAW,kBAAkB;IAI/B,OAAO,EAAE,mBAAmB,CAAC;IAK7B,KAAK,EAAE,SAAS,CAAC;IAKjB,UAAU,EAAE,aAAa,EAAE,CAAC;CAC/B;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,aAAa,EAAE,CAKpF"}
@@ -0,0 +1,20 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * The references that name an entry of a library: one per variant, or one without a variant.
5
+ */ function referencesOfEntry(library, entry) {
6
+ const variants = entry.variants ?? [];
7
+ return variants.length === 0 ? [
8
+ {
9
+ library,
10
+ key: entry.key
11
+ }
12
+ ] : variants.map((variant)=>({
13
+ library,
14
+ key: entry.key,
15
+ variant
16
+ }));
17
+ }
18
+
19
+ export { referencesOfEntry };
20
+ //# sourceMappingURL=EffectiveIconEntry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EffectiveIconEntry.js","sources":["../../../icons/EffectiveIconEntry.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { IconEntry, IconReference } from '@cratis/scene.model';\nimport { ResolvedIconLibrary } from './ResolvedIconLibrary';\n\n/**\n * An icon as a picker shows it: the catalog entry, the library that provides it (so provenance and\n * attribution are one step away), and the references that name it.\n */\nexport interface EffectiveIconEntry {\n /**\n * The active library that provides the icon.\n */\n library: ResolvedIconLibrary;\n\n /**\n * The catalog entry.\n */\n entry: IconEntry;\n\n /**\n * One reference per variant the icon exists in, or the single variant-less reference when it has none.\n */\n references: IconReference[];\n}\n\n/**\n * The references that name an entry of a library: one per variant, or one without a variant.\n */\nexport function referencesOfEntry(library: string, entry: IconEntry): IconReference[] {\n const variants = entry.variants ?? [];\n return variants.length === 0\n ? [{ library, key: entry.key }]\n : variants.map((variant) => ({ library, key: entry.key, variant }));\n}\n"],"names":["referencesOfEntry","library","entry","variants","length","key","map","variant"],"mappings":"AAAA;AACA;AA0BA;;AAEC,IACM,SAASA,iBAAAA,CAAkBC,OAAe,EAAEC,KAAgB,EAAA;AAC/D,IAAA,MAAMC,QAAAA,GAAWD,KAAAA,CAAMC,QAAQ,IAAI,EAAE;IACrC,OAAOA,QAAAA,CAASC,MAAM,KAAK,CAAA,GACrB;AAAC,QAAA;AAAEH,YAAAA,OAAAA;AAASI,YAAAA,GAAAA,EAAKH,MAAMG;AAAI;AAAE,KAAA,GAC7BF,QAAAA,CAASG,GAAG,CAAC,CAACC,WAAa;AAAEN,YAAAA,OAAAA;AAASI,YAAAA,GAAAA,EAAKH,MAAMG,GAAG;AAAEE,YAAAA;SAAQ,CAAA,CAAA;AACxE;;"}
@@ -0,0 +1,6 @@
1
+ import { IconEntry } from '@cratis/scene.model';
2
+ export interface IconCatalogSource {
3
+ library: string;
4
+ loadEntries(): Promise<IconEntry[]>;
5
+ }
6
+ //# sourceMappingURL=IconCatalogSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconCatalogSource.d.ts","sourceRoot":"","sources":["../../../icons/IconCatalogSource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAShD,MAAM,WAAW,iBAAiB;IAI9B,OAAO,EAAE,MAAM,CAAC;IAKhB,WAAW,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CACvC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconCatalogSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconCatalogSource.js","sourceRoot":"","sources":["../../../icons/IconCatalogSource.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { IconReference } from '@cratis/scene.model';
2
+ export type IconDiagnosticKind = 'missing-library' | 'missing-icon' | 'missing-variant' | 'incompatible-version' | 'catalog-unavailable';
3
+ export interface IconDiagnostic {
4
+ kind: IconDiagnosticKind;
5
+ library: string;
6
+ message: string;
7
+ reference?: IconReference;
8
+ }
9
+ //# sourceMappingURL=IconDiagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconDiagnostic.d.ts","sourceRoot":"","sources":["../../../icons/IconDiagnostic.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,MAAM,MAAM,kBAAkB,GAExB,iBAAiB,GAEjB,cAAc,GAEd,iBAAiB,GAEjB,sBAAsB,GAEtB,qBAAqB,CAAC;AAK5B,MAAM,WAAW,cAAc;IAI3B,IAAI,EAAE,kBAAkB,CAAC;IAKzB,OAAO,EAAE,MAAM,CAAC;IAKhB,OAAO,EAAE,MAAM,CAAC;IAKhB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconDiagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconDiagnostic.js","sourceRoot":"","sources":["../../../icons/IconDiagnostic.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { EffectiveIconEntry } from './EffectiveIconEntry';
2
+ import { IconDiagnostic } from './IconDiagnostic';
3
+ import { IconUsage } from './IconUsage';
4
+ export interface AffectedIconUsage {
5
+ usage: IconUsage;
6
+ diagnostic: IconDiagnostic;
7
+ wasResolvable: boolean;
8
+ }
9
+ export interface LegacyIconUsage {
10
+ usage: IconUsage;
11
+ candidates: EffectiveIconEntry[];
12
+ }
13
+ export interface IconImpactReport {
14
+ affected: AffectedIconUsage[];
15
+ unaffectedCount: number;
16
+ legacy: LegacyIconUsage[];
17
+ }
18
+ //# sourceMappingURL=IconImpactReport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconImpactReport.d.ts","sourceRoot":"","sources":["../../../icons/IconImpactReport.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC,MAAM,WAAW,iBAAiB;IAI9B,KAAK,EAAE,SAAS,CAAC;IAKjB,UAAU,EAAE,cAAc,CAAC;IAM3B,aAAa,EAAE,OAAO,CAAC;CAC1B;AAKD,MAAM,WAAW,eAAe;IAI5B,KAAK,EAAE,SAAS,CAAC;IAMjB,UAAU,EAAE,kBAAkB,EAAE,CAAC;CACpC;AAKD,MAAM,WAAW,gBAAgB;IAI7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAK9B,eAAe,EAAE,MAAM,CAAC;IAKxB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconImpactReport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconImpactReport.js","sourceRoot":"","sources":["../../../icons/IconImpactReport.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { IconDiagnostic } from './IconDiagnostic';
2
+ import { ResolvedIconLibrary } from './ResolvedIconLibrary';
3
+ export interface IconLibraryResolution {
4
+ libraries: ResolvedIconLibrary[];
5
+ diagnostics: IconDiagnostic[];
6
+ }
7
+ //# sourceMappingURL=IconLibraryResolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconLibraryResolution.d.ts","sourceRoot":"","sources":["../../../icons/IconLibraryResolution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,qBAAqB;IAMlC,SAAS,EAAE,mBAAmB,EAAE,CAAC;IAKjC,WAAW,EAAE,cAAc,EAAE,CAAC;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconLibraryResolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconLibraryResolution.js","sourceRoot":"","sources":["../../../icons/IconLibraryResolution.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export interface IconQuery {
2
+ text?: string;
3
+ library?: string;
4
+ category?: string;
5
+ variant?: string;
6
+ }
7
+ //# sourceMappingURL=IconQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconQuery.d.ts","sourceRoot":"","sources":["../../../icons/IconQuery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,SAAS;IAItB,IAAI,CAAC,EAAE,MAAM,CAAC;IAKd,OAAO,CAAC,EAAE,MAAM,CAAC;IAKjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAKlB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconQuery.js","sourceRoot":"","sources":["../../../icons/IconQuery.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ import { IconEntry, IconReference } from '@cratis/scene.model';
2
+ import { IconDiagnostic } from './IconDiagnostic';
3
+ import { ResolvedIconLibrary } from './ResolvedIconLibrary';
4
+ export type IconResolution = {
5
+ isResolved: true;
6
+ reference: IconReference;
7
+ library: ResolvedIconLibrary;
8
+ entry: IconEntry;
9
+ } | {
10
+ isResolved: false;
11
+ reference: IconReference;
12
+ diagnostic: IconDiagnostic;
13
+ };
14
+ //# sourceMappingURL=IconResolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconResolution.d.ts","sourceRoot":"","sources":["../../../icons/IconResolution.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAM5D,MAAM,MAAM,cAAc,GACpB;IAEI,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;CACpB,GACD;IAEI,UAAU,EAAE,KAAK,CAAC;IAClB,SAAS,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconResolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconResolution.js","sourceRoot":"","sources":["../../../icons/IconResolution.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { EffectiveIconEntry } from './EffectiveIconEntry';
2
+ import { IconDiagnostic } from './IconDiagnostic';
3
+ export interface IconSearchResult {
4
+ entries: EffectiveIconEntry[];
5
+ diagnostics: IconDiagnostic[];
6
+ }
7
+ //# sourceMappingURL=IconSearchResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconSearchResult.d.ts","sourceRoot":"","sources":["../../../icons/IconSearchResult.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKlD,MAAM,WAAW,gBAAgB;IAI7B,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAM9B,WAAW,EAAE,cAAc,EAAE,CAAC;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconSearchResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconSearchResult.js","sourceRoot":"","sources":["../../../icons/IconSearchResult.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IconReference } from '@cratis/scene.model';
2
+ export interface IconUsage {
3
+ value: IconReference | string;
4
+ location?: string;
5
+ }
6
+ //# sourceMappingURL=IconUsage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconUsage.d.ts","sourceRoot":"","sources":["../../../icons/IconUsage.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKpD,MAAM,WAAW,SAAS;IAKtB,KAAK,EAAE,aAAa,GAAG,MAAM,CAAC;IAM9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IconUsage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconUsage.js","sourceRoot":"","sources":["../../../icons/IconUsage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { ScenePackage } from '@cratis/scene.model';
2
+ export interface ResolvedIconLibrary {
3
+ library: string;
4
+ package: ScenePackage;
5
+ isSelected: boolean;
6
+ requiredBy: string[];
7
+ }
8
+ //# sourceMappingURL=ResolvedIconLibrary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvedIconLibrary.d.ts","sourceRoot":"","sources":["../../../icons/ResolvedIconLibrary.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKnD,MAAM,WAAW,mBAAmB;IAIhC,OAAO,EAAE,MAAM,CAAC;IAKhB,OAAO,EAAE,YAAY,CAAC;IAMtB,UAAU,EAAE,OAAO,CAAC;IAOpB,UAAU,EAAE,MAAM,EAAE,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ResolvedIconLibrary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolvedIconLibrary.js","sourceRoot":"","sources":["../../../icons/ResolvedIconLibrary.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { IconImpactReport } from './IconImpactReport';
2
+ import { EffectiveIconCatalog } from './EffectiveIconCatalog';
3
+ import { IconUsage } from './IconUsage';
4
+ export declare function analyzeIconImpact(usages: IconUsage[], current: EffectiveIconCatalog, proposed: EffectiveIconCatalog): Promise<IconImpactReport>;
5
+ //# sourceMappingURL=analyzeIconImpact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeIconImpact.d.ts","sourceRoot":"","sources":["../../../icons/analyzeIconImpact.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,gBAAgB,EAAmB,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAYxC,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsBrJ"}
@@ -0,0 +1,46 @@
1
+ import { isIconReference } from '@cratis/scene.model';
2
+
3
+ // Copyright (c) Cratis. All rights reserved.
4
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
5
+ /**
6
+ * Reports what changing a profile's icon libraries - removing one, upgrading one to a version that dropped
7
+ * icons, swapping one - would do to icon values already persisted, without touching them.
8
+ *
9
+ * Build `proposed` from the packages the profile would have after the change (with
10
+ * {@link resolveIconLibraries} and that package set's catalog sources) and compare it with the `current`
11
+ * one. A reference is *affected* when it does not resolve in `proposed`; `wasResolvable` says whether it did in
12
+ * `current`. Legacy bare strings are listed with the icons in `proposed` that share their name, but are never
13
+ * counted as affected and never rewritten - migrating them is an author's decision, one reference at a time.
14
+ */ async function analyzeIconImpact(usages, current, proposed) {
15
+ const affected = [];
16
+ const legacy = [];
17
+ let unaffectedCount = 0;
18
+ for (const usage of usages){
19
+ if (!isIconReference(usage.value)) {
20
+ legacy.push({
21
+ usage,
22
+ candidates: await proposed.findByName(String(usage.value))
23
+ });
24
+ continue;
25
+ }
26
+ const after = await proposed.resolve(usage.value);
27
+ if (after.isResolved) {
28
+ unaffectedCount++;
29
+ continue;
30
+ }
31
+ const before = await current.resolve(usage.value);
32
+ affected.push({
33
+ usage,
34
+ diagnostic: after.diagnostic,
35
+ wasResolvable: before.isResolved
36
+ });
37
+ }
38
+ return {
39
+ affected,
40
+ unaffectedCount,
41
+ legacy
42
+ };
43
+ }
44
+
45
+ export { analyzeIconImpact };
46
+ //# sourceMappingURL=analyzeIconImpact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyzeIconImpact.js","sources":["../../../icons/analyzeIconImpact.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { isIconReference } from '@cratis/scene.model';\nimport { AffectedIconUsage, IconImpactReport, LegacyIconUsage } from './IconImpactReport';\nimport { EffectiveIconCatalog } from './EffectiveIconCatalog';\nimport { IconUsage } from './IconUsage';\n\n/**\n * Reports what changing a profile's icon libraries - removing one, upgrading one to a version that dropped\n * icons, swapping one - would do to icon values already persisted, without touching them.\n *\n * Build `proposed` from the packages the profile would have after the change (with\n * {@link resolveIconLibraries} and that package set's catalog sources) and compare it with the `current`\n * one. A reference is *affected* when it does not resolve in `proposed`; `wasResolvable` says whether it did in\n * `current`. Legacy bare strings are listed with the icons in `proposed` that share their name, but are never\n * counted as affected and never rewritten - migrating them is an author's decision, one reference at a time.\n */\nexport async function analyzeIconImpact(usages: IconUsage[], current: EffectiveIconCatalog, proposed: EffectiveIconCatalog): Promise<IconImpactReport> {\n const affected: AffectedIconUsage[] = [];\n const legacy: LegacyIconUsage[] = [];\n let unaffectedCount = 0;\n\n for (const usage of usages) {\n if (!isIconReference(usage.value)) {\n legacy.push({ usage, candidates: await proposed.findByName(String(usage.value)) });\n continue;\n }\n\n const after = await proposed.resolve(usage.value);\n if (after.isResolved) {\n unaffectedCount++;\n continue;\n }\n\n const before = await current.resolve(usage.value);\n affected.push({ usage, diagnostic: after.diagnostic, wasResolvable: before.isResolved });\n }\n\n return { affected, unaffectedCount, legacy };\n}\n"],"names":["analyzeIconImpact","usages","current","proposed","affected","legacy","unaffectedCount","usage","isIconReference","value","push","candidates","findByName","String","after","resolve","isResolved","before","diagnostic","wasResolvable"],"mappings":";;AAAA;AACA;AAOA;;;;;;;;;AASC,IACM,eAAeA,iBAAAA,CAAkBC,MAAmB,EAAEC,OAA6B,EAAEC,QAA8B,EAAA;AACtH,IAAA,MAAMC,WAAgC,EAAE;AACxC,IAAA,MAAMC,SAA4B,EAAE;AACpC,IAAA,IAAIC,eAAAA,GAAkB,CAAA;IAEtB,KAAK,MAAMC,SAASN,MAAAA,CAAQ;AACxB,QAAA,IAAI,CAACO,eAAAA,CAAgBD,KAAAA,CAAME,KAAK,CAAA,EAAG;AAC/BJ,YAAAA,MAAAA,CAAOK,IAAI,CAAC;AAAEH,gBAAAA,KAAAA;AAAOI,gBAAAA,UAAAA,EAAY,MAAMR,QAAAA,CAASS,UAAU,CAACC,MAAAA,CAAON,MAAME,KAAK,CAAA;AAAG,aAAA,CAAA;AAChF,YAAA;AACJ,QAAA;AAEA,QAAA,MAAMK,QAAQ,MAAMX,QAAAA,CAASY,OAAO,CAACR,MAAME,KAAK,CAAA;QAChD,IAAIK,KAAAA,CAAME,UAAU,EAAE;AAClBV,YAAAA,eAAAA,EAAAA;AACA,YAAA;AACJ,QAAA;AAEA,QAAA,MAAMW,SAAS,MAAMf,OAAAA,CAAQa,OAAO,CAACR,MAAME,KAAK,CAAA;AAChDL,QAAAA,QAAAA,CAASM,IAAI,CAAC;AAAEH,YAAAA,KAAAA;AAAOW,YAAAA,UAAAA,EAAYJ,MAAMI,UAAU;AAAEC,YAAAA,aAAAA,EAAeF,OAAOD;AAAW,SAAA,CAAA;AAC1F,IAAA;IAEA,OAAO;AAAEZ,QAAAA,QAAAA;AAAUE,QAAAA,eAAAA;AAAiBD,QAAAA;AAAO,KAAA;AAC/C;;"}
@@ -0,0 +1,14 @@
1
+ export * from './IconDiagnostic';
2
+ export * from './ResolvedIconLibrary';
3
+ export * from './IconLibraryResolution';
4
+ export * from './resolveIconLibraries';
5
+ export * from './IconCatalogSource';
6
+ export * from './EffectiveIconEntry';
7
+ export * from './IconQuery';
8
+ export * from './IconSearchResult';
9
+ export * from './IconResolution';
10
+ export * from './EffectiveIconCatalog';
11
+ export * from './IconUsage';
12
+ export * from './IconImpactReport';
13
+ export * from './analyzeIconImpact';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../icons/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export * from './IconDiagnostic';
2
+ export * from './ResolvedIconLibrary';
3
+ export * from './IconLibraryResolution';
4
+ export * from './resolveIconLibraries';
5
+ export * from './IconCatalogSource';
6
+ export * from './EffectiveIconEntry';
7
+ export * from './IconQuery';
8
+ export * from './IconSearchResult';
9
+ export * from './IconResolution';
10
+ export * from './EffectiveIconCatalog';
11
+ export * from './IconUsage';
12
+ export * from './IconImpactReport';
13
+ export * from './analyzeIconImpact';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../icons/index.ts"],"names":[],"mappings":"AAGA,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { IconEntry } from '@cratis/scene.model';
2
+ import { IconQuery } from './IconQuery';
3
+ export declare function matchesIconQuery(entry: IconEntry, query: IconQuery): boolean;
4
+ //# sourceMappingURL=matchesIconQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchesIconQuery.d.ts","sourceRoot":"","sources":["../../../icons/matchesIconQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAQ5E"}
@@ -0,0 +1,20 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ /**
4
+ * Whether a catalog entry satisfies the entry-level parts of a query - text, category and variant. The
5
+ * library part is decided earlier, because it decides which catalogs get loaded at all.
6
+ */ function matchesIconQuery(entry, query) {
7
+ if (query.category !== undefined && !entry.categories.includes(query.category)) return false;
8
+ if (query.variant !== undefined && !(entry.variants ?? []).includes(query.variant)) return false;
9
+ const text = query.text?.trim().toLowerCase();
10
+ if (!text) return true;
11
+ return [
12
+ entry.name,
13
+ entry.key,
14
+ ...entry.aliases ?? [],
15
+ ...entry.tags ?? []
16
+ ].some((term)=>term.toLowerCase().includes(text));
17
+ }
18
+
19
+ export { matchesIconQuery };
20
+ //# sourceMappingURL=matchesIconQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matchesIconQuery.js","sources":["../../../icons/matchesIconQuery.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { IconEntry } from '@cratis/scene.model';\nimport { IconQuery } from './IconQuery';\n\n/**\n * Whether a catalog entry satisfies the entry-level parts of a query - text, category and variant. The\n * library part is decided earlier, because it decides which catalogs get loaded at all.\n */\nexport function matchesIconQuery(entry: IconEntry, query: IconQuery): boolean {\n if (query.category !== undefined && !entry.categories.includes(query.category)) return false;\n if (query.variant !== undefined && !(entry.variants ?? []).includes(query.variant)) return false;\n\n const text = query.text?.trim().toLowerCase();\n if (!text) return true;\n\n return [entry.name, entry.key, ...(entry.aliases ?? []), ...(entry.tags ?? [])].some((term) => term.toLowerCase().includes(text));\n}\n"],"names":["matchesIconQuery","entry","query","category","undefined","categories","includes","variant","variants","text","trim","toLowerCase","name","key","aliases","tags","some","term"],"mappings":"AAAA;AACA;AAKA;;;AAGC,IACM,SAASA,gBAAAA,CAAiBC,KAAgB,EAAEC,KAAgB,EAAA;AAC/D,IAAA,IAAIA,KAAAA,CAAMC,QAAQ,KAAKC,SAAAA,IAAa,CAACH,KAAAA,CAAMI,UAAU,CAACC,QAAQ,CAACJ,KAAAA,CAAMC,QAAQ,GAAG,OAAO,KAAA;AACvF,IAAA,IAAID,MAAMK,OAAO,KAAKH,aAAa,CAAEH,CAAAA,KAAAA,CAAMO,QAAQ,IAAI,EAAE,EAAEF,QAAQ,CAACJ,KAAAA,CAAMK,OAAO,GAAG,OAAO,KAAA;AAE3F,IAAA,MAAME,IAAAA,GAAOP,KAAAA,CAAMO,IAAI,EAAEC,IAAAA,EAAAA,CAAOC,WAAAA,EAAAA;IAChC,IAAI,CAACF,MAAM,OAAO,IAAA;IAElB,OAAO;AAACR,QAAAA,KAAAA,CAAMW,IAAI;AAAEX,QAAAA,KAAAA,CAAMY,GAAG;WAAMZ,KAAAA,CAAMa,OAAO,IAAI,EAAE;WAAOb,KAAAA,CAAMc,IAAI,IAAI;KAAI,CAACC,IAAI,CAAC,CAACC,IAAAA,GAASA,KAAKN,WAAW,EAAA,CAAGL,QAAQ,CAACG,IAAAA,CAAAA,CAAAA;AAC/H;;"}
@@ -0,0 +1,4 @@
1
+ import { ScenePackage } from '@cratis/scene.model';
2
+ import { IconLibraryResolution } from './IconLibraryResolution';
3
+ export declare function resolveIconLibraries(selected: string[], catalog: ScenePackage[]): IconLibraryResolution;
4
+ //# sourceMappingURL=resolveIconLibraries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveIconLibraries.d.ts","sourceRoot":"","sources":["../../../icons/resolveIconLibraries.ts"],"names":[],"mappings":"AAGA,OAAO,EAAe,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAahE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,qBAAqB,CA2BvG"}
@@ -0,0 +1,43 @@
1
+ import { PackageKind } from '@cratis/scene.model';
2
+ import { resolvePackageDependencies } from '../resolvePackageDependencies.js';
3
+
4
+ // Copyright (c) Cratis. All rights reserved.
5
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
6
+ /**
7
+ * Finds the icon libraries a profile's packages make active - the ones it lists and the ones its other
8
+ * packages declare a dependency on - through the normal package resolver, so an icon library is
9
+ * selected, ordered and version-checked exactly as any other package is.
10
+ *
11
+ * Several libraries coexist. Nothing here ranks them: two libraries that both ship `home` stay two
12
+ * different icons, told apart by the library in their {@link IconReference}.
13
+ *
14
+ * @param selected The package names the profile lists.
15
+ * @param catalog Every package that could be selected.
16
+ */ function resolveIconLibraries(selected, catalog) {
17
+ const selection = resolvePackageDependencies(selected, catalog);
18
+ const index = new Map(catalog.map((scenePackage)=>[
19
+ scenePackage.name,
20
+ scenePackage
21
+ ]));
22
+ const chosen = new Set(selected);
23
+ const active = selection.packages.map((name)=>index.get(name)).filter((scenePackage)=>scenePackage !== undefined);
24
+ const libraries = active.filter((scenePackage)=>scenePackage.kind === PackageKind.IconLibrary).map((scenePackage)=>({
25
+ library: scenePackage.name,
26
+ package: scenePackage,
27
+ isSelected: chosen.has(scenePackage.name),
28
+ requiredBy: active.filter((other)=>other.dependencies.some((dependency)=>dependency.name === scenePackage.name)).map((other)=>other.name)
29
+ }));
30
+ const libraryNames = new Set(libraries.map((resolved)=>resolved.library));
31
+ const diagnostics = selection.versionConflicts.filter((conflict)=>libraryNames.has(conflict.dependsOn)).map((conflict)=>({
32
+ kind: 'incompatible-version',
33
+ library: conflict.dependsOn,
34
+ message: `'${conflict.package}' needs the icon library '${conflict.dependsOn}' at '${conflict.requiredRange}', but version ${conflict.actualVersion} is what is available`
35
+ }));
36
+ return {
37
+ libraries,
38
+ diagnostics
39
+ };
40
+ }
41
+
42
+ export { resolveIconLibraries };
43
+ //# sourceMappingURL=resolveIconLibraries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveIconLibraries.js","sources":["../../../icons/resolveIconLibraries.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { PackageKind, ScenePackage } from '@cratis/scene.model';\nimport { resolvePackageDependencies } from '../resolvePackageDependencies';\nimport { IconDiagnostic } from './IconDiagnostic';\nimport { IconLibraryResolution } from './IconLibraryResolution';\n\n/**\n * Finds the icon libraries a profile's packages make active - the ones it lists and the ones its other\n * packages declare a dependency on - through the normal package resolver, so an icon library is\n * selected, ordered and version-checked exactly as any other package is.\n *\n * Several libraries coexist. Nothing here ranks them: two libraries that both ship `home` stay two\n * different icons, told apart by the library in their {@link IconReference}.\n *\n * @param selected The package names the profile lists.\n * @param catalog Every package that could be selected.\n */\nexport function resolveIconLibraries(selected: string[], catalog: ScenePackage[]): IconLibraryResolution {\n const selection = resolvePackageDependencies(selected, catalog);\n const index = new Map(catalog.map((scenePackage) => [scenePackage.name, scenePackage]));\n const chosen = new Set(selected);\n const active = selection.packages.map((name) => index.get(name)).filter((scenePackage): scenePackage is ScenePackage => scenePackage !== undefined);\n\n const libraries = active\n .filter((scenePackage) => scenePackage.kind === PackageKind.IconLibrary)\n .map((scenePackage) => ({\n library: scenePackage.name,\n package: scenePackage,\n isSelected: chosen.has(scenePackage.name),\n requiredBy: active\n .filter((other) => other.dependencies.some((dependency) => dependency.name === scenePackage.name))\n .map((other) => other.name),\n }));\n\n const libraryNames = new Set(libraries.map((resolved) => resolved.library));\n const diagnostics: IconDiagnostic[] = selection.versionConflicts\n .filter((conflict) => libraryNames.has(conflict.dependsOn))\n .map((conflict) => ({\n kind: 'incompatible-version',\n library: conflict.dependsOn,\n message: `'${conflict.package}' needs the icon library '${conflict.dependsOn}' at '${conflict.requiredRange}', but version ${conflict.actualVersion} is what is available`,\n }));\n\n return { libraries, diagnostics };\n}\n"],"names":["resolveIconLibraries","selected","catalog","selection","resolvePackageDependencies","index","Map","map","scenePackage","name","chosen","Set","active","packages","get","filter","undefined","libraries","kind","PackageKind","IconLibrary","library","package","isSelected","has","requiredBy","other","dependencies","some","dependency","libraryNames","resolved","diagnostics","versionConflicts","conflict","dependsOn","message","requiredRange","actualVersion"],"mappings":";;;AAAA;AACA;AAOA;;;;;;;;;;AAUC,IACM,SAASA,oBAAAA,CAAqBC,QAAkB,EAAEC,OAAuB,EAAA;IAC5E,MAAMC,SAAAA,GAAYC,2BAA2BH,QAAAA,EAAUC,OAAAA,CAAAA;AACvD,IAAA,MAAMG,QAAQ,IAAIC,GAAAA,CAAIJ,QAAQK,GAAG,CAAC,CAACC,YAAAA,GAAiB;AAACA,YAAAA,YAAAA,CAAaC,IAAI;AAAED,YAAAA;AAAa,SAAA,CAAA,CAAA;IACrF,MAAME,MAAAA,GAAS,IAAIC,GAAAA,CAAIV,QAAAA,CAAAA;AACvB,IAAA,MAAMW,SAAST,SAAAA,CAAUU,QAAQ,CAACN,GAAG,CAAC,CAACE,IAAAA,GAASJ,KAAAA,CAAMS,GAAG,CAACL,IAAAA,CAAAA,CAAAA,CAAOM,MAAM,CAAC,CAACP,eAA+CA,YAAAA,KAAiBQ,SAAAA,CAAAA;AAEzI,IAAA,MAAMC,YAAYL,MAAAA,CACbG,MAAM,CAAC,CAACP,eAAiBA,YAAAA,CAAaU,IAAI,KAAKC,WAAAA,CAAYC,WAAW,CAAA,CACtEb,GAAG,CAAC,CAACC,gBAAkB;AACpBa,YAAAA,OAAAA,EAASb,aAAaC,IAAI;YAC1Ba,OAAAA,EAASd,YAAAA;AACTe,YAAAA,UAAAA,EAAYb,MAAAA,CAAOc,GAAG,CAAChB,YAAAA,CAAaC,IAAI,CAAA;YACxCgB,UAAAA,EAAYb,MAAAA,CACPG,MAAM,CAAC,CAACW,QAAUA,KAAAA,CAAMC,YAAY,CAACC,IAAI,CAAC,CAACC,aAAeA,UAAAA,CAAWpB,IAAI,KAAKD,YAAAA,CAAaC,IAAI,CAAA,CAAA,CAC/FF,GAAG,CAAC,CAACmB,KAAAA,GAAUA,KAAAA,CAAMjB,IAAI;SAClC,CAAA,CAAA;IAEJ,MAAMqB,YAAAA,GAAe,IAAInB,GAAAA,CAAIM,SAAAA,CAAUV,GAAG,CAAC,CAACwB,QAAAA,GAAaA,QAAAA,CAASV,OAAO,CAAA,CAAA;AACzE,IAAA,MAAMW,cAAgC7B,SAAAA,CAAU8B,gBAAgB,CAC3DlB,MAAM,CAAC,CAACmB,QAAAA,GAAaJ,YAAAA,CAAaN,GAAG,CAACU,SAASC,SAAS,CAAA,CAAA,CACxD5B,GAAG,CAAC,CAAC2B,YAAc;YAChBhB,IAAAA,EAAM,sBAAA;AACNG,YAAAA,OAAAA,EAASa,SAASC,SAAS;YAC3BC,OAAAA,EAAS,CAAC,CAAC,EAAEF,QAAAA,CAASZ,OAAO,CAAC,0BAA0B,EAAEY,QAAAA,CAASC,SAAS,CAAC,MAAM,EAAED,QAAAA,CAASG,aAAa,CAAC,eAAe,EAAEH,QAAAA,CAASI,aAAa,CAAC,qBAAqB;SAC7K,CAAA,CAAA;IAEJ,OAAO;AAAErB,QAAAA,SAAAA;AAAWe,QAAAA;AAAY,KAAA;AACpC;;"}
@@ -5,6 +5,7 @@ export * from './elementKind';
5
5
  export * from './panelKind';
6
6
  export * from './flowNodeKind';
7
7
  export * from './ComponentResolution';
8
+ export * from './icons';
8
9
  export * from './resolveComponentName';
9
10
  export * from './computeSizeClass';
10
11
  export * from './evaluateFlowArrangement';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC"}
package/dist/esm/index.js CHANGED
@@ -2,6 +2,10 @@ export { renderElement } from './renderElement.js';
2
2
  export { isContentControl, isExternalComponent, isItemsControl, isPanel } from './elementKind.js';
3
3
  export { isCanvas, isDockPanel, isGrid, isStackPanel, isWrapPanel } from './panelKind.js';
4
4
  export { isFlowColumn, isFlowContainer, isFlowGrid, isFlowLeaf, isFlowRow, isFlowSlotLeaf } from './flowNodeKind.js';
5
+ export { resolveIconLibraries } from './icons/resolveIconLibraries.js';
6
+ export { referencesOfEntry } from './icons/EffectiveIconEntry.js';
7
+ export { EffectiveIconCatalog } from './icons/EffectiveIconCatalog.js';
8
+ export { analyzeIconImpact } from './icons/analyzeIconImpact.js';
5
9
  export { corePackage, effectivePackages, resolveComponentName } from './resolveComponentName.js';
6
10
  export { computeSizeClass, defaultHeightBreakpoint, defaultWidthBreakpoint } from './computeSizeClass.js';
7
11
  export { evaluateFlowArrangement } from './evaluateFlowArrangement.js';
@@ -33,4 +37,7 @@ export { applyEffectiveConfiguration } from './editing/applyEffectiveConfigurati
33
37
  export { flowLayoutType, indexDocument, panelLayoutType } from './editing/indexDocument.js';
34
38
  export { inspect, provenanceOf } from './editing/inspect.js';
35
39
  export { applyEdit } from './editing/applyEdit.js';
40
+ export { iconProblem, iconProblemsOfItems, iconProblemsOfProperty } from './editing/iconDiagnostics.js';
41
+ export { diagnoseIcons } from './editing/diagnoseIcons.js';
42
+ export { collectIconUsages } from './editing/collectIconUsages.js';
36
43
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}