@ai-ecoverse/slicc-spectrum 1.4.0 → 1.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.
- package/README.md +29 -3
- package/dist/{chunk-SBRFYELH.js → chunk-4JUIYZ4Q.js} +4 -4
- package/dist/{chunk-DKUZSKYB.js → chunk-CDYGCBW7.js} +4 -4
- package/dist/{chunk-YPQKCWWG.js → chunk-FXM4K5WL.js} +4 -4
- package/dist/{chunk-C6RSQDMS.js → chunk-H57UPFSK.js} +2 -2
- package/dist/{chunk-FFZJVWZQ.js → chunk-JCRICTXR.js} +5 -5
- package/dist/{chunk-6JNYNXUQ.js → chunk-LR5GBIK7.js} +7 -7
- package/dist/{chunk-6GSDEWD5.js → chunk-MJOCPOXZ.js} +8 -8
- package/dist/{chunk-JUNZW2NI.js → chunk-N27WNL5Q.js} +3 -3
- package/dist/chunk-WCSKGA5W.js +30 -0
- package/dist/chunk-WCSKGA5W.js.map +7 -0
- package/dist/chunk-YWO2TNED.js +71 -0
- package/dist/chunk-YWO2TNED.js.map +7 -0
- package/dist/slicc-dummy.js +4 -62
- package/dist/slicc-dummy.js.map +4 -4
- package/dist/slicc-kernel-model.js +379 -0
- package/dist/slicc-kernel-model.js.map +7 -0
- package/dist/slicc-terminal.js +3 -26
- package/dist/slicc-terminal.js.map +3 -3
- package/dist/slicc-ui.js +248 -52
- package/dist/slicc-ui.js.map +4 -4
- package/dist/types/app/app.d.ts +5 -1
- package/dist/types/app/files.d.ts +11 -0
- package/dist/types/app/panels.d.ts +3 -3
- package/dist/types/app/spectrum.d.ts +2 -0
- package/dist/types/kernel/files.d.ts +20 -0
- package/dist/types/kernel/idle.d.ts +51 -0
- package/dist/types/kernel/index.d.ts +17 -0
- package/dist/types/kernel/terminals.d.ts +21 -0
- package/dist/types/kernel.d.ts +7 -0
- package/package.json +5 -1
- /package/dist/{chunk-SBRFYELH.js.map → chunk-4JUIYZ4Q.js.map} +0 -0
- /package/dist/{chunk-DKUZSKYB.js.map → chunk-CDYGCBW7.js.map} +0 -0
- /package/dist/{chunk-YPQKCWWG.js.map → chunk-FXM4K5WL.js.map} +0 -0
- /package/dist/{chunk-C6RSQDMS.js.map → chunk-H57UPFSK.js.map} +0 -0
- /package/dist/{chunk-FFZJVWZQ.js.map → chunk-JCRICTXR.js.map} +0 -0
- /package/dist/{chunk-6JNYNXUQ.js.map → chunk-LR5GBIK7.js.map} +0 -0
- /package/dist/{chunk-6GSDEWD5.js.map → chunk-MJOCPOXZ.js.map} +0 -0
- /package/dist/{chunk-JUNZW2NI.js.map → chunk-N27WNL5Q.js.map} +0 -0
package/dist/slicc-ui.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SlottableRequestEvent,
|
|
3
|
+
conditionAttributeWithId,
|
|
4
|
+
isWebKit,
|
|
5
|
+
randomID
|
|
6
|
+
} from "./chunk-Y4Z7K443.js";
|
|
1
7
|
import {
|
|
2
8
|
IS_MOBILE,
|
|
3
9
|
IS_TOUCH_DEVICE,
|
|
@@ -15,16 +21,7 @@ import {
|
|
|
15
21
|
import {
|
|
16
22
|
SizedMixin,
|
|
17
23
|
n as n2
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import {
|
|
20
|
-
defineElement
|
|
21
|
-
} from "./chunk-6A6NIESE.js";
|
|
22
|
-
import {
|
|
23
|
-
SlottableRequestEvent,
|
|
24
|
-
conditionAttributeWithId,
|
|
25
|
-
isWebKit,
|
|
26
|
-
randomID
|
|
27
|
-
} from "./chunk-Y4Z7K443.js";
|
|
24
|
+
} from "./chunk-4JUIYZ4Q.js";
|
|
28
25
|
import "./chunk-364Y2XOJ.js";
|
|
29
26
|
import {
|
|
30
27
|
r
|
|
@@ -38,6 +35,9 @@ import {
|
|
|
38
35
|
o,
|
|
39
36
|
o2
|
|
40
37
|
} from "./chunk-2BBOXTOJ.js";
|
|
38
|
+
import {
|
|
39
|
+
defineElement
|
|
40
|
+
} from "./chunk-6A6NIESE.js";
|
|
41
41
|
import {
|
|
42
42
|
A,
|
|
43
43
|
D,
|
|
@@ -2048,7 +2048,7 @@ var MenuItem = class extends LikeAnchor(ObserveSlotText(ObserveSlotPresence(Focu
|
|
|
2048
2048
|
<sp-icon-chevron100
|
|
2049
2049
|
class="spectrum-UIIcon-ChevronRight100 chevron icon"
|
|
2050
2050
|
></sp-icon-chevron100>
|
|
2051
|
-
` : (this.dependencyManager.add("sp-overlay"), this.dependencyManager.add("sp-popover"), import("./chunk-
|
|
2051
|
+
` : (this.dependencyManager.add("sp-overlay"), this.dependencyManager.add("sp-popover"), import("./chunk-JCRICTXR.js"), import("./chunk-7PY7B3ZW.js"), b`
|
|
2052
2052
|
<sp-overlay
|
|
2053
2053
|
receives-focus="false"
|
|
2054
2054
|
.triggerElement=${this}
|
|
@@ -3113,7 +3113,7 @@ var PickerBase = class extends SizedMixin(ExpandableElement, { noDefaultSize: tr
|
|
|
3113
3113
|
`;
|
|
3114
3114
|
}
|
|
3115
3115
|
renderLoader() {
|
|
3116
|
-
return import("./chunk-
|
|
3116
|
+
return import("./chunk-N27WNL5Q.js"), b`
|
|
3117
3117
|
<sp-progress-circle
|
|
3118
3118
|
size="s"
|
|
3119
3119
|
indeterminate
|
|
@@ -3174,7 +3174,7 @@ var PickerBase = class extends SizedMixin(ExpandableElement, { noDefaultSize: tr
|
|
|
3174
3174
|
renderOverlay(e14) {
|
|
3175
3175
|
var s9;
|
|
3176
3176
|
const t14 = this.renderContainer(e14);
|
|
3177
|
-
return this.dependencyManager.add("sp-overlay"), import("./chunk-
|
|
3177
|
+
return this.dependencyManager.add("sp-overlay"), import("./chunk-JCRICTXR.js"), b`
|
|
3178
3178
|
<sp-overlay
|
|
3179
3179
|
@slottable-request=${this.handleSlottableRequest}
|
|
3180
3180
|
@beforetoggle=${this.handleBeforetoggle}
|
|
@@ -3255,7 +3255,7 @@ var PickerBase = class extends SizedMixin(ExpandableElement, { noDefaultSize: tr
|
|
|
3255
3255
|
const t14 = b`
|
|
3256
3256
|
${this.dismissHelper} ${e14} ${this.dismissHelper}
|
|
3257
3257
|
`;
|
|
3258
|
-
return this.isMobile.matches && !this.forcePopover ? (this.dependencyManager.add("sp-tray"), import("./chunk-
|
|
3258
|
+
return this.isMobile.matches && !this.forcePopover ? (this.dependencyManager.add("sp-tray"), import("./chunk-LR5GBIK7.js"), b`
|
|
3259
3259
|
<sp-tray
|
|
3260
3260
|
id="popover"
|
|
3261
3261
|
role="presentation"
|
|
@@ -3488,7 +3488,7 @@ var Picker = class extends SizedMixin(ExpandableElement, { noDefaultSize: true }
|
|
|
3488
3488
|
`;
|
|
3489
3489
|
}
|
|
3490
3490
|
renderLoader() {
|
|
3491
|
-
return import("./chunk-
|
|
3491
|
+
return import("./chunk-N27WNL5Q.js"), b`
|
|
3492
3492
|
<sp-progress-circle
|
|
3493
3493
|
size="s"
|
|
3494
3494
|
indeterminate
|
|
@@ -3549,7 +3549,7 @@ var Picker = class extends SizedMixin(ExpandableElement, { noDefaultSize: true }
|
|
|
3549
3549
|
renderOverlay(e14) {
|
|
3550
3550
|
var s9;
|
|
3551
3551
|
const t14 = this.renderContainer(e14);
|
|
3552
|
-
return this.dependencyManager.add("sp-overlay"), import("./chunk-
|
|
3552
|
+
return this.dependencyManager.add("sp-overlay"), import("./chunk-JCRICTXR.js"), b`
|
|
3553
3553
|
<sp-overlay
|
|
3554
3554
|
@slottable-request=${this.handleSlottableRequest}
|
|
3555
3555
|
@beforetoggle=${this.handleBeforetoggle}
|
|
@@ -3630,7 +3630,7 @@ var Picker = class extends SizedMixin(ExpandableElement, { noDefaultSize: true }
|
|
|
3630
3630
|
const t14 = b`
|
|
3631
3631
|
${this.dismissHelper} ${e14} ${this.dismissHelper}
|
|
3632
3632
|
`;
|
|
3633
|
-
return this.isMobile.matches && !this.forcePopover ? (this.dependencyManager.add("sp-tray"), import("./chunk-
|
|
3633
|
+
return this.isMobile.matches && !this.forcePopover ? (this.dependencyManager.add("sp-tray"), import("./chunk-LR5GBIK7.js"), b`
|
|
3634
3634
|
<sp-tray
|
|
3635
3635
|
id="popover"
|
|
3636
3636
|
role="presentation"
|
|
@@ -3915,7 +3915,7 @@ var ActionMenu = class extends ObserveSlotPresence(ObserveSlotText(SizedMixin(Ex
|
|
|
3915
3915
|
`;
|
|
3916
3916
|
}
|
|
3917
3917
|
renderLoader() {
|
|
3918
|
-
return import("./chunk-
|
|
3918
|
+
return import("./chunk-N27WNL5Q.js"), b`
|
|
3919
3919
|
<sp-progress-circle
|
|
3920
3920
|
size="s"
|
|
3921
3921
|
indeterminate
|
|
@@ -3948,7 +3948,7 @@ var ActionMenu = class extends ObserveSlotPresence(ObserveSlotText(SizedMixin(Ex
|
|
|
3948
3948
|
renderOverlay(e14) {
|
|
3949
3949
|
var s9;
|
|
3950
3950
|
const t14 = this.renderContainer(e14);
|
|
3951
|
-
return this.dependencyManager.add("sp-overlay"), import("./chunk-
|
|
3951
|
+
return this.dependencyManager.add("sp-overlay"), import("./chunk-JCRICTXR.js"), b`
|
|
3952
3952
|
<sp-overlay
|
|
3953
3953
|
@slottable-request=${this.handleSlottableRequest}
|
|
3954
3954
|
@beforetoggle=${this.handleBeforetoggle}
|
|
@@ -4027,7 +4027,7 @@ var ActionMenu = class extends ObserveSlotPresence(ObserveSlotText(SizedMixin(Ex
|
|
|
4027
4027
|
const t14 = b`
|
|
4028
4028
|
${this.dismissHelper} ${e14} ${this.dismissHelper}
|
|
4029
4029
|
`;
|
|
4030
|
-
return this.isMobile.matches && !this.forcePopover ? (this.dependencyManager.add("sp-tray"), import("./chunk-
|
|
4030
|
+
return this.isMobile.matches && !this.forcePopover ? (this.dependencyManager.add("sp-tray"), import("./chunk-LR5GBIK7.js"), b`
|
|
4031
4031
|
<sp-tray
|
|
4032
4032
|
id="popover"
|
|
4033
4033
|
role="presentation"
|
|
@@ -4305,7 +4305,7 @@ var TruncatedValueTooltipController = class {
|
|
|
4305
4305
|
return this.refreshTruncationState();
|
|
4306
4306
|
}
|
|
4307
4307
|
async ensureTooltipDeps() {
|
|
4308
|
-
this._tooltipDepsLoaded || (await Promise.all([import("./chunk-
|
|
4308
|
+
this._tooltipDepsLoaded || (await Promise.all([import("./chunk-JCRICTXR.js"), import("./chunk-MJOCPOXZ.js")]), this._tooltipDepsLoaded = true, Promise.resolve().then(() => {
|
|
4309
4309
|
this.host.requestUpdate(truncatedValueTooltipUpdatedSymbol, false);
|
|
4310
4310
|
}));
|
|
4311
4311
|
}
|
|
@@ -4995,6 +4995,49 @@ var IconContrast = class extends IconBase {
|
|
|
4995
4995
|
// node_modules/@spectrum-web-components/icons-workflow/icons/sp-icon-contrast.js
|
|
4996
4996
|
defineElement("sp-icon-contrast", IconContrast);
|
|
4997
4997
|
|
|
4998
|
+
// node_modules/@spectrum-web-components/icons-workflow/src/icons-s2/Edit.js
|
|
4999
|
+
var EditIcon = ({ width: t14 = 24, height: l10 = 24, hidden: e14 = false, title: r13 = "Edit" } = {}) => tag2`<svg
|
|
5000
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5001
|
+
width="${t14}"
|
|
5002
|
+
height="${l10}"
|
|
5003
|
+
viewBox="0 0 20 20"
|
|
5004
|
+
aria-hidden=${e14 ? "true" : "false"}
|
|
5005
|
+
role="img"
|
|
5006
|
+
fill="currentColor"
|
|
5007
|
+
aria-label="${r13}"
|
|
5008
|
+
>
|
|
5009
|
+
<path
|
|
5010
|
+
d="m17.78076,1.75684c-1.27197-1.04102-3.22705-.89844-4.4502.32324L3.07764,12.33398c-.32031.31934-.55859.7168-.68896,1.15039l-1.38428,4.58398c-.08008.26465-.00781.55176.1875.74707.14258.14258.33447.21973.53027.21973.07227,0,.14551-.01074.2168-.03223l4.58252-1.38379c.43359-.12988.83154-.36816,1.15088-.68848,0,0,10.16846-10.16797,10.35547-10.35547.64795-.64746.99316-1.54492.94775-2.45996-.0459-.91504-.48145-1.77539-1.19482-2.3584ZM2.84473,17.16309l.97998-3.24609c.02716-.09033.06714-.17578.11377-.25732l2.40869,2.40918c-.08154.04639-.16718.08643-.25781.11377l-3.24463.98047Zm14.12158-11.64746c-.15472.15552-7.09985,7.1001-9.52545,9.52588l-2.47461-2.4751L14.39111,3.14062c.38623-.38672.896-.58594,1.38965-.58594.38086,0,.75244.11914,1.05029.3623.3916.32129.62109.77246.646,1.27246.0249.49316-.16113.97656-.51074,1.32617Z"
|
|
5011
|
+
fill="currentColor"
|
|
5012
|
+
/>
|
|
5013
|
+
</svg>`;
|
|
5014
|
+
|
|
5015
|
+
// node_modules/@spectrum-web-components/icons-workflow/src/icons/Edit.js
|
|
5016
|
+
var EditIcon2 = ({ width: t14 = 24, height: e14 = 24, hidden: a11 = false, title: l10 = "Edit" } = {}) => tag2`<svg
|
|
5017
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5018
|
+
height="${e14}"
|
|
5019
|
+
viewBox="0 0 36 36"
|
|
5020
|
+
width="${t14}"
|
|
5021
|
+
aria-hidden=${a11 ? "true" : "false"}
|
|
5022
|
+
role="img"
|
|
5023
|
+
fill="currentColor"
|
|
5024
|
+
aria-label="${l10}"
|
|
5025
|
+
>
|
|
5026
|
+
<path
|
|
5027
|
+
d="M33.567 8.2 27.8 2.432a1.215 1.215 0 0 0-.866-.353H26.9a1.371 1.371 0 0 0-.927.406L5.084 23.372a.99.99 0 0 0-.251.422L2.055 33.1c-.114.377.459.851.783.851a.251.251 0 0 0 .062-.007c.276-.063 7.866-2.344 9.311-2.778a.972.972 0 0 0 .414-.249l20.888-20.889a1.372 1.372 0 0 0 .4-.883 1.221 1.221 0 0 0-.346-.945ZM11.4 29.316c-2.161.649-4.862 1.465-6.729 2.022l2.009-6.73Z"
|
|
5028
|
+
/>
|
|
5029
|
+
</svg>`;
|
|
5030
|
+
|
|
5031
|
+
// node_modules/@spectrum-web-components/icons-workflow/src/elements/IconEdit.js
|
|
5032
|
+
var IconEdit = class extends IconBase {
|
|
5033
|
+
render() {
|
|
5034
|
+
return setCustomTemplateLiteralTag2(b), this.spectrumVersion === 2 ? EditIcon({ hidden: !this.label, title: this.label }) : EditIcon2({ hidden: !this.label, title: this.label });
|
|
5035
|
+
}
|
|
5036
|
+
};
|
|
5037
|
+
|
|
5038
|
+
// node_modules/@spectrum-web-components/icons-workflow/icons/sp-icon-edit.js
|
|
5039
|
+
defineElement("sp-icon-edit", IconEdit);
|
|
5040
|
+
|
|
4998
5041
|
// node_modules/@spectrum-web-components/icons-workflow/src/icons-s2/Filter.js
|
|
4999
5042
|
var FilterIcon = ({ width: l10 = 24, height: t14 = 24, hidden: e14 = false, title: r13 = "Filter" } = {}) => tag2`<svg
|
|
5000
5043
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -5245,6 +5288,50 @@ var IconLightbulb = class extends IconBase {
|
|
|
5245
5288
|
// node_modules/@spectrum-web-components/icons-workflow/icons/sp-icon-lightbulb.js
|
|
5246
5289
|
defineElement("sp-icon-lightbulb", IconLightbulb);
|
|
5247
5290
|
|
|
5291
|
+
// node_modules/@spectrum-web-components/icons-workflow/src/icons-s2/SaveFloppy.js
|
|
5292
|
+
var SaveFloppyIcon = ({ width: e14 = 24, height: t14 = 24, hidden: l10 = false, title: r13 = "Save Floppy" } = {}) => tag2`<svg
|
|
5293
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5294
|
+
width="${e14}"
|
|
5295
|
+
height="${t14}"
|
|
5296
|
+
viewBox="0 0 20 20"
|
|
5297
|
+
aria-hidden=${l10 ? "true" : "false"}
|
|
5298
|
+
role="img"
|
|
5299
|
+
fill="currentColor"
|
|
5300
|
+
aria-label="${r13}"
|
|
5301
|
+
>
|
|
5302
|
+
<path
|
|
5303
|
+
d="M17.41406,4.10352l-1.51758-1.51758c-.37793-.37793-.87988-.58594-1.41406-.58594H4.25c-1.24072,0-2.25,1.00977-2.25,2.25v11.5c0,1.24023,1.00928,2.25,2.25,2.25h11.5c1.24072,0,2.25-1.00977,2.25-2.25V5.51758c0-.52637-.21338-1.04199-.58594-1.41406ZM7.75,3.5h4.5v3h-4.5v-3ZM13.25,16.5h-6.5v-4.5h6.5v4.5ZM16.5,15.75c0,.41309-.33643.75-.75.75h-1v-4.5c0-.82715-.67285-1.5-1.5-1.5h-6.5c-.82715,0-1.5.67285-1.5,1.5v4.5h-1c-.41357,0-.75-.33691-.75-.75V4.25c0-.41309.33643-.75.75-.75h2v3c0,.82715.67285,1.5,1.5,1.5h4.5c.82715,0,1.5-.67285,1.5-1.5v-3h.73242c.1333,0,.25879.05176.35352.14648l1.51758,1.51758c.09326.09277.14648.22168.14648.35352v10.23242Z"
|
|
5304
|
+
fill="currentColor"
|
|
5305
|
+
/>
|
|
5306
|
+
</svg>`;
|
|
5307
|
+
|
|
5308
|
+
// node_modules/@spectrum-web-components/icons-workflow/src/icons/SaveFloppy.js
|
|
5309
|
+
var SaveFloppyIcon2 = ({ width: e14 = 24, height: t14 = 24, hidden: a11 = false, title: l10 = "Save Floppy" } = {}) => tag2`<svg
|
|
5310
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
5311
|
+
height="${t14}"
|
|
5312
|
+
viewBox="0 0 36 36"
|
|
5313
|
+
width="${e14}"
|
|
5314
|
+
aria-hidden=${a11 ? "true" : "false"}
|
|
5315
|
+
role="img"
|
|
5316
|
+
fill="currentColor"
|
|
5317
|
+
aria-label="${l10}"
|
|
5318
|
+
>
|
|
5319
|
+
<path d="M20 4h4v6h-4z" />
|
|
5320
|
+
<path
|
|
5321
|
+
d="M31.708 8.293s-4.015-4-4.146-4.114A.969.969 0 0 0 27 4h-1v8H14V4H5a1 1 0 0 0-1 1v26a1 1 0 0 0 1 1h26a1 1 0 0 0 1-1V9a1 1 0 0 0-.292-.707ZM26 30H10V16h16Z"
|
|
5322
|
+
/>
|
|
5323
|
+
</svg>`;
|
|
5324
|
+
|
|
5325
|
+
// node_modules/@spectrum-web-components/icons-workflow/src/elements/IconSaveFloppy.js
|
|
5326
|
+
var IconSaveFloppy = class extends IconBase {
|
|
5327
|
+
render() {
|
|
5328
|
+
return setCustomTemplateLiteralTag2(b), this.spectrumVersion === 2 ? SaveFloppyIcon({ hidden: !this.label, title: this.label }) : SaveFloppyIcon2({ hidden: !this.label, title: this.label });
|
|
5329
|
+
}
|
|
5330
|
+
};
|
|
5331
|
+
|
|
5332
|
+
// node_modules/@spectrum-web-components/icons-workflow/icons/sp-icon-save-floppy.js
|
|
5333
|
+
defineElement("sp-icon-save-floppy", IconSaveFloppy);
|
|
5334
|
+
|
|
5248
5335
|
// node_modules/@spectrum-web-components/icons-workflow/src/icons-s2/GlobeGrid.js
|
|
5249
5336
|
var GlobeGridIcon = ({ width: e14 = 24, height: t14 = 24, hidden: r13 = false, title: l10 = "Globe Grid" } = {}) => tag2`<svg
|
|
5250
5337
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -6204,13 +6291,17 @@ var SliccFileView = class extends ThemedElement {
|
|
|
6204
6291
|
...ThemedElement.properties,
|
|
6205
6292
|
path: {},
|
|
6206
6293
|
text: { state: true },
|
|
6207
|
-
missing: { state: true }
|
|
6294
|
+
missing: { state: true },
|
|
6295
|
+
draft: { state: true },
|
|
6296
|
+
saving: { state: true }
|
|
6208
6297
|
};
|
|
6209
6298
|
constructor() {
|
|
6210
6299
|
super();
|
|
6211
6300
|
this.path = "";
|
|
6212
6301
|
this.text = null;
|
|
6213
6302
|
this.missing = false;
|
|
6303
|
+
this.draft = null;
|
|
6304
|
+
this.saving = false;
|
|
6214
6305
|
}
|
|
6215
6306
|
static styles = [
|
|
6216
6307
|
shared,
|
|
@@ -6220,8 +6311,81 @@ var SliccFileView = class extends ThemedElement {
|
|
|
6220
6311
|
flex: 1;
|
|
6221
6312
|
min-height: 0;
|
|
6222
6313
|
}
|
|
6314
|
+
textarea {
|
|
6315
|
+
flex: 1;
|
|
6316
|
+
min-height: 0;
|
|
6317
|
+
margin: 0;
|
|
6318
|
+
padding: 8px 12px;
|
|
6319
|
+
border: 0;
|
|
6320
|
+
resize: none;
|
|
6321
|
+
outline: none;
|
|
6322
|
+
background: var(--spectrum-background-layer-2-color);
|
|
6323
|
+
color: var(--spectrum-neutral-content-color-default);
|
|
6324
|
+
font-family: var(--spectrum-code-font-family-stack, ui-monospace, monospace);
|
|
6325
|
+
font-size: 13px;
|
|
6326
|
+
line-height: 20px;
|
|
6327
|
+
tab-size: 2;
|
|
6328
|
+
}
|
|
6223
6329
|
`
|
|
6224
6330
|
];
|
|
6331
|
+
edit() {
|
|
6332
|
+
this.draft = this.text ?? "";
|
|
6333
|
+
this.focusOn("textarea");
|
|
6334
|
+
}
|
|
6335
|
+
cancel() {
|
|
6336
|
+
this.draft = null;
|
|
6337
|
+
}
|
|
6338
|
+
async save() {
|
|
6339
|
+
const model = this.model;
|
|
6340
|
+
if (!model || this.draft === null) return;
|
|
6341
|
+
const draft = this.draft;
|
|
6342
|
+
this.saving = true;
|
|
6343
|
+
try {
|
|
6344
|
+
await model.files.write(this.path, draft);
|
|
6345
|
+
this.text = draft;
|
|
6346
|
+
this.missing = false;
|
|
6347
|
+
if (this.draft === draft) this.draft = null;
|
|
6348
|
+
} finally {
|
|
6349
|
+
this.saving = false;
|
|
6350
|
+
}
|
|
6351
|
+
}
|
|
6352
|
+
#keydown(event) {
|
|
6353
|
+
if (event.key === "Escape") {
|
|
6354
|
+
event.preventDefault();
|
|
6355
|
+
this.cancel();
|
|
6356
|
+
} else if (event.key === "s" && (event.metaKey || event.ctrlKey)) {
|
|
6357
|
+
event.preventDefault();
|
|
6358
|
+
void this.save();
|
|
6359
|
+
}
|
|
6360
|
+
}
|
|
6361
|
+
#actions() {
|
|
6362
|
+
if (this.draft === null) {
|
|
6363
|
+
return b`<sp-action-button size="s" quiet ?disabled=${this.text === null} @click=${() => this.edit()}>
|
|
6364
|
+
<sp-icon-edit slot="icon"></sp-icon-edit>Edit
|
|
6365
|
+
</sp-action-button>`;
|
|
6366
|
+
}
|
|
6367
|
+
return b`<sp-action-button size="s" quiet @click=${() => this.cancel()}>Cancel</sp-action-button>
|
|
6368
|
+
<sp-action-button size="s" ?disabled=${this.saving} @click=${() => this.save()}>
|
|
6369
|
+
<sp-icon-save-floppy slot="icon"></sp-icon-save-floppy>Save
|
|
6370
|
+
</sp-action-button>`;
|
|
6371
|
+
}
|
|
6372
|
+
#body(change) {
|
|
6373
|
+
if (this.draft !== null) {
|
|
6374
|
+
return b`<textarea
|
|
6375
|
+
aria-label=${`Edit ${this.path}`}
|
|
6376
|
+
spellcheck="false"
|
|
6377
|
+
.value=${this.draft}
|
|
6378
|
+
@input=${(event) => {
|
|
6379
|
+
this.draft = event.target.value;
|
|
6380
|
+
}}
|
|
6381
|
+
@keydown=${this.#keydown}
|
|
6382
|
+
></textarea>`;
|
|
6383
|
+
}
|
|
6384
|
+
if (this.missing) {
|
|
6385
|
+
return b`<div class="note">This file doesn’t exist${change ? " any more" : ""}.</div>`;
|
|
6386
|
+
}
|
|
6387
|
+
return b`<slicc-code-view path=${this.path} color=${this.color} .contents=${this.text}></slicc-code-view>`;
|
|
6388
|
+
}
|
|
6225
6389
|
subscribe(model) {
|
|
6226
6390
|
void this.#read(model);
|
|
6227
6391
|
return [
|
|
@@ -6251,8 +6415,9 @@ var SliccFileView = class extends ThemedElement {
|
|
|
6251
6415
|
<sp-action-button size="s" quiet @click=${() => request(this, "open-diff", this.path)}>
|
|
6252
6416
|
<sp-icon-compare slot="icon"></sp-icon-compare>Diff
|
|
6253
6417
|
</sp-action-button>` : A}
|
|
6418
|
+
${this.#actions()}
|
|
6254
6419
|
</div>
|
|
6255
|
-
${this
|
|
6420
|
+
${this.#body(change)}`;
|
|
6256
6421
|
}
|
|
6257
6422
|
};
|
|
6258
6423
|
|
|
@@ -6354,8 +6519,8 @@ function screenClass(width) {
|
|
|
6354
6519
|
if (width < 1200) return "tablet";
|
|
6355
6520
|
return "desktop";
|
|
6356
6521
|
}
|
|
6357
|
-
function surface(id) {
|
|
6358
|
-
return
|
|
6522
|
+
function surface(id, items = surfaces) {
|
|
6523
|
+
return items.find((candidate) => candidate.id === id);
|
|
6359
6524
|
}
|
|
6360
6525
|
function create(tag3, model, params = {}) {
|
|
6361
6526
|
const element2 = document.createElement(tag3);
|
|
@@ -6422,18 +6587,18 @@ function openDocument(dock, kind, path, screen) {
|
|
|
6422
6587
|
dock.focusPanel(id);
|
|
6423
6588
|
return id;
|
|
6424
6589
|
}
|
|
6425
|
-
function defaultLayout(dock, screen) {
|
|
6590
|
+
function defaultLayout(dock, screen, items = surfaces) {
|
|
6426
6591
|
dock.clear();
|
|
6427
6592
|
const order = ["center", "left", "right"];
|
|
6428
6593
|
for (const side of order) {
|
|
6429
|
-
for (const item2 of
|
|
6594
|
+
for (const item2 of items) {
|
|
6430
6595
|
if (item2.side === side && item2.open.includes(screen)) openSurface(dock, item2, screen);
|
|
6431
6596
|
}
|
|
6432
6597
|
}
|
|
6433
6598
|
dock.api.getPanel("chat")?.api.setActive();
|
|
6434
6599
|
}
|
|
6435
|
-
function closed(dock) {
|
|
6436
|
-
return
|
|
6600
|
+
function closed(dock, items = surfaces) {
|
|
6601
|
+
return items.filter((item2) => !dock.has(item2.id));
|
|
6437
6602
|
}
|
|
6438
6603
|
function sprinkleSurface(sprinkle) {
|
|
6439
6604
|
return {
|
|
@@ -6468,7 +6633,11 @@ function railIcon(icon) {
|
|
|
6468
6633
|
return b`<slicc-lucide slot="icon" name=${icon}></slicc-lucide>`;
|
|
6469
6634
|
}
|
|
6470
6635
|
var SliccApp = class extends ThemedElement {
|
|
6471
|
-
static properties = {
|
|
6636
|
+
static properties = {
|
|
6637
|
+
...ThemedElement.properties,
|
|
6638
|
+
screen: { reflect: true },
|
|
6639
|
+
surfaces: { attribute: false }
|
|
6640
|
+
};
|
|
6472
6641
|
storage = globalThis.localStorage ?? null;
|
|
6473
6642
|
layoutKey = "slicc-ui.layout";
|
|
6474
6643
|
#fontBase = defaultFontBase;
|
|
@@ -6478,6 +6647,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
6478
6647
|
constructor() {
|
|
6479
6648
|
super();
|
|
6480
6649
|
this.screen = screenClass(globalThis.innerWidth ?? 1280);
|
|
6650
|
+
this.surfaces = surfaces;
|
|
6481
6651
|
}
|
|
6482
6652
|
static styles = [
|
|
6483
6653
|
shared,
|
|
@@ -6665,7 +6835,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
6665
6835
|
const dock = this.dock;
|
|
6666
6836
|
this.#saving = false;
|
|
6667
6837
|
dock.factories = {
|
|
6668
|
-
...Object.fromEntries(surfaces.map((item2) => [item2.id, () => create(item2.tag, model)])),
|
|
6838
|
+
...Object.fromEntries(this.surfaces.map((item2) => [item2.id, () => create(item2.tag, model)])),
|
|
6669
6839
|
...Object.fromEntries(
|
|
6670
6840
|
Object.entries(documents).map(([kind, document2]) => [
|
|
6671
6841
|
kind,
|
|
@@ -6674,12 +6844,18 @@ var SliccApp = class extends ThemedElement {
|
|
|
6674
6844
|
),
|
|
6675
6845
|
sprinkle: (params) => create("slicc-sprinkle", model, params)
|
|
6676
6846
|
};
|
|
6677
|
-
const
|
|
6678
|
-
|
|
6847
|
+
const saved = this.#saved();
|
|
6848
|
+
const restored = this.#offered(saved, dock.factories) && dock.restore(saved);
|
|
6849
|
+
if (!restored) defaultLayout(dock, this.screen, this.surfaces);
|
|
6679
6850
|
this.#started = this.screen;
|
|
6680
6851
|
this.#saving = true;
|
|
6681
6852
|
this.#save();
|
|
6682
6853
|
}
|
|
6854
|
+
#offered(layout, factories) {
|
|
6855
|
+
return Object.values(layout?.panels ?? {}).every(
|
|
6856
|
+
(panel) => (panel.contentComponent ?? "") in factories
|
|
6857
|
+
);
|
|
6858
|
+
}
|
|
6683
6859
|
get storageKey() {
|
|
6684
6860
|
return `${this.layoutKey}.${this.screen}`;
|
|
6685
6861
|
}
|
|
@@ -6695,7 +6871,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
6695
6871
|
this.requestUpdate();
|
|
6696
6872
|
}
|
|
6697
6873
|
resetLayout() {
|
|
6698
|
-
defaultLayout(this.dock, this.screen);
|
|
6874
|
+
defaultLayout(this.dock, this.screen, this.surfaces);
|
|
6699
6875
|
this.#save();
|
|
6700
6876
|
}
|
|
6701
6877
|
show(id) {
|
|
@@ -6704,7 +6880,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
6704
6880
|
openSprinkle(this.dock, sprinkle, this.screen);
|
|
6705
6881
|
return;
|
|
6706
6882
|
}
|
|
6707
|
-
const item2 = surface(id);
|
|
6883
|
+
const item2 = surface(id, this.surfaces);
|
|
6708
6884
|
if (!item2) return;
|
|
6709
6885
|
openSurface(this.dock, item2, this.screen);
|
|
6710
6886
|
this.dock.focusPanel(id);
|
|
@@ -6717,7 +6893,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
6717
6893
|
#rails() {
|
|
6718
6894
|
const dock = this.renderRoot.querySelector("slicc-dock");
|
|
6719
6895
|
const sprinkles = (this.model?.sprinkles.list() ?? []).filter((sprinkle) => !sprinkle.inline).map(sprinkleSurface).filter((item2) => !dock?.has(item2.id));
|
|
6720
|
-
const shut = dock && this.#started ? [...sprinkles, ...closed(dock)] : [];
|
|
6896
|
+
const shut = dock && this.#started ? [...sprinkles, ...closed(dock, this.surfaces)] : [];
|
|
6721
6897
|
const phone = this.screen === "phone";
|
|
6722
6898
|
return {
|
|
6723
6899
|
left: this.#rail(phone ? [] : shut.filter((item2) => item2.side !== "right"), "left"),
|
|
@@ -6738,7 +6914,7 @@ var SliccApp = class extends ThemedElement {
|
|
|
6738
6914
|
#keydown = (event) => {
|
|
6739
6915
|
if (!event.altKey || event.ctrlKey || event.metaKey) return;
|
|
6740
6916
|
const digit = event.code.match(/^Digit([1-9])$/)?.[1] ?? event.key.match(/^[1-9]$/)?.[0];
|
|
6741
|
-
const surface2 = digit ? surfaces[Number(digit) - 1] : void 0;
|
|
6917
|
+
const surface2 = digit ? this.surfaces[Number(digit) - 1] : void 0;
|
|
6742
6918
|
if (surface2) {
|
|
6743
6919
|
event.preventDefault();
|
|
6744
6920
|
this.show(surface2.id);
|
|
@@ -6760,21 +6936,33 @@ var SliccApp = class extends ThemedElement {
|
|
|
6760
6936
|
${surface2.title}<kbd slot="value">Alt+${index + 1}</kbd>
|
|
6761
6937
|
</sp-menu-item>`;
|
|
6762
6938
|
}
|
|
6763
|
-
#
|
|
6939
|
+
#offers(id) {
|
|
6940
|
+
return this.surfaces.some((item2) => item2.id === id);
|
|
6941
|
+
}
|
|
6942
|
+
#agentStatus() {
|
|
6943
|
+
if (!this.#offers("chat")) return A;
|
|
6764
6944
|
const model = this.model;
|
|
6765
6945
|
const agent = model?.agent.list().find((candidate) => candidate.id === model.agent.active());
|
|
6766
6946
|
const label = model?.settings.models().find((option2) => option2.id === agent?.model)?.label;
|
|
6767
|
-
|
|
6768
|
-
return b`<footer role="status" aria-label="Status">
|
|
6769
|
-
${agent ? b`<span class="item">${dot(agent.status)}${agent.name} · ${agent.status}</span>
|
|
6947
|
+
return agent ? b`<span class="item">${dot(agent.status)}${agent.name} · ${agent.status}</span>
|
|
6770
6948
|
<span>${label ?? agent.model}</span>
|
|
6771
6949
|
<span class="item" title="Context fill"
|
|
6772
6950
|
>Context <span class="bar"><span style=${`width: ${percent(agent.contextFill)}`}></span></span>
|
|
6773
6951
|
${percent(agent.contextFill)}</span
|
|
6774
|
-
>` : b`<span>No agent</span
|
|
6775
|
-
|
|
6952
|
+
>` : b`<span>No agent</span>`;
|
|
6953
|
+
}
|
|
6954
|
+
#changes() {
|
|
6955
|
+
if (!this.#offers("changes")) return A;
|
|
6956
|
+
const changes = this.model?.files.changes().length ?? 0;
|
|
6957
|
+
return b`<button class="link" @click=${() => this.show("changes")}>${changes} ${changes === 1 ? "change" : "changes"}</button>`;
|
|
6958
|
+
}
|
|
6959
|
+
#status() {
|
|
6960
|
+
return b`<footer role="status" aria-label="Status">
|
|
6961
|
+
${this.#agentStatus()}
|
|
6962
|
+
${this.#changes()}
|
|
6963
|
+
<slot name="status"></slot>
|
|
6776
6964
|
<span class="spacer"></span>
|
|
6777
|
-
<span class="hints"><kbd>F6</kbd> next group · <kbd>Alt+1–${Math.min(9, surfaces.length)}</kbd> panels · <kbd>Alt+Shift+T</kbd> theme</span>
|
|
6965
|
+
<span class="hints"><kbd>F6</kbd> next group · <kbd>Alt+1–${Math.min(9, this.surfaces.length)}</kbd> panels · <kbd>Alt+Shift+T</kbd> theme</span>
|
|
6778
6966
|
</footer>`;
|
|
6779
6967
|
}
|
|
6780
6968
|
render() {
|
|
@@ -6785,23 +6973,23 @@ var SliccApp = class extends ThemedElement {
|
|
|
6785
6973
|
<div class="shell">
|
|
6786
6974
|
<header>
|
|
6787
6975
|
<span class="brand">slicc</span>
|
|
6788
|
-
|
|
6976
|
+
${this.#offers("chat") ? b`<sp-picker size="s" label="Agent" value=${this.model?.agent.active() ?? ""} @change=${this.#pick}>
|
|
6789
6977
|
${agents.map(
|
|
6790
6978
|
(agent) => b`<sp-menu-item value=${agent.id}>${agent.kind === "scoop" ? `\u21B3 ${agent.name}` : agent.name}</sp-menu-item>`
|
|
6791
6979
|
)}
|
|
6792
|
-
</sp-picker
|
|
6980
|
+
</sp-picker>` : A}
|
|
6793
6981
|
<span class="spacer"></span>
|
|
6794
|
-
|
|
6982
|
+
${this.#offers("chat") ? b`<slicc-tray .model=${this.model}></slicc-tray>` : A}
|
|
6795
6983
|
<sp-action-menu size="s" quiet label="View" @change=${this.#view}>
|
|
6796
6984
|
<sp-icon-view-grid slot="icon"></sp-icon-view-grid>
|
|
6797
6985
|
<span slot="label">View</span>
|
|
6798
|
-
${surfaces.map((surface2, index) => this.#menuItem(surface2, index))}
|
|
6986
|
+
${this.surfaces.map((surface2, index) => this.#menuItem(surface2, index))}
|
|
6799
6987
|
<sp-menu-divider></sp-menu-divider>
|
|
6800
6988
|
<sp-menu-item value="reset">Reset layout</sp-menu-item>
|
|
6801
6989
|
</sp-action-menu>
|
|
6802
|
-
|
|
6990
|
+
${this.#offers("settings") ? b`<sp-action-button size="s" quiet label="Settings" title="Settings" @click=${() => this.show("settings")}>
|
|
6803
6991
|
<sp-icon-settings slot="icon"></sp-icon-settings>
|
|
6804
|
-
</sp-action-button
|
|
6992
|
+
</sp-action-button>` : A}
|
|
6805
6993
|
<sp-action-button
|
|
6806
6994
|
size="s"
|
|
6807
6995
|
quiet
|
|
@@ -10997,7 +11185,7 @@ var bundledLanguagesInfo = [
|
|
|
10997
11185
|
{
|
|
10998
11186
|
"id": "html",
|
|
10999
11187
|
"name": "HTML",
|
|
11000
|
-
"import": (() => import("./chunk-
|
|
11188
|
+
"import": (() => import("./chunk-FXM4K5WL.js"))
|
|
11001
11189
|
},
|
|
11002
11190
|
{
|
|
11003
11191
|
"id": "html-derivative",
|
|
@@ -61493,8 +61681,16 @@ var SliccFileTree = class extends HTMLElement {
|
|
|
61493
61681
|
return this.#paths;
|
|
61494
61682
|
}
|
|
61495
61683
|
set paths(value) {
|
|
61684
|
+
const expanded = this.#paths.length > 0 ? this.#expandedNow() : this.#expanded;
|
|
61496
61685
|
this.#paths = value;
|
|
61497
|
-
this.#tree?.resetPaths(value, { initialExpandedPaths:
|
|
61686
|
+
this.#tree?.resetPaths(value, { initialExpandedPaths: expanded });
|
|
61687
|
+
}
|
|
61688
|
+
#expandedNow() {
|
|
61689
|
+
const tree = this.#tree;
|
|
61690
|
+
return this.#paths.filter((path) => {
|
|
61691
|
+
const item2 = path.endsWith("/") ? tree?.getItem(path) : null;
|
|
61692
|
+
return !!item2 && "isExpanded" in item2 && item2.isExpanded();
|
|
61693
|
+
}).map((path) => path.slice(0, -1));
|
|
61498
61694
|
}
|
|
61499
61695
|
get gitStatus() {
|
|
61500
61696
|
return this.#status;
|