@ai-ecoverse/slicc-spectrum 1.55.0 → 1.56.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.
package/dist/slicc-ui.js CHANGED
@@ -13261,7 +13261,8 @@ function sprinkleSurface(sprinkle) {
13261
13261
  tag: "slicc-sprinkle",
13262
13262
  icon: sprinkle.icon,
13263
13263
  side: "right",
13264
- open: []
13264
+ open: [],
13265
+ cone: sprinkle.agentId
13265
13266
  };
13266
13267
  }
13267
13268
  var directions = {
@@ -21650,6 +21651,11 @@ var SliccApp = class extends ThemedElement {
21650
21651
  .rail:empty {
21651
21652
  display: none;
21652
21653
  }
21654
+ .rail .cones {
21655
+ flex: none;
21656
+ inline-size: var(--swc-component-height-75);
21657
+ border-block-start: var(--swc-border-width-100) solid var(--swc-gray-300);
21658
+ }
21653
21659
  .rail swc-action-button.selected {
21654
21660
  --swc-action-button-background-color-default: var(--swc-neutral-background-color-selected-default);
21655
21661
  --swc-action-button-background-color-hover: var(--swc-neutral-background-color-selected-hover);
@@ -21863,6 +21869,13 @@ var SliccApp = class extends ThemedElement {
21863
21869
  if (layout) this.#start(this.model);
21864
21870
  else if (changed.has("model")) this.#rebind(this.model);
21865
21871
  this.#updates(layout);
21872
+ this.#retitle();
21873
+ }
21874
+ #retitle() {
21875
+ for (const sprinkle of this.#sprinkles()) {
21876
+ const panel = this.dock.api.getPanel(`sprinkle:${sprinkle.id}`);
21877
+ if (panel && panel.title !== sprinkle.title) panel.api.setTitle(sprinkle.title);
21878
+ }
21866
21879
  }
21867
21880
  #updates(layout) {
21868
21881
  const port = this.model?.updates;
@@ -21998,7 +22011,7 @@ var SliccApp = class extends ThemedElement {
21998
22011
  openChat(this.dock, agent, this.screen);
21999
22012
  return;
22000
22013
  }
22001
- const sprinkle = this.model?.sprinkles.list().find((candidate) => `sprinkle:${candidate.id}` === id);
22014
+ const sprinkle = this.#sprinkles().find((candidate) => `sprinkle:${candidate.id}` === id);
22002
22015
  if (sprinkle) {
22003
22016
  openSprinkle(this.dock, sprinkle, this.screen);
22004
22017
  return;
@@ -22016,7 +22029,19 @@ var SliccApp = class extends ThemedElement {
22016
22029
  this.dock.content(id)?.reveal?.(section);
22017
22030
  }
22018
22031
  #sprinkle(id) {
22019
- return this.model?.sprinkles.list().find((candidate) => candidate.id === id);
22032
+ return this.#sprinkles().find((candidate) => candidate.id === id);
22033
+ }
22034
+ #sprinkles() {
22035
+ const model = this.model;
22036
+ if (!model) return [];
22037
+ const selected = this.#cone();
22038
+ const cones = model.agent.list().filter((agent) => agent.kind === "cone");
22039
+ const list4 = model.sprinkles.list();
22040
+ const order = [selected, ...cones.map((cone) => cone.id), ...list4.map((item2) => item2.agentId)];
22041
+ return list4.map((sprinkle) => {
22042
+ const cone = cones.find((agent) => agent.id === sprinkle.agentId && agent.id !== selected);
22043
+ return cone ? { ...sprinkle, title: `${cone.name} / ${sprinkle.title}` } : sprinkle;
22044
+ }).sort((a22, b13) => order.indexOf(a22.agentId) - order.indexOf(b13.agentId));
22020
22045
  }
22021
22046
  #detach(id, place2, open) {
22022
22047
  const sprinkle = this.#sprinkle(id);
@@ -22048,7 +22073,7 @@ var SliccApp = class extends ThemedElement {
22048
22073
  const driven = item2.id === "browser" && !!this.model?.browser.list().some((tab) => tab.controlled);
22049
22074
  const visible2 = shown(this.dock, item2.id);
22050
22075
  const label = `${visible2 ? `${item2.title}, shown` : `Open ${item2.title}`}${changes ? `, ${changeCount(changes)}` : driven ? ", a tab is in use" : ""}`;
22051
- const button = u16`<swc-action-button id=${`rail-${item2.id}`} class=${visible2 ? "selected" : ""} quiet size="m" accessible-label=${label} data-surface=${item2.id} ?data-visible=${visible2} @click=${() => this.show(item2.id)}>${railIcon(item2.icon)}</swc-action-button>`;
22076
+ const button = u16`<swc-action-button id=${`rail-${item2.id}`} class=${visible2 ? "selected" : ""} quiet size="m" accessible-label=${label} data-surface=${item2.id} data-cone=${o2(item2.cone)} ?data-visible=${visible2} @click=${() => this.show(item2.id)}>${railIcon(item2.icon)}</swc-action-button>`;
22052
22077
  const tooltip = b`<swc-tooltip for=${`rail-${item2.id}`} placement=${{ left: "end", right: "start", bottom: "top" }[side]}>${item2.title}</swc-tooltip>`;
22053
22078
  return changes ? b`<span class="badged">${button}<swc-badge size="s" variant="neutral" aria-hidden="true">${changes}</swc-badge></span>${tooltip}` : driven ? b`<span class="badged">${button}<span class="dot" data-driven aria-hidden="true"></span></span>${tooltip}` : b`${button}${tooltip}`;
22054
22079
  }
@@ -22070,13 +22095,14 @@ var SliccApp = class extends ThemedElement {
22070
22095
  const primary = side === "bottom" ? items.filter((item2) => phoneRail.includes(item2.id)) : items;
22071
22096
  const fit = primary.length < items.length ? Math.min(primary.length, railCapacity(this.#width, Infinity)) : railCapacity(this.#width, items.length);
22072
22097
  const shown2 = side === "bottom" ? primary.slice(0, fit) : items;
22098
+ const grouped = new Set(shown2.map((item2) => item2.cone).filter(Boolean)).size > 1;
22073
22099
  return b`<nav class=${`rail ${side}`} aria-label=${`Panels, ${side}`} @dragover=${this.#railOver} @dragleave=${this.#railLeave} @drop=${this.#railDrop}>${shown2.map(
22074
- (item2) => this.#railButton(item2, side)
22100
+ (item2, index) => b`${grouped && index && shown2[index - 1].cone !== item2.cone ? b`<span class="cones" aria-hidden="true"></span>` : A}${this.#railButton(item2, side)}`
22075
22101
  )}${this.#more(items.filter((item2) => !shown2.includes(item2)))}</nav>`;
22076
22102
  }
22077
22103
  #rails() {
22078
22104
  const dock = this.renderRoot.querySelector("slicc-dock");
22079
- const sprinkles = (this.model?.sprinkles.list() ?? []).filter((sprinkle) => !sprinkle.inline || this.dips.has(sprinkle.id)).map(sprinkleSurface);
22105
+ const sprinkles = this.#sprinkles().filter((sprinkle) => !sprinkle.inline || this.dips.has(sprinkle.id)).map(sprinkleSurface);
22080
22106
  const all2 = dock && this.#started ? [...sprinkles, ...this.#available()] : [];
22081
22107
  const phone = this.screen === "phone";
22082
22108
  return {