lastriko 0.1.2 → 0.1.4

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.
Files changed (37) hide show
  1. package/dist/client/events.js +94 -2
  2. package/dist/client/events.js.map +1 -1
  3. package/dist/client/ws.js +94 -2
  4. package/dist/client/ws.js.map +1 -1
  5. package/dist/client/ws.test.js +169 -5
  6. package/dist/client/ws.test.js.map +1 -1
  7. package/dist/components/context.d.ts +2 -2
  8. package/dist/components/context.js +18 -4
  9. package/dist/components/context.js.map +1 -1
  10. package/dist/components/context.test.js +61 -0
  11. package/dist/components/context.test.js.map +1 -1
  12. package/dist/components/types.d.ts +6 -2
  13. package/dist/engine/code-highlight.d.ts +1 -0
  14. package/dist/engine/code-highlight.js +64 -0
  15. package/dist/engine/code-highlight.js.map +1 -0
  16. package/dist/engine/code-highlight.test.d.ts +1 -0
  17. package/dist/engine/code-highlight.test.js +15 -0
  18. package/dist/engine/code-highlight.test.js.map +1 -0
  19. package/dist/engine/executor.js +5 -0
  20. package/dist/engine/executor.js.map +1 -1
  21. package/dist/engine/executor.test.js +20 -0
  22. package/dist/engine/executor.test.js.map +1 -1
  23. package/dist/engine/renderer.js +30 -7
  24. package/dist/engine/renderer.js.map +1 -1
  25. package/dist/engine/renderer.test.js +44 -0
  26. package/dist/engine/renderer.test.js.map +1 -1
  27. package/dist/engine/server.d.ts +1 -0
  28. package/dist/engine/server.js +16 -1
  29. package/dist/engine/server.js.map +1 -1
  30. package/dist/engine/server.test.js +43 -0
  31. package/dist/engine/server.test.js.map +1 -1
  32. package/dist/engine/websocket.d.ts +2 -0
  33. package/dist/engine/websocket.js +6 -0
  34. package/dist/engine/websocket.js.map +1 -1
  35. package/dist/style.css +150 -0
  36. package/dist/theme/lastriko.css +150 -0
  37. package/package.json +4 -1
@@ -1,3 +1,4 @@
1
+ const EVENT_ATTR = 'data-lk-event';
1
2
  function isDebugWs() {
2
3
  return typeof window !== 'undefined'
3
4
  && Boolean(window.__LK_DEBUG_WS__);
@@ -23,6 +24,23 @@ function resolveComponentId(target) {
23
24
  const holder = target.closest('[data-lk-id]');
24
25
  return holder?.dataset.lkId ?? null;
25
26
  }
27
+ function hasEventToken(element, token) {
28
+ const raw = element.getAttribute(EVENT_ATTR);
29
+ if (!raw)
30
+ return false;
31
+ return raw.split(/\s+/).includes(token);
32
+ }
33
+ function closestWithEventToken(target, token) {
34
+ if (!(target instanceof Element))
35
+ return null;
36
+ let node = target;
37
+ while (node) {
38
+ if (hasEventToken(node, token))
39
+ return node;
40
+ node = node.parentElement;
41
+ }
42
+ return null;
43
+ }
26
44
  export function bindEventDelegation(root, channel) {
27
45
  root.addEventListener('click', (event) => {
28
46
  if (!(event.target instanceof Element))
@@ -44,13 +62,20 @@ export function bindEventDelegation(root, channel) {
44
62
  panel.setAttribute('hidden', '');
45
63
  }
46
64
  }
65
+ const id = resolveComponentId(tabsRoot);
66
+ if (id) {
67
+ channel.send({
68
+ type: 'EVENT',
69
+ payload: { id, event: 'change', value: target },
70
+ });
71
+ }
47
72
  }
48
73
  }
49
74
  });
50
75
  root.addEventListener('click', (event) => {
51
76
  if (!(event.target instanceof Element))
52
77
  return;
53
- const clickable = event.target.closest('[data-lk-event="click"]');
78
+ const clickable = closestWithEventToken(event.target, 'click');
54
79
  if (!clickable)
55
80
  return;
56
81
  const id = resolveComponentId(clickable);
@@ -74,7 +99,7 @@ export function bindEventDelegation(root, channel) {
74
99
  root.addEventListener('change', (event) => {
75
100
  if (!(event.target instanceof Element))
76
101
  return;
77
- const changeable = event.target.closest('[data-lk-event="change"]');
102
+ const changeable = closestWithEventToken(event.target, 'change');
78
103
  if (!changeable)
79
104
  return;
80
105
  const id = resolveComponentId(changeable);
@@ -85,6 +110,73 @@ export function bindEventDelegation(root, channel) {
85
110
  payload: { id, event: 'change', value: coerceValue(event.target) },
86
111
  });
87
112
  });
113
+ root.addEventListener('input', (event) => {
114
+ if (!(event.target instanceof Element))
115
+ return;
116
+ const liveInput = closestWithEventToken(event.target, 'input');
117
+ if (!liveInput)
118
+ return;
119
+ if (event.target instanceof HTMLInputElement && event.target.type === 'number')
120
+ return;
121
+ const id = resolveComponentId(liveInput);
122
+ if (!id)
123
+ return;
124
+ channel.send({
125
+ type: 'EVENT',
126
+ payload: { id, event: 'change', value: coerceValue(event.target) },
127
+ });
128
+ });
129
+ root.addEventListener('blur', (event) => {
130
+ if (!(event.target instanceof HTMLInputElement))
131
+ return;
132
+ const clamped = closestWithEventToken(event.target, 'blur-clamp');
133
+ if (!clamped || event.target.type !== 'number')
134
+ return;
135
+ const minAttr = event.target.getAttribute('min');
136
+ const maxAttr = event.target.getAttribute('max');
137
+ const min = minAttr == null || minAttr === '' ? null : Number(minAttr);
138
+ const max = maxAttr == null || maxAttr === '' ? null : Number(maxAttr);
139
+ if (Number.isNaN(event.target.valueAsNumber))
140
+ return;
141
+ let next = event.target.valueAsNumber;
142
+ if (min !== null && Number.isFinite(min))
143
+ next = Math.max(min, next);
144
+ if (max !== null && Number.isFinite(max))
145
+ next = Math.min(max, next);
146
+ if (next !== event.target.valueAsNumber)
147
+ event.target.value = String(next);
148
+ const id = resolveComponentId(clamped);
149
+ if (!id)
150
+ return;
151
+ channel.send({
152
+ type: 'EVENT',
153
+ payload: { id, event: 'change', value: next },
154
+ });
155
+ }, true);
156
+ root.addEventListener('click', async (event) => {
157
+ if (!(event.target instanceof Element))
158
+ return;
159
+ const copyButton = closestWithEventToken(event.target, 'copy-code');
160
+ if (!copyButton)
161
+ return;
162
+ const container = copyButton.closest('[data-lk-id]');
163
+ const source = container?.querySelector('.lk-code-source');
164
+ if (!source)
165
+ return;
166
+ try {
167
+ await navigator.clipboard.writeText(source.textContent ?? '');
168
+ const button = copyButton;
169
+ button.classList.add('is-copied');
170
+ button.textContent = 'Copied';
171
+ window.setTimeout(() => {
172
+ button.classList.remove('is-copied');
173
+ button.textContent = 'Copy';
174
+ }, 1000);
175
+ }
176
+ catch {
177
+ // ignore clipboard errors in unsupported contexts
178
+ }
179
+ });
88
180
  root.addEventListener('change', async (event) => {
89
181
  if (!(event.target instanceof HTMLInputElement))
90
182
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/client/events.ts"],"names":[],"mappings":"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"}
package/dist/client/ws.js CHANGED
@@ -42,6 +42,93 @@ function showToast(payload) {
42
42
  toast.remove();
43
43
  }, safeDuration);
44
44
  }
45
+ function applyTabsActiveState(root) {
46
+ const tabsRoots = Array.from(root.querySelectorAll('.lk-tabs[data-lk-id]'));
47
+ for (const tabsRoot of tabsRoots) {
48
+ const activeButton = tabsRoot.querySelector('.lk-tab.is-active[data-lk-tab-target]');
49
+ const fallbackButton = tabsRoot.querySelector('.lk-tab[data-lk-tab-target]:not(:disabled)');
50
+ const current = activeButton ?? fallbackButton;
51
+ if (!current) {
52
+ continue;
53
+ }
54
+ const activeLabel = current.dataset.lkTabTarget ?? '';
55
+ for (const btn of Array.from(tabsRoot.querySelectorAll('.lk-tab[data-lk-tab-target]'))) {
56
+ const isActive = btn.dataset.lkTabTarget === activeLabel;
57
+ btn.classList.toggle('is-active', isActive);
58
+ btn.setAttribute('aria-selected', isActive ? 'true' : 'false');
59
+ btn.tabIndex = isActive ? 0 : -1;
60
+ }
61
+ for (const panel of Array.from(tabsRoot.querySelectorAll('.lk-tab-panel[data-lk-tab-panel]'))) {
62
+ const isActive = panel.dataset.lkTabPanel === activeLabel;
63
+ if (isActive) {
64
+ panel.removeAttribute('hidden');
65
+ }
66
+ else {
67
+ panel.setAttribute('hidden', '');
68
+ }
69
+ }
70
+ }
71
+ }
72
+ function initTabState(target) {
73
+ if (target) {
74
+ applyTabsActiveState(target);
75
+ return;
76
+ }
77
+ applyTabsActiveState(document);
78
+ }
79
+ function syncShellDrawerButtons(root) {
80
+ const toggles = Array.from(root.querySelectorAll('.lk-shell-mobile-toggle'));
81
+ for (const toggle of toggles) {
82
+ const shell = toggle.closest('.lk-shell[data-lk-id]');
83
+ if (!shell) {
84
+ continue;
85
+ }
86
+ const shellId = shell.dataset.lkId ?? '';
87
+ const controlsId = `lk-shell-sidebar-${shellId}`;
88
+ const sidebar = shell.querySelector('.lk-shell-sidebar');
89
+ if (sidebar && !sidebar.id) {
90
+ sidebar.id = controlsId;
91
+ }
92
+ const labels = shell.querySelectorAll(`label[for="${toggle.id}"].lk-shell-mobile-button`);
93
+ for (const label of Array.from(labels)) {
94
+ label.setAttribute('role', 'button');
95
+ label.setAttribute('tabindex', '0');
96
+ label.setAttribute('aria-controls', controlsId);
97
+ label.setAttribute('aria-expanded', toggle.checked ? 'true' : 'false');
98
+ label.addEventListener('keydown', (event) => {
99
+ if (event.key === 'Enter' || event.key === ' ') {
100
+ event.preventDefault();
101
+ toggle.checked = !toggle.checked;
102
+ label.setAttribute('aria-expanded', toggle.checked ? 'true' : 'false');
103
+ }
104
+ });
105
+ }
106
+ toggle.addEventListener('change', () => {
107
+ for (const label of Array.from(labels)) {
108
+ label.setAttribute('aria-expanded', toggle.checked ? 'true' : 'false');
109
+ }
110
+ });
111
+ }
112
+ }
113
+ let keyboardA11yBound = false;
114
+ function setupKeyboardA11y() {
115
+ if (keyboardA11yBound) {
116
+ return;
117
+ }
118
+ keyboardA11yBound = true;
119
+ document.addEventListener('keydown', (event) => {
120
+ if (event.key !== 'Escape') {
121
+ return;
122
+ }
123
+ for (const toggle of Array.from(document.querySelectorAll('.lk-shell-mobile-toggle'))) {
124
+ toggle.checked = false;
125
+ }
126
+ });
127
+ }
128
+ function applyClientTheme(mode) {
129
+ document.documentElement.setAttribute('data-theme', mode);
130
+ window.localStorage.setItem('lk-theme', mode);
131
+ }
45
132
  export function createWSManager(opts = {}) {
46
133
  const wsFactory = opts.wsFactory ?? ((url) => new WebSocket(url));
47
134
  const maxRetries = opts.maxRetries ?? Number.POSITIVE_INFINITY;
@@ -94,13 +181,18 @@ export function createWSManager(opts = {}) {
94
181
  switch (parsed.type) {
95
182
  case 'RENDER':
96
183
  applyRender(parsed.payload);
184
+ initTabState();
185
+ syncShellDrawerButtons(document);
186
+ setupKeyboardA11y();
97
187
  break;
98
188
  case 'FRAGMENT':
99
189
  applyFragmentSwap(parsed.payload.id, parsed.payload.html);
190
+ initTabState();
191
+ syncShellDrawerButtons(document);
192
+ setupKeyboardA11y();
100
193
  break;
101
194
  case 'THEME':
102
- document.documentElement.setAttribute('data-theme', parsed.payload.mode);
103
- window.localStorage.setItem('lk-theme', parsed.payload.mode);
195
+ applyClientTheme(parsed.payload.mode);
104
196
  break;
105
197
  case 'TOAST':
106
198
  if (parsed.payload.message.startsWith('__connection_id__:')) {
@@ -1 +1 @@
1
- {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/client/ws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../src/client/ws.ts"],"names":[],"mappings":"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"}
@@ -13,14 +13,33 @@ class FakeClassList {
13
13
  contains(value) {
14
14
  return this.values.has(value);
15
15
  }
16
+ toggle(value, force) {
17
+ if (force === true) {
18
+ this.values.add(value);
19
+ return;
20
+ }
21
+ if (force === false) {
22
+ this.values.delete(value);
23
+ return;
24
+ }
25
+ if (this.values.has(value)) {
26
+ this.values.delete(value);
27
+ }
28
+ else {
29
+ this.values.add(value);
30
+ }
31
+ }
16
32
  }
17
33
  class FakeElement {
18
34
  children = [];
19
35
  classList = new FakeClassList();
36
+ dataset = {};
20
37
  textContent = '';
38
+ hidden = false;
21
39
  id = '';
22
40
  parent = null;
23
41
  currentClassName = '';
42
+ attrs = new Map();
24
43
  set className(value) {
25
44
  this.currentClassName = value;
26
45
  for (const cls of value.split(/\s+/).filter(Boolean)) {
@@ -30,6 +49,9 @@ class FakeElement {
30
49
  get className() {
31
50
  return this.currentClassName;
32
51
  }
52
+ get parentElement() {
53
+ return this.parent;
54
+ }
33
55
  get childElementCount() {
34
56
  return this.children.length;
35
57
  }
@@ -48,16 +70,24 @@ class FakeElement {
48
70
  this.parent = null;
49
71
  }
50
72
  querySelector(selector) {
51
- const classes = selector
52
- .split('.')
53
- .filter(Boolean);
54
- if (classes.length === 0) {
73
+ const classes = (selector.match(/\.[\w-]+/g) ?? []).map((part) => part.slice(1));
74
+ const attrMatchers = Array.from(selector.matchAll(/\[([\w-]+)(?:="([^"]*)")?\]/g))
75
+ .map((match) => ({ key: match[1], value: match[2] ?? null }));
76
+ if (classes.length === 0 && attrMatchers.length === 0) {
55
77
  return null;
56
78
  }
57
79
  const stack = [...this.children];
58
80
  while (stack.length > 0) {
59
81
  const current = stack.shift();
60
- const allMatch = classes.every((cls) => current.classList.contains(cls));
82
+ const allClassesMatch = classes.every((cls) => current.classList.contains(cls));
83
+ const allAttrsMatch = attrMatchers.every(({ key, value }) => {
84
+ const got = current.getAttribute(key);
85
+ if (value === null) {
86
+ return got !== null;
87
+ }
88
+ return got === value;
89
+ });
90
+ const allMatch = allClassesMatch && allAttrsMatch;
61
91
  if (allMatch) {
62
92
  return current;
63
93
  }
@@ -65,6 +95,88 @@ class FakeElement {
65
95
  }
66
96
  return null;
67
97
  }
98
+ querySelectorAll(selector) {
99
+ const matches = [];
100
+ const classes = (selector.match(/\.[\w-]+/g) ?? []).map((part) => part.slice(1));
101
+ const attrMatchers = Array.from(selector.matchAll(/\[([\w-]+)(?:="([^"]*)")?\]/g))
102
+ .map((match) => ({ key: match[1], value: match[2] ?? null }));
103
+ const stack = [...this.children];
104
+ while (stack.length > 0) {
105
+ const current = stack.shift();
106
+ const allClassesMatch = classes.every((cls) => current.classList.contains(cls));
107
+ const allAttrsMatch = attrMatchers.every(({ key, value }) => {
108
+ const got = current.getAttribute(key);
109
+ if (value === null) {
110
+ return got !== null;
111
+ }
112
+ return got === value;
113
+ });
114
+ if (allClassesMatch && allAttrsMatch) {
115
+ matches.push(current);
116
+ }
117
+ stack.push(...current.children);
118
+ }
119
+ return matches;
120
+ }
121
+ closest(selector) {
122
+ const isMatch = (node) => {
123
+ if (selector === '[data-lk-id]') {
124
+ return node.getAttribute('data-lk-id') !== null;
125
+ }
126
+ if (selector === '.lk-tabs') {
127
+ return node.classList.contains('lk-tabs');
128
+ }
129
+ if (selector === '.lk-shell[data-lk-id]') {
130
+ return node.classList.contains('lk-shell') && node.getAttribute('data-lk-id') !== null;
131
+ }
132
+ const classes = (selector.match(/\.[\w-]+/g) ?? []).map((part) => part.slice(1));
133
+ return classes.length > 0 && classes.every((cls) => node.classList.contains(cls));
134
+ };
135
+ const search = (node) => {
136
+ if (!node) {
137
+ return null;
138
+ }
139
+ if (isMatch(node)) {
140
+ return node;
141
+ }
142
+ return search(node.parent);
143
+ };
144
+ return search(this);
145
+ }
146
+ setAttribute(name, value) {
147
+ this.attrs.set(name, value);
148
+ if (name === 'class') {
149
+ this.className = value;
150
+ }
151
+ if (name === 'id') {
152
+ this.id = value;
153
+ }
154
+ if (name.startsWith('data-')) {
155
+ const key = name.slice(5).replace(/-([a-z])/g, (_, c) => c.toUpperCase());
156
+ this.dataset[key] = value;
157
+ }
158
+ if (name === 'hidden') {
159
+ this.hidden = true;
160
+ }
161
+ }
162
+ getAttribute(name) {
163
+ if (name === 'class') {
164
+ return this.className;
165
+ }
166
+ if (name === 'id') {
167
+ return this.id || null;
168
+ }
169
+ return this.attrs.get(name) ?? null;
170
+ }
171
+ removeAttribute(name) {
172
+ this.attrs.delete(name);
173
+ if (name === 'hidden') {
174
+ this.hidden = false;
175
+ }
176
+ }
177
+ addEventListener(_type, _listener) {
178
+ // no-op for unit tests
179
+ }
68
180
  }
69
181
  function setupDom() {
70
182
  const previousWindow = globalThis.window;
@@ -77,9 +189,21 @@ function setupDom() {
77
189
  ['lk-root', root],
78
190
  ['lk-toast-root', toastRoot],
79
191
  ]);
192
+ const shell = new FakeElement();
193
+ shell.className = 'lk-shell';
194
+ shell.setAttribute('data-lk-id', 'shell-1');
195
+ const toggle = new FakeElement();
196
+ toggle.className = 'lk-shell-mobile-toggle';
197
+ toggle.id = 'shell-1-drawer-toggle';
198
+ const sidebar = new FakeElement();
199
+ sidebar.className = 'lk-shell-sidebar';
200
+ shell.appendChild(toggle);
201
+ shell.appendChild(sidebar);
202
+ root.appendChild(shell);
80
203
  const fakeDocument = {
81
204
  documentElement: { setAttribute: () => { } },
82
205
  addEventListener: () => { },
206
+ querySelectorAll: (selector) => root.querySelectorAll(selector),
83
207
  getElementById: (id) => byId.get(id) ?? null,
84
208
  createElement: () => new FakeElement(),
85
209
  };
@@ -148,5 +272,45 @@ describe('client ws manager', () => {
148
272
  restore();
149
273
  }
150
274
  });
275
+ it('applies tab state and shell drawer ids on render', () => {
276
+ const { document, restore } = setupDom();
277
+ try {
278
+ const sockets = [];
279
+ const manager = createWSManager({
280
+ wsFactory: (() => {
281
+ const socket = {
282
+ onopen: null,
283
+ onmessage: null,
284
+ onclose: null,
285
+ send: () => { },
286
+ close: () => { },
287
+ };
288
+ sockets.push(socket);
289
+ return socket;
290
+ }),
291
+ });
292
+ manager.connect();
293
+ const socketRef = sockets[0];
294
+ if (!socketRef) {
295
+ throw new Error('mock socket was not created');
296
+ }
297
+ socketRef.onmessage?.({
298
+ data: JSON.stringify({
299
+ type: 'RENDER',
300
+ payload: {
301
+ title: 'tabs',
302
+ theme: 'light',
303
+ html: '<div class="lk-tabs" data-lk-id="tabs-1"><nav class="lk-tab-nav"><button class="lk-tab is-active" data-lk-tab-target="One">One</button><button class="lk-tab" data-lk-tab-target="Two">Two</button></nav><section class="lk-tab-panel" data-lk-tab-panel="One">A</section><section class="lk-tab-panel" data-lk-tab-panel="Two" hidden>B</section></div>',
304
+ },
305
+ }),
306
+ });
307
+ const sidebars = document.querySelectorAll('.lk-shell-sidebar');
308
+ expect(sidebars.length).toBeGreaterThan(0);
309
+ expect(sidebars[0]?.id).toBe('lk-shell-sidebar-shell-1');
310
+ }
311
+ finally {
312
+ restore();
313
+ }
314
+ });
151
315
  });
152
316
  //# sourceMappingURL=ws.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ws.test.js","sourceRoot":"","sources":["../../src/client/ws.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ws.test.js","sourceRoot":"","sources":["../../src/client/ws.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AlertOpts, ButtonCallbackHandle, ButtonHandle, ButtonOpts, ChatHandle, ChatUIOptions, CodeProps, ComponentHandle, ConnectionScope, FileUploadHandle, FileUploadOpts, GridOpts, ImageGridProps, ImageProps, LoadingOpts, MetricHandle, MetricOpts, NumberInputHandle, NumberInputOpts, ProgressHandle, ProgressOpts, PromptEditorHandle, PromptEditorOpts, SelectHandle, SelectOption, SelectOpts, ShellOpts, ShellRegions, SliderHandle, SliderOpts, StreamHandle, StreamTextOpts, TabDef, TabsOpts, TableHandle, TableProps, TableRow, TextHandle, TextInputHandle, TextInputOpts, ToggleHandle, ToggleOpts, ToastOpts, UIContext as IUIContext } from './types';
1
+ import type { AlertOpts, ButtonCallbackHandle, ButtonHandle, ButtonOpts, ChatHandle, ChatUIOptions, CodeProps, ConnectionScope, FileUploadHandle, FileUploadOpts, GridOpts, ImageGridProps, ImageProps, LoadingOpts, MetricHandle, MetricOpts, NumberInputHandle, NumberInputOpts, ProgressHandle, ProgressOpts, PromptEditorHandle, PromptEditorOpts, SelectHandle, SelectOption, SelectOpts, ShellOpts, ShellRegions, SliderHandle, SliderOpts, StreamHandle, StreamTextOpts, TabDef, TabsHandle, TabsOpts, TableHandle, TableProps, TableRow, TextHandle, TextInputHandle, TextInputOpts, ToggleHandle, ToggleOpts, ToastOpts, UIContext as IUIContext } from './types';
2
2
  export declare class UIContext implements IUIContext {
3
3
  readonly scope: ConnectionScope;
4
4
  constructor(scope: ConnectionScope);
@@ -35,7 +35,7 @@ export declare class UIContext implements IUIContext {
35
35
  progress(value: number | null, opts?: ProgressOpts): ProgressHandle;
36
36
  shell(regions: ShellRegions, opts?: ShellOpts): void;
37
37
  grid(areas: Array<(ctx: IUIContext) => void>, opts?: GridOpts): void;
38
- tabs(tabs: TabDef[], opts?: TabsOpts): ComponentHandle<Record<string, unknown>, string>;
38
+ tabs(tabs: TabDef[], opts?: TabsOpts): TabsHandle;
39
39
  card(titleOrContent: string | ((ctx: IUIContext) => void), contentOrNothing?: (ctx: IUIContext) => void): void;
40
40
  divider(opts?: {
41
41
  label?: string;
@@ -380,8 +380,7 @@ export class UIContext {
380
380
  }
381
381
  tabs(tabs, opts = {}) {
382
382
  const id = createComponentId(this.scope, 'tabs');
383
- const initial = opts.defaultTab ?? tabs[0]?.label ?? '';
384
- const valueAtom = this.scope.getAtom(`${id}/value`, initial);
383
+ const requestedDefault = opts.defaultTab ?? tabs[0]?.label ?? '';
385
384
  const renderedTabs = tabs.map((tab) => {
386
385
  const before = this.scope.listHandles().length;
387
386
  tab.content(this);
@@ -391,6 +390,12 @@ export class UIContext {
391
390
  ids: this.scope.listHandles().slice(before).map((h) => h.id),
392
391
  };
393
392
  });
393
+ const firstEnabled = renderedTabs.find((tab) => !tab.disabled)?.label ?? '';
394
+ const initial = renderedTabs.some((tab) => tab.label === requestedDefault && !tab.disabled)
395
+ ? requestedDefault
396
+ : firstEnabled;
397
+ const valueAtom = this.scope.getAtom(`${id}/value`, initial);
398
+ const canActivate = (label) => renderedTabs.some((tab) => tab.label === label && !tab.disabled);
394
399
  const handle = {
395
400
  id,
396
401
  type: 'tabs',
@@ -402,11 +407,20 @@ export class UIContext {
402
407
  Object.assign(handle.props, patch);
403
408
  if (patch.value !== undefined) {
404
409
  const next = String(patch.value);
405
- valueAtom.set(next);
406
- handle.props.active = next;
410
+ if (canActivate(next)) {
411
+ valueAtom.set(next);
412
+ handle.props.active = next;
413
+ }
407
414
  }
408
415
  this.scope.pushFragment(handle);
409
416
  },
417
+ setActive: (label) => {
418
+ if (!canActivate(label))
419
+ return;
420
+ valueAtom.set(label);
421
+ handle.props.active = label;
422
+ this.scope.pushFragment(handle);
423
+ },
410
424
  };
411
425
  this.register(handle);
412
426
  return handle;