@bridgething/client 0.12.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/settings.js CHANGED
@@ -1,3 +1,5 @@
1
+ import { UNKNOWN_VERB, base64FromBytes, blobChunks, decodeSettingsMessage, } from './settings-protocol.js';
2
+ import { THEME_DEFAULTS_CSS, themeCss } from './theme.js';
1
3
  const CALL_TIMEOUT_MS = 15_000;
2
4
  const AUTHORIZE_TIMEOUT_MS = 600_000;
3
5
  const FETCH_TIMEOUT_SLACK_MS = 5_000;
@@ -6,33 +8,86 @@ const TEXTY = /json|text|xml|urlencoded/i;
6
8
  const NULL_BODY_STATUS = new Set([101, 103, 204, 205, 304]);
7
9
  const HOST_MISSING = 'not running inside a bridgething settings host (no companion webview, no host frame)';
8
10
  let nextId = 1;
11
+ let epoch = 0;
12
+ let known = null;
13
+ const pins = new Map();
9
14
  const pending = new Map();
10
15
  const docListeners = new Set();
11
- function deliver(json) {
12
- let parsed;
13
- try {
14
- parsed = JSON.parse(json);
15
- }
16
- catch {
16
+ const themeListeners = new Set();
17
+ const contextListeners = new Set();
18
+ const refreshListeners = new Set();
19
+ let themeStyle = null;
20
+ function paintTheme(theme) {
21
+ if (typeof document === 'undefined')
17
22
  return;
23
+ if (!themeStyle?.isConnected) {
24
+ themeStyle = document.createElement('style');
25
+ themeStyle.dataset.bridgethingTheme = '';
26
+ const parent = document.head ?? document.documentElement;
27
+ parent.insertBefore(themeStyle, parent.firstChild);
18
28
  }
19
- if ('event' in parsed && parsed.event === 'docChanged') {
20
- for (const listener of docListeners)
21
- listener(parsed.key, parsed.value);
29
+ themeStyle.textContent = theme ? THEME_DEFAULTS_CSS + themeCss(theme) : THEME_DEFAULTS_CSS;
30
+ }
31
+ function release(at) {
32
+ send({ id: nextId++, verb: 'release', epoch: at });
33
+ }
34
+ function retarget(context, next) {
35
+ if (next < epoch)
36
+ return;
37
+ const previous = known;
38
+ known = context;
39
+ if (next === epoch)
40
+ return;
41
+ const left = epoch;
42
+ epoch = next;
43
+ for (let at = left; at < next; at += 1)
44
+ if (!pins.has(at))
45
+ release(at);
46
+ if (context.theme)
47
+ paintTheme(context.theme);
48
+ for (const listener of contextListeners)
49
+ listener(context, previous);
50
+ }
51
+ function deliver(json) {
52
+ const message = decodeSettingsMessage(json);
53
+ if (!message)
54
+ return;
55
+ if ('event' in message) {
56
+ if (message.event === 'docChanged')
57
+ for (const listener of docListeners)
58
+ listener(message.key, message.value);
59
+ if (message.event === 'themeChanged') {
60
+ paintTheme(message.theme);
61
+ for (const listener of themeListeners)
62
+ listener(message.theme);
63
+ }
64
+ if (message.event === 'contextChanged')
65
+ retarget(message.context, message.epoch);
66
+ if (message.event === 'refresh') {
67
+ known = message.context;
68
+ if (message.context.theme)
69
+ paintTheme(message.context.theme);
70
+ for (const listener of refreshListeners)
71
+ listener(message.context);
72
+ }
73
+ if (message.event === 'progress')
74
+ pending.get(message.id)?.progress?.(message.sent, message.total);
22
75
  return;
23
76
  }
24
- const reply = parsed;
25
- const entry = pending.get(reply.id);
77
+ if (message.ok && message.epoch !== undefined)
78
+ retarget(message.value, message.epoch);
79
+ const entry = pending.get(message.id);
26
80
  if (!entry)
27
81
  return;
28
- pending.delete(reply.id);
82
+ pending.delete(message.id);
29
83
  clearTimeout(entry.timer);
30
- if (reply.ok)
31
- entry.resolve(reply.value);
84
+ if (message.ok)
85
+ entry.resolve(message.value);
32
86
  else
33
- entry.reject(new Error(reply.error));
87
+ entry.reject(new Error(message.error));
34
88
  }
35
- function send(json) {
89
+ function send(request) {
90
+ const json = JSON.stringify(request);
36
91
  if (typeof window === 'undefined')
37
92
  return false;
38
93
  const webview = window.ReactNativeWebView;
@@ -55,16 +110,19 @@ if (typeof window !== 'undefined') {
55
110
  deliver(event.data);
56
111
  });
57
112
  }
58
- function call(verb, payload, timeoutMs = CALL_TIMEOUT_MS) {
113
+ function call(verb, payload, timeoutMs = CALL_TIMEOUT_MS, progress, at = epoch) {
59
114
  const id = nextId++;
60
115
  return new Promise((resolve, reject) => {
61
- const timer = setTimeout(() => {
62
- if (pending.delete(id))
63
- reject(new Error(`bridgething settings call '${verb}' timed out after ${timeoutMs}ms`));
64
- }, timeoutMs);
65
- pending.set(id, { resolve: resolve, reject, timer });
116
+ const timer = timeoutMs === null
117
+ ? undefined
118
+ : setTimeout(() => {
119
+ if (pending.delete(id)) {
120
+ reject(new Error(`bridgething settings call '${verb}' timed out after ${timeoutMs}ms`));
121
+ }
122
+ }, timeoutMs);
123
+ pending.set(id, { resolve: resolve, reject, timer, progress });
66
124
  try {
67
- if (!send(JSON.stringify({ id, verb, payload })))
125
+ if (!send({ id, verb, payload, epoch: at }))
68
126
  throw new Error(HOST_MISSING);
69
127
  }
70
128
  catch (err) {
@@ -82,6 +140,14 @@ export class SettingsFetchError extends Error {
82
140
  this.name = 'SettingsFetchError';
83
141
  }
84
142
  }
143
+ export class BlobError extends Error {
144
+ kind;
145
+ constructor(kind, message) {
146
+ super(message);
147
+ this.kind = kind;
148
+ this.name = 'BlobError';
149
+ }
150
+ }
85
151
  export class AuthorizeError extends Error {
86
152
  kind;
87
153
  constructor(kind, message) {
@@ -97,7 +163,7 @@ function token(message) {
97
163
  return message.split(':', 1)[0].trim();
98
164
  }
99
165
  function hostLacksVerb(message) {
100
- return message === HOST_MISSING || message.startsWith('unknown settings bridge verb');
166
+ return message === HOST_MISSING || message.startsWith(UNKNOWN_VERB);
101
167
  }
102
168
  function fetchFailure(err) {
103
169
  if (err instanceof SettingsFetchError)
@@ -123,6 +189,34 @@ function authorizeFailure(err) {
123
189
  return new AuthorizeError(kind, message);
124
190
  return err instanceof Error ? err : new Error(message);
125
191
  }
192
+ const BLOB_KINDS = {
193
+ unsupported: 'unsupported',
194
+ not_connected: 'disconnected',
195
+ link_lost: 'disconnected',
196
+ too_large: 'too_large',
197
+ quota_exceeded: 'quota_exceeded',
198
+ storage_full: 'storage_full',
199
+ not_media: 'not_media',
200
+ unknown_handle: 'unknown_handle',
201
+ busy: 'busy',
202
+ no_gesture: 'no_gesture',
203
+ };
204
+ function blobFailure(err) {
205
+ if (err instanceof BlobError)
206
+ return err;
207
+ const message = reason(err);
208
+ if (hostLacksVerb(message))
209
+ return new BlobError('unsupported', message);
210
+ return new BlobError(BLOB_KINDS[token(message)] ?? 'failed', message);
211
+ }
212
+ async function blobCall(verb, payload, timeoutMs, progress) {
213
+ try {
214
+ return await call(verb, payload, timeoutMs, progress);
215
+ }
216
+ catch (err) {
217
+ throw blobFailure(err);
218
+ }
219
+ }
126
220
  function decodeUtf8(bytes) {
127
221
  try {
128
222
  return new TextDecoder('utf-8', { fatal: true }).decode(bytes);
@@ -131,14 +225,6 @@ function decodeUtf8(bytes) {
131
225
  return null;
132
226
  }
133
227
  }
134
- function base64FromBytes(bytes) {
135
- const chunk = 0x8000;
136
- let binary = '';
137
- for (let at = 0; at < bytes.length; at += chunk) {
138
- binary += String.fromCharCode(...bytes.subarray(at, at + chunk));
139
- }
140
- return btoa(binary);
141
- }
142
228
  function bytesFromBase64(data) {
143
229
  const binary = atob(data);
144
230
  const bytes = new Uint8Array(new ArrayBuffer(binary.length));
@@ -189,22 +275,43 @@ async function toVerbRequest(input, init) {
189
275
  verb.timeoutMs = init.timeoutMs;
190
276
  return verb;
191
277
  }
278
+ function configVerbs(at) {
279
+ return {
280
+ fields: () => call('config.fields', undefined, CALL_TIMEOUT_MS, undefined, at()),
281
+ list: () => call('config.list', undefined, CALL_TIMEOUT_MS, undefined, at()),
282
+ set: (key, value) => call('config.set', { key, value }, CALL_TIMEOUT_MS, undefined, at()),
283
+ delete: key => call('config.delete', { key }, CALL_TIMEOUT_MS, undefined, at()),
284
+ };
285
+ }
192
286
  export const settings = {
193
- context() {
194
- return call('context');
287
+ async context() {
288
+ const context = await call('context', undefined);
289
+ if (context.theme)
290
+ paintTheme(context.theme);
291
+ return context;
195
292
  },
196
293
  config: {
197
- fields() {
198
- return call('config.fields');
199
- },
200
- list() {
201
- return call('config.list');
202
- },
203
- set(key, value) {
204
- return call('config.set', { key, value });
205
- },
206
- delete(key) {
207
- return call('config.delete', { key });
294
+ ...configVerbs(() => epoch),
295
+ pin() {
296
+ const pinned = epoch;
297
+ pins.set(pinned, (pins.get(pinned) ?? 0) + 1);
298
+ let held = true;
299
+ return {
300
+ ...configVerbs(() => pinned),
301
+ release() {
302
+ if (!held)
303
+ return;
304
+ held = false;
305
+ const left = (pins.get(pinned) ?? 1) - 1;
306
+ if (left > 0) {
307
+ pins.set(pinned, left);
308
+ return;
309
+ }
310
+ pins.delete(pinned);
311
+ if (pinned < epoch)
312
+ release(pinned);
313
+ },
314
+ };
208
315
  },
209
316
  },
210
317
  doc: {
@@ -212,7 +319,7 @@ export const settings = {
212
319
  return call('doc.get', { key });
213
320
  },
214
321
  list() {
215
- return call('doc.list');
322
+ return call('doc.list', undefined);
216
323
  },
217
324
  set(key, value) {
218
325
  return call('doc.set', { key, value });
@@ -249,13 +356,74 @@ export const settings = {
249
356
  }
250
357
  },
251
358
  },
359
+ pick(options) {
360
+ return blobCall('pick', options.cover ? { kind: options.kind, cover: options.cover } : { kind: options.kind }, null);
361
+ },
362
+ blob: {
363
+ async create(mime) {
364
+ return (await blobCall('blob.create', { mime })).handle;
365
+ },
366
+ async append(handle, data) {
367
+ let size = null;
368
+ for await (const chunk of blobChunks(data)) {
369
+ size = (await blobCall('blob.append', { handle, data: base64FromBytes(chunk) })).size;
370
+ }
371
+ return size ?? (await blobCall('blob.append', { handle, data: '' })).size;
372
+ },
373
+ put(key, handle, options = {}) {
374
+ return blobCall('blob.put', { key, handle }, null, options.onProgress);
375
+ },
376
+ async delete(key) {
377
+ await blobCall('blob.delete', { key });
378
+ },
379
+ list() {
380
+ return blobCall('blob.list', undefined);
381
+ },
382
+ },
252
383
  onDocChanged(listener) {
253
384
  docListeners.add(listener);
254
- return () => docListeners.delete(listener);
385
+ return () => {
386
+ docListeners.delete(listener);
387
+ };
388
+ },
389
+ onThemeChanged(listener) {
390
+ themeListeners.add(listener);
391
+ return () => {
392
+ themeListeners.delete(listener);
393
+ };
394
+ },
395
+ onContextChanged(listener) {
396
+ contextListeners.add(listener);
397
+ return () => {
398
+ contextListeners.delete(listener);
399
+ };
400
+ },
401
+ onRefresh(listener) {
402
+ refreshListeners.add(listener);
403
+ return () => {
404
+ refreshListeners.delete(listener);
405
+ };
255
406
  },
256
407
  done() {
257
- if (!send(JSON.stringify({ id: nextId++, verb: 'done' })))
408
+ if (!send({ id: nextId++, verb: 'done', epoch }))
258
409
  throw new Error(HOST_MISSING);
259
410
  },
260
411
  };
412
+ function reportHeight() {
413
+ if (typeof ResizeObserver === 'undefined')
414
+ return;
415
+ let reported = 0;
416
+ new ResizeObserver(() => {
417
+ const height = Math.ceil(document.documentElement.getBoundingClientRect().height);
418
+ if (height <= 0 || height === reported)
419
+ return;
420
+ reported = height;
421
+ send({ id: nextId++, verb: 'resize', payload: { height } });
422
+ }).observe(document.documentElement);
423
+ }
424
+ if (typeof document !== 'undefined') {
425
+ paintTheme(undefined);
426
+ reportHeight();
427
+ settings.context().catch(() => undefined);
428
+ }
261
429
  //# sourceMappingURL=settings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAIA,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,MAAM,oBAAoB,GAAG,OAAO,CAAC;AACrC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AACrC,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AACnC,MAAM,KAAK,GAAG,2BAA2B,CAAC;AAC1C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,MAAM,YAAY,GAAG,sFAAsF,CAAC;AAsC5G,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;AAC3C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsB,CAAC;AAEnD,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,MAA6B,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA0B,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;QACvD,KAAK,MAAM,QAAQ,IAAI,YAAY;YAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAmB,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;QACpC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAEhD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,MAAM,CAAC,4BAA4B,GAAG,OAAO,CAAC;IAC9C,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;QACzC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO;QACtE,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,IAAI,CAAI,IAAY,EAAE,OAAiB,EAAE,YAAoB,eAAe;IACnF,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IACpB,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,IAAI,qBAAqB,SAAS,IAAI,CAAC,CAAC,CAAC;QAClH,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAmC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IADlB,YACkB,IAAoB,EACpC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAgB;QAIpC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,KAAK;IAErB;IADlB,YACkB,IAAwB,EACxC,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAoB;QAIxC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,SAAS,MAAM,CAAC,GAAY;IAC1B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,KAAK,CAAC,OAAe;IAC5B,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,OAAO,KAAK,YAAY,IAAI,OAAO,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,GAAG,YAAY,kBAAkB;QAAE,OAAO,GAAG,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrH,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrF,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,YAAY,cAAc;QAAE,OAAO,GAAG,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChH,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC;QAAE,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAChF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB,EAAE,WAA0B;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzG,CAAC;AAED,SAAS,UAAU,CAAC,KAAqB;IACvC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5G,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CAAC,KAAwB,EAAE,GAAY;IAC5D,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7F,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,kBAAkB,CAAC,aAAa,EAAE,GAAG,MAAM,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAwB,EAAE,IAA0B;IAC/E,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,MAAM,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC;QACvC,MAAM,IAAI,kBAAkB,CAC1B,SAAS,EACT,kCAAkC,MAAM,CAAC,UAAU,oBAAoB,cAAc,WAAW,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAqB;QAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAc,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KAChF,CAAC;IACF,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/G,IAAI,IAAI,EAAE,SAAS,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,OAAO;QACL,OAAO,IAAI,CAAkB,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,MAAM,EAAE;QACN,MAAM;YACJ,OAAO,IAAI,CAAgB,eAAe,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAgB,aAAa,CAAC,CAAC;QAC5C,CAAC;QACD,GAAG,CAAC,GAAW,EAAE,KAAa;YAC5B,OAAO,IAAI,CAAW,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,CAAC,GAAW;YAChB,OAAO,IAAI,CAAW,eAAe,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;KACF;IACD,GAAG,EAAE;QACH,GAAG,CAAC,GAAW;YACb,OAAO,IAAI,CAAW,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI;YACF,OAAO,IAAI,CAAa,UAAU,CAAC,CAAC;QACtC,CAAC;QACD,GAAG,CAAC,GAAW,EAAE,KAAa;YAC5B,OAAO,IAAI,CAAW,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,CAAC,GAAW;YAChB,OAAO,IAAI,CAA+B,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACnE,CAAC;KACF;IACD,KAAK,CAAC,KAAK,CAAC,KAAwB,EAAE,IAA0B;QAC9D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAC;QACxG,IAAI,CAAC;YACH,OAAO,UAAU,CAAC,MAAM,IAAI,CAAiB,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAClG,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,YAAY;QACV,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,KAAwB,EAAE,IAA0B,EAAE,EAAE,CAC3E,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAiB,CAAC;QAC/C,OAAO,GAAG,EAAE;YACV,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,EAAE;QACJ,KAAK,CAAC,SAAS,CAAC,GAAiB;YAC/B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAqB,gBAAgB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;gBAC3G,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;KACF;IACD,YAAY,CAAC,QAA4B;QACvC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3F,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type SettingsHost, type SettingsSession } from './settings-protocol.js';
2
+ type PageNode = {
3
+ textContent: string | null;
4
+ dispatchEvent(event: object): boolean;
5
+ click(): void;
6
+ };
7
+ export type SettingsPageWindow = {
8
+ readonly document: {
9
+ readonly body: {
10
+ readonly textContent: string | null;
11
+ appendChild(node: object): unknown;
12
+ };
13
+ write(html: string): void;
14
+ createElement(tag: 'script'): {
15
+ textContent: string | null;
16
+ };
17
+ querySelector(selector: string): object | null;
18
+ querySelectorAll(selector: 'button'): Iterable<PageNode>;
19
+ };
20
+ readonly Event: new (type: string, init: {
21
+ bubbles: boolean;
22
+ }) => object;
23
+ readonly happyDOM: {
24
+ close(): Promise<void>;
25
+ };
26
+ };
27
+ export type SettingsPageFrame<W extends SettingsPageWindow> = W & {
28
+ ReactNativeWebView?: {
29
+ postMessage: (json: string) => void;
30
+ };
31
+ __bridgethingSettingsDeliver?: (json: string) => void;
32
+ };
33
+ export type SettingsPageOptions<T> = {
34
+ target: T | null;
35
+ bind: (target: T) => SettingsHost;
36
+ };
37
+ export type SettingsPage<T, W extends SettingsPageWindow> = {
38
+ readonly frame: SettingsPageFrame<W>;
39
+ readonly session: SettingsSession<T>;
40
+ load(html: string): void;
41
+ text(): string;
42
+ until(ready: () => boolean): Promise<void>;
43
+ enter(selector: string, value: string): void;
44
+ press(label: string): void;
45
+ close(): Promise<void>;
46
+ };
47
+ export declare function settingsPage<T, W extends SettingsPageWindow>(window: W, options: SettingsPageOptions<T>): SettingsPage<T, W>;
48
+ export {};
49
+ //# sourceMappingURL=testing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEtG,KAAK,QAAQ,GAAG;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CAAC;AAErG,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;SAAE,CAAC;QAC3F,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG;YAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC;QAC7D,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAC/C,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC1D,CAAC;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,MAAM,CAAC;IACzE,QAAQ,CAAC,QAAQ,EAAE;QAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,kBAAkB,IAAI,CAAC,GAAG;IAChE,kBAAkB,CAAC,EAAE;QAAE,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAC7D,4BAA4B,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,YAAY,CAAA;CAAE,CAAC;AAE7F,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,kBAAkB,IAAI;IAC1D,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,IAAI,MAAM,CAAC;IACf,KAAK,CAAC,KAAK,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAIF,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,kBAAkB,EAC1D,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAuCpB"}
@@ -0,0 +1,45 @@
1
+ import { openSettingsSession } from './settings-protocol.js';
2
+ const MODULE_SCRIPT = /<script type="module"[^>]*>([\s\S]*?)<\/script>/;
3
+ export function settingsPage(window, options) {
4
+ const frame = window;
5
+ const session = openSettingsSession({
6
+ ...options,
7
+ deliver: message => frame.__bridgethingSettingsDeliver?.(JSON.stringify(message)),
8
+ });
9
+ frame.ReactNativeWebView = { postMessage: json => session.receive(json) };
10
+ return {
11
+ frame,
12
+ session,
13
+ load(html) {
14
+ const script = MODULE_SCRIPT.exec(html);
15
+ if (!script)
16
+ throw new Error('the settings page carries no inline module script');
17
+ frame.document.write(html.replace(script[0], ''));
18
+ const element = frame.document.createElement('script');
19
+ element.textContent = script[1];
20
+ frame.document.body.appendChild(element);
21
+ },
22
+ text: () => frame.document.body.textContent ?? '',
23
+ async until(ready) {
24
+ for (let i = 0; i < 50 && !ready(); i += 1) {
25
+ await new Promise(resolve => setTimeout(resolve, 10));
26
+ }
27
+ await new Promise(resolve => setTimeout(resolve, 20));
28
+ },
29
+ enter(selector, value) {
30
+ const field = frame.document.querySelector(selector);
31
+ if (!field)
32
+ throw new Error(`the page has no ${selector}`);
33
+ Reflect.set(Object.getPrototypeOf(field), 'value', value, field);
34
+ field.dispatchEvent(new frame.Event('input', { bubbles: true }));
35
+ },
36
+ press(label) {
37
+ const button = [...frame.document.querySelectorAll('button')].find(found => found.textContent?.trim() === label);
38
+ if (!button)
39
+ throw new Error(`the page has no ${label} button`);
40
+ button.click();
41
+ },
42
+ close: () => frame.happyDOM.close(),
43
+ };
44
+ }
45
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export type ThemeScheme = 'light' | 'dark';
2
+ export type ThemeColor = 'bg' | 'screen' | 'fg' | 'muted' | 'accent' | 'ok' | 'err' | 'warn' | 'experimental' | 'rule' | 'ruleStrong' | 'edge' | 'dim' | 'soft' | 'near' | 'neutralSoft' | 'accentSoft' | 'okSoft' | 'errSoft' | 'warnSoft' | 'experimentalSoft' | 'scrim';
3
+ export type ThemeFont = 'display' | 'body' | 'mono';
4
+ export type ThemeText = 'eyebrow' | 'hint' | 'body' | 'row' | 'rowLg' | 'title' | 'hero' | 'screenTitle';
5
+ export type ThemeDefaults = {
6
+ colors: Record<ThemeScheme, Record<ThemeColor, string>>;
7
+ fonts: Record<ThemeFont, string>;
8
+ text: Record<ThemeText, number>;
9
+ };
10
+ export declare const THEME_DEFAULTS: ThemeDefaults;
11
+ export type ThemeGroup = 'color' | 'font' | 'text';
12
+ export type Theme = {
13
+ scheme: ThemeScheme;
14
+ colors: Record<ThemeColor, string>;
15
+ text: Record<ThemeText, number>;
16
+ fonts: Record<ThemeFont, string>;
17
+ };
18
+ export declare function themeToken(group: ThemeGroup, token: string): string;
19
+ export declare function themeVariable(group: ThemeGroup, token: string): string;
20
+ export declare const THEME_DEFAULTS_CSS: string;
21
+ export declare function themeCss(theme: Theme): string;
22
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3C,MAAM,MAAM,UAAU,GAClB,IAAI,GACJ,QAAQ,GACR,IAAI,GACJ,OAAO,GACP,QAAQ,GACR,IAAI,GACJ,KAAK,GACL,MAAM,GACN,cAAc,GACd,MAAM,GACN,YAAY,GACZ,MAAM,GACN,KAAK,GACL,MAAM,GACN,MAAM,GACN,aAAa,GACb,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,UAAU,GACV,kBAAkB,GAClB,OAAO,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AACpD,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAEzG,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,aAkE5B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAMF,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAcD,eAAO,MAAM,kBAAkB,QAEsE,CAAC;AAEtG,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE7C"}
package/dist/theme.js ADDED
@@ -0,0 +1,92 @@
1
+ export const THEME_DEFAULTS = {
2
+ colors: {
3
+ dark: {
4
+ bg: '#0a0c0e',
5
+ screen: '#060809',
6
+ fg: '#efefef',
7
+ muted: '#a7adb5',
8
+ accent: '#00a8e8',
9
+ ok: '#3ddc84',
10
+ err: '#dc3d3d',
11
+ warn: '#ff7070',
12
+ experimental: '#ffb066',
13
+ rule: 'rgba(239, 239, 239, 0.1)',
14
+ ruleStrong: 'rgba(239, 239, 239, 0.15)',
15
+ edge: 'rgba(239, 239, 239, 0.25)',
16
+ dim: 'rgba(239, 239, 239, 0.35)',
17
+ soft: 'rgba(239, 239, 239, 0.55)',
18
+ near: 'rgba(239, 239, 239, 0.8)',
19
+ neutralSoft: 'rgba(239, 239, 239, 0.08)',
20
+ accentSoft: 'rgba(0, 168, 232, 0.14)',
21
+ okSoft: 'rgba(61, 220, 132, 0.14)',
22
+ errSoft: 'rgba(220, 61, 61, 0.14)',
23
+ warnSoft: 'rgba(255, 112, 112, 0.14)',
24
+ experimentalSoft: 'rgba(255, 176, 102, 0.14)',
25
+ scrim: 'rgba(0, 0, 0, 0.55)',
26
+ },
27
+ light: {
28
+ bg: '#f2f4f6',
29
+ screen: '#ffffff',
30
+ fg: '#0a0c0e',
31
+ muted: '#5c6670',
32
+ accent: '#0072a3',
33
+ ok: '#106e3f',
34
+ err: '#b93030',
35
+ warn: '#a34848',
36
+ experimental: '#8a5210',
37
+ rule: 'rgba(10, 12, 14, 0.1)',
38
+ ruleStrong: 'rgba(10, 12, 14, 0.15)',
39
+ edge: 'rgba(10, 12, 14, 0.25)',
40
+ dim: 'rgba(10, 12, 14, 0.35)',
41
+ soft: 'rgba(10, 12, 14, 0.55)',
42
+ near: 'rgba(10, 12, 14, 0.8)',
43
+ neutralSoft: 'rgba(10, 12, 14, 0.06)',
44
+ accentSoft: 'rgba(0, 114, 163, 0.12)',
45
+ okSoft: 'rgba(16, 110, 63, 0.12)',
46
+ errSoft: 'rgba(185, 48, 48, 0.12)',
47
+ warnSoft: 'rgba(163, 72, 72, 0.12)',
48
+ experimentalSoft: 'rgba(138, 82, 16, 0.12)',
49
+ scrim: 'rgba(0, 0, 0, 0.55)',
50
+ },
51
+ },
52
+ fonts: {
53
+ display: "'Outfit', system-ui, sans-serif",
54
+ body: "'Inter', system-ui, sans-serif",
55
+ mono: "ui-monospace, 'SF Mono', Menlo, Consolas, monospace",
56
+ },
57
+ text: {
58
+ eyebrow: 11,
59
+ hint: 12,
60
+ body: 14,
61
+ row: 15,
62
+ rowLg: 17,
63
+ title: 20,
64
+ hero: 22,
65
+ screenTitle: 34,
66
+ },
67
+ };
68
+ function kebab(token) {
69
+ return token.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`);
70
+ }
71
+ export function themeToken(group, token) {
72
+ return `${group}-${kebab(token)}`;
73
+ }
74
+ export function themeVariable(group, token) {
75
+ return `--bt-${themeToken(group, token)}`;
76
+ }
77
+ function declarations(colors, type) {
78
+ const lines = Object.entries(colors).map(([token, value]) => `${themeVariable('color', token)}:${value};`);
79
+ if (type) {
80
+ for (const [token, value] of Object.entries(type.fonts))
81
+ lines.push(`${themeVariable('font', token)}:${value};`);
82
+ for (const [token, value] of Object.entries(type.text))
83
+ lines.push(`${themeVariable('text', token)}:${value}px;`);
84
+ }
85
+ return lines.join('');
86
+ }
87
+ export const THEME_DEFAULTS_CSS = `:where(:root){--bt-scheme:light dark;${declarations(THEME_DEFAULTS.colors.dark, THEME_DEFAULTS)}}` +
88
+ `@media (prefers-color-scheme: light){:where(:root){${declarations(THEME_DEFAULTS.colors.light)}}}`;
89
+ export function themeCss(theme) {
90
+ return `:where(:root){--bt-scheme:${theme.scheme};${declarations(theme.colors, theme)}}`;
91
+ }
92
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}