@silo-code/sdk 0.6.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 (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +69 -0
  3. package/dist/context-keys.d.ts +19 -0
  4. package/dist/context-keys.d.ts.map +1 -0
  5. package/dist/context-keys.js +2 -0
  6. package/dist/context-keys.js.map +1 -0
  7. package/dist/dnd-service.d.ts +140 -0
  8. package/dist/dnd-service.d.ts.map +1 -0
  9. package/dist/dnd-service.js +17 -0
  10. package/dist/dnd-service.js.map +1 -0
  11. package/dist/domain-types.d.ts +237 -0
  12. package/dist/domain-types.d.ts.map +1 -0
  13. package/dist/domain-types.js +11 -0
  14. package/dist/domain-types.js.map +1 -0
  15. package/dist/editor-service.d.ts +175 -0
  16. package/dist/editor-service.d.ts.map +1 -0
  17. package/dist/editor-service.js +2 -0
  18. package/dist/editor-service.js.map +1 -0
  19. package/dist/extension-storage.d.ts +26 -0
  20. package/dist/extension-storage.d.ts.map +1 -0
  21. package/dist/extension-storage.js +2 -0
  22. package/dist/extension-storage.js.map +1 -0
  23. package/dist/file-service.d.ts +84 -0
  24. package/dist/file-service.d.ts.map +1 -0
  25. package/dist/file-service.js +2 -0
  26. package/dist/file-service.js.map +1 -0
  27. package/dist/index.d.ts +32 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +22 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/layout-service.d.ts +46 -0
  32. package/dist/layout-service.d.ts.map +1 -0
  33. package/dist/layout-service.js +2 -0
  34. package/dist/layout-service.js.map +1 -0
  35. package/dist/permissions.d.ts +41 -0
  36. package/dist/permissions.d.ts.map +1 -0
  37. package/dist/permissions.js +40 -0
  38. package/dist/permissions.js.map +1 -0
  39. package/dist/process-service.d.ts +132 -0
  40. package/dist/process-service.d.ts.map +1 -0
  41. package/dist/process-service.js +2 -0
  42. package/dist/process-service.js.map +1 -0
  43. package/dist/terminal-service.d.ts +38 -0
  44. package/dist/terminal-service.d.ts.map +1 -0
  45. package/dist/terminal-service.js +2 -0
  46. package/dist/terminal-service.js.map +1 -0
  47. package/dist/theme-service.d.ts +87 -0
  48. package/dist/theme-service.d.ts.map +1 -0
  49. package/dist/theme-service.js +2 -0
  50. package/dist/theme-service.js.map +1 -0
  51. package/dist/types.d.ts +495 -0
  52. package/dist/types.d.ts.map +1 -0
  53. package/dist/types.js +2 -0
  54. package/dist/types.js.map +1 -0
  55. package/dist/ui-service.d.ts +469 -0
  56. package/dist/ui-service.d.ts.map +1 -0
  57. package/dist/ui-service.js +2 -0
  58. package/dist/ui-service.js.map +1 -0
  59. package/dist/use-focus-group.d.ts +202 -0
  60. package/dist/use-focus-group.d.ts.map +1 -0
  61. package/dist/use-focus-group.js +236 -0
  62. package/dist/use-focus-group.js.map +1 -0
  63. package/dist/use-service-state.d.ts +36 -0
  64. package/dist/use-service-state.d.ts.map +1 -0
  65. package/dist/use-service-state.js +25 -0
  66. package/dist/use-service-state.js.map +1 -0
  67. package/dist/workspace-service.d.ts +72 -0
  68. package/dist/workspace-service.d.ts.map +1 -0
  69. package/dist/workspace-service.js +2 -0
  70. package/dist/workspace-service.js.map +1 -0
  71. package/package.json +54 -0
  72. package/src/context-keys.ts +18 -0
  73. package/src/dnd-service.ts +151 -0
  74. package/src/domain-types.ts +252 -0
  75. package/src/editor-service.ts +196 -0
  76. package/src/extension-storage.ts +25 -0
  77. package/src/file-service.ts +90 -0
  78. package/src/index.ts +151 -0
  79. package/src/layout-service.ts +49 -0
  80. package/src/permissions.ts +55 -0
  81. package/src/process-service.ts +143 -0
  82. package/src/terminal-service.ts +41 -0
  83. package/src/theme-service.ts +102 -0
  84. package/src/types.ts +513 -0
  85. package/src/ui-service.ts +487 -0
  86. package/src/use-focus-group.test.ts +168 -0
  87. package/src/use-focus-group.ts +382 -0
  88. package/src/use-service-state.ts +43 -0
  89. package/src/workspace-service.ts +76 -0
@@ -0,0 +1,132 @@
1
+ import type { Disposable } from "./types";
2
+ /**
3
+ * Options for spawning a process session. Today sessions are shell PTYs, so
4
+ * `cwd` is required (the webview has no ambient working directory).
5
+ *
6
+ * @category Consumer Services
7
+ * @public
8
+ */
9
+ export interface ProcessSpawnOptions {
10
+ /**
11
+ * Working directory the session starts in. Must resolve inside the open
12
+ * workspace unless the extension declared the `process` {@link Permission}
13
+ * (first-party extensions are unscoped); otherwise throws
14
+ * {@link PathDeniedError}.
15
+ */
16
+ cwd: string;
17
+ /** Initial column count. */
18
+ cols?: number;
19
+ /** Initial row count. */
20
+ rows?: number;
21
+ }
22
+ /**
23
+ * A live handle to one persistent process session, returned by
24
+ * {@link ProcessService.spawn} / {@link ProcessService.attach}. The underlying
25
+ * session **survives app restarts** — re-`attach` by {@link ProcessSession.id}
26
+ * to reconnect to a still-running session.
27
+ *
28
+ * @category Consumer Services
29
+ * @public
30
+ */
31
+ export interface ProcessSession {
32
+ /** Stable session id; pass to {@link ProcessService.attach} to reconnect. */
33
+ readonly id: string;
34
+ /** Write input to the session (e.g. keystrokes). */
35
+ write(data: string): void;
36
+ /** Notify the session its viewport size changed. */
37
+ resize(cols: number, rows: number): void;
38
+ /** Terminate the session and release it. */
39
+ kill(): Promise<void>;
40
+ /** Fetch the persisted output buffer (to restore a view after re-attach). */
41
+ getBuffer(): Promise<string>;
42
+ /** Persist an output buffer for later restore. */
43
+ saveBuffer(data: string): Promise<void>;
44
+ /** Subscribe to output data. Dispose to stop listening. */
45
+ onData(listener: (data: string) => void): Disposable;
46
+ /** Subscribe to session exit. Dispose to stop listening. */
47
+ onExit(listener: (exitCode: number) => void): Disposable;
48
+ }
49
+ /**
50
+ * Options for {@link ProcessService.exec}.
51
+ *
52
+ * @category Consumer Services
53
+ * @public
54
+ */
55
+ export interface ProcessExecOptions {
56
+ /**
57
+ * Working directory to run the command in. Defaults to the open **workspace
58
+ * folder** when omitted — the right cwd for CLI tools (git, formatters,
59
+ * linters) that operate on a repo. A `cwd` outside the workspace throws
60
+ * {@link PathDeniedError} unless the extension declared the `process`
61
+ * {@link Permission}. First-party (bundled) extensions are unscoped.
62
+ */
63
+ cwd?: string;
64
+ }
65
+ /**
66
+ * The captured result of a one-shot subprocess, returned by
67
+ * {@link ProcessService.exec}.
68
+ *
69
+ * @category Consumer Services
70
+ * @public
71
+ */
72
+ export interface ProcessExecResult {
73
+ /** Everything the command wrote to standard output. */
74
+ stdout: string;
75
+ /** Everything the command wrote to standard error. */
76
+ stderr: string;
77
+ /**
78
+ * The process exit code (`0` conventionally means success), or `-1` if the
79
+ * process was terminated by a signal. A non-zero `code` is **not** an error —
80
+ * `exec` resolves regardless; inspect `code`/`stderr` to decide.
81
+ */
82
+ code: number;
83
+ }
84
+ /**
85
+ * Persistent process / PTY sessions that **survive app restarts** — the core
86
+ * primitive under the terminal (and future task runners, REPLs) — plus one-shot
87
+ * {@link ProcessService.exec | exec} for fire-and-forget subprocess execution.
88
+ * Exposed as {@link ExtensionContext.process}.
89
+ *
90
+ * @category Consumer Services
91
+ * @public
92
+ */
93
+ export interface ProcessService {
94
+ /** Spawn a new session in `opts.cwd`. */
95
+ spawn(opts: ProcessSpawnOptions): Promise<ProcessSession>;
96
+ /**
97
+ * Re-attach to an existing session by id (e.g. after an app restart). Rejects
98
+ * with a 404-style error if the session no longer exists.
99
+ */
100
+ attach(id: string, opts?: {
101
+ cols?: number;
102
+ rows?: number;
103
+ }): Promise<ProcessSession>;
104
+ /**
105
+ * Run a one-shot command and resolve with its captured output — for
106
+ * extensions that wrap a CLI (git, formatters, linters) rather than drive an
107
+ * interactive shell. Use {@link ProcessService.spawn | spawn} for long-lived
108
+ * interactive sessions instead.
109
+ *
110
+ * Runs **off the UI thread**, so a slow or network-bound command never
111
+ * stutters the app. The returned promise rejects only if the process could
112
+ * not be spawned (e.g. the command was not found); a command that runs but
113
+ * exits non-zero **resolves** — check {@link ProcessExecResult.code} and
114
+ * {@link ProcessExecResult.stderr}.
115
+ *
116
+ * @param command - Executable to run (resolved via `PATH`), e.g. `"git"`.
117
+ * @param args - Arguments passed verbatim — not shell-interpreted, so no
118
+ * quoting/escaping concerns and no shell-injection surface.
119
+ * @param options - Optional {@link ProcessExecOptions} (e.g. `cwd`).
120
+ * @example
121
+ * ```ts
122
+ * const { stdout, code } = await ctx.process.exec(
123
+ * "git",
124
+ * ["status", "--porcelain=v2"],
125
+ * { cwd: workspaceFolder },
126
+ * );
127
+ * if (code === 0) parseStatus(stdout);
128
+ * ```
129
+ */
130
+ exec(command: string, args: string[], options?: ProcessExecOptions): Promise<ProcessExecResult>;
131
+ }
132
+ //# sourceMappingURL=process-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-service.d.ts","sourceRoot":"","sources":["../src/process-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAK1C;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,oDAAoD;IACpD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,4CAA4C;IAC5C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,6EAA6E;IAC7E,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7B,kDAAkD;IAClD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,2DAA2D;IAC3D,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;IACrD,4DAA4D;IAC5D,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,UAAU,CAAC;CAC1D;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D;;;OAGG;IACH,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACtC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,IAAI,CACF,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=process-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-service.js","sourceRoot":"","sources":["../src/process-service.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ import type { TerminalKind, TerminalRecord } from "./domain-types";
2
+ export type { TerminalKind, TerminalRecord } from "./domain-types";
3
+ /**
4
+ * Input for {@link TerminalService.create}.
5
+ *
6
+ * @category Consumer Services
7
+ * @public
8
+ */
9
+ export interface CreateTerminalInput {
10
+ /** Terminal kind — `"shell"` (default), `"claude"`, or `"pi"`. */
11
+ kind?: TerminalKind;
12
+ /** Working directory; falls back to the workspace folder when absent. */
13
+ cwd?: string;
14
+ /** Target workspace; defaults to the active workspace. */
15
+ workspaceId?: string;
16
+ }
17
+ /**
18
+ * Consumer API for the terminal domain, exposed as
19
+ * {@link ExtensionContext.terminals}. The terminal is a core feature — a
20
+ * built-in DockKind like the editor — so this mirrors {@link EditorService}:
21
+ * `create` opens a terminal tab in a workspace, and `closeWorkspace` reaps a
22
+ * workspace's terminals (used when a workspace is deleted). The tab itself is
23
+ * rendered by the core dock from the workspace's terminal records.
24
+ *
25
+ * @category Consumer Services
26
+ * @public
27
+ */
28
+ export interface TerminalService {
29
+ /**
30
+ * Open a new terminal in a workspace (defaults to the active one). Returns the
31
+ * created {@link TerminalRecord}; the PTY session spawns lazily when its tab
32
+ * mounts.
33
+ */
34
+ create(input?: CreateTerminalInput): TerminalRecord | undefined;
35
+ /** Close and kill every terminal in a workspace (e.g. on workspace delete). */
36
+ closeWorkspace(workspaceId: string): void;
37
+ }
38
+ //# sourceMappingURL=terminal-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-service.d.ts","sourceRoot":"","sources":["../src/terminal-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGnE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,kEAAkE;IAClE,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,EAAE,mBAAmB,GAAG,cAAc,GAAG,SAAS,CAAC;IAChE,+EAA+E;IAC/E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-service.js","sourceRoot":"","sources":["../src/terminal-service.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ import type { Disposable } from "./types";
2
+ import type { ThemeBase, ThemeVars, CustomTheme, ThemeExport } from "./domain-types";
3
+ export type { ThemeBase, ThemeVars, CustomTheme, ThemeExport, } from "./domain-types";
4
+ /**
5
+ * A selectable theme contributed via
6
+ * {@link ExtensionContext.registerThemePreset}. Built-in presets (Tokyo Night,
7
+ * Solarized Light, Gruvbox Dark, …) are registered by the `theme-presets`
8
+ * extension; core ships only Dark and Light. A preset's {@link ThemePreset.vars}
9
+ * are injected as CSS custom properties when it is the active theme.
10
+ *
11
+ * @category Registration
12
+ * @public
13
+ */
14
+ export interface ThemePreset {
15
+ /** Unique id (also the persisted `activeThemeId` when selected). */
16
+ id: string;
17
+ /** Display name shown in the theme picker. */
18
+ name: string;
19
+ /** Dark or light — drives the Monaco/xterm base and the `data-theme` attribute. */
20
+ base: ThemeBase;
21
+ /** The CSS `color-scheme` for native controls. */
22
+ colorScheme: "dark" | "light";
23
+ /** CSS variable overrides applied on top of the base palette in `theme.css`. */
24
+ vars: Partial<ThemeVars>;
25
+ }
26
+ /**
27
+ * A theme id resolved to its base + effective variables — what the theme picker
28
+ * renders swatches from, returned by {@link ThemeService.resolve}.
29
+ *
30
+ * @category Consumer Services
31
+ * @public
32
+ */
33
+ export interface ResolvedTheme {
34
+ base: ThemeBase;
35
+ colorScheme: "dark" | "light";
36
+ vars: Partial<ThemeVars>;
37
+ }
38
+ /**
39
+ * An immutable, frozen view of theme state, returned by
40
+ * {@link ThemeService.getState} and delivered to subscribers — read access
41
+ * without a Valtio dependency. `presets` is part of the state (not a static
42
+ * read) because presets are dynamic: extensions register and unregister them at
43
+ * runtime.
44
+ *
45
+ * @category Consumer Services
46
+ * @public
47
+ */
48
+ export interface ThemeState {
49
+ /** The active theme's id (a preset id or a custom theme id). */
50
+ activeId: string;
51
+ /** Core Dark/Light followed by every registered preset, in registration order. */
52
+ presets: readonly ThemePreset[];
53
+ /** The user's custom themes, loaded from disk. */
54
+ customThemes: readonly CustomTheme[];
55
+ }
56
+ /**
57
+ * Consumer API for the theme domain, exposed as {@link ExtensionContext.theme}.
58
+ * Read via {@link ThemeService.getState | getState} /
59
+ * {@link ThemeService.subscribe | subscribe} (e.g. with `useSyncExternalStore`);
60
+ * drive via {@link ThemeService.setActive | setActive} and the custom-theme
61
+ * methods. Contributing a *new* preset is a separate concern —
62
+ * {@link ExtensionContext.registerThemePreset}.
63
+ *
64
+ * @category Consumer Services
65
+ * @public
66
+ */
67
+ export interface ThemeService {
68
+ /** Current frozen view of theme state. */
69
+ getState(): ThemeState;
70
+ /** Subscribe to theme-state changes (active theme, custom themes, or presets). */
71
+ subscribe(listener: (s: ThemeState) => void): Disposable;
72
+ /** Set the active theme by id (a built-in preset, registered preset, or custom). */
73
+ setActive(id: string): void;
74
+ /** Resolve a theme id to its base + effective vars (for previews/swatches). */
75
+ resolve(id: string): ResolvedTheme;
76
+ /** Persist a custom theme to disk and refresh the in-memory list. */
77
+ saveCustom(theme: CustomTheme): Promise<void>;
78
+ /** Delete a custom theme from disk and refresh the in-memory list. */
79
+ deleteCustom(id: string): Promise<void>;
80
+ /** Reload custom themes from disk into the store. */
81
+ reloadCustom(): Promise<void>;
82
+ /** Strip the id from a custom theme for sharing/serialization. */
83
+ exportTheme(theme: CustomTheme): ThemeExport;
84
+ /** Validate/parse imported JSON into a custom theme (assigns a fresh id). */
85
+ importTheme(data: unknown): CustomTheme;
86
+ }
87
+ //# sourceMappingURL=theme-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-service.d.ts","sourceRoot":"","sources":["../src/theme-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,IAAI,EAAE,SAAS,CAAC;IAChB,kDAAkD;IAClD,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,gFAAgF;IAChF,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,kDAAkD;IAClD,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;CACtC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,QAAQ,IAAI,UAAU,CAAC;IACvB,kFAAkF;IAClF,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,GAAG,UAAU,CAAC;IACzD,oFAAoF;IACpF,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAAC;IACnC,qEAAqE;IACrE,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,sEAAsE;IACtE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,qDAAqD;IACrD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,kEAAkE;IAClE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAAC;IAC7C,6EAA6E;IAC7E,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=theme-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-service.js","sourceRoot":"","sources":["../src/theme-service.ts"],"names":[],"mappings":""}