dsh-bash-terminal-ts 0.4.1 → 0.4.2

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.
@@ -16,20 +16,31 @@ var __copyProps = (to, from, except, desc) => {
16
16
  };
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
- // src/client.tsx
19
+ // src/client.jsx
20
20
  var client_exports = {};
21
21
  __export(client_exports, {
22
22
  apply: () => apply,
23
23
  inject: () => inject
24
24
  });
25
25
  module.exports = __toCommonJS(client_exports);
26
+ var import_react = require("react");
26
27
  var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
28
+ var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
27
29
  var import_jsx_runtime = require("react/jsx-runtime");
28
30
  var SETTINGS_NS = "settings.bash-terminal";
29
31
  var SETTINGS_NAMESPACE = "bash-terminal";
32
+ var SHELLS = ["powershell", "gitbash", "msys2", "wsl"];
33
+ var ROW_CSS = ".btRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.btRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.btTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.btDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.btSelector{background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.btSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.btChevron{flex:none}";
34
+ if (typeof document !== "undefined" && document.querySelector('style[data-plugin-css="bash-terminal-row"]') === null) {
35
+ const tag = document.createElement("style");
36
+ tag.dataset.plugin = "dsh-bash-terminal-ts";
37
+ tag.dataset.pluginCss = "bash-terminal-row";
38
+ tag.textContent = ROW_CSS;
39
+ document.head.appendChild(tag);
40
+ }
30
41
  var zh = {
31
42
  "shell.title": "\u9ED8\u8BA4\u7EC8\u7AEF",
32
- "shell.description": "shell \u5DE5\u5177\u6267\u884C\u547D\u4EE4\u65F6\u4F7F\u7528\u7684\u7EC8\u7AEF\uFF08\u7531\u4F60\u51B3\u5B9A\uFF0CAI \u65E0\u6CD5\u66F4\u6539\uFF09",
43
+ "shell.description": "shell \u5DE5\u5177\u6267\u884C\u547D\u4EE4\u65F6\u4F7F\u7528\u7684\u7EC8\u7AEF",
33
44
  "shell.powershell": "PowerShell",
34
45
  "shell.gitbash": "Git Bash",
35
46
  "shell.msys2": "MSYS2",
@@ -37,7 +48,7 @@ var zh = {
37
48
  };
38
49
  var en = {
39
50
  "shell.title": "Default terminal",
40
- "shell.description": "Terminal used by the shell tool (you control this; the AI cannot change it)",
51
+ "shell.description": "Terminal used by the shell tool",
41
52
  "shell.powershell": "PowerShell",
42
53
  "shell.gitbash": "Git Bash",
43
54
  "shell.msys2": "MSYS2",
@@ -47,49 +58,45 @@ var inject = ["slots", "locale", "settingsScope"];
47
58
  function ShellPreferenceRow({ t, useStore, setShell }) {
48
59
  const shell = useStore((s) => s.shell);
49
60
  const writable = useStore((s) => s.writable);
50
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
51
- "div",
52
- {
53
- style: {
54
- display: "flex",
55
- alignItems: "center",
56
- justifyContent: "space-between",
57
- gap: 16,
58
- padding: "12px 0"
59
- },
60
- children: [
61
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { minWidth: 0 }, children: [
62
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { fontSize: 14, fontWeight: 500, lineHeight: "22px", color: "var(--dsw-alias-label-primary, inherit)" }, children: t("shell.title") }),
63
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { fontSize: 12, lineHeight: "18px", opacity: 0.65 }, children: t("shell.description") })
64
- ] }),
65
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
66
- "select",
61
+ const [open, setOpen] = (0, import_react.useState)(false);
62
+ const items = SHELLS.map((id) => ({ id, label: t("shell." + id) }));
63
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "btRow", children: [
64
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "btRowText", children: [
65
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btTitle", children: t("shell.title") }),
66
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btDesc", children: t("shell.description") })
67
+ ] }),
68
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
69
+ import_dsh_client_ui_primitives.Menu,
70
+ {
71
+ open,
72
+ onClose: () => setOpen(false),
73
+ items,
74
+ selectedId: shell,
75
+ onSelect: (id) => {
76
+ setOpen(false);
77
+ setShell(id);
78
+ },
79
+ align: "end",
80
+ portal: true,
81
+ anchor: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
82
+ "button",
67
83
  {
68
- value: shell,
84
+ type: "button",
85
+ className: "btSelector",
86
+ "aria-haspopup": "menu",
87
+ "aria-expanded": open,
69
88
  disabled: !writable,
70
- onChange: (e) => setShell(e.target.value),
71
- style: {
72
- fontSize: 14,
73
- padding: "6px 10px",
74
- borderRadius: 8,
75
- border: "1px solid var(--dsw-alias-line-strong, #ccc)",
76
- background: "var(--dsw-alias-bg-layer-2, #fff)",
77
- color: "var(--dsw-alias-label-primary, inherit)",
78
- outline: "none",
79
- cursor: writable ? "pointer" : "not-allowed",
80
- maxWidth: 180
81
- },
89
+ onClick: () => setOpen(!open),
90
+ style: !writable ? { opacity: 0.5, cursor: "not-allowed" } : void 0,
82
91
  children: [
83
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "powershell", children: t("shell.powershell") }),
84
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "gitbash", children: t("shell.gitbash") }),
85
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "msys2", children: t("shell.msys2") }),
86
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "wsl", children: t("shell.wsl") })
92
+ t("shell." + shell),
93
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconChevronDownOutline14, { className: "btChevron" })
87
94
  ]
88
95
  }
89
96
  )
90
- ]
91
- }
92
- );
97
+ }
98
+ )
99
+ ] });
93
100
  }
94
101
  function apply(ctx) {
95
102
  ctx.effect(() => ctx.locale.register(SETTINGS_NS, { zh, en }), "bash-terminal: settings dictionaries");
@@ -106,9 +113,7 @@ function apply(ctx) {
106
113
  }
107
114
  });
108
115
  let bound;
109
- const push = (snap) => {
110
- bound?.sync(snap.value?.defaultShell, snap.revision, snap.writable);
111
- };
116
+ const push = (snap) => bound?.sync(snap.value?.defaultShell, snap.revision, snap.writable);
112
117
  ctx.slots.inject(
113
118
  "settings.general.item",
114
119
  () => ctx.slots.register(
package/dist/client.js CHANGED
@@ -21,20 +21,31 @@ var __copyProps = (to, from, except, desc) => {
21
21
  };
22
22
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
23
 
24
- // src/client.tsx
24
+ // src/client.jsx
25
25
  var client_exports = {};
26
26
  __export(client_exports, {
27
27
  apply: () => apply,
28
28
  inject: () => inject
29
29
  });
30
30
  module.exports = __toCommonJS(client_exports);
31
+ var import_react = require("react");
31
32
  var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
33
+ var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
32
34
  var import_jsx_runtime = require("react/jsx-runtime");
33
35
  var SETTINGS_NS = "settings.bash-terminal";
34
36
  var SETTINGS_NAMESPACE = "bash-terminal";
37
+ var SHELLS = ["powershell", "gitbash", "msys2", "wsl"];
38
+ var ROW_CSS = ".btRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.btRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.btTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.btDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.btSelector{background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.btSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.btChevron{flex:none}";
39
+ if (typeof document !== "undefined" && document.querySelector('style[data-plugin-css="bash-terminal-row"]') === null) {
40
+ const tag = document.createElement("style");
41
+ tag.dataset.plugin = "dsh-bash-terminal-ts";
42
+ tag.dataset.pluginCss = "bash-terminal-row";
43
+ tag.textContent = ROW_CSS;
44
+ document.head.appendChild(tag);
45
+ }
35
46
  var zh = {
36
47
  "shell.title": "\u9ED8\u8BA4\u7EC8\u7AEF",
37
- "shell.description": "shell \u5DE5\u5177\u6267\u884C\u547D\u4EE4\u65F6\u4F7F\u7528\u7684\u7EC8\u7AEF\uFF08\u7531\u4F60\u51B3\u5B9A\uFF0CAI \u65E0\u6CD5\u66F4\u6539\uFF09",
48
+ "shell.description": "shell \u5DE5\u5177\u6267\u884C\u547D\u4EE4\u65F6\u4F7F\u7528\u7684\u7EC8\u7AEF",
38
49
  "shell.powershell": "PowerShell",
39
50
  "shell.gitbash": "Git Bash",
40
51
  "shell.msys2": "MSYS2",
@@ -42,7 +53,7 @@ var zh = {
42
53
  };
43
54
  var en = {
44
55
  "shell.title": "Default terminal",
45
- "shell.description": "Terminal used by the shell tool (you control this; the AI cannot change it)",
56
+ "shell.description": "Terminal used by the shell tool",
46
57
  "shell.powershell": "PowerShell",
47
58
  "shell.gitbash": "Git Bash",
48
59
  "shell.msys2": "MSYS2",
@@ -52,49 +63,45 @@ var inject = ["slots", "locale", "settingsScope"];
52
63
  function ShellPreferenceRow({ t, useStore, setShell }) {
53
64
  const shell = useStore((s) => s.shell);
54
65
  const writable = useStore((s) => s.writable);
55
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
56
- "div",
57
- {
58
- style: {
59
- display: "flex",
60
- alignItems: "center",
61
- justifyContent: "space-between",
62
- gap: 16,
63
- padding: "12px 0"
64
- },
65
- children: [
66
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { minWidth: 0 }, children: [
67
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { fontSize: 14, fontWeight: 500, lineHeight: "22px", color: "var(--dsw-alias-label-primary, inherit)" }, children: t("shell.title") }),
68
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { style: { fontSize: 12, lineHeight: "18px", opacity: 0.65 }, children: t("shell.description") })
69
- ] }),
70
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
71
- "select",
66
+ const [open, setOpen] = (0, import_react.useState)(false);
67
+ const items = SHELLS.map((id) => ({ id, label: t("shell." + id) }));
68
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "btRow", children: [
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "btRowText", children: [
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btTitle", children: t("shell.title") }),
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btDesc", children: t("shell.description") })
72
+ ] }),
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
74
+ import_dsh_client_ui_primitives.Menu,
75
+ {
76
+ open,
77
+ onClose: () => setOpen(false),
78
+ items,
79
+ selectedId: shell,
80
+ onSelect: (id) => {
81
+ setOpen(false);
82
+ setShell(id);
83
+ },
84
+ align: "end",
85
+ portal: true,
86
+ anchor: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
87
+ "button",
72
88
  {
73
- value: shell,
89
+ type: "button",
90
+ className: "btSelector",
91
+ "aria-haspopup": "menu",
92
+ "aria-expanded": open,
74
93
  disabled: !writable,
75
- onChange: (e) => setShell(e.target.value),
76
- style: {
77
- fontSize: 14,
78
- padding: "6px 10px",
79
- borderRadius: 8,
80
- border: "1px solid var(--dsw-alias-line-strong, #ccc)",
81
- background: "var(--dsw-alias-bg-layer-2, #fff)",
82
- color: "var(--dsw-alias-label-primary, inherit)",
83
- outline: "none",
84
- cursor: writable ? "pointer" : "not-allowed",
85
- maxWidth: 180
86
- },
94
+ onClick: () => setOpen(!open),
95
+ style: !writable ? { opacity: 0.5, cursor: "not-allowed" } : void 0,
87
96
  children: [
88
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "powershell", children: t("shell.powershell") }),
89
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "gitbash", children: t("shell.gitbash") }),
90
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "msys2", children: t("shell.msys2") }),
91
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("option", { value: "wsl", children: t("shell.wsl") })
97
+ t("shell." + shell),
98
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconChevronDownOutline14, { className: "btChevron" })
92
99
  ]
93
100
  }
94
101
  )
95
- ]
96
- }
97
- );
102
+ }
103
+ )
104
+ ] });
98
105
  }
99
106
  function apply(ctx) {
100
107
  ctx.effect(() => ctx.locale.register(SETTINGS_NS, { zh, en }), "bash-terminal: settings dictionaries");
@@ -111,9 +118,7 @@ function apply(ctx) {
111
118
  }
112
119
  });
113
120
  let bound;
114
- const push = (snap) => {
115
- bound?.sync(snap.value?.defaultShell, snap.revision, snap.writable);
116
- };
121
+ const push = (snap) => bound?.sync(snap.value?.defaultShell, snap.revision, snap.writable);
117
122
  ctx.slots.inject(
118
123
  "settings.general.item",
119
124
  () => ctx.slots.register(
package/lib/client.js ADDED
@@ -0,0 +1,146 @@
1
+ window.__ModuleLoader__.load({
2
+ id: "dsh-bash-terminal-ts",
3
+ factory: (require) => {
4
+ var module = { exports: {} };
5
+ var exports = module.exports;
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = (target, all) => {
11
+ for (var name in all)
12
+ __defProp(target, name, { get: all[name], enumerable: true });
13
+ };
14
+ var __copyProps = (to, from, except, desc) => {
15
+ if (from && typeof from === "object" || typeof from === "function") {
16
+ for (let key of __getOwnPropNames(from))
17
+ if (!__hasOwnProp.call(to, key) && key !== except)
18
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+
24
+ // src/client.jsx
25
+ var client_exports = {};
26
+ __export(client_exports, {
27
+ apply: () => apply,
28
+ inject: () => inject
29
+ });
30
+ module.exports = __toCommonJS(client_exports);
31
+ var import_react = require("react");
32
+ var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
33
+ var import_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
34
+ var import_jsx_runtime = require("react/jsx-runtime");
35
+ var SETTINGS_NS = "settings.bash-terminal";
36
+ var SETTINGS_NAMESPACE = "bash-terminal";
37
+ var SHELLS = ["powershell", "gitbash", "msys2", "wsl"];
38
+ var ROW_CSS = ".btRow{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;gap:8px;padding:16px 0;display:flex}.btRowText{flex-direction:column;flex:1;gap:4px;min-width:0;padding-right:48px;display:flex}.btTitle{color:var(--dsw-alias-label-primary);font-size:14px;font-weight:400;line-height:22px}.btDesc{color:var(--dsw-alias-label-tertiary);font-size:12px;font-weight:400;line-height:18px}.btSelector{background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.btSelector:hover{background:var(--dsw-alias-interactive-bg-hover)}.btChevron{flex:none}";
39
+ if (typeof document !== "undefined" && document.querySelector('style[data-plugin-css="bash-terminal-row"]') === null) {
40
+ const tag = document.createElement("style");
41
+ tag.dataset.plugin = "dsh-bash-terminal-ts";
42
+ tag.dataset.pluginCss = "bash-terminal-row";
43
+ tag.textContent = ROW_CSS;
44
+ document.head.appendChild(tag);
45
+ }
46
+ var zh = {
47
+ "shell.title": "\u9ED8\u8BA4\u7EC8\u7AEF",
48
+ "shell.description": "shell \u5DE5\u5177\u6267\u884C\u547D\u4EE4\u65F6\u4F7F\u7528\u7684\u7EC8\u7AEF",
49
+ "shell.powershell": "PowerShell",
50
+ "shell.gitbash": "Git Bash",
51
+ "shell.msys2": "MSYS2",
52
+ "shell.wsl": "WSL"
53
+ };
54
+ var en = {
55
+ "shell.title": "Default terminal",
56
+ "shell.description": "Terminal used by the shell tool",
57
+ "shell.powershell": "PowerShell",
58
+ "shell.gitbash": "Git Bash",
59
+ "shell.msys2": "MSYS2",
60
+ "shell.wsl": "WSL"
61
+ };
62
+ var inject = ["slots", "locale", "settingsScope"];
63
+ function ShellPreferenceRow({ t, useStore, setShell }) {
64
+ const shell = useStore((s) => s.shell);
65
+ const writable = useStore((s) => s.writable);
66
+ const [open, setOpen] = (0, import_react.useState)(false);
67
+ const items = SHELLS.map((id) => ({ id, label: t("shell." + id) }));
68
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "btRow", children: [
69
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "btRowText", children: [
70
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btTitle", children: t("shell.title") }),
71
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "btDesc", children: t("shell.description") })
72
+ ] }),
73
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
74
+ import_dsh_client_ui_primitives.Menu,
75
+ {
76
+ open,
77
+ onClose: () => setOpen(false),
78
+ items,
79
+ selectedId: shell,
80
+ onSelect: (id) => {
81
+ setOpen(false);
82
+ setShell(id);
83
+ },
84
+ align: "end",
85
+ portal: true,
86
+ anchor: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
87
+ "button",
88
+ {
89
+ type: "button",
90
+ className: "btSelector",
91
+ "aria-haspopup": "menu",
92
+ "aria-expanded": open,
93
+ disabled: !writable,
94
+ onClick: () => setOpen(!open),
95
+ style: !writable ? { opacity: 0.5, cursor: "not-allowed" } : void 0,
96
+ children: [
97
+ t("shell." + shell),
98
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_dsh_client_ui_primitives.IconChevronDownOutline14, { className: "btChevron" })
99
+ ]
100
+ }
101
+ )
102
+ }
103
+ )
104
+ ] });
105
+ }
106
+ function apply(ctx) {
107
+ ctx.effect(() => ctx.locale.register(SETTINGS_NS, { zh, en }), "bash-terminal: settings dictionaries");
108
+ const scope = ctx.settingsScope.bind({ namespace: SETTINGS_NAMESPACE });
109
+ const store = (0, import_dsh_client_store.defineStore)({
110
+ init: () => ({ shell: "powershell", revision: -1, writable: false }),
111
+ actions: {
112
+ sync: (d, shell, revision, writable) => {
113
+ if (revision !== void 0 && revision <= d.revision) return;
114
+ if (shell !== void 0) d.shell = shell;
115
+ if (revision !== void 0) d.revision = revision;
116
+ if (writable !== void 0) d.writable = writable;
117
+ }
118
+ }
119
+ });
120
+ let bound;
121
+ const push = (snap) => bound?.sync(snap.value?.defaultShell, snap.revision, snap.writable);
122
+ ctx.slots.inject(
123
+ "settings.general.item",
124
+ () => ctx.slots.register(
125
+ {
126
+ name: "settings.general.item",
127
+ id: "bash-terminal-shell",
128
+ order: 20,
129
+ store,
130
+ locale: SETTINGS_NS,
131
+ inject: (actions) => {
132
+ bound = actions;
133
+ push(scope.getSnapshot());
134
+ return { setShell: (value) => void scope.set("defaultShell", value) };
135
+ }
136
+ },
137
+ ShellPreferenceRow
138
+ ),
139
+ "bash-terminal: settings row"
140
+ );
141
+ ctx.effect(() => scope.subscribe(() => push(scope.getSnapshot())), "bash-terminal: settings watch");
142
+ }
143
+
144
+ return module.exports;
145
+ }
146
+ });