@eclipse-lyra/extension-catalog 0.7.44 → 0.7.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.js CHANGED
@@ -1,4 +1,4 @@
1
- import { contributionRegistry } from "@eclipse-lyra/core/api";
1
+ import { contributionRegistry } from "@eclipse-lyra/core";
2
2
  function getCatalogBaseUrl() {
3
3
  if (typeof globalThis === "undefined") return "";
4
4
  const loc = globalThis.location;
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sources":["../src/register-catalog.ts"],"sourcesContent":["import {\n contributionRegistry,\n type TreeContribution,\n} from \"@eclipse-lyra/core/api\";\n\nexport interface CatalogContribution extends TreeContribution {\n items?: CatalogContribution[];\n}\n\nexport function getCatalogBaseUrl(): string {\n if (typeof globalThis === 'undefined') return '';\n const loc = (globalThis as unknown as { location?: { origin: string } }).location;\n const base = (import.meta as unknown as { env?: { BASE_URL?: string } }).env?.BASE_URL ?? '';\n if (!loc?.origin) return '';\n return (loc.origin + base).replace(/\\/?$/, '/');\n}\n\nexport function registerCatalog(catalog: CatalogContribution, baseUrl?: string): void {\n const base = baseUrl ?? getCatalogBaseUrl();\n contributionRegistry.registerContribution(\"catalog.root\", {\n label: catalog.label,\n icon: catalog.icon,\n contributionId: catalog.contributionId,\n } as TreeContribution);\n\n const contributionId = catalog.contributionId ?? catalog.label;\n catalog.items?.forEach((item: CatalogContribution) => {\n contributionRegistry.registerContribution(contributionId, {\n label: item.label,\n icon: item.icon,\n contributionId: item.contributionId,\n } as TreeContribution);\n\n item.items?.forEach((child: any) => {\n const contribution = {\n label: child.label,\n icon: child.icon,\n state: { ...child.state },\n } as TreeContribution;\n const url = contribution.state?.url as string | undefined;\n if (url && typeof url === \"string\" && url.includes(\"${baseURL}/\")) {\n contribution.state = { ...contribution.state, url: url.replace(\"${baseURL}/\", base) };\n }\n contributionRegistry.registerContribution(\n item.contributionId!,\n contribution\n );\n });\n });\n}\n"],"names":[],"mappings":";AASO,SAAS,oBAA4B;AACxC,MAAI,OAAO,eAAe,YAAa,QAAO;AAC9C,QAAM,MAAO,WAA4D;AACzE,QAAM,OAAQ;AACd,MAAI,CAAC,KAAK,OAAQ,QAAO;AACzB,UAAQ,IAAI,SAAS,MAAM,QAAQ,QAAQ,GAAG;AAClD;AAEO,SAAS,gBAAgB,SAA8B,SAAwB;AAClF,QAAM,OAAO,WAAW,kBAAA;AACxB,uBAAqB,qBAAqB,gBAAgB;AAAA,IACtD,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ;AAAA,IACd,gBAAgB,QAAQ;AAAA,EAAA,CACP;AAErB,QAAM,iBAAiB,QAAQ,kBAAkB,QAAQ;AACzD,UAAQ,OAAO,QAAQ,CAAC,SAA8B;AAClD,yBAAqB,qBAAqB,gBAAgB;AAAA,MACtD,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,gBAAgB,KAAK;AAAA,IAAA,CACJ;AAErB,SAAK,OAAO,QAAQ,CAAC,UAAe;AAChC,YAAM,eAAe;AAAA,QACjB,OAAO,MAAM;AAAA,QACb,MAAM,MAAM;AAAA,QACZ,OAAO,EAAE,GAAG,MAAM,MAAA;AAAA,MAAM;AAE5B,YAAM,MAAM,aAAa,OAAO;AAChC,UAAI,OAAO,OAAO,QAAQ,YAAY,IAAI,SAAS,aAAa,GAAG;AAC/D,qBAAa,QAAQ,EAAE,GAAG,aAAa,OAAO,KAAK,IAAI,QAAQ,eAAe,IAAI,EAAA;AAAA,MACtF;AACA,2BAAqB;AAAA,QACjB,KAAK;AAAA,QACL;AAAA,MAAA;AAAA,IAER,CAAC;AAAA,EACL,CAAC;AACL;"}
1
+ {"version":3,"file":"api.js","sources":["../src/register-catalog.ts"],"sourcesContent":["import {\n contributionRegistry,\n type TreeContribution,\n} from \"@eclipse-lyra/core\";\n\nexport interface CatalogContribution extends TreeContribution {\n items?: CatalogContribution[];\n}\n\nexport function getCatalogBaseUrl(): string {\n if (typeof globalThis === 'undefined') return '';\n const loc = (globalThis as unknown as { location?: { origin: string } }).location;\n const base = (import.meta as unknown as { env?: { BASE_URL?: string } }).env?.BASE_URL ?? '';\n if (!loc?.origin) return '';\n return (loc.origin + base).replace(/\\/?$/, '/');\n}\n\nexport function registerCatalog(catalog: CatalogContribution, baseUrl?: string): void {\n const base = baseUrl ?? getCatalogBaseUrl();\n contributionRegistry.registerContribution(\"catalog.root\", {\n label: catalog.label,\n icon: catalog.icon,\n contributionId: catalog.contributionId,\n } as TreeContribution);\n\n const contributionId = catalog.contributionId ?? catalog.label;\n catalog.items?.forEach((item: CatalogContribution) => {\n contributionRegistry.registerContribution(contributionId, {\n label: item.label,\n icon: item.icon,\n contributionId: item.contributionId,\n } as TreeContribution);\n\n item.items?.forEach((child: any) => {\n const contribution = {\n label: child.label,\n icon: child.icon,\n state: { ...child.state },\n } as TreeContribution;\n const url = contribution.state?.url as string | undefined;\n if (url && typeof url === \"string\" && url.includes(\"${baseURL}/\")) {\n contribution.state = { ...contribution.state, url: url.replace(\"${baseURL}/\", base) };\n }\n contributionRegistry.registerContribution(\n item.contributionId!,\n contribution\n );\n });\n });\n}\n"],"names":[],"mappings":";AASO,SAAS,oBAA4B;AACxC,MAAI,OAAO,eAAe,YAAa,QAAO;AAC9C,QAAM,MAAO,WAA4D;AACzE,QAAM,OAAQ;AACd,MAAI,CAAC,KAAK,OAAQ,QAAO;AACzB,UAAQ,IAAI,SAAS,MAAM,QAAQ,QAAQ,GAAG;AAClD;AAEO,SAAS,gBAAgB,SAA8B,SAAwB;AAClF,QAAM,OAAO,WAAW,kBAAA;AACxB,uBAAqB,qBAAqB,gBAAgB;AAAA,IACtD,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ;AAAA,IACd,gBAAgB,QAAQ;AAAA,EAAA,CACP;AAErB,QAAM,iBAAiB,QAAQ,kBAAkB,QAAQ;AACzD,UAAQ,OAAO,QAAQ,CAAC,SAA8B;AAClD,yBAAqB,qBAAqB,gBAAgB;AAAA,MACtD,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,gBAAgB,KAAK;AAAA,IAAA,CACJ;AAErB,SAAK,OAAO,QAAQ,CAAC,UAAe;AAChC,YAAM,eAAe;AAAA,QACjB,OAAO,MAAM;AAAA,QACb,MAAM,MAAM;AAAA,QACZ,OAAO,EAAE,GAAG,MAAM,MAAA;AAAA,MAAM;AAE5B,YAAM,MAAM,aAAa,OAAO;AAChC,UAAI,OAAO,OAAO,QAAQ,YAAY,IAAI,SAAS,aAAa,GAAG;AAC/D,qBAAa,QAAQ,EAAE,GAAG,aAAa,OAAO,KAAK,IAAI,QAAQ,eAAe,IAAI,EAAA;AAAA,MACtF;AACA,2BAAqB;AAAA,QACjB,KAAK;AAAA,QACL;AAAA,MAAA;AAAA,IAER,CAAC;AAAA,EACL,CAAC;AACL;"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { extensionRegistry } from "@eclipse-lyra/core/api";
1
+ import { extensionRegistry } from "@eclipse-lyra/core";
2
2
  extensionRegistry.registerExtension({
3
3
  id: "@eclipse-lyra/extension-catalog",
4
4
  name: "Catalog",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { extensionRegistry } from \"@eclipse-lyra/core/api\";\n\nextensionRegistry.registerExtension({\n id: \"@eclipse-lyra/extension-catalog\",\n name: \"Catalog\",\n description: \"Browse and checkout resources from a catalog\",\n loader: () => import(\"./loader\"),\n icon: \"book\",\n});\n"],"names":[],"mappings":";AAEA,kBAAkB,kBAAkB;AAAA,EAChC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ,MAAM,OAAO,aAAU;AAAA,EAC/B,MAAM;AACV,CAAC;"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { extensionRegistry } from \"@eclipse-lyra/core\";\n\nextensionRegistry.registerExtension({\n id: \"@eclipse-lyra/extension-catalog\",\n name: \"Catalog\",\n description: \"Browse and checkout resources from a catalog\",\n loader: () => import(\"./loader\"),\n icon: \"book\",\n});\n"],"names":[],"mappings":";AAEA,kBAAkB,kBAAkB;AAAA,EAChC,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ,MAAM,OAAO,aAAU;AAAA,EAC/B,MAAM;AACV,CAAC;"}
package/dist/loader.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { css, state, customElement, createRef, html, ref } from "@eclipse-lyra/core/externals/lit";
2
- import { LyraPart, subscribe, TOPIC_CONTRIBUTEIONS_CHANGED, unsubscribe, contributionRegistry, activePartSignal, activeSelectionSignal, icon, SIDEBAR_MAIN } from "@eclipse-lyra/core/api";
2
+ import { LyraPart, subscribe, TOPIC_CONTRIBUTEIONS_CHANGED, unsubscribe, contributionRegistry, activePartSignal, activeSelectionSignal, icon, SIDEBAR_MAIN } from "@eclipse-lyra/core";
3
3
  var __defProp = Object.defineProperty;
4
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __decorateClass = (decorators, target, key, kind) => {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sources":["../src/lyra-catalog.ts","../src/loader.ts"],"sourcesContent":["import {\n css,\n html,\n TemplateResult,\n customElement,\n state,\n createRef,\n ref,\n} from \"@eclipse-lyra/core/externals/lit\";\nimport {\n LyraPart,\n TreeContribution,\n TreeNode,\n contributionRegistry,\n activePartSignal,\n activeSelectionSignal,\n subscribe,\n unsubscribe,\n TOPIC_CONTRIBUTEIONS_CHANGED,\n type ContributionChangeEvent,\n icon,\n} from \"@eclipse-lyra/core/api\";\n\nexport const CID_CATALOG_ROOT = \"catalog.root\";\n\n@customElement(\"lyra-catalog\")\nexport class LyraCatalog extends LyraPart {\n @state()\n private rootNodes?: TreeNode[];\n\n private treeRef = createRef<HTMLElement>();\n private contributionsSubscriptionToken?: string;\n\n protected doBeforeUI() {\n this.rebuildTree();\n this.contributionsSubscriptionToken = subscribe(TOPIC_CONTRIBUTEIONS_CHANGED, (event: ContributionChangeEvent) => {\n if (event.target === CID_CATALOG_ROOT || event.target?.startsWith(\"catalog.\")) {\n this.rebuildTree();\n }\n });\n }\n\n protected doClose() {\n if (this.contributionsSubscriptionToken) {\n unsubscribe(this.contributionsSubscriptionToken);\n this.contributionsSubscriptionToken = undefined;\n }\n super.doClose();\n }\n\n private rebuildTree() {\n const contributions = contributionRegistry.getContributions(\n CID_CATALOG_ROOT\n ) as TreeContribution[];\n this.rootNodes = this.toTreeNodes(contributions);\n this.requestUpdate();\n }\n\n protected renderToolbar() {\n const isActiveAndHasSelection =\n activePartSignal.get() instanceof LyraCatalog &&\n activeSelectionSignal.get() !== undefined;\n\n return html`\n <lyra-command\n icon=\"file-arrow-down\"\n title=\"Checkout\"\n ?disabled=${!isActiveAndHasSelection}\n .action=${() => this.runWgetForSelection()}\n ></lyra-command>\n <lyra-command icon=\"arrows-rotate\" title=\"Refresh Catalog\" .action=${() => this.refresh()}></lyra-command>\n <lyra-command icon=\"angles-down\" slot=\"end\" title=\"Expand All\" .action=${() => this.setAllExpanded(true)}></lyra-command>\n <lyra-command icon=\"angles-up\" slot=\"end\" title=\"Collapse All\" .action=${() => this.setAllExpanded(false)}></lyra-command>\n `;\n }\n\n private toTreeNodes(contributions: TreeContribution[]) {\n return contributions.map((c) => {\n const node = {\n data: c.state,\n icon: c.icon,\n label: c.label,\n leaf: false,\n } as TreeNode;\n if (c.contributionId) {\n const children = contributionRegistry.getContributions(\n c.contributionId\n ) as TreeContribution[];\n node.leaf = children.length === 0;\n node.children = this.toTreeNodes(children);\n }\n return node;\n });\n }\n\n onItemDblClicked(event: Event) {\n const item = event.currentTarget as HTMLElement & { model?: TreeNode; expanded?: boolean };\n const node = item?.model;\n if (!node) return;\n if (node.data?.url) {\n this.executeCommand(\"wget\", { url: node.data.url });\n return;\n }\n if (!node.leaf && \"expanded\" in item) {\n item.expanded = !item.expanded;\n }\n }\n\n private runWgetForSelection() {\n const item = activeSelectionSignal.get();\n if (item && \"url\" in item && item.url) {\n this.executeCommand(\"wget\", { url: item.url });\n }\n }\n\n onSelectionChanged(event: Event) {\n const node: TreeNode = (event as CustomEvent).detail.selection[0]\n .model;\n activeSelectionSignal.set(node.data);\n this.updateContextMenu();\n }\n\n protected renderContextMenu() {\n const item = activePartSignal.get() instanceof LyraCatalog ? activeSelectionSignal.get() : undefined;\n const hasUrl = item && \"url\" in item && item.url;\n return html`\n <lyra-command\n icon=\"file-arrow-down\"\n title=\"Checkout\"\n ?disabled=${!hasUrl}\n .action=${() => this.runWgetForSelection()}\n >Checkout</lyra-command>\n `;\n }\n\n public setAllExpanded(expanded: boolean) {\n const tree = this.treeRef.value;\n if (tree) {\n tree.querySelectorAll(\"wa-tree-item\").forEach((item: any) => {\n item.expanded = expanded;\n });\n }\n }\n\n public refresh() {\n this.rebuildTree();\n }\n\n createTreeItems(node: TreeNode, expanded = false): TemplateResult {\n if (!node) {\n return html``;\n }\n return html`\n <wa-tree-item\n @dblclick=${this.nobubble(this.onItemDblClicked)}\n .model=${node}\n ?expanded=${expanded}\n >\n <span>${icon(node.icon)} ${node.label}</span>\n ${node.children?.map((child) => this.createTreeItems(child))}\n </wa-tree-item>\n `;\n }\n\n render() {\n return html`\n <wa-tree\n ${ref(this.treeRef)}\n @wa-selection-change=${this.nobubble(this.onSelectionChanged)}\n style=\"--indent-guide-width: 1px;\"\n >\n ${this.rootNodes?.map((node) =>\n this.createTreeItems(node, true)\n )}\n </wa-tree>\n `;\n }\n\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"lyra-catalog\": LyraCatalog;\n }\n}\n","import { html } from \"@eclipse-lyra/core/externals/lit\";\nimport { contributionRegistry, SIDEBAR_MAIN } from \"@eclipse-lyra/core/api\";\nimport \"./lyra-catalog\";\n\ncontributionRegistry.registerContribution(SIDEBAR_MAIN, {\n name: \"catalog\",\n label: \"Catalog\",\n icon: \"book\",\n component: (id: string) => html`<lyra-catalog id=\"${id}\"></lyra-catalog>`,\n} as any);\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sources":["../src/lyra-catalog.ts","../src/loader.ts"],"sourcesContent":["import {\n css,\n html,\n TemplateResult,\n customElement,\n state,\n createRef,\n ref,\n} from \"@eclipse-lyra/core/externals/lit\";\nimport {\n LyraPart,\n TreeContribution,\n TreeNode,\n contributionRegistry,\n activePartSignal,\n activeSelectionSignal,\n subscribe,\n unsubscribe,\n TOPIC_CONTRIBUTEIONS_CHANGED,\n type ContributionChangeEvent,\n icon,\n} from \"@eclipse-lyra/core\";\n\nexport const CID_CATALOG_ROOT = \"catalog.root\";\n\n@customElement(\"lyra-catalog\")\nexport class LyraCatalog extends LyraPart {\n @state()\n private rootNodes?: TreeNode[];\n\n private treeRef = createRef<HTMLElement>();\n private contributionsSubscriptionToken?: string;\n\n protected doBeforeUI() {\n this.rebuildTree();\n this.contributionsSubscriptionToken = subscribe(TOPIC_CONTRIBUTEIONS_CHANGED, (event: ContributionChangeEvent) => {\n if (event.target === CID_CATALOG_ROOT || event.target?.startsWith(\"catalog.\")) {\n this.rebuildTree();\n }\n });\n }\n\n protected doClose() {\n if (this.contributionsSubscriptionToken) {\n unsubscribe(this.contributionsSubscriptionToken);\n this.contributionsSubscriptionToken = undefined;\n }\n super.doClose();\n }\n\n private rebuildTree() {\n const contributions = contributionRegistry.getContributions(\n CID_CATALOG_ROOT\n ) as TreeContribution[];\n this.rootNodes = this.toTreeNodes(contributions);\n this.requestUpdate();\n }\n\n protected renderToolbar() {\n const isActiveAndHasSelection =\n activePartSignal.get() instanceof LyraCatalog &&\n activeSelectionSignal.get() !== undefined;\n\n return html`\n <lyra-command\n icon=\"file-arrow-down\"\n title=\"Checkout\"\n ?disabled=${!isActiveAndHasSelection}\n .action=${() => this.runWgetForSelection()}\n ></lyra-command>\n <lyra-command icon=\"arrows-rotate\" title=\"Refresh Catalog\" .action=${() => this.refresh()}></lyra-command>\n <lyra-command icon=\"angles-down\" slot=\"end\" title=\"Expand All\" .action=${() => this.setAllExpanded(true)}></lyra-command>\n <lyra-command icon=\"angles-up\" slot=\"end\" title=\"Collapse All\" .action=${() => this.setAllExpanded(false)}></lyra-command>\n `;\n }\n\n private toTreeNodes(contributions: TreeContribution[]) {\n return contributions.map((c) => {\n const node = {\n data: c.state,\n icon: c.icon,\n label: c.label,\n leaf: false,\n } as TreeNode;\n if (c.contributionId) {\n const children = contributionRegistry.getContributions(\n c.contributionId\n ) as TreeContribution[];\n node.leaf = children.length === 0;\n node.children = this.toTreeNodes(children);\n }\n return node;\n });\n }\n\n onItemDblClicked(event: Event) {\n const item = event.currentTarget as HTMLElement & { model?: TreeNode; expanded?: boolean };\n const node = item?.model;\n if (!node) return;\n if (node.data?.url) {\n this.executeCommand(\"wget\", { url: node.data.url });\n return;\n }\n if (!node.leaf && \"expanded\" in item) {\n item.expanded = !item.expanded;\n }\n }\n\n private runWgetForSelection() {\n const item = activeSelectionSignal.get();\n if (item && \"url\" in item && item.url) {\n this.executeCommand(\"wget\", { url: item.url });\n }\n }\n\n onSelectionChanged(event: Event) {\n const node: TreeNode = (event as CustomEvent).detail.selection[0]\n .model;\n activeSelectionSignal.set(node.data);\n this.updateContextMenu();\n }\n\n protected renderContextMenu() {\n const item = activePartSignal.get() instanceof LyraCatalog ? activeSelectionSignal.get() : undefined;\n const hasUrl = item && \"url\" in item && item.url;\n return html`\n <lyra-command\n icon=\"file-arrow-down\"\n title=\"Checkout\"\n ?disabled=${!hasUrl}\n .action=${() => this.runWgetForSelection()}\n >Checkout</lyra-command>\n `;\n }\n\n public setAllExpanded(expanded: boolean) {\n const tree = this.treeRef.value;\n if (tree) {\n tree.querySelectorAll(\"wa-tree-item\").forEach((item: any) => {\n item.expanded = expanded;\n });\n }\n }\n\n public refresh() {\n this.rebuildTree();\n }\n\n createTreeItems(node: TreeNode, expanded = false): TemplateResult {\n if (!node) {\n return html``;\n }\n return html`\n <wa-tree-item\n @dblclick=${this.nobubble(this.onItemDblClicked)}\n .model=${node}\n ?expanded=${expanded}\n >\n <span>${icon(node.icon)} ${node.label}</span>\n ${node.children?.map((child) => this.createTreeItems(child))}\n </wa-tree-item>\n `;\n }\n\n render() {\n return html`\n <wa-tree\n ${ref(this.treeRef)}\n @wa-selection-change=${this.nobubble(this.onSelectionChanged)}\n style=\"--indent-guide-width: 1px;\"\n >\n ${this.rootNodes?.map((node) =>\n this.createTreeItems(node, true)\n )}\n </wa-tree>\n `;\n }\n\n static styles = css`\n :host {\n display: flex;\n flex-direction: column;\n }\n `;\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"lyra-catalog\": LyraCatalog;\n }\n}\n","import { html } from \"@eclipse-lyra/core/externals/lit\";\nimport { contributionRegistry, SIDEBAR_MAIN } from \"@eclipse-lyra/core\";\nimport \"./lyra-catalog\";\n\ncontributionRegistry.registerContribution(SIDEBAR_MAIN, {\n name: \"catalog\",\n label: \"Catalog\",\n icon: \"book\",\n component: (id: string) => html`<lyra-catalog id=\"${id}\"></lyra-catalog>`,\n} as any);\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { TemplateResult } from '@eclipse-lyra/core/externals/lit';
2
- import { LyraPart, TreeNode } from '@eclipse-lyra/core/api';
2
+ import { LyraPart, TreeNode } from '@eclipse-lyra/core';
3
3
  export declare const CID_CATALOG_ROOT = "catalog.root";
4
4
  export declare class LyraCatalog extends LyraPart {
5
5
  private rootNodes?;
@@ -1 +1 @@
1
- {"version":3,"file":"lyra-catalog.d.ts","sourceRoot":"","sources":["../src/lyra-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,cAAc,EAKjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,QAAQ,EAER,QAAQ,EASX,MAAM,wBAAwB,CAAC;AAEhC,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,qBACa,WAAY,SAAQ,QAAQ;IAErC,OAAO,CAAC,SAAS,CAAC,CAAa;IAE/B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAEhD,SAAS,CAAC,UAAU;IASpB,SAAS,CAAC,OAAO;IAQjB,OAAO,CAAC,WAAW;IAQnB,SAAS,CAAC,aAAa;IAkBvB,OAAO,CAAC,WAAW;IAmBnB,gBAAgB,CAAC,KAAK,EAAE,KAAK;IAa7B,OAAO,CAAC,mBAAmB;IAO3B,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAO/B,SAAS,CAAC,iBAAiB;IAapB,cAAc,CAAC,QAAQ,EAAE,OAAO;IAShC,OAAO;IAId,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,UAAQ,GAAG,cAAc;IAgBjE,MAAM;IAcN,MAAM,CAAC,MAAM,0BAKX;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ"}
1
+ {"version":3,"file":"lyra-catalog.d.ts","sourceRoot":"","sources":["../src/lyra-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,cAAc,EAKjB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACH,QAAQ,EAER,QAAQ,EASX,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAE/C,qBACa,WAAY,SAAQ,QAAQ;IAErC,OAAO,CAAC,SAAS,CAAC,CAAa;IAE/B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,8BAA8B,CAAC,CAAS;IAEhD,SAAS,CAAC,UAAU;IASpB,SAAS,CAAC,OAAO;IAQjB,OAAO,CAAC,WAAW;IAQnB,SAAS,CAAC,aAAa;IAkBvB,OAAO,CAAC,WAAW;IAmBnB,gBAAgB,CAAC,KAAK,EAAE,KAAK;IAa7B,OAAO,CAAC,mBAAmB;IAO3B,kBAAkB,CAAC,KAAK,EAAE,KAAK;IAO/B,SAAS,CAAC,iBAAiB;IAapB,cAAc,CAAC,QAAQ,EAAE,OAAO;IAShC,OAAO;IAId,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,UAAQ,GAAG,cAAc;IAgBjE,MAAM;IAcN,MAAM,CAAC,MAAM,0BAKX;CACL;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,qBAAqB;QAC3B,cAAc,EAAE,WAAW,CAAC;KAC/B;CACJ"}
@@ -1,4 +1,4 @@
1
- import { TreeContribution } from '@eclipse-lyra/core/api';
1
+ import { TreeContribution } from '@eclipse-lyra/core';
2
2
  export interface CatalogContribution extends TreeContribution {
3
3
  items?: CatalogContribution[];
4
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"register-catalog.d.ts","sourceRoot":"","sources":["../src/register-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EACxB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgCpF"}
1
+ {"version":3,"file":"register-catalog.d.ts","sourceRoot":"","sources":["../src/register-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,gBAAgB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IACzD,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgCpF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-lyra/extension-catalog",
3
- "version": "0.7.44",
3
+ "version": "0.7.45",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",