@ai-ecoverse/slicc-spectrum 1.3.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.
Files changed (48) hide show
  1. package/README.md +32 -6
  2. package/dist/{chunk-JASEW37G.js → chunk-2BBOXTOJ.js} +5 -3
  3. package/dist/chunk-2EPADERK.js +25260 -0
  4. package/dist/chunk-2EPADERK.js.map +7 -0
  5. package/dist/{chunk-HBUX7E54.js → chunk-4JUIYZ4Q.js} +4 -4
  6. package/dist/{chunk-OFQ56DAN.js → chunk-CDYGCBW7.js} +5 -5
  7. package/dist/{chunk-YPQKCWWG.js → chunk-FXM4K5WL.js} +4 -4
  8. package/dist/{chunk-I2NMYJ25.js → chunk-H57UPFSK.js} +3 -3
  9. package/dist/{chunk-4GQ6THC2.js → chunk-JCRICTXR.js} +6 -6
  10. package/dist/{chunk-6JNYNXUQ.js → chunk-LR5GBIK7.js} +7 -7
  11. package/dist/{chunk-6N3GZNXH.js → chunk-MJOCPOXZ.js} +8 -8
  12. package/dist/{chunk-5XWUZJTT.js → chunk-N27WNL5Q.js} +4 -4
  13. package/dist/chunk-WCSKGA5W.js +30 -0
  14. package/dist/chunk-WCSKGA5W.js.map +7 -0
  15. package/dist/chunk-YWO2TNED.js +71 -0
  16. package/dist/chunk-YWO2TNED.js.map +7 -0
  17. package/dist/slicc-dummy.js +981 -115
  18. package/dist/slicc-dummy.js.map +4 -4
  19. package/dist/slicc-kernel-model.js +379 -0
  20. package/dist/slicc-kernel-model.js.map +7 -0
  21. package/dist/slicc-terminal.js +3 -26
  22. package/dist/slicc-terminal.js.map +3 -3
  23. package/dist/slicc-ui.js +2638 -2243
  24. package/dist/slicc-ui.js.map +4 -4
  25. package/dist/types/app/app.d.ts +5 -1
  26. package/dist/types/app/files.d.ts +11 -0
  27. package/dist/types/app/fonts.d.ts +8 -0
  28. package/dist/types/app/lucide.d.ts +24 -0
  29. package/dist/types/app/messages.d.ts +2 -1
  30. package/dist/types/app/panels.d.ts +3 -3
  31. package/dist/types/app/spectrum.d.ts +2 -0
  32. package/dist/types/app/sprinkle.d.ts +18 -1
  33. package/dist/types/kernel/files.d.ts +20 -0
  34. package/dist/types/kernel/idle.d.ts +51 -0
  35. package/dist/types/kernel/index.d.ts +17 -0
  36. package/dist/types/kernel/terminals.d.ts +21 -0
  37. package/dist/types/kernel.d.ts +7 -0
  38. package/dist/types/model/types.d.ts +4 -0
  39. package/package.json +7 -2
  40. /package/dist/{chunk-JASEW37G.js.map → chunk-2BBOXTOJ.js.map} +0 -0
  41. /package/dist/{chunk-HBUX7E54.js.map → chunk-4JUIYZ4Q.js.map} +0 -0
  42. /package/dist/{chunk-OFQ56DAN.js.map → chunk-CDYGCBW7.js.map} +0 -0
  43. /package/dist/{chunk-YPQKCWWG.js.map → chunk-FXM4K5WL.js.map} +0 -0
  44. /package/dist/{chunk-5XWUZJTT.js.map → chunk-H57UPFSK.js.map} +0 -0
  45. /package/dist/{chunk-4GQ6THC2.js.map → chunk-JCRICTXR.js.map} +0 -0
  46. /package/dist/{chunk-6JNYNXUQ.js.map → chunk-LR5GBIK7.js.map} +0 -0
  47. /package/dist/{chunk-6N3GZNXH.js.map → chunk-MJOCPOXZ.js.map} +0 -0
  48. /package/dist/{chunk-I2NMYJ25.js.map → chunk-N27WNL5Q.js.map} +0 -0
@@ -1,9 +1,9 @@
1
+ import {
2
+ o
3
+ } from "./chunk-2BBOXTOJ.js";
1
4
  import {
2
5
  defineElement
3
6
  } from "./chunk-6A6NIESE.js";
4
- import {
5
- o
6
- } from "./chunk-JASEW37G.js";
7
7
  import {
8
8
  SpectrumElement,
9
9
  b,
@@ -231,4 +231,4 @@ export {
231
231
  * SPDX-License-Identifier: BSD-3-Clause
232
232
  *)
233
233
  */
234
- //# sourceMappingURL=chunk-HBUX7E54.js.map
234
+ //# sourceMappingURL=chunk-4JUIYZ4Q.js.map
@@ -23,7 +23,7 @@ import {
23
23
  import {
24
24
  o as o2,
25
25
  o2 as o3
26
- } from "./chunk-JASEW37G.js";
26
+ } from "./chunk-2BBOXTOJ.js";
27
27
  import {
28
28
  A,
29
29
  SpectrumElement,
@@ -243,7 +243,7 @@ var AbstractOverlay = class _AbstractOverlay extends SpectrumElement {
243
243
  document.dispatchEvent(e2);
244
244
  }
245
245
  static async open(e2, r3, n2, a) {
246
- await import("./chunk-4GQ6THC2.js");
246
+ await import("./chunk-JCRICTXR.js");
247
247
  const m = arguments.length === 2, l2 = n2 || e2, t = new this();
248
248
  let p = false;
249
249
  t.dispose = () => {
@@ -2164,9 +2164,9 @@ var InteractionController = class {
2164
2164
  return;
2165
2165
  }
2166
2166
  e2 && (customElements.whenDefined("sp-overlay").then(async () => {
2167
- const { Overlay: t } = await import("./chunk-I2NMYJ25.js");
2167
+ const { Overlay: t } = await import("./chunk-H57UPFSK.js");
2168
2168
  this.overlay = new t(), this.overlay.open = true, this.target[lastInteractionType] = this.type;
2169
- }), import("./chunk-4GQ6THC2.js"));
2169
+ }), import("./chunk-JCRICTXR.js"));
2170
2170
  }
2171
2171
  }
2172
2172
  get overlay() {
@@ -2635,4 +2635,4 @@ export {
2635
2635
  LONGPRESS_INSTRUCTIONS,
2636
2636
  Overlay
2637
2637
  };
2638
- //# sourceMappingURL=chunk-OFQ56DAN.js.map
2638
+ //# sourceMappingURL=chunk-CDYGCBW7.js.map
@@ -1,9 +1,9 @@
1
- import {
2
- css_default
3
- } from "./chunk-LY7WVBCB.js";
4
1
  import {
5
2
  javascript_default
6
3
  } from "./chunk-TAZBKRHT.js";
4
+ import {
5
+ css_default
6
+ } from "./chunk-LY7WVBCB.js";
7
7
  import "./chunk-AXQFWXYZ.js";
8
8
 
9
9
  // node_modules/@shikijs/langs/dist/html.mjs
@@ -16,4 +16,4 @@ var html_default = [
16
16
  export {
17
17
  html_default as default
18
18
  };
19
- //# sourceMappingURL=chunk-YPQKCWWG.js.map
19
+ //# sourceMappingURL=chunk-FXM4K5WL.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  LONGPRESS_INSTRUCTIONS,
3
3
  Overlay
4
- } from "./chunk-OFQ56DAN.js";
4
+ } from "./chunk-CDYGCBW7.js";
5
5
  import "./chunk-IBQ4O4NO.js";
6
6
  import "./chunk-ZMBN6APP.js";
7
7
  import "./chunk-Y4Z7K443.js";
8
8
  import "./chunk-364Y2XOJ.js";
9
9
  import "./chunk-ER3HU7OE.js";
10
- import "./chunk-JASEW37G.js";
10
+ import "./chunk-2BBOXTOJ.js";
11
11
  import "./chunk-TS7SL372.js";
12
12
  import "./chunk-AXQFWXYZ.js";
13
13
  export {
14
14
  LONGPRESS_INSTRUCTIONS,
15
15
  Overlay
16
16
  };
17
- //# sourceMappingURL=chunk-I2NMYJ25.js.map
17
+ //# sourceMappingURL=chunk-H57UPFSK.js.map
@@ -1,18 +1,18 @@
1
- import {
2
- defineElement
3
- } from "./chunk-6A6NIESE.js";
4
1
  import {
5
2
  Overlay
6
- } from "./chunk-OFQ56DAN.js";
3
+ } from "./chunk-CDYGCBW7.js";
7
4
  import "./chunk-IBQ4O4NO.js";
8
5
  import "./chunk-ZMBN6APP.js";
9
6
  import "./chunk-Y4Z7K443.js";
10
7
  import "./chunk-364Y2XOJ.js";
11
8
  import "./chunk-ER3HU7OE.js";
12
- import "./chunk-JASEW37G.js";
9
+ import "./chunk-2BBOXTOJ.js";
10
+ import {
11
+ defineElement
12
+ } from "./chunk-6A6NIESE.js";
13
13
  import "./chunk-TS7SL372.js";
14
14
  import "./chunk-AXQFWXYZ.js";
15
15
 
16
16
  // node_modules/@spectrum-web-components/overlay/sp-overlay.js
17
17
  defineElement("sp-overlay", Overlay);
18
- //# sourceMappingURL=chunk-4GQ6THC2.js.map
18
+ //# sourceMappingURL=chunk-JCRICTXR.js.map
@@ -1,16 +1,16 @@
1
- import {
2
- MatchMediaController
3
- } from "./chunk-5OVGH7HO.js";
4
- import {
5
- defineElement
6
- } from "./chunk-6A6NIESE.js";
7
1
  import {
8
2
  firstFocusableIn
9
3
  } from "./chunk-IBQ4O4NO.js";
10
4
  import "./chunk-ZMBN6APP.js";
5
+ import {
6
+ MatchMediaController
7
+ } from "./chunk-5OVGH7HO.js";
11
8
  import {
12
9
  r
13
10
  } from "./chunk-ER3HU7OE.js";
11
+ import {
12
+ defineElement
13
+ } from "./chunk-6A6NIESE.js";
14
14
  import {
15
15
  A,
16
16
  SpectrumElement,
@@ -177,4 +177,4 @@ i3([n({ type: Boolean, reflect: true })], Tray.prototype, "open", 2), i3([e(".tr
177
177
 
178
178
  // node_modules/@spectrum-web-components/tray/sp-tray.js
179
179
  defineElement("sp-tray", Tray);
180
- //# sourceMappingURL=chunk-6JNYNXUQ.js.map
180
+ //# sourceMappingURL=chunk-LR5GBIK7.js.map
@@ -1,15 +1,15 @@
1
+ import {
2
+ focusableSelector
3
+ } from "./chunk-ZMBN6APP.js";
1
4
  import {
2
5
  DependencyManagerController
3
6
  } from "./chunk-EN3XGF2M.js";
7
+ import {
8
+ o
9
+ } from "./chunk-2BBOXTOJ.js";
4
10
  import {
5
11
  defineElement
6
12
  } from "./chunk-6A6NIESE.js";
7
- import {
8
- focusableSelector
9
- } from "./chunk-ZMBN6APP.js";
10
- import {
11
- o
12
- } from "./chunk-JASEW37G.js";
13
13
  import {
14
14
  SpectrumElement,
15
15
  b,
@@ -146,7 +146,7 @@ var Tooltip = class extends SpectrumElement {
146
146
  <span id="tip" aria-hidden="true"></span>
147
147
  </sp-tooltip-openable>
148
148
  `;
149
- return this.selfManaged ? (this.dependencyManager.add("sp-overlay"), import("./chunk-4GQ6THC2.js"), b`
149
+ return this.selfManaged ? (this.dependencyManager.add("sp-overlay"), import("./chunk-JCRICTXR.js"), b`
150
150
  <sp-overlay
151
151
  ?open=${this.open && !this.disabled && this.dependencyManager.loaded}
152
152
  ?delayed=${this.delayed}
@@ -178,4 +178,4 @@ o3([n({ type: Boolean })], Tooltip.prototype, "delayed", 2), o3([n({ type: Boole
178
178
 
179
179
  // node_modules/@spectrum-web-components/tooltip/sp-tooltip.js
180
180
  defineElement("sp-tooltip", Tooltip);
181
- //# sourceMappingURL=chunk-6N3GZNXH.js.map
181
+ //# sourceMappingURL=chunk-MJOCPOXZ.js.map
@@ -1,8 +1,8 @@
1
- import "./chunk-HBUX7E54.js";
2
- import "./chunk-6A6NIESE.js";
1
+ import "./chunk-4JUIYZ4Q.js";
3
2
  import "./chunk-364Y2XOJ.js";
4
3
  import "./chunk-ER3HU7OE.js";
5
- import "./chunk-JASEW37G.js";
4
+ import "./chunk-2BBOXTOJ.js";
5
+ import "./chunk-6A6NIESE.js";
6
6
  import "./chunk-TS7SL372.js";
7
7
  import "./chunk-AXQFWXYZ.js";
8
- //# sourceMappingURL=chunk-5XWUZJTT.js.map
8
+ //# sourceMappingURL=chunk-N27WNL5Q.js.map
@@ -0,0 +1,30 @@
1
+ // src/kernel-backend.ts
2
+ var encoder = new TextEncoder();
3
+ function kernelBackend(kernel, { argv = ["bash", "-i"], cwd, env } = {}) {
4
+ return {
5
+ async open(sink, { cols, rows }) {
6
+ const onData = (bytes) => sink.output(bytes);
7
+ const terminal = await kernel.openTerminal(argv, { cwd, env, cols, rows, onData });
8
+ terminal.exited.then(
9
+ (status) => sink.exit(status),
10
+ (error) => {
11
+ sink.output(encoder.encode(`\r
12
+ ${error instanceof Error ? error.message : error}\r
13
+ `));
14
+ sink.exit(1);
15
+ }
16
+ );
17
+ return {
18
+ write: (data) => terminal.write(data),
19
+ resize: (c, r) => terminal.resize(c, r),
20
+ signal: (name) => terminal.signal(name),
21
+ close: () => terminal.close()
22
+ };
23
+ }
24
+ };
25
+ }
26
+
27
+ export {
28
+ kernelBackend
29
+ };
30
+ //# sourceMappingURL=chunk-WCSKGA5W.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/kernel-backend.ts"],
4
+ "sourcesContent": ["import type { TerminalBackend, TerminalSignal } from './backend.ts';\n\nexport interface KernelTerminal {\n readonly exited: Promise<number>;\n write(data: Uint8Array): void;\n resize(cols: number, rows: number): void;\n signal(name: TerminalSignal): void;\n close(): void;\n}\n\nexport interface KernelTerminalOptions {\n cwd?: string;\n env?: Record<string, string>;\n cols: number;\n rows: number;\n onData: (bytes: Uint8Array) => void;\n}\n\nexport interface TerminalKernel {\n openTerminal(argv: string[], options: KernelTerminalOptions): Promise<KernelTerminal>;\n}\n\nexport interface KernelBackendOptions {\n argv?: string[];\n cwd?: string;\n env?: Record<string, string>;\n}\n\nconst encoder = new TextEncoder();\n\nexport function kernelBackend(\n kernel: TerminalKernel,\n { argv = ['bash', '-i'], cwd, env }: KernelBackendOptions = {}\n): TerminalBackend {\n return {\n async open(sink, { cols, rows }) {\n const onData = (bytes: Uint8Array) => sink.output(bytes);\n const terminal = await kernel.openTerminal(argv, { cwd, env, cols, rows, onData });\n terminal.exited.then(\n (status) => sink.exit(status),\n (error) => {\n sink.output(encoder.encode(`\\r\\n${error instanceof Error ? error.message : error}\\r\\n`));\n sink.exit(1);\n }\n );\n return {\n write: (data) => terminal.write(data),\n resize: (c, r) => terminal.resize(c, r),\n signal: (name) => terminal.signal(name),\n close: () => terminal.close(),\n };\n },\n };\n}\n"],
5
+ "mappings": ";AA4BA,IAAM,UAAU,IAAI,YAAY;AAEzB,SAAS,cACd,QACA,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG,KAAK,IAAI,IAA0B,CAAC,GAC5C;AACjB,SAAO;AAAA,IACL,MAAM,KAAK,MAAM,EAAE,MAAM,KAAK,GAAG;AAC/B,YAAM,SAAS,CAAC,UAAsB,KAAK,OAAO,KAAK;AACvD,YAAM,WAAW,MAAM,OAAO,aAAa,MAAM,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,CAAC;AACjF,eAAS,OAAO;AAAA,QACd,CAAC,WAAW,KAAK,KAAK,MAAM;AAAA,QAC5B,CAAC,UAAU;AACT,eAAK,OAAO,QAAQ,OAAO;AAAA,EAAO,iBAAiB,QAAQ,MAAM,UAAU,KAAK;AAAA,CAAM,CAAC;AACvF,eAAK,KAAK,CAAC;AAAA,QACb;AAAA,MACF;AACA,aAAO;AAAA,QACL,OAAO,CAAC,SAAS,SAAS,MAAM,IAAI;AAAA,QACpC,QAAQ,CAAC,GAAG,MAAM,SAAS,OAAO,GAAG,CAAC;AAAA,QACtC,QAAQ,CAAC,SAAS,SAAS,OAAO,IAAI;AAAA,QACtC,OAAO,MAAM,SAAS,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,71 @@
1
+ import {
2
+ Emitter
3
+ } from "./chunk-T5NHW4KC.js";
4
+
5
+ // src/dummy/clock.ts
6
+ function clock(delay) {
7
+ return {
8
+ delay,
9
+ sleep: (ticks = 1) => new Promise((resolve) => setTimeout(resolve, delay * ticks))
10
+ };
11
+ }
12
+
13
+ // src/dummy/settings.ts
14
+ var key = "slicc-ui.settings";
15
+ var DummySettings = class extends Emitter {
16
+ #settings;
17
+ #accounts;
18
+ #models;
19
+ #storage;
20
+ #clock;
21
+ constructor(defaults, models, accounts, storage, clock2) {
22
+ super();
23
+ this.#storage = storage;
24
+ this.#clock = clock2;
25
+ this.#models = models;
26
+ this.#accounts = accounts.map((account) => ({ ...account }));
27
+ this.#settings = { ...defaults, ...this.#load() };
28
+ }
29
+ #load() {
30
+ try {
31
+ return JSON.parse(this.#storage?.getItem(key) ?? "{}");
32
+ } catch {
33
+ return {};
34
+ }
35
+ }
36
+ get() {
37
+ return { ...this.#settings };
38
+ }
39
+ update(patch) {
40
+ this.#settings = { ...this.#settings, ...patch };
41
+ this.#storage?.setItem(key, JSON.stringify(this.#settings));
42
+ this.emit("settings", this.get());
43
+ }
44
+ models() {
45
+ return this.#models;
46
+ }
47
+ accounts() {
48
+ return this.#accounts.map((account) => ({ ...account }));
49
+ }
50
+ #set(id, patch) {
51
+ this.#accounts = this.#accounts.map(
52
+ (account) => account.id === id ? { ...account, ...patch } : account
53
+ );
54
+ this.emit("accounts", this.accounts());
55
+ }
56
+ async connect(id) {
57
+ await this.#clock.sleep(10);
58
+ const account = this.#accounts.find((candidate) => candidate.id === id);
59
+ const identity = account?.identity || `${id}-user@example.com`;
60
+ this.#set(id, { status: "connected", identity });
61
+ }
62
+ disconnect(id) {
63
+ this.#set(id, { status: "disconnected" });
64
+ }
65
+ };
66
+
67
+ export {
68
+ clock,
69
+ DummySettings
70
+ };
71
+ //# sourceMappingURL=chunk-YWO2TNED.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/dummy/clock.ts", "../src/dummy/settings.ts"],
4
+ "sourcesContent": ["export interface Clock {\n delay: number;\n sleep(ticks?: number): Promise<void>;\n}\n\nexport function clock(delay: number): Clock {\n return {\n delay,\n sleep: (ticks = 1) => new Promise((resolve) => setTimeout(resolve, delay * ticks)),\n };\n}\n", "import { Emitter } from '../model/emitter.ts';\nimport type {\n Account,\n ModelOption,\n Settings,\n SettingsEvents,\n SettingsPort,\n} from '../model/types.ts';\nimport type { Clock } from './clock.ts';\n\nconst key = 'slicc-ui.settings';\n\nexport class DummySettings extends Emitter<SettingsEvents> implements SettingsPort {\n #settings: Settings;\n #accounts: Account[];\n #models: readonly ModelOption[];\n #storage: Storage | null;\n #clock: Clock;\n\n constructor(\n defaults: Settings,\n models: readonly ModelOption[],\n accounts: readonly Account[],\n storage: Storage | null,\n clock: Clock\n ) {\n super();\n this.#storage = storage;\n this.#clock = clock;\n this.#models = models;\n this.#accounts = accounts.map((account) => ({ ...account }));\n this.#settings = { ...defaults, ...this.#load() };\n }\n\n #load(): Partial<Settings> {\n try {\n return JSON.parse(this.#storage?.getItem(key) ?? '{}');\n } catch {\n return {};\n }\n }\n\n get(): Settings {\n return { ...this.#settings };\n }\n\n update(patch: Partial<Settings>): void {\n this.#settings = { ...this.#settings, ...patch };\n this.#storage?.setItem(key, JSON.stringify(this.#settings));\n this.emit('settings', this.get());\n }\n\n models(): readonly ModelOption[] {\n return this.#models;\n }\n\n accounts(): readonly Account[] {\n return this.#accounts.map((account) => ({ ...account }));\n }\n\n #set(id: string, patch: Partial<Account>): void {\n this.#accounts = this.#accounts.map((account) =>\n account.id === id ? { ...account, ...patch } : account\n );\n this.emit('accounts', this.accounts());\n }\n\n async connect(id: string): Promise<void> {\n await this.#clock.sleep(10);\n const account = this.#accounts.find((candidate) => candidate.id === id);\n const identity = account?.identity || `${id}-user@example.com`;\n this.#set(id, { status: 'connected', identity });\n }\n\n disconnect(id: string): void {\n this.#set(id, { status: 'disconnected' });\n }\n}\n"],
5
+ "mappings": ";;;;;AAKO,SAAS,MAAM,OAAsB;AAC1C,SAAO;AAAA,IACL;AAAA,IACA,OAAO,CAAC,QAAQ,MAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,QAAQ,KAAK,CAAC;AAAA,EACnF;AACF;;;ACAA,IAAM,MAAM;AAEL,IAAM,gBAAN,cAA4B,QAAgD;AAAA,EACjF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YACE,UACA,QACA,UACA,SACAA,QACA;AACA,UAAM;AACN,SAAK,WAAW;AAChB,SAAK,SAASA;AACd,SAAK,UAAU;AACf,SAAK,YAAY,SAAS,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,EAAE;AAC3D,SAAK,YAAY,EAAE,GAAG,UAAU,GAAG,KAAK,MAAM,EAAE;AAAA,EAClD;AAAA,EAEA,QAA2B;AACzB,QAAI;AACF,aAAO,KAAK,MAAM,KAAK,UAAU,QAAQ,GAAG,KAAK,IAAI;AAAA,IACvD,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAgB;AACd,WAAO,EAAE,GAAG,KAAK,UAAU;AAAA,EAC7B;AAAA,EAEA,OAAO,OAAgC;AACrC,SAAK,YAAY,EAAE,GAAG,KAAK,WAAW,GAAG,MAAM;AAC/C,SAAK,UAAU,QAAQ,KAAK,KAAK,UAAU,KAAK,SAAS,CAAC;AAC1D,SAAK,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,EAClC;AAAA,EAEA,SAAiC;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAA+B;AAC7B,WAAO,KAAK,UAAU,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,EAAE;AAAA,EACzD;AAAA,EAEA,KAAK,IAAY,OAA+B;AAC9C,SAAK,YAAY,KAAK,UAAU;AAAA,MAAI,CAAC,YACnC,QAAQ,OAAO,KAAK,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,IACjD;AACA,SAAK,KAAK,YAAY,KAAK,SAAS,CAAC;AAAA,EACvC;AAAA,EAEA,MAAM,QAAQ,IAA2B;AACvC,UAAM,KAAK,OAAO,MAAM,EAAE;AAC1B,UAAM,UAAU,KAAK,UAAU,KAAK,CAAC,cAAc,UAAU,OAAO,EAAE;AACtE,UAAM,WAAW,SAAS,YAAY,GAAG,EAAE;AAC3C,SAAK,KAAK,IAAI,EAAE,QAAQ,aAAa,SAAS,CAAC;AAAA,EACjD;AAAA,EAEA,WAAW,IAAkB;AAC3B,SAAK,KAAK,IAAI,EAAE,QAAQ,eAAe,CAAC;AAAA,EAC1C;AACF;",
6
+ "names": ["clock"]
7
+ }