@ai-ecoverse/slicc-spectrum 1.74.0 → 1.76.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/README.md +18 -8
- package/dist/slicc-dummy.js +37 -2
- package/dist/slicc-dummy.js.map +2 -2
- package/dist/slicc-kernel-model.js +1 -0
- package/dist/slicc-kernel-model.js.map +2 -2
- package/dist/slicc-ui.js +152 -85
- package/dist/slicc-ui.js.map +3 -3
- package/dist/types/app/base.d.ts +1 -0
- package/dist/types/app/follow.d.ts +1 -0
- package/dist/types/app/messages.d.ts +1 -0
- package/dist/types/dummy/agent.d.ts +2 -0
- package/dist/types/dummy/index.d.ts +2 -1
- package/dist/types/dummy/notices.d.ts +4 -2
- package/dist/types/model/types.d.ts +4 -0
- package/package.json +4 -4
package/dist/slicc-ui.js
CHANGED
|
@@ -8837,6 +8837,10 @@ var shared = i`
|
|
|
8837
8837
|
padding: 0 var(--swc-spacing-75);
|
|
8838
8838
|
}
|
|
8839
8839
|
`;
|
|
8840
|
+
function speech() {
|
|
8841
|
+
const scope = globalThis;
|
|
8842
|
+
return scope.SpeechRecognition ?? scope.webkitSpeechRecognition;
|
|
8843
|
+
}
|
|
8840
8844
|
|
|
8841
8845
|
// node_modules/@adobe/spectrum-wc/dist/components/button/button.js
|
|
8842
8846
|
var t42 = i`.swc-Button{--_swc-button-border-width: 2px;--_swc-button-min-block-size: var(--swc-button-min-block-size, var(--swc-component-height-100));gap:var(--swc-button-gap, 6px);max-inline-size:var(--swc-button-max-inline-size, inherit);min-block-size:var(--_swc-button-min-block-size);padding-block:calc(var(--swc-button-padding-vertical, 7px) - var(--_swc-button-border-width));padding-inline:calc(var(--swc-button-edge-to-text, var(--swc-base-padding-horizontal-medium)) - var(--_swc-button-border-width));font-family:var(--swc-sans-font-family-stack);font-size:var(--swc-button-font-size, var(--swc-font-size-100));font-weight:700;line-height:round(down,1.3em,1px);color:var(--swc-button-content-color-default, var(--swc-gray-25));background-color:var(--swc-button-background-color-default, var(--swc-gray-800));border-color:var(--swc-button-border-color-default, transparent);border-width:var(--_swc-button-border-width);border-radius:var(--swc-button-border-radius, calc(var(--_swc-button-min-block-size) / 2));transition-timing-function:cubic-bezier(.45,0,.4,1);transition-duration:.13s;transition-property:outline,border-color,color,background-color,transform}.swc-Button:hover{color:var(--swc-button-content-color-hover, var(--swc-gray-25));background-color:var(--swc-button-background-color-hover, var(--swc-gray-900));border-color:var(--swc-button-border-color-hover, transparent)}.swc-Button:focus-visible{color:var(--swc-button-content-color-focus, var(--swc-gray-25));background-color:var(--swc-button-background-color-focus, var(--swc-gray-900));border-color:var(--swc-button-border-color-focus, transparent)}.swc-Button:active{color:var(--swc-button-content-color-down, var(--swc-gray-25));background-color:var(--swc-button-background-color-down, var(--swc-gray-900));border-color:var(--swc-button-border-color-down, transparent);transform:var(--swc-button-down-state-transform, perspective(var(--_swc-button-min-block-size)) translate3d(0, 0, -2px));will-change:transform}.swc-Button-label{text-align:center}.swc-Button--hasIcon .swc-Button-label{text-align:start}slot[name=icon]::slotted(*),.swc-PendingSpinner{--_swc-button-icon-size: var(--swc-button-icon-size, var(--swc-workflow-icon-medium));--_swc-button-icon-block-size: var(--swc-button-icon-block-size, var(--_swc-button-icon-size));--_swc-pending-spinner-size: var(--_swc-button-icon-size);box-sizing:border-box;flex-shrink:0;align-self:flex-start;inline-size:var(--swc-button-icon-inline-size, var(--_swc-button-icon-size));block-size:var(--_swc-button-icon-block-size);margin-block:calc((var(--_swc-button-icon-block-size) - 1lh) / 2 * -1);margin-inline-start:calc(var(--swc-button-edge-to-visual, var(--swc-base-padding-horizontal-medium)) - var(--swc-button-edge-to-text, var(--swc-base-padding-horizontal-medium)))}slot[name=icon]::slotted(*){color:inherit;fill:currentcolor}:host([size=\"s\"]){--swc-button-min-block-size: var(--swc-component-height-75);--swc-button-font-size: var(--swc-font-size-75);--swc-button-gap: 4px;--swc-button-edge-to-text: var(--swc-base-padding-horizontal-small);--swc-button-edge-to-visual: var(--swc-base-padding-horizontal-small);--swc-button-edge-to-visual-only: 4px;--swc-button-padding-vertical: 4px;--swc-button-icon-size: var(--swc-workflow-icon-small)}:host([size=\"l\"]){--swc-button-min-block-size: var(--swc-component-height-200);--swc-button-font-size: var(--swc-font-size-200);--swc-button-gap: 6px;--swc-button-edge-to-text: var(--swc-base-padding-horizontal-large);--swc-button-edge-to-visual: var(--swc-base-padding-horizontal-large);--swc-button-edge-to-visual-only: 7px;--swc-button-padding-vertical: 10px;--swc-button-icon-size: var(--swc-workflow-icon-large)}:host([size=\"xl\"]){--swc-button-min-block-size: var(--swc-component-height-300);--swc-button-font-size: var(--swc-font-size-300);--swc-button-gap: 6px;--swc-button-edge-to-text: var(--swc-base-padding-horizontal-extra-large);--swc-button-edge-to-visual: var(--swc-base-padding-horizontal-extra-large);--swc-button-edge-to-visual-only: 9px;--swc-button-padding-vertical: 13px;--swc-button-icon-size: var(--swc-workflow-icon-extra-large)}:host([variant=\"accent\"]){--swc-button-content-color-default: rgb(255, 255, 255);--swc-button-content-color-hover: rgb(255, 255, 255);--swc-button-content-color-down: rgb(255, 255, 255);--swc-button-content-color-focus: rgb(255, 255, 255);--swc-button-background-color-default: var(--swc-accent-background-color-default);--swc-button-background-color-hover: var(--swc-accent-background-color-hover);--swc-button-background-color-down: var(--swc-accent-background-color-down);--swc-button-background-color-focus: var(--swc-accent-background-color-key-focus)}:host([variant=\"negative\"]){--swc-button-content-color-default: rgb(255, 255, 255);--swc-button-content-color-hover: rgb(255, 255, 255);--swc-button-content-color-down: rgb(255, 255, 255);--swc-button-content-color-focus: rgb(255, 255, 255);--swc-button-background-color-default: var(--swc-negative-background-color-default);--swc-button-background-color-hover: var(--swc-negative-background-color-hover);--swc-button-background-color-down: var(--swc-negative-background-color-down);--swc-button-background-color-focus: var(--swc-negative-background-color-key-focus)}:host([variant=\"secondary\"]){--swc-button-content-color-default: var(--swc-gray-800);--swc-button-content-color-hover: var(--swc-gray-900);--swc-button-content-color-down: var(--swc-gray-900);--swc-button-content-color-focus: var(--swc-gray-900);--swc-button-background-color-default: var(--swc-gray-100);--swc-button-background-color-hover: var(--swc-gray-200);--swc-button-background-color-down: var(--swc-gray-200);--swc-button-background-color-focus: var(--swc-gray-200)}:host([variant=\"primary\"][fill-style=\"outline\"]){--swc-button-background-color-default: transparent;--swc-button-background-color-hover: var(--swc-gray-100);--swc-button-background-color-down: var(--swc-gray-100);--swc-button-background-color-focus: var(--swc-gray-100);--swc-button-border-color-default: var(--swc-gray-800);--swc-button-border-color-hover: var(--swc-gray-900);--swc-button-border-color-down: var(--swc-gray-900);--swc-button-border-color-focus: var(--swc-gray-900);--swc-button-content-color-default: var(--swc-gray-800);--swc-button-content-color-hover: var(--swc-gray-900);--swc-button-content-color-down: var(--swc-gray-900);--swc-button-content-color-focus: var(--swc-gray-900);--swc-button-background-color-disabled: transparent;--swc-button-border-color-disabled: var(--swc-gray-300)}:host([variant=\"secondary\"][fill-style=\"outline\"]){--swc-button-background-color-default: transparent;--swc-button-background-color-hover: var(--swc-gray-100);--swc-button-background-color-down: var(--swc-gray-100);--swc-button-background-color-focus: var(--swc-gray-100);--swc-button-border-color-default: var(--swc-gray-300);--swc-button-border-color-hover: var(--swc-gray-400);--swc-button-border-color-down: var(--swc-gray-400);--swc-button-border-color-focus: var(--swc-gray-400);--swc-button-background-color-disabled: transparent;--swc-button-border-color-disabled: var(--swc-gray-300)}:host([static-color=\"white\"]){--swc-button-focus-indicator-color: var(--swc-white);--swc-button-background-color-default: rgba(255, 255, 255, .85);--swc-button-background-color-hover: rgba(255, 255, 255, .94);--swc-button-background-color-down: rgba(255, 255, 255, .94);--swc-button-background-color-focus: rgba(255, 255, 255, .94);--swc-button-content-color-default: rgb(0, 0, 0);--swc-button-content-color-hover: rgb(0, 0, 0);--swc-button-content-color-down: rgb(0, 0, 0);--swc-button-content-color-focus: rgb(0, 0, 0);--swc-button-background-color-disabled: var(--swc-transparent-white-100);--swc-button-border-color-disabled: transparent;--swc-button-content-color-disabled: var(--swc-transparent-white-400)}:host([static-color=\"white\"][variant=\"secondary\"]){--swc-button-background-color-default: rgba(255, 255, 255, .11);--swc-button-background-color-hover: rgba(255, 255, 255, .14);--swc-button-background-color-down: rgba(255, 255, 255, .14);--swc-button-background-color-focus: rgba(255, 255, 255, .14);--swc-button-content-color-default: rgba(255, 255, 255, .85);--swc-button-content-color-hover: rgba(255, 255, 255, .94);--swc-button-content-color-down: rgba(255, 255, 255, .94);--swc-button-content-color-focus: rgba(255, 255, 255, .94)}:host([static-color=\"white\"][fill-style=\"outline\"]){--swc-button-background-color-default: rgba(255, 255, 255, 0);--swc-button-background-color-hover: rgba(255, 255, 255, .11);--swc-button-background-color-down: rgba(255, 255, 255, .11);--swc-button-background-color-focus: rgba(255, 255, 255, .11);--swc-button-border-color-default: rgba(255, 255, 255, .85);--swc-button-border-color-hover: rgba(255, 255, 255, .94);--swc-button-border-color-down: rgba(255, 255, 255, .94);--swc-button-border-color-focus: rgba(255, 255, 255, .94);--swc-button-content-color-default: rgba(255, 255, 255, .85);--swc-button-content-color-hover: rgba(255, 255, 255, .94);--swc-button-content-color-down: rgba(255, 255, 255, .94);--swc-button-content-color-focus: rgba(255, 255, 255, .94);--swc-button-background-color-disabled: rgba(255, 255, 255, 0);--swc-button-border-color-disabled: var(--swc-transparent-white-300);--swc-button-content-color-disabled: var(--swc-transparent-white-400)}:host([static-color=\"white\"][variant=\"secondary\"][fill-style=\"outline\"]){--swc-button-background-color-default: rgba(255, 255, 255, 0);--swc-button-background-color-hover: rgba(255, 255, 255, .11);--swc-button-background-color-down: rgba(255, 255, 255, .11);--swc-button-background-color-focus: rgba(255, 255, 255, .11);--swc-button-border-color-default: rgba(255, 255, 255, .17);--swc-button-border-color-hover: rgba(255, 255, 255, .21);--swc-button-border-color-down: rgba(255, 255, 255, .21);--swc-button-border-color-focus: rgba(255, 255, 255, .21)}:host([static-color=\"black\"]){--swc-button-focus-indicator-color: var(--swc-black);--swc-button-background-color-default: rgba(0, 0, 0, .84);--swc-button-background-color-hover: rgba(0, 0, 0, .93);--swc-button-background-color-down: rgba(0, 0, 0, .93);--swc-button-background-color-focus: rgba(0, 0, 0, .93);--swc-button-content-color-default: rgb(255, 255, 255);--swc-button-content-color-hover: rgb(255, 255, 255);--swc-button-content-color-down: rgb(255, 255, 255);--swc-button-content-color-focus: rgb(255, 255, 255);--swc-button-background-color-disabled: var(--swc-transparent-black-100);--swc-button-border-color-disabled: transparent;--swc-button-content-color-disabled: var(--swc-transparent-black-400)}:host([static-color=\"black\"][variant=\"secondary\"]){--swc-button-background-color-default: rgba(0, 0, 0, .09);--swc-button-background-color-hover: rgba(0, 0, 0, .12);--swc-button-background-color-down: rgba(0, 0, 0, .12);--swc-button-background-color-focus: rgba(0, 0, 0, .12);--swc-button-content-color-default: rgba(0, 0, 0, .84);--swc-button-content-color-hover: rgba(0, 0, 0, .93);--swc-button-content-color-down: rgba(0, 0, 0, .93);--swc-button-content-color-focus: rgba(0, 0, 0, .93)}:host([static-color=\"black\"][fill-style=\"outline\"]){--swc-button-background-color-default: rgba(0, 0, 0, 0);--swc-button-background-color-hover: rgba(0, 0, 0, .09);--swc-button-background-color-down: rgba(0, 0, 0, .09);--swc-button-background-color-focus: rgba(0, 0, 0, .09);--swc-button-border-color-default: rgba(0, 0, 0, .84);--swc-button-border-color-hover: rgba(0, 0, 0, .93);--swc-button-border-color-down: rgba(0, 0, 0, .93);--swc-button-border-color-focus: rgba(0, 0, 0, .93);--swc-button-content-color-default: rgba(0, 0, 0, .84);--swc-button-content-color-hover: rgba(0, 0, 0, .93);--swc-button-content-color-down: rgba(0, 0, 0, .93);--swc-button-content-color-focus: rgba(0, 0, 0, .93);--swc-button-background-color-disabled: rgba(0, 0, 0, 0);--swc-button-border-color-disabled: var(--swc-transparent-black-300);--swc-button-content-color-disabled: var(--swc-transparent-black-400)}:host([static-color=\"black\"][variant=\"secondary\"][fill-style=\"outline\"]){--swc-button-background-color-default: rgba(0, 0, 0, 0);--swc-button-background-color-hover: rgba(0, 0, 0, .09);--swc-button-background-color-down: rgba(0, 0, 0, .09);--swc-button-background-color-focus: rgba(0, 0, 0, .09);--swc-button-border-color-default: rgba(0, 0, 0, .15);--swc-button-border-color-hover: rgba(0, 0, 0, .22);--swc-button-border-color-down: rgba(0, 0, 0, .22);--swc-button-border-color-focus: rgba(0, 0, 0, .22)}.swc-Button--iconOnly{--swc-button-border-radius: 50%;--swc-button-gap: 0;inline-size:var(--_swc-button-min-block-size);padding-inline:calc(var(--swc-button-edge-to-visual-only, 5px) - var(--_swc-button-border-width))}.swc-Button--iconOnly slot[name=icon]::slotted(*){--swc-button-edge-to-visual: 0;align-self:center}:host([pending]) .swc-Button{cursor:default}.swc-Button--pendingActive{--swc-button-down-state-transform: none;justify-content:center;inline-size:var(--swc-pending-inline-size);transition:none;--swc-button-background-color-default: var(--swc-button-background-color-disabled, var(--swc-gray-100));--swc-button-background-color-hover: var(--swc-button-background-color-disabled, var(--swc-gray-100));--swc-button-background-color-down: var(--swc-button-background-color-disabled, var(--swc-gray-100));--swc-button-background-color-focus: var(--swc-button-background-color-disabled, var(--swc-gray-100));--swc-button-border-color-default: var(--swc-button-border-color-disabled, transparent);--swc-button-border-color-hover: var(--swc-button-border-color-disabled, transparent);--swc-button-border-color-down: var(--swc-button-border-color-disabled, transparent);--swc-button-border-color-focus: var(--swc-button-border-color-disabled, transparent);--swc-button-content-color-default: var(--swc-button-content-color-disabled, var(--swc-gray-400));--swc-button-content-color-hover: var(--swc-button-content-color-disabled, var(--swc-gray-400));--swc-button-content-color-down: var(--swc-button-content-color-disabled, var(--swc-gray-400));--swc-button-content-color-focus: var(--swc-button-content-color-disabled, var(--swc-gray-400))}.swc-Button--pendingActive .swc-Button-label,.swc-Button--pendingActive slot[name=icon]::slotted(*){display:none}:host([truncate]) .swc-Button-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host([justified]){flex-grow:1;justify-self:stretch;inline-size:100%}:host([justified]) .swc-Button{inline-size:100%}@media(prefers-reduced-motion:reduce){.swc-Button{transition-duration:0ms}}@media(forced-colors:active){.swc-Button--pendingActive{--swc-button-background-color-default: ButtonFace;--swc-button-background-color-hover: ButtonFace;--swc-button-background-color-down: ButtonFace;--swc-button-background-color-focus: ButtonFace;--swc-button-border-color-default: GrayText;--swc-button-border-color-hover: GrayText;--swc-button-border-color-down: GrayText;--swc-button-border-color-focus: GrayText;--swc-button-content-color-default: GrayText;--swc-button-content-color-hover: GrayText;--swc-button-content-color-down: GrayText;--swc-button-content-color-focus: GrayText}}`;
|
|
@@ -9777,10 +9781,18 @@ function following(model) {
|
|
|
9777
9781
|
return state2 && !followPage(state2) ? state2 : null;
|
|
9778
9782
|
}
|
|
9779
9783
|
function watchOnly(model) {
|
|
9784
|
+
const text2 = model?.agent?.readOnly?.();
|
|
9785
|
+
if (text2) return text2;
|
|
9780
9786
|
const state2 = following(model);
|
|
9781
9787
|
if (!state2 || state2.access.control) return "";
|
|
9782
9788
|
return `Watch only. To send prompts from this device, allow Control for it on ${state2.owner}.`;
|
|
9783
9789
|
}
|
|
9790
|
+
function onWatch(model, listener) {
|
|
9791
|
+
return [
|
|
9792
|
+
...model.agent.readOnly ? [model.agent.on("readOnly", listener)] : [],
|
|
9793
|
+
...model.follow ? [model.follow.on("follow", listener)] : []
|
|
9794
|
+
];
|
|
9795
|
+
}
|
|
9784
9796
|
function terminalsAllowed(model) {
|
|
9785
9797
|
const state2 = model?.follow?.state();
|
|
9786
9798
|
return !state2 || !!state2.access.terminal;
|
|
@@ -10745,7 +10757,7 @@ var SliccFreezer = class extends ModelElement {
|
|
|
10745
10757
|
model.agent.on("frozen", update),
|
|
10746
10758
|
model.agent.on("active", update),
|
|
10747
10759
|
model.agent.on("agents", update),
|
|
10748
|
-
...model
|
|
10760
|
+
...onWatch(model, update)
|
|
10749
10761
|
];
|
|
10750
10762
|
}
|
|
10751
10763
|
focus() {
|
|
@@ -11633,7 +11645,7 @@ var SliccAgents = class extends ModelElement {
|
|
|
11633
11645
|
this.requestUpdate();
|
|
11634
11646
|
}),
|
|
11635
11647
|
watchTitles(model, () => this.requestUpdate()),
|
|
11636
|
-
...model
|
|
11648
|
+
...onWatch(model, () => this.requestUpdate()),
|
|
11637
11649
|
this.#watchPointer()
|
|
11638
11650
|
];
|
|
11639
11651
|
}
|
|
@@ -12035,6 +12047,7 @@ function fallbackModel(options) {
|
|
|
12035
12047
|
return offered.find((option2) => option2.default) ?? offered[0];
|
|
12036
12048
|
}
|
|
12037
12049
|
function controls(model) {
|
|
12050
|
+
if (model.agent.readOnly?.()) return false;
|
|
12038
12051
|
const state2 = model.follow?.state();
|
|
12039
12052
|
return !state2 || !!state2.access.control && state2.link === "connected";
|
|
12040
12053
|
}
|
|
@@ -30999,7 +31012,7 @@ function user(message, stamp = true) {
|
|
|
30999
31012
|
${byline(message, who2, stamp)}${stamp ? A : unseen(message.createdAt)}
|
|
31000
31013
|
${message.text ? b`<swc-user-message class="body"><span class="text">${message.text}</span></swc-user-message>` : A}
|
|
31001
31014
|
${message.attachments?.length ? b`<div class="attachments">${message.attachments.map(attachment)}</div>` : A}
|
|
31002
|
-
${remote ? b`<span class="reaction" aria-hidden="true">🤖</span>` : A}
|
|
31015
|
+
${remote ? b`<span class="reactions"><span class="reaction" aria-hidden="true">🤖</span></span>` : A}
|
|
31003
31016
|
</div>
|
|
31004
31017
|
</swc-conversation-turn>`;
|
|
31005
31018
|
}
|
|
@@ -31097,6 +31110,9 @@ var compactionTitles = {
|
|
|
31097
31110
|
function event(label, content) {
|
|
31098
31111
|
return b`<swc-conversation-turn type="system" class="event" accessible-label=${label}>${content}</swc-conversation-turn>`;
|
|
31099
31112
|
}
|
|
31113
|
+
function outside(label, byline2, content) {
|
|
31114
|
+
return b`<swc-conversation-turn type="user" class="event lick-turn" accessible-label=${label}><div class="bubble">${byline2}${content}</div></swc-conversation-turn>`;
|
|
31115
|
+
}
|
|
31100
31116
|
function system(message, handlers) {
|
|
31101
31117
|
if (message.kind === "compaction") {
|
|
31102
31118
|
const failed2 = message.state === "fallback" || message.state === "discarded";
|
|
@@ -31145,37 +31161,57 @@ var severities = {
|
|
|
31145
31161
|
icon: b`<swc-icon-alert-triangle slot="icon" size="s" aria-hidden="true"></swc-icon-alert-triangle>`
|
|
31146
31162
|
}
|
|
31147
31163
|
};
|
|
31148
|
-
|
|
31149
|
-
|
|
31150
|
-
|
|
31151
|
-
|
|
31152
|
-
}
|
|
31164
|
+
var lickIcons = {
|
|
31165
|
+
webhook: "\u{1FA9D}",
|
|
31166
|
+
cron: "\u23F0",
|
|
31167
|
+
sprinkle: "\u2728",
|
|
31168
|
+
fswatch: "\u{1F440}",
|
|
31169
|
+
"session-reload": "\u{1F504}",
|
|
31170
|
+
navigate: "\u{1F9ED}",
|
|
31171
|
+
discovery: "\u{1F50E}",
|
|
31172
|
+
upgrade: "\u2B06\uFE0F",
|
|
31173
|
+
workflow: "\u{1F4CB}",
|
|
31174
|
+
bash: "\u{1F4BB}",
|
|
31175
|
+
jshd: "\u{1F4DC}",
|
|
31176
|
+
preview: "\u{1F441}\uFE0F",
|
|
31177
|
+
cherry: "\u{1F352}",
|
|
31178
|
+
"scoop-notify": "\u2705",
|
|
31179
|
+
"scoop-idle": "\u{1F4A4}",
|
|
31180
|
+
"scoop-wait": "\u23F3",
|
|
31181
|
+
"sudo-request": "\u{1F510}"
|
|
31182
|
+
};
|
|
31153
31183
|
function lick(message, handlers, stamp = true) {
|
|
31154
|
-
const [label
|
|
31184
|
+
const [label] = lickLabels[message.channel];
|
|
31155
31185
|
const decide = message.channel === "sudo-request" && message.state === "pending";
|
|
31156
31186
|
const outcome = message.state === "confirmed" ? "Allowed" : message.state === "dismissed" ? "Denied" : "";
|
|
31157
|
-
const head2 = b`${
|
|
31158
|
-
|
|
31187
|
+
const head2 = b`${message.severity ? b`<span class="sr">${severities[message.severity].prefix}</span>` : A}
|
|
31188
|
+
${outcome ? b`<span class="sr">${outcome}. </span>` : A}
|
|
31159
31189
|
<span class="text">${message.text}</span>
|
|
31160
|
-
${message.count && message.count > 1 ? b`<span class="times" title="Coalesced events">×${message.count}</span>` : A}
|
|
31161
|
-
|
|
31162
|
-
|
|
31190
|
+
${message.count && message.count > 1 ? b`<span class="times" title="Coalesced events">×${message.count}</span>` : A}`;
|
|
31191
|
+
const outcomeIcon = message.state === "confirmed" ? "\u{1F44D}" : message.state === "dismissed" ? "\u{1F44E}" : "";
|
|
31192
|
+
const reaction = b`<span class="reactions"><span class="reaction" title=${label} aria-hidden="true">${lickIcons[message.channel]}</span>${outcomeIcon ? b`<span class="reaction" title=${outcome} aria-hidden="true">${outcomeIcon}</span>` : A}</span>`;
|
|
31163
31193
|
const actions2 = decide ? b`<div class="decide">
|
|
31164
31194
|
<swc-button size="s" variant="accent" data-action="allow" ?disabled=${handlers.readOnly} @click=${() => handlers.resolve(message.id, "confirmed")}>Allow</swc-button>
|
|
31165
31195
|
<swc-button size="s" variant="secondary" fill-style="outline" data-action="deny" ?disabled=${handlers.readOnly} @click=${() => handlers.resolve(message.id, "dismissed")}>Deny</swc-button>
|
|
31166
31196
|
</div>` : A;
|
|
31167
31197
|
const name = `${message.severity ? severities[message.severity].prefix : ""}${label} event`;
|
|
31198
|
+
const byline2 = b`<div class="meta">${message.severity ? b`<span class="severity-icon">${severities[message.severity].icon}</span>` : A}<span class="who">${message.title}</span>${stamp ? when(message.createdAt) : unseen(message.createdAt)}</div>`;
|
|
31168
31199
|
if (!message.body) {
|
|
31169
|
-
return
|
|
31200
|
+
return outside(
|
|
31170
31201
|
name,
|
|
31171
|
-
|
|
31202
|
+
byline2,
|
|
31203
|
+
b`<div class="lick-frame"><div class="lick" data-id=${message.id} data-channel=${message.channel} data-severity=${message.severity ?? A}><div class="lick-head">${head2}</div>${actions2}</div>${reaction}</div>`
|
|
31172
31204
|
);
|
|
31173
31205
|
}
|
|
31174
31206
|
const details = b`<details class="lick" data-id=${message.id} data-channel=${message.channel} data-severity=${message.severity ?? A}>
|
|
31175
|
-
<summary class="lick-head"
|
|
31207
|
+
<summary class="lick-head">${head2}<swc-icon-chevron-right class="chevron" size="s" aria-hidden="true"></swc-icon-chevron-right></summary>
|
|
31176
31208
|
<pre class="output">${message.body}</pre>
|
|
31177
31209
|
</details>`;
|
|
31178
|
-
return
|
|
31210
|
+
return outside(
|
|
31211
|
+
name,
|
|
31212
|
+
byline2,
|
|
31213
|
+
b`<div class="lick-frame">${decide ? b`<div class="pending">${details}${actions2}</div>` : details}${reaction}</div>`
|
|
31214
|
+
);
|
|
31179
31215
|
}
|
|
31180
31216
|
var messageCss = i`
|
|
31181
31217
|
swc-conversation-thread > .message,
|
|
@@ -31245,10 +31281,14 @@ var messageCss = i`
|
|
|
31245
31281
|
position: relative;
|
|
31246
31282
|
margin-block-end: var(--swc-spacing-300);
|
|
31247
31283
|
}
|
|
31248
|
-
.
|
|
31284
|
+
.reactions {
|
|
31249
31285
|
position: absolute;
|
|
31250
31286
|
inset-block-end: calc(var(--swc-spacing-300) * -1);
|
|
31251
31287
|
inset-inline-end: var(--swc-spacing-200);
|
|
31288
|
+
display: inline-flex;
|
|
31289
|
+
gap: var(--swc-spacing-50);
|
|
31290
|
+
}
|
|
31291
|
+
.reaction {
|
|
31252
31292
|
display: inline-flex;
|
|
31253
31293
|
align-items: center;
|
|
31254
31294
|
justify-content: center;
|
|
@@ -31395,9 +31435,9 @@ var messageCss = i`
|
|
|
31395
31435
|
}
|
|
31396
31436
|
.lick {
|
|
31397
31437
|
border: var(--swc-border-width-100) solid var(--swc-gray-200);
|
|
31398
|
-
border-radius: var(--swc-corner-radius-
|
|
31438
|
+
border-radius: var(--swc-corner-radius-700);
|
|
31399
31439
|
background: var(--swc-background-layer-1-color);
|
|
31400
|
-
font-size: var(--swc-font-size-
|
|
31440
|
+
font-size: var(--swc-font-size-200);
|
|
31401
31441
|
}
|
|
31402
31442
|
summary,
|
|
31403
31443
|
.lick-head {
|
|
@@ -31928,15 +31968,25 @@ var messageCss = i`
|
|
|
31928
31968
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
31929
31969
|
text-align: center;
|
|
31930
31970
|
}
|
|
31971
|
+
.lick-frame {
|
|
31972
|
+
position: relative;
|
|
31973
|
+
min-inline-size: 0;
|
|
31974
|
+
max-inline-size: 100%;
|
|
31975
|
+
margin-block-end: var(--swc-spacing-300);
|
|
31976
|
+
}
|
|
31931
31977
|
.lick {
|
|
31932
31978
|
border-style: dashed;
|
|
31933
31979
|
}
|
|
31934
|
-
.
|
|
31935
|
-
|
|
31936
|
-
|
|
31980
|
+
.severity-icon {
|
|
31981
|
+
display: inline-flex;
|
|
31982
|
+
align-self: center;
|
|
31983
|
+
color: var(--severity);
|
|
31937
31984
|
}
|
|
31938
|
-
.lick
|
|
31939
|
-
|
|
31985
|
+
.lick-turn:has(.lick[data-severity='error']) {
|
|
31986
|
+
--severity: var(--swc-negative-visual-color);
|
|
31987
|
+
}
|
|
31988
|
+
.lick-turn:has(.lick[data-severity='warn']) {
|
|
31989
|
+
--severity: var(--swc-notice-visual-color);
|
|
31940
31990
|
}
|
|
31941
31991
|
.lick[data-severity] {
|
|
31942
31992
|
border-inline-start: var(--swc-border-width-400) solid var(--severity);
|
|
@@ -31955,8 +32005,7 @@ var messageCss = i`
|
|
|
31955
32005
|
clip-path: inset(50%);
|
|
31956
32006
|
white-space: nowrap;
|
|
31957
32007
|
}
|
|
31958
|
-
.lick .times
|
|
31959
|
-
.lick .when {
|
|
32008
|
+
.lick .times {
|
|
31960
32009
|
color: var(--swc-neutral-subdued-content-color-default);
|
|
31961
32010
|
white-space: nowrap;
|
|
31962
32011
|
}
|
|
@@ -31967,7 +32016,7 @@ var messageCss = i`
|
|
|
31967
32016
|
}
|
|
31968
32017
|
.pending {
|
|
31969
32018
|
border: var(--swc-border-width-100) solid var(--swc-notice-visual-color);
|
|
31970
|
-
border-radius: var(--swc-corner-radius-
|
|
32019
|
+
border-radius: var(--swc-corner-radius-700);
|
|
31971
32020
|
}
|
|
31972
32021
|
.pending > details.lick {
|
|
31973
32022
|
border: 0;
|
|
@@ -32946,6 +32995,12 @@ var SliccApp = class extends ThemedElement {
|
|
|
32946
32995
|
...model.updates ? [model.updates.on("items", update)] : [],
|
|
32947
32996
|
...model.network ? [model.network.on("network", update)] : [],
|
|
32948
32997
|
...model.tabs ? [model.tabs.on("tabs", update)] : [],
|
|
32998
|
+
...model.agent.readOnly ? [
|
|
32999
|
+
model.agent.on("readOnly", () => {
|
|
33000
|
+
settle2();
|
|
33001
|
+
update();
|
|
33002
|
+
})
|
|
33003
|
+
] : [],
|
|
32949
33004
|
...model.follow ? [
|
|
32950
33005
|
model.follow.on("follow", () => {
|
|
32951
33006
|
settle2();
|
|
@@ -34916,7 +34971,7 @@ var SliccBrowser = class extends ModelElement {
|
|
|
34916
34971
|
this.requestUpdate();
|
|
34917
34972
|
}),
|
|
34918
34973
|
...model.network ? [model.network.on("network", () => this.requestUpdate())] : [],
|
|
34919
|
-
...model
|
|
34974
|
+
...onWatch(model, () => this.requestUpdate()),
|
|
34920
34975
|
() => clearInterval(timer),
|
|
34921
34976
|
() => resize.disconnect(),
|
|
34922
34977
|
() => document.removeEventListener("visibilitychange", visibility),
|
|
@@ -35585,7 +35640,10 @@ var SliccChanges = class extends ModelElement {
|
|
|
35585
35640
|
`
|
|
35586
35641
|
];
|
|
35587
35642
|
subscribe(model) {
|
|
35588
|
-
return [
|
|
35643
|
+
return [
|
|
35644
|
+
changesOf(model).on("changes", () => this.requestUpdate()),
|
|
35645
|
+
...onWatch(model, () => this.requestUpdate())
|
|
35646
|
+
];
|
|
35589
35647
|
}
|
|
35590
35648
|
focus() {
|
|
35591
35649
|
this.focusOn("li[data-path]");
|
|
@@ -35600,7 +35658,8 @@ var SliccChanges = class extends ModelElement {
|
|
|
35600
35658
|
async #revert(event2, change) {
|
|
35601
35659
|
event2.stopPropagation();
|
|
35602
35660
|
this.error = "";
|
|
35603
|
-
if (await confirmRevert(change)
|
|
35661
|
+
if (await confirmRevert(change) && !watchOnly(this.model))
|
|
35662
|
+
this.error = await revertPaths(this.#port(), [change.path]);
|
|
35604
35663
|
}
|
|
35605
35664
|
async #all(action) {
|
|
35606
35665
|
const port = this.#port();
|
|
@@ -35612,7 +35671,7 @@ var SliccChanges = class extends ModelElement {
|
|
|
35612
35671
|
}
|
|
35613
35672
|
const count = changes2.length;
|
|
35614
35673
|
const title = `Revert ${count} ${count === 1 ? "change" : "changes"}?`;
|
|
35615
|
-
if (await confirm({ title, body: lost(changes2), action: "Revert all" }))
|
|
35674
|
+
if (await confirm({ title, body: lost(changes2), action: "Revert all" }) && !watchOnly(this.model))
|
|
35616
35675
|
this.error = await revertPaths(
|
|
35617
35676
|
port,
|
|
35618
35677
|
changes2.map((change) => change.path)
|
|
@@ -35648,7 +35707,7 @@ var SliccChanges = class extends ModelElement {
|
|
|
35648
35707
|
${statusMark(change.status)}
|
|
35649
35708
|
<span class="name">${basename(change.path)}</span>
|
|
35650
35709
|
<span class="where"><bdi>${[at, by].filter(Boolean).join(" \xB7 ")}</bdi></span>
|
|
35651
|
-
|
|
35710
|
+
${watchOnly(this.model) ? A : b`<span class="actions">
|
|
35652
35711
|
<swc-action-button
|
|
35653
35712
|
size="xs"
|
|
35654
35713
|
quiet
|
|
@@ -35667,7 +35726,7 @@ var SliccChanges = class extends ModelElement {
|
|
|
35667
35726
|
>
|
|
35668
35727
|
<swc-icon-revert slot="icon"></swc-icon-revert>
|
|
35669
35728
|
</swc-action-button>
|
|
35670
|
-
</span
|
|
35729
|
+
</span>`}
|
|
35671
35730
|
</li>`;
|
|
35672
35731
|
}
|
|
35673
35732
|
#list(changes2) {
|
|
@@ -35719,8 +35778,8 @@ var SliccChanges = class extends ModelElement {
|
|
|
35719
35778
|
return b`<div class="bar">
|
|
35720
35779
|
<span class="summary">${changes2.length} pending ${changes2.length === 1 ? "change" : "changes"}</span>
|
|
35721
35780
|
<span class="spacer"></span>
|
|
35722
|
-
${changes2.length ? b`<swc-action-button size="s" quiet @click=${() => this.#all("accept")}>Accept all</swc-action-button>
|
|
35723
|
-
<swc-action-button size="s" quiet @click=${() => this.#all("revert")}>Revert all</swc-action-button>` : A}
|
|
35781
|
+
${changes2.length && !watchOnly(this.model) ? b`<swc-action-button size="s" quiet data-action="accept-all" @click=${() => this.#all("accept")}>Accept all</swc-action-button>
|
|
35782
|
+
<swc-action-button size="s" quiet data-action="revert-all" @click=${() => this.#all("revert")}>Revert all</swc-action-button>` : A}
|
|
35724
35783
|
</div>
|
|
35725
35784
|
${errorLine(this.error)}
|
|
35726
35785
|
${changes2.length ? this.#list(changes2) : b`<div class="note">No pending changes. Edits by agents show up here for review.</div>`}`;
|
|
@@ -35775,11 +35834,16 @@ var SliccDiffPanel = class extends ThemedElement {
|
|
|
35775
35834
|
`
|
|
35776
35835
|
];
|
|
35777
35836
|
subscribe(model) {
|
|
35778
|
-
return [
|
|
35837
|
+
return [
|
|
35838
|
+
...super.subscribe(model),
|
|
35839
|
+
changesOf(model).on("changes", () => this.requestUpdate()),
|
|
35840
|
+
...onWatch(model, () => this.requestUpdate())
|
|
35841
|
+
];
|
|
35779
35842
|
}
|
|
35780
35843
|
async #revert(port, change) {
|
|
35781
35844
|
this.error = "";
|
|
35782
|
-
if (await confirmRevert(change)
|
|
35845
|
+
if (await confirmRevert(change) && !watchOnly(this.model))
|
|
35846
|
+
this.error = await revertPaths(port, [this.path]);
|
|
35783
35847
|
}
|
|
35784
35848
|
#body(change, style) {
|
|
35785
35849
|
if (change.before === null && change.after === null) {
|
|
@@ -35828,12 +35892,12 @@ var SliccDiffPanel = class extends ThemedElement {
|
|
|
35828
35892
|
>`
|
|
35829
35893
|
)}
|
|
35830
35894
|
</swc-action-group>`}
|
|
35831
|
-
|
|
35895
|
+
${watchOnly(model) ? A : b`<swc-action-button size="s" quiet data-action="accept" accessible-label="Accept" title="Accept" @click=${() => port?.accept(this.path)}>
|
|
35832
35896
|
<swc-icon-checkmark slot="icon"></swc-icon-checkmark><span class="label">Accept</span>
|
|
35833
35897
|
</swc-action-button>
|
|
35834
35898
|
<swc-action-button size="s" quiet data-action="revert" accessible-label="Revert" title="Revert" @click=${() => this.#revert(port, change)}>
|
|
35835
35899
|
<swc-icon-revert slot="icon"></swc-icon-revert><span class="label">Revert</span>
|
|
35836
|
-
</swc-action-button
|
|
35900
|
+
</swc-action-button>`}
|
|
35837
35901
|
</div>
|
|
35838
35902
|
${errorLine(this.error)}
|
|
35839
35903
|
${this.#body(change, style)}`;
|
|
@@ -36348,7 +36412,7 @@ var SliccChat = class extends ThemedElement {
|
|
|
36348
36412
|
}),
|
|
36349
36413
|
model.agent.on("agents", settle2),
|
|
36350
36414
|
...model.tabs ? [model.tabs.on("tabs", () => this.requestUpdate())] : [],
|
|
36351
|
-
...model
|
|
36415
|
+
...onWatch(model, settle2),
|
|
36352
36416
|
model.agent.on("messages", (agentId) => {
|
|
36353
36417
|
if (agentId === this.#id()) this.#refresh(this.#sent(agentId));
|
|
36354
36418
|
}),
|
|
@@ -37925,6 +37989,10 @@ var SliccComposer = class extends ThemedElement {
|
|
|
37925
37989
|
#abandon;
|
|
37926
37990
|
#recognition = null;
|
|
37927
37991
|
#erase;
|
|
37992
|
+
#release = (event2) => {
|
|
37993
|
+
const released = event2 instanceof KeyboardEvent && (event2.code === "KeyM" || event2.key === "Alt");
|
|
37994
|
+
if (this.dictating && (released || event2.type === "blur")) this.dictate();
|
|
37995
|
+
};
|
|
37928
37996
|
#keys = { capture: true, handleEvent: (event2) => this.#keydown(event2) };
|
|
37929
37997
|
constructor() {
|
|
37930
37998
|
super();
|
|
@@ -38086,27 +38154,6 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38086
38154
|
.failed {
|
|
38087
38155
|
color: var(--swc-negative-content-color-default);
|
|
38088
38156
|
}
|
|
38089
|
-
.below {
|
|
38090
|
-
display: flex;
|
|
38091
|
-
align-items: center;
|
|
38092
|
-
gap: var(--swc-spacing-100);
|
|
38093
|
-
max-width: 860px;
|
|
38094
|
-
margin: var(--swc-spacing-75) auto 0;
|
|
38095
|
-
min-height: var(--swc-component-height-75);
|
|
38096
|
-
}
|
|
38097
|
-
.below swc-action-button {
|
|
38098
|
-
margin-inline-start: auto;
|
|
38099
|
-
}
|
|
38100
|
-
swc-action-button.selected {
|
|
38101
|
-
--swc-action-button-background-color-default: var(--swc-neutral-background-color-selected-default);
|
|
38102
|
-
--swc-action-button-background-color-hover: var(--swc-neutral-background-color-selected-hover);
|
|
38103
|
-
--swc-action-button-background-color-down: var(--swc-neutral-background-color-selected-down);
|
|
38104
|
-
--swc-action-button-background-color-focus: var(--swc-neutral-background-color-selected-key-focus);
|
|
38105
|
-
--swc-action-button-content-color-default: var(--swc-gray-25);
|
|
38106
|
-
--swc-action-button-content-color-hover: var(--swc-gray-25);
|
|
38107
|
-
--swc-action-button-content-color-down: var(--swc-gray-25);
|
|
38108
|
-
--swc-action-button-content-color-focus: var(--swc-gray-25);
|
|
38109
|
-
}
|
|
38110
38157
|
.popup {
|
|
38111
38158
|
position: absolute;
|
|
38112
38159
|
left: 0;
|
|
@@ -38212,6 +38259,8 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38212
38259
|
connectedCallback() {
|
|
38213
38260
|
super.connectedCallback();
|
|
38214
38261
|
clearTimeout(this.#abandon);
|
|
38262
|
+
globalThis.addEventListener("keyup", this.#release);
|
|
38263
|
+
globalThis.addEventListener("blur", this.#release);
|
|
38215
38264
|
if (this.hasUpdated) this.#wire();
|
|
38216
38265
|
}
|
|
38217
38266
|
firstUpdated() {
|
|
@@ -38219,6 +38268,8 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38219
38268
|
}
|
|
38220
38269
|
disconnectedCallback() {
|
|
38221
38270
|
super.disconnectedCallback();
|
|
38271
|
+
globalThis.removeEventListener("keyup", this.#release);
|
|
38272
|
+
globalThis.removeEventListener("blur", this.#release);
|
|
38222
38273
|
clearValues(this.renderRoot);
|
|
38223
38274
|
const held = [
|
|
38224
38275
|
this.attachments,
|
|
@@ -38564,10 +38615,21 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38564
38615
|
return this.#recall(-1);
|
|
38565
38616
|
return false;
|
|
38566
38617
|
}
|
|
38618
|
+
#talking() {
|
|
38619
|
+
return !!this.model?.settings.get().pushToTalk && !!speech();
|
|
38620
|
+
}
|
|
38621
|
+
#shortcut(event2) {
|
|
38622
|
+
if (event2.key === "Backspace" || event2.key === "Delete") this.#flash();
|
|
38623
|
+
const chord = event2.altKey && !event2.ctrlKey && !event2.metaKey && !event2.shiftKey;
|
|
38624
|
+
if (!chord || event2.code !== "KeyM" || !this.#talking()) return false;
|
|
38625
|
+
event2.preventDefault();
|
|
38626
|
+
if (!event2.repeat) this.dictate();
|
|
38627
|
+
return true;
|
|
38628
|
+
}
|
|
38567
38629
|
#keydown(event2) {
|
|
38568
38630
|
const area = this.#textarea;
|
|
38569
38631
|
if (event2.isComposing || !area || event2.composedPath()[0] !== area) return;
|
|
38570
|
-
if (
|
|
38632
|
+
if (this.#shortcut(event2)) return;
|
|
38571
38633
|
const sendOnEnter = this.model?.settings.get().sendOnEnter ?? true;
|
|
38572
38634
|
let handled = this.#popupKey(event2) || this.#historyKey(event2, area);
|
|
38573
38635
|
if (!handled && event2.key === "Tab" && !event2.shiftKey && !this.value) {
|
|
@@ -38607,7 +38669,8 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38607
38669
|
keys.push(
|
|
38608
38670
|
`${enter ? "Shift+Enter" : "Enter"} adds a new line`,
|
|
38609
38671
|
"/ lists commands",
|
|
38610
|
-
"@ mentions"
|
|
38672
|
+
"@ mentions",
|
|
38673
|
+
...this.#talking() ? ["hold Alt+M to dictate"] : []
|
|
38611
38674
|
);
|
|
38612
38675
|
return `${keys.join(", ")}.`;
|
|
38613
38676
|
}
|
|
@@ -38641,17 +38704,23 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38641
38704
|
);
|
|
38642
38705
|
}
|
|
38643
38706
|
}
|
|
38707
|
+
#toggleTalk = (event2) => {
|
|
38708
|
+
event2.stopPropagation();
|
|
38709
|
+
const settings = this.model?.settings;
|
|
38710
|
+
settings?.update({ pushToTalk: !settings.get().pushToTalk });
|
|
38711
|
+
};
|
|
38644
38712
|
dictate() {
|
|
38645
38713
|
if (this.#recognition) {
|
|
38646
38714
|
this.#recognition.stop();
|
|
38647
38715
|
return;
|
|
38648
38716
|
}
|
|
38649
|
-
const Speech =
|
|
38717
|
+
const Speech = speech();
|
|
38650
38718
|
if (!Speech) return;
|
|
38651
38719
|
const recognition = new Speech();
|
|
38652
38720
|
recognition.interimResults = false;
|
|
38721
|
+
recognition.continuous = true;
|
|
38653
38722
|
recognition.onresult = (event2) => {
|
|
38654
|
-
const text2 = [...event2.results].map((result) => result[0].transcript).join(" ");
|
|
38723
|
+
const text2 = [...event2.results].slice(event2.resultIndex ?? 0).map((result) => result[0].transcript).join(" ");
|
|
38655
38724
|
this.value = `${this.value}${this.value && !this.value.endsWith(" ") ? " " : ""}${text2}`;
|
|
38656
38725
|
};
|
|
38657
38726
|
recognition.onend = () => {
|
|
@@ -38797,7 +38866,8 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38797
38866
|
const agent = this.model?.agent.list().find((candidate) => candidate.id === this.#agent);
|
|
38798
38867
|
const suggestion = this.model?.agent.suggestion(this.#agent);
|
|
38799
38868
|
const canSend = !!this.value.trim() || this.attachments.some((attachment2) => !attachment2.error);
|
|
38800
|
-
const
|
|
38869
|
+
const pushToTalk = this.model?.settings.get().pushToTalk ?? false;
|
|
38870
|
+
const talk = !!speech();
|
|
38801
38871
|
const held = this.#held();
|
|
38802
38872
|
return b`<div class="column">
|
|
38803
38873
|
<span id="keys" class="sr" aria-hidden="true">${this.#instructions(busy)}</span>
|
|
@@ -38835,6 +38905,10 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38835
38905
|
<sp-menu-item value="screenshot">Take a screenshot of the browser tab</sp-menu-item>
|
|
38836
38906
|
<sp-menu-item value="file">Attach a file from SLICC</sp-menu-item>
|
|
38837
38907
|
<sp-menu-item value="secret">Share a secret</sp-menu-item>
|
|
38908
|
+
${talk ? b`<sp-menu-divider></sp-menu-divider>
|
|
38909
|
+
<sp-menu-group selects="multiple" data-group="talk" @change=${this.#toggleTalk}>
|
|
38910
|
+
<sp-menu-item value="push-to-talk" data-action="push-to-talk" ?selected=${pushToTalk}>Enable push to talk<span slot="description">Hold Alt+M to dictate</span></sp-menu-item>
|
|
38911
|
+
</sp-menu-group>` : A}
|
|
38838
38912
|
</sp-menu>
|
|
38839
38913
|
</swc-popover>
|
|
38840
38914
|
<input type="file" multiple @change=${(event2) => {
|
|
@@ -38842,17 +38916,7 @@ var SliccComposer = class extends ThemedElement {
|
|
|
38842
38916
|
void this.addFiles([...input.files ?? []]);
|
|
38843
38917
|
input.value = "";
|
|
38844
38918
|
}} />
|
|
38845
|
-
</div
|
|
38846
|
-
${speech ? b`<div class="below">
|
|
38847
|
-
<swc-action-button
|
|
38848
|
-
size="s"
|
|
38849
|
-
quiet
|
|
38850
|
-
class=${this.dictating ? "selected" : ""}
|
|
38851
|
-
accessible-label=${this.dictating ? "Stop dictation" : "Dictate"}
|
|
38852
|
-
data-action="dictate"
|
|
38853
|
-
@click=${() => this.dictate()}
|
|
38854
|
-
><swc-icon-microphone slot="icon"></swc-icon-microphone></swc-action-button>
|
|
38855
|
-
</div>` : A}`;
|
|
38919
|
+
</div>`;
|
|
38856
38920
|
}
|
|
38857
38921
|
};
|
|
38858
38922
|
|
|
@@ -39407,7 +39471,7 @@ var SliccNotices = class extends ModelElement {
|
|
|
39407
39471
|
(action) => b`<swc-button size="s" variant="secondary" fill-style="outline" data-action=${action.id} ?pending=${pending === action.id} ?disabled=${!!pending && pending !== action.id} @click=${() => void this.act(notice.id, action.id)}>${action.label}</swc-button>`
|
|
39408
39472
|
)}</div>` : A}
|
|
39409
39473
|
</div>
|
|
39410
|
-
|
|
39474
|
+
${notice.dismissible === false ? A : b`<swc-close-button size="m" data-dismiss accessible-label=${`Dismiss: ${notice.title}`} @click=${() => this.dismiss(notice.id)}></swc-close-button>`}
|
|
39411
39475
|
</div>`;
|
|
39412
39476
|
}
|
|
39413
39477
|
#tabs() {
|
|
@@ -39434,7 +39498,9 @@ var SliccNotices = class extends ModelElement {
|
|
|
39434
39498
|
}
|
|
39435
39499
|
render() {
|
|
39436
39500
|
const port = this.model?.notices;
|
|
39437
|
-
const notices = (port?.list() ?? []).filter(
|
|
39501
|
+
const notices = (port?.list() ?? []).filter(
|
|
39502
|
+
(notice) => notice.dismissible === false || !this.dismissed.has(notice.id)
|
|
39503
|
+
);
|
|
39438
39504
|
const tabs = this.#tabs();
|
|
39439
39505
|
const approvals = this.model?.approvals?.decide ? [] : waiting(this.model, Date.now());
|
|
39440
39506
|
if (!notices.length && !approvals.length && tabs === A) return A;
|
|
@@ -41154,6 +41220,7 @@ var SliccSettings = class extends ThemedElement {
|
|
|
41154
41220
|
<div class="switches">
|
|
41155
41221
|
<sp-switch ?checked=${value.sendOnEnter} data-setting="sendOnEnter" @change=${(e122) => this.#update({ sendOnEnter: this.#checked(e122) })}>Enter sends, Shift+Enter adds a line</sp-switch>
|
|
41156
41222
|
<sp-switch ?checked=${value.showThinking} data-setting="showThinking" @change=${(e122) => this.#update({ showThinking: this.#checked(e122) })}>Show thinking</sp-switch>
|
|
41223
|
+
${speech() ? b`<sp-switch ?checked=${value.pushToTalk ?? false} data-setting="pushToTalk" @change=${(e122) => this.#update({ pushToTalk: this.#checked(e122) })}>Push to talk: hold Alt+M to dictate</sp-switch>` : A}
|
|
41157
41224
|
</div>
|
|
41158
41225
|
</div>
|
|
41159
41226
|
<div class="row">
|
|
@@ -41590,7 +41657,7 @@ var SliccSprinkle = class extends ThemedElement {
|
|
|
41590
41657
|
() => globalThis.removeEventListener("message", this.#message),
|
|
41591
41658
|
model.sprinkles.on("sprinkles", () => this.requestUpdate()),
|
|
41592
41659
|
this.#dips.on("change", () => this.requestUpdate()),
|
|
41593
|
-
...model
|
|
41660
|
+
...onWatch(model, () => this.requestUpdate())
|
|
41594
41661
|
];
|
|
41595
41662
|
}
|
|
41596
41663
|
#drag = (event2) => {
|
|
@@ -80140,7 +80207,7 @@ function createDismissableLayer(options) {
|
|
|
80140
80207
|
const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : false;
|
|
80141
80208
|
const escape2 = (_options$escape = options.escape) !== null && _options$escape !== void 0 ? _options$escape : true;
|
|
80142
80209
|
const keys = (_options$keys = options.keys) !== null && _options$keys !== void 0 ? _options$keys : [];
|
|
80143
|
-
const
|
|
80210
|
+
const outside2 = (_options$outsidePoint = options.outsidePointerDown) !== null && _options$outsidePoint !== void 0 ? _options$outsidePoint : true;
|
|
80144
80211
|
const grace = (_options$pointerDownG = options.pointerDownGraceMs) !== null && _options$pointerDownG !== void 0 ? _options$pointerDownG : 0;
|
|
80145
80212
|
const now = (_options$now = options.now) !== null && _options$now !== void 0 ? _options$now : Date.now;
|
|
80146
80213
|
const openedAt = now();
|
|
@@ -80153,13 +80220,13 @@ function createDismissableLayer(options) {
|
|
|
80153
80220
|
if (escape2 || keys.length > 0) disposables.addDisposables(addDisposableListener(win, "keydown", (event2) => {
|
|
80154
80221
|
if (escape2 && event2.key === "Escape" || keys.includes(event2.key)) options.onDismiss();
|
|
80155
80222
|
}, capture));
|
|
80156
|
-
if (
|
|
80223
|
+
if (outside2 || options.onInsidePointerDown) disposables.addDisposables(addDisposableListener(win, "pointerdown", (event2) => {
|
|
80157
80224
|
if (isInside(event2)) {
|
|
80158
80225
|
var _options$onInsidePoin;
|
|
80159
80226
|
(_options$onInsidePoin = options.onInsidePointerDown) === null || _options$onInsidePoin === void 0 || _options$onInsidePoin.call(options, event2);
|
|
80160
80227
|
return;
|
|
80161
80228
|
}
|
|
80162
|
-
if (!
|
|
80229
|
+
if (!outside2 || now() - openedAt < grace) return;
|
|
80163
80230
|
options.onDismiss();
|
|
80164
80231
|
}, capture));
|
|
80165
80232
|
if (options.resize) disposables.addDisposables(addDisposableListener(win, "resize", () => {
|