snice 3.6.0 → 3.8.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 (80) hide show
  1. package/README.md +2 -2
  2. package/bin/snice.js +4 -5
  3. package/bin/templates/CLAUDE.md +25 -3
  4. package/bin/templates/pwa/README.md +188 -0
  5. package/bin/templates/pwa/global.d.ts +10 -0
  6. package/bin/templates/pwa/index.html +16 -0
  7. package/bin/templates/pwa/package.json +32 -0
  8. package/bin/templates/pwa/public/icons/.gitkeep +6 -0
  9. package/bin/templates/pwa/src/daemons/notifications.ts +148 -0
  10. package/bin/templates/pwa/src/fetcher.ts +15 -0
  11. package/bin/templates/pwa/src/guards/auth.ts +12 -0
  12. package/bin/templates/pwa/src/main.ts +42 -0
  13. package/bin/templates/pwa/src/middleware/auth.ts +16 -0
  14. package/bin/templates/pwa/src/middleware/error.ts +36 -0
  15. package/bin/templates/pwa/src/middleware/retry.ts +31 -0
  16. package/bin/templates/pwa/src/pages/dashboard.ts +143 -0
  17. package/bin/templates/pwa/src/pages/login.ts +161 -0
  18. package/bin/templates/pwa/src/pages/notifications.ts +156 -0
  19. package/bin/templates/pwa/src/pages/profile.ts +164 -0
  20. package/bin/templates/pwa/src/router.ts +20 -0
  21. package/bin/templates/pwa/src/services/auth.ts +48 -0
  22. package/bin/templates/pwa/src/services/jwt.ts +35 -0
  23. package/bin/templates/pwa/src/services/storage.ts +24 -0
  24. package/bin/templates/pwa/src/styles/global.css +55 -0
  25. package/bin/templates/pwa/src/types/auth.ts +21 -0
  26. package/bin/templates/pwa/src/types/notifications.ts +9 -0
  27. package/bin/templates/pwa/tests/helpers/test-utils.ts +84 -0
  28. package/bin/templates/pwa/tests/middleware/auth.test.ts +67 -0
  29. package/bin/templates/pwa/tests/middleware/error.test.ts +105 -0
  30. package/bin/templates/pwa/tests/middleware/retry.test.ts +103 -0
  31. package/bin/templates/pwa/tests/services/auth.test.ts +89 -0
  32. package/bin/templates/pwa/tests/services/jwt.test.ts +76 -0
  33. package/bin/templates/pwa/tests/services/storage.test.ts +69 -0
  34. package/bin/templates/{social → pwa}/tsconfig.json +11 -10
  35. package/bin/templates/pwa/vite.config.ts +94 -0
  36. package/bin/templates/{social/vite.config.ts → pwa/vitest.config.ts} +12 -17
  37. package/dist/components/music-player/snice-music-player.d.ts +72 -0
  38. package/dist/components/music-player/snice-music-player.js +730 -0
  39. package/dist/components/music-player/snice-music-player.js.map +1 -0
  40. package/dist/components/music-player/snice-music-player.types.d.ts +43 -0
  41. package/dist/components/timer/snice-timer.d.ts +27 -0
  42. package/dist/components/timer/snice-timer.js +197 -0
  43. package/dist/components/timer/snice-timer.js.map +1 -0
  44. package/dist/components/timer/snice-timer.types.d.ts +10 -0
  45. package/dist/fetcher.d.ts +65 -0
  46. package/dist/index.cjs +92 -3
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.ts +2 -0
  49. package/dist/index.esm.js +92 -4
  50. package/dist/index.esm.js.map +1 -1
  51. package/dist/index.iife.js +92 -3
  52. package/dist/index.iife.js.map +1 -1
  53. package/dist/symbols.cjs +1 -1
  54. package/dist/symbols.esm.js +1 -1
  55. package/dist/transitions.cjs +1 -1
  56. package/dist/transitions.esm.js +1 -1
  57. package/dist/types/context.d.ts +7 -1
  58. package/dist/types/router-options.d.ts +6 -0
  59. package/docs/ai/api.md +33 -1
  60. package/docs/ai/components/music-player.md +134 -0
  61. package/docs/ai/components/timer.md +43 -0
  62. package/docs/ai/patterns.md +48 -1
  63. package/docs/components/music-player.md +314 -0
  64. package/docs/components/timer.md +143 -0
  65. package/docs/fetcher.md +447 -0
  66. package/docs/routing.md +11 -8
  67. package/package.json +2 -1
  68. package/bin/templates/social/README.md +0 -42
  69. package/bin/templates/social/global.d.ts +0 -14
  70. package/bin/templates/social/index.html +0 -13
  71. package/bin/templates/social/package.json +0 -21
  72. package/bin/templates/social/src/main.ts +0 -33
  73. package/bin/templates/social/src/pages/feed-page.ts +0 -111
  74. package/bin/templates/social/src/pages/messages-page.ts +0 -102
  75. package/bin/templates/social/src/pages/not-found-page.ts +0 -46
  76. package/bin/templates/social/src/pages/profile-page.ts +0 -99
  77. package/bin/templates/social/src/pages/settings-page.ts +0 -119
  78. package/bin/templates/social/src/router.ts +0 -9
  79. package/bin/templates/social/src/styles/global.css +0 -156
  80. /package/bin/templates/{social → pwa}/public/vite.svg +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-music-player.js","sources":["../../../components/music-player/snice-music-player.css?inline","../../../../components/music-player/snice-music-player.ts"],"sourcesContent":["export default \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.player-container{background:var(--snice-color-background,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-lg,.5rem);padding:var(--snice-spacing-lg,1.5rem);box-shadow:var(--snice-shadow-md,0 4px 6px -1px rgb(0 0 0 / .1),0 2px 4px -2px rgb(0 0 0 / .1))}.player-info{display:flex;align-items:center;gap:var(--snice-spacing-md,1rem);margin-bottom:var(--snice-spacing-lg,1.5rem)}.player-artwork{flex-shrink:0;width:5rem;height:5rem;border-radius:var(--snice-border-radius-md,.25rem);overflow:hidden;background:var(--snice-color-background-secondary,rgb(250 250 250));display:flex;align-items:center;justify-content:center}.player-artwork img{width:100%;height:100%;object-fit:cover}.player-artwork-placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.player-track-info{flex:1;min-width:0}.player-track-title{font-size:var(--snice-font-size-lg, 1.125rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-track-artist{font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text-secondary,rgb(82 82 82));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-track-album{font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-tertiary,rgb(115 115 115));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-controls{margin-bottom:var(--snice-spacing-md,1rem);overflow:visible}.player-control-buttons{display:flex;align-items:center;justify-content:center;gap:var(--snice-spacing-sm,.75rem);margin-bottom:var(--snice-spacing-md,1rem)}.player-btn{background:0 0;border:none;cursor:pointer;padding:var(--snice-spacing-xs,.5rem);border-radius:var(--snice-border-radius-md,.25rem);color:var(--snice-color-text,rgb(23 23 23));display:inline-flex;align-items:center;justify-content:center;transition:background-color var(--snice-transition-fast, 150ms) ease}.player-btn:hover:not(:disabled){background:var(--snice-color-background-hover,rgb(241 241 241))}.player-btn:active:not(:disabled){background:var(--snice-color-background-active,rgb(226 226 226))}.player-btn:disabled{opacity:.5;cursor:not-allowed}.player-btn.active{color:var(--snice-color-primary,rgb(37 99 235))}.player-btn-play-pause{background:var(--snice-color-primary,rgb(37 99 235));color:var(--snice-color-text-inverse,rgb(250 250 250));padding:var(--snice-spacing-md,1rem);border-radius:var(--snice-border-radius-circle,50%)}.player-btn-play-pause:active:not(:disabled),.player-btn-play-pause:hover:not(:disabled){background:var(--snice-color-primary-hover,rgb(29 78 216))}.player-progress-container{display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem);position:relative}.player-time{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-secondary,rgb(82 82 82));min-width:2.5rem}.player-time-current{text-align:right}.player-progress{flex:1;height:.375rem;background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px);cursor:pointer;position:relative;overflow:hidden}.player-progress:hover{background:var(--snice-color-background-tertiary,rgb(241 241 241))}.player-progress-bar{height:100%;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-pill,9999px);transition:width .1s linear}.player-volume{display:flex;align-items:center;gap:var(--snice-spacing-xs,.5rem);margin-left:var(--snice-spacing-sm,.75rem)}.player-btn-volume{flex-shrink:0}.player-volume-slider-container{display:flex;align-items:center}.player-volume-slider{-webkit-appearance:none;appearance:none;width:5rem;height:.375rem;background:linear-gradient(to right,var(--snice-color-primary,rgb(37 99 235)) 0,var(--snice-color-primary,rgb(37 99 235)) var(--volume-percent,100%),var(--snice-color-background-secondary,rgb(250 250 250)) var(--volume-percent,100%),var(--snice-color-background-secondary,rgb(250 250 250)) 100%);border-radius:var(--snice-border-radius-pill,9999px);outline:0;cursor:pointer}.player-volume-slider::-webkit-slider-runnable-track{width:100%;height:.375rem;background:0 0;border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-moz-range-track{width:100%;height:.375rem;background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-moz-range-progress{height:.375rem;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-pill,9999px)}.player-volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:.875rem;height:.875rem;background:var(--snice-color-primary,rgb(37 99 235));border-radius:var(--snice-border-radius-circle,50%);cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease;margin-top:-.25rem}.player-volume-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.player-volume-slider::-moz-range-thumb{width:.875rem;height:.875rem;background:var(--snice-color-primary,rgb(37 99 235));border:none;border-radius:var(--snice-border-radius-circle,50%);cursor:pointer;transition:transform var(--snice-transition-fast, 150ms) ease}.player-volume-slider::-moz-range-thumb:hover{transform:scale(1.15)}.player-playlist{border-top:1px solid var(--snice-color-border,rgb(226 226 226));padding-top:var(--snice-spacing-md,1rem);margin-top:var(--snice-spacing-md,1rem)}.player-playlist-header{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-semibold,600);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-sm,.75rem)}.player-playlist-items{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem);max-height:15rem;overflow-y:auto}.player-playlist-item{display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem);padding:var(--snice-spacing-sm,.75rem);border-radius:var(--snice-border-radius-md,.25rem);cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.player-playlist-item:hover{background:var(--snice-color-background-hover,rgb(241 241 241))}.player-playlist-item.active{background:var(--snice-color-primary-subtle,rgb(239 246 255))}.player-playlist-item.active .player-playlist-item-title{color:var(--snice-color-primary,rgb(37 99 235));font-weight:var(--snice-font-weight-medium,500)}.player-playlist-item-number{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-tertiary,rgb(115 115 115));width:1.5rem;text-align:center;flex-shrink:0}.player-playlist-item-artwork{width:2.5rem;height:2.5rem;border-radius:var(--snice-border-radius-sm,.125rem);object-fit:cover;flex-shrink:0}.player-playlist-item-info{flex:1;min-width:0}.player-playlist-item-title{font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));margin-bottom:var(--snice-spacing-3xs,.125rem);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-playlist-item-artist{font-size:var(--snice-font-size-xs, .75rem);color:var(--snice-color-text-secondary,rgb(82 82 82));overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-playlist-item-duration{font-size:var(--snice-font-size-xs, .75rem);font-variant-numeric:tabular-nums;color:var(--snice-color-text-tertiary,rgb(115 115 115));flex-shrink:0}.player-playlist-items::-webkit-scrollbar{width:.5rem}.player-playlist-items::-webkit-scrollbar-track{background:var(--snice-color-background-secondary,rgb(250 250 250));border-radius:var(--snice-border-radius-pill,9999px)}.player-playlist-items::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-pill,9999px)}.player-playlist-items::-webkit-scrollbar-thumb:hover{background:var(--snice-color-border-hover,rgb(204 204 204))}.player-container--compact{padding:var(--snice-spacing-sm,.75rem);display:flex;align-items:center;gap:var(--snice-spacing-md,1rem)}.player-container--compact .player-info{gap:var(--snice-spacing-sm,.75rem);margin-bottom:0;flex-shrink:0}.player-container--compact .player-artwork{width:3rem;height:3rem}.player-container--compact .player-track-title{font-size:var(--snice-font-size-sm, .875rem)}.player-container--compact .player-track-artist{font-size:var(--snice-font-size-xs, .75rem)}.player-container--compact .player-track-album{display:none}.player-container--compact .player-controls{flex:1;margin-bottom:0;display:flex;align-items:center;gap:var(--snice-spacing-sm,.75rem)}.player-container--compact .player-control-buttons{gap:var(--snice-spacing-xs,.5rem);margin-bottom:0}.player-container--compact .player-btn{padding:var(--snice-spacing-2xs,.25rem)}.player-container--compact .player-btn svg{width:1.25rem;height:1.25rem}.player-container--compact .player-btn-play-pause{padding:var(--snice-spacing-xs,.5rem)}.player-container--compact .player-btn-play-pause svg{width:1.5rem;height:1.5rem}.player-container--compact .player-progress-container{flex:1}.player-container--compact .player-time{font-size:var(--snice-font-size-2xs, .625rem);min-width:2rem}\";",null],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ export interface Track {
2
+ id: string;
3
+ title: string;
4
+ artist?: string;
5
+ album?: string;
6
+ artwork?: string;
7
+ src: string;
8
+ duration?: number;
9
+ }
10
+ export type RepeatMode = 'off' | 'all' | 'one';
11
+ export type PlayerState = 'playing' | 'paused' | 'stopped' | 'loading' | 'error';
12
+ export interface PlayerControls {
13
+ play(): Promise<void>;
14
+ pause(): void;
15
+ stop(): void;
16
+ next(): void;
17
+ previous(): void;
18
+ seek(time: number): void;
19
+ setVolume(volume: number): void;
20
+ toggleShuffle(): void;
21
+ setRepeat(mode: RepeatMode): void;
22
+ }
23
+ export interface SniceMusicPlayerElement extends HTMLElement, PlayerControls {
24
+ tracks: Track[];
25
+ currentTrackIndex: number;
26
+ currentTrack: string;
27
+ currentTime: number;
28
+ duration: number;
29
+ volume: number;
30
+ muted: boolean;
31
+ shuffle: boolean;
32
+ repeat: RepeatMode;
33
+ state: PlayerState;
34
+ autoplay: boolean;
35
+ showPlaylist: boolean;
36
+ showControls: boolean;
37
+ showVolume: boolean;
38
+ showArtwork: boolean;
39
+ showTrackInfo: boolean;
40
+ compact: boolean;
41
+ loadTrack(index: number): Promise<void>;
42
+ getCurrentTrack(): Track | null;
43
+ }
@@ -0,0 +1,27 @@
1
+ import type { TimerMode, SniceTimerElement } from './snice-timer.types';
2
+ export declare class SniceTimer extends HTMLElement implements SniceTimerElement {
3
+ mode: TimerMode;
4
+ initialTime: number;
5
+ running: boolean;
6
+ private time;
7
+ private animationFrame;
8
+ private startTimestamp;
9
+ private pausedTime;
10
+ private displayElement?;
11
+ styles(): import("snice").CSSResult;
12
+ render(): import("snice").TemplateResult;
13
+ start(): void;
14
+ stop(): void;
15
+ reset(): void;
16
+ getTime(): number;
17
+ private formatTime;
18
+ private emitTimerStart;
19
+ private emitTimerStop;
20
+ private emitTimerReset;
21
+ private emitTimerComplete;
22
+ }
23
+ declare global {
24
+ interface HTMLElementTagNameMap {
25
+ 'snice-timer': SniceTimer;
26
+ }
27
+ }
@@ -0,0 +1,197 @@
1
+ import { __esDecorate, __runInitializers } from 'tslib';
2
+ import { element, property, query, styles, render, dispatch, css, html } from 'snice';
3
+
4
+ var timerStyles = ":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.timer-container{background:var(--snice-color-background-element,rgb(252 251 249));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-lg,8px);padding:var(--snice-spacing-md,1rem);box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));display:flex;flex-direction:column;align-items:center;gap:var(--snice-spacing-md,1rem)}.timer-display{font-size:var(--snice-font-size-3xl, 2rem);font-weight:var(--snice-font-weight-bold,700);font-variant-numeric:tabular-nums;color:var(--snice-color-text,rgb(23 23 23));min-width:9rem;text-align:center}.timer-controls{display:flex;justify-content:center;align-items:center;gap:var(--snice-spacing-sm,.75rem)}.timer-btn{width:3rem;height:3rem;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--snice-transition-fast, 150ms);color:var(--snice-color-text-inverse,rgb(250 250 250))}.timer-btn:hover{transform:scale(1.1)}.timer-btn:active{transform:scale(.95)}.timer-btn.start{background:var(--snice-color-success,rgb(22 163 74))}.timer-btn.start:hover{background:var(--snice-color-success-hover,rgb(21 128 61))}.timer-btn.pause{background:var(--snice-color-warning,rgb(202 138 4))}.timer-btn.pause:hover{background:var(--snice-color-warning-hover,rgb(161 98 7))}.timer-btn.reset{background:var(--snice-color-neutral,rgb(82 82 82))}.timer-btn.reset:hover{background:var(--snice-color-neutral-hover,rgb(64 64 64))}.timer-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}";
5
+
6
+ let SniceTimer = (() => {
7
+ let _classDecorators = [element('snice-timer')];
8
+ let _classDescriptor;
9
+ let _classExtraInitializers = [];
10
+ let _classThis;
11
+ let _classSuper = HTMLElement;
12
+ let _instanceExtraInitializers = [];
13
+ let _mode_decorators;
14
+ let _mode_initializers = [];
15
+ let _mode_extraInitializers = [];
16
+ let _initialTime_decorators;
17
+ let _initialTime_initializers = [];
18
+ let _initialTime_extraInitializers = [];
19
+ let _running_decorators;
20
+ let _running_initializers = [];
21
+ let _running_extraInitializers = [];
22
+ let _time_decorators;
23
+ let _time_initializers = [];
24
+ let _time_extraInitializers = [];
25
+ let _displayElement_decorators;
26
+ let _displayElement_initializers = [];
27
+ let _displayElement_extraInitializers = [];
28
+ let _styles_decorators;
29
+ let _render_decorators;
30
+ let _emitTimerStart_decorators;
31
+ let _emitTimerStop_decorators;
32
+ let _emitTimerReset_decorators;
33
+ let _emitTimerComplete_decorators;
34
+ (class extends _classSuper {
35
+ static { _classThis = this; }
36
+ static {
37
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
38
+ _mode_decorators = [property({ type: String })];
39
+ _initialTime_decorators = [property({ type: Number, attribute: 'initial-time' })];
40
+ _running_decorators = [property({ type: Boolean })];
41
+ _time_decorators = [property({ type: Number })];
42
+ _displayElement_decorators = [query('.timer-display')];
43
+ _styles_decorators = [styles()];
44
+ _render_decorators = [render()];
45
+ _emitTimerStart_decorators = [dispatch('@snice/timer-start', { bubbles: true, composed: true })];
46
+ _emitTimerStop_decorators = [dispatch('@snice/timer-stop', { bubbles: true, composed: true })];
47
+ _emitTimerReset_decorators = [dispatch('@snice/timer-reset', { bubbles: true, composed: true })];
48
+ _emitTimerComplete_decorators = [dispatch('@snice/timer-complete', { bubbles: true, composed: true })];
49
+ __esDecorate(this, null, _styles_decorators, { kind: "method", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles }, metadata: _metadata }, null, _instanceExtraInitializers);
50
+ __esDecorate(this, null, _render_decorators, { kind: "method", name: "render", static: false, private: false, access: { has: obj => "render" in obj, get: obj => obj.render }, metadata: _metadata }, null, _instanceExtraInitializers);
51
+ __esDecorate(this, null, _emitTimerStart_decorators, { kind: "method", name: "emitTimerStart", static: false, private: false, access: { has: obj => "emitTimerStart" in obj, get: obj => obj.emitTimerStart }, metadata: _metadata }, null, _instanceExtraInitializers);
52
+ __esDecorate(this, null, _emitTimerStop_decorators, { kind: "method", name: "emitTimerStop", static: false, private: false, access: { has: obj => "emitTimerStop" in obj, get: obj => obj.emitTimerStop }, metadata: _metadata }, null, _instanceExtraInitializers);
53
+ __esDecorate(this, null, _emitTimerReset_decorators, { kind: "method", name: "emitTimerReset", static: false, private: false, access: { has: obj => "emitTimerReset" in obj, get: obj => obj.emitTimerReset }, metadata: _metadata }, null, _instanceExtraInitializers);
54
+ __esDecorate(this, null, _emitTimerComplete_decorators, { kind: "method", name: "emitTimerComplete", static: false, private: false, access: { has: obj => "emitTimerComplete" in obj, get: obj => obj.emitTimerComplete }, metadata: _metadata }, null, _instanceExtraInitializers);
55
+ __esDecorate(null, null, _mode_decorators, { kind: "field", name: "mode", static: false, private: false, access: { has: obj => "mode" in obj, get: obj => obj.mode, set: (obj, value) => { obj.mode = value; } }, metadata: _metadata }, _mode_initializers, _mode_extraInitializers);
56
+ __esDecorate(null, null, _initialTime_decorators, { kind: "field", name: "initialTime", static: false, private: false, access: { has: obj => "initialTime" in obj, get: obj => obj.initialTime, set: (obj, value) => { obj.initialTime = value; } }, metadata: _metadata }, _initialTime_initializers, _initialTime_extraInitializers);
57
+ __esDecorate(null, null, _running_decorators, { kind: "field", name: "running", static: false, private: false, access: { has: obj => "running" in obj, get: obj => obj.running, set: (obj, value) => { obj.running = value; } }, metadata: _metadata }, _running_initializers, _running_extraInitializers);
58
+ __esDecorate(null, null, _time_decorators, { kind: "field", name: "time", static: false, private: false, access: { has: obj => "time" in obj, get: obj => obj.time, set: (obj, value) => { obj.time = value; } }, metadata: _metadata }, _time_initializers, _time_extraInitializers);
59
+ __esDecorate(null, null, _displayElement_decorators, { kind: "field", name: "displayElement", static: false, private: false, access: { has: obj => "displayElement" in obj, get: obj => obj.displayElement, set: (obj, value) => { obj.displayElement = value; } }, metadata: _metadata }, _displayElement_initializers, _displayElement_extraInitializers);
60
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
61
+ _classThis = _classDescriptor.value;
62
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
63
+ __runInitializers(_classThis, _classExtraInitializers);
64
+ }
65
+ styles() {
66
+ return css /*css*/ `${timerStyles}`;
67
+ }
68
+ render() {
69
+ return html /*html*/ `
70
+ <div class="timer-container">
71
+ <div class="timer-display">${this.formatTime(this.time)}</div>
72
+ <div class="timer-controls">
73
+ <if ${!this.running}>
74
+ <button class="timer-btn start" @click=${() => this.start()} title="Start">
75
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
76
+ <path d="M8 5v14l11-7z"/>
77
+ </svg>
78
+ </button>
79
+ </if>
80
+ <if ${this.running}>
81
+ <button class="timer-btn pause" @click=${() => this.stop()} title="Pause">
82
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
83
+ <rect x="6" y="4" width="4" height="16"></rect>
84
+ <rect x="14" y="4" width="4" height="16"></rect>
85
+ </svg>
86
+ </button>
87
+ </if>
88
+ <button class="timer-btn reset" @click=${() => this.reset()} title="Reset">
89
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
90
+ <path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
91
+ <path d="M3 3v5h5"/>
92
+ </svg>
93
+ </button>
94
+ </div>
95
+ </div>
96
+ `;
97
+ }
98
+ start() {
99
+ if (this.running)
100
+ return;
101
+ this.running = true;
102
+ if (this.mode === 'stopwatch') {
103
+ this.startTimestamp = Date.now() - (this.time * 1000);
104
+ }
105
+ else {
106
+ this.startTimestamp = Date.now();
107
+ this.pausedTime = this.time;
108
+ }
109
+ const tick = () => {
110
+ if (!this.running)
111
+ return;
112
+ const elapsed = (Date.now() - this.startTimestamp) / 1000;
113
+ if (this.mode === 'stopwatch') {
114
+ this.time = elapsed;
115
+ }
116
+ else {
117
+ this.time = Math.max(0, this.pausedTime - elapsed);
118
+ if (this.time <= 0) {
119
+ this.time = 0;
120
+ if (this.displayElement) {
121
+ this.displayElement.textContent = this.formatTime(this.time);
122
+ }
123
+ this.stop();
124
+ this.emitTimerComplete();
125
+ return;
126
+ }
127
+ }
128
+ if (this.displayElement) {
129
+ this.displayElement.textContent = this.formatTime(this.time);
130
+ }
131
+ this.animationFrame = requestAnimationFrame(tick);
132
+ };
133
+ this.animationFrame = requestAnimationFrame(tick);
134
+ this.emitTimerStart();
135
+ }
136
+ stop() {
137
+ if (!this.running)
138
+ return;
139
+ this.running = false;
140
+ if (this.animationFrame !== null) {
141
+ cancelAnimationFrame(this.animationFrame);
142
+ this.animationFrame = null;
143
+ }
144
+ this.emitTimerStop();
145
+ }
146
+ reset() {
147
+ this.stop();
148
+ this.time = this.mode === 'timer' ? this.initialTime : 0;
149
+ // Update display immediately
150
+ if (this.displayElement) {
151
+ this.displayElement.textContent = this.formatTime(this.time);
152
+ }
153
+ this.emitTimerReset();
154
+ }
155
+ getTime() {
156
+ return this.time;
157
+ }
158
+ formatTime(seconds) {
159
+ const hrs = Math.floor(seconds / 3600);
160
+ const mins = Math.floor((seconds % 3600) / 60);
161
+ const secs = Math.floor(seconds % 60);
162
+ const ms = Math.floor((seconds % 1) * 10);
163
+ if (hrs > 0) {
164
+ return `${hrs}:${mins.toString().padStart(2, '0')}:${secs.toString().padStart(2, '0')}`;
165
+ }
166
+ return `${mins}:${secs.toString().padStart(2, '0')}.${ms}`;
167
+ }
168
+ emitTimerStart() {
169
+ return { timer: this, time: this.time };
170
+ }
171
+ emitTimerStop() {
172
+ return { timer: this, time: this.time };
173
+ }
174
+ emitTimerReset() {
175
+ return { timer: this, time: this.time };
176
+ }
177
+ emitTimerComplete() {
178
+ return { timer: this };
179
+ }
180
+ constructor() {
181
+ super(...arguments);
182
+ this.mode = (__runInitializers(this, _instanceExtraInitializers), __runInitializers(this, _mode_initializers, 'stopwatch'));
183
+ this.initialTime = (__runInitializers(this, _mode_extraInitializers), __runInitializers(this, _initialTime_initializers, 0));
184
+ this.running = (__runInitializers(this, _initialTime_extraInitializers), __runInitializers(this, _running_initializers, false));
185
+ this.time = (__runInitializers(this, _running_extraInitializers), __runInitializers(this, _time_initializers, 0));
186
+ this.animationFrame = (__runInitializers(this, _time_extraInitializers), null);
187
+ this.startTimestamp = 0;
188
+ this.pausedTime = 0;
189
+ this.displayElement = __runInitializers(this, _displayElement_initializers, void 0);
190
+ __runInitializers(this, _displayElement_extraInitializers);
191
+ }
192
+ });
193
+ return _classThis;
194
+ })();
195
+
196
+ export { SniceTimer };
197
+ //# sourceMappingURL=snice-timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snice-timer.js","sources":["../../../components/timer/snice-timer.css?inline","../../../../components/timer/snice-timer.ts"],"sourcesContent":["export default \":host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif);contain:layout style paint}.timer-container{background:var(--snice-color-background-element,rgb(252 251 249));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-lg,8px);padding:var(--snice-spacing-md,1rem);box-shadow:var(--snice-shadow-sm,0 1px 2px 0 rgb(0 0 0 / .05));display:flex;flex-direction:column;align-items:center;gap:var(--snice-spacing-md,1rem)}.timer-display{font-size:var(--snice-font-size-3xl, 2rem);font-weight:var(--snice-font-weight-bold,700);font-variant-numeric:tabular-nums;color:var(--snice-color-text,rgb(23 23 23));min-width:9rem;text-align:center}.timer-controls{display:flex;justify-content:center;align-items:center;gap:var(--snice-spacing-sm,.75rem)}.timer-btn{width:3rem;height:3rem;border-radius:50%;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--snice-transition-fast, 150ms);color:var(--snice-color-text-inverse,rgb(250 250 250))}.timer-btn:hover{transform:scale(1.1)}.timer-btn:active{transform:scale(.95)}.timer-btn.start{background:var(--snice-color-success,rgb(22 163 74))}.timer-btn.start:hover{background:var(--snice-color-success-hover,rgb(21 128 61))}.timer-btn.pause{background:var(--snice-color-warning,rgb(202 138 4))}.timer-btn.pause:hover{background:var(--snice-color-warning-hover,rgb(161 98 7))}.timer-btn.reset{background:var(--snice-color-neutral,rgb(82 82 82))}.timer-btn.reset:hover{background:var(--snice-color-neutral-hover,rgb(64 64 64))}.timer-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}\";",null],"names":[],"mappings":";;;AAAA,kBAAe,yqDAAyqD;;ICK3qD,UAAU,GAAA,CAAA,MAAA;4BADtB,OAAO,CAAC,aAAa,CAAC,CAAA;;;;sBACS,WAAW;;;;;;;;;;;;;;;;;;;;;;;AAAnB,KAAA,cAAQ,WAAW,CAAA;;;;AACxC,YAAA,gBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;uCAG1B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAA;AAGrD,YAAA,mBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAG3B,YAAA,gBAAA,GAAA,CAAA,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;0CAO1B,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAGvB,YAAA,kBAAA,GAAA,CAAA,MAAM,EAAE,CAAA;AAKR,YAAA,kBAAA,GAAA,CAAA,MAAM,EAAE,CAAA;AAoHR,YAAA,0BAAA,GAAA,CAAA,QAAQ,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AAKjE,YAAA,yBAAA,GAAA,CAAA,QAAQ,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AAKhE,YAAA,0BAAA,GAAA,CAAA,QAAQ,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AAKjE,YAAA,6BAAA,GAAA,CAAA,QAAQ,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;AAvIrE,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,QAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,MAAM,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKN,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,QAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,MAAM,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAoHN,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,gBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAQ,cAAc,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKtB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,eAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAQ,aAAa,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKrB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,gBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAQ,cAAc,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;AAKtB,YAAA,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,6BAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,mBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAQ,iBAAiB,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,0BAAA,CAAA;YA3JzB,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,IAAI,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAJ,IAAI,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,CAAA;YAGJ,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,uBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,aAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,WAAW,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAX,WAAW,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,8BAAA,CAAA;YAGX,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,SAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,SAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,OAAO,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAP,OAAO,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,0BAAA,CAAA;YAGP,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,MAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAQ,IAAI,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAJ,IAAI,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,kBAAA,EAAA,uBAAA,CAAA;YAOZ,YAAA,CAAA,IAAA,EAAA,IAAA,EAAA,0BAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,GAAA,IAAA,gBAAA,IAAA,GAAA,EAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAQ,cAAc,EAAA,GAAA,EAAA,CAAA,GAAA,EAAA,KAAA,KAAA,EAAA,GAAA,CAAd,cAAc,GAAA,KAAA,CAAA,CAAA,CAAA,EAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,4BAAA,EAAA,iCAAA,CAAA;YAlBxB,YAAA,CAAA,IAAA,EAAA,gBAAA,GAAA,EAAA,KAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,uBAAA,CAAA;;;YAAa,iBAAA,CAAA,UAAA,EAAA,uBAAA,CAAA;;QAqBX,MAAM,GAAA;AACJ,YAAA,OAAO,GAAG,SAAO,CAAA,EAAG,WAAW,EAAE;QACnC;QAGA,MAAM,GAAA;YACJ,OAAO,IAAI,UAAQ;;AAEc,mCAAA,EAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;gBAE/C,CAAC,IAAI,CAAC,OAAO,CAAA;AACwB,mDAAA,EAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;;;;;;AAMvD,cAAA,EAAA,IAAI,CAAC,OAAO,CAAA;AACyB,mDAAA,EAAA,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;;;;;;;AAOnB,iDAAA,EAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;;;;;;;;KAQhE;QACH;QAEA,KAAK,GAAA;YACH,IAAI,IAAI,CAAC,OAAO;gBAAE;AAElB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AAEnB,YAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC7B,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACvD;iBAAO;AACL,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE;AAChC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI;YAC7B;YAEA,MAAM,IAAI,GAAG,MAAK;gBAChB,IAAI,CAAC,IAAI,CAAC,OAAO;oBAAE;AAEnB,gBAAA,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI;AAEzD,gBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;AAC7B,oBAAA,IAAI,CAAC,IAAI,GAAG,OAAO;gBACrB;qBAAO;AACL,oBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAElD,oBAAA,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;AAClB,wBAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,wBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,4BAAA,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;wBAC9D;wBACA,IAAI,CAAC,IAAI,EAAE;wBACX,IAAI,CAAC,iBAAiB,EAAE;wBACxB;oBACF;gBACF;AAEA,gBAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,oBAAA,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC9D;AAEA,gBAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC;AACnD,YAAA,CAAC;AAED,YAAA,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,IAAI,CAAC;YACjD,IAAI,CAAC,cAAc,EAAE;QACvB;QAEA,IAAI,GAAA;YACF,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE;AAEnB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAChC,gBAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC;AACzC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;YAC5B;YAEA,IAAI,CAAC,aAAa,EAAE;QACtB;QAEA,KAAK,GAAA;YACH,IAAI,CAAC,IAAI,EAAE;AACX,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,OAAO,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC;;AAGxD,YAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,gBAAA,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9D;YAEA,IAAI,CAAC,cAAc,EAAE;QACvB;QAEA,OAAO,GAAA;YACL,OAAO,IAAI,CAAC,IAAI;QAClB;AAEQ,QAAA,UAAU,CAAC,OAAe,EAAA;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACrC,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AAEzC,YAAA,IAAI,GAAG,GAAG,CAAC,EAAE;gBACX,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAE;YACzF;AACA,YAAA,OAAO,GAAG,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,EAAE,EAAE;QAC5D;QAGQ,cAAc,GAAA;YACpB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACzC;QAGQ,aAAa,GAAA;YACnB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACzC;QAGQ,cAAc,GAAA;YACpB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QACzC;QAGQ,iBAAiB,GAAA;AACvB,YAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;QACxB;;;AA7JA,YAAA,IAAA,CAAA,IAAI,IAFO,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAU,EAAA,iBAAA,CAAA,IAAA,EAAA,kBAAA,EAEH,WAAW,CAAA,CAAA;YAG7B,IAAA,CAAA,WAAW,IAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,yBAAA,EAAW,CAAC,CAAA,CAAA;YAGvB,IAAA,CAAA,OAAO,IAAA,iBAAA,CAAA,IAAA,EAAA,8BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,qBAAA,EAAY,KAAK,CAAA,CAAA;YAGhB,IAAA,CAAA,IAAI,IAAA,iBAAA,CAAA,IAAA,EAAA,0BAAA,CAAA,EAAA,iBAAA,CAAA,IAAA,EAAA,kBAAA,EAAW,CAAC,CAAA,CAAA;YAEhB,IAAA,CAAA,cAAc,IAAA,iBAAA,CAAA,IAAA,EAAA,uBAAA,CAAA,EAAkB,IAAI,CAAA;YACpC,IAAA,CAAA,cAAc,GAAW,CAAC;YAC1B,IAAA,CAAA,UAAU,GAAW,CAAC;AAGtB,YAAA,IAAA,CAAA,cAAc,GAAA,iBAAA,CAAA,IAAA,EAAA,4BAAA,EAAA,MAAA,CAAA;;;;;;;;;"}
@@ -0,0 +1,10 @@
1
+ export type TimerMode = 'stopwatch' | 'timer';
2
+ export interface SniceTimerElement extends HTMLElement {
3
+ mode: TimerMode;
4
+ initialTime: number;
5
+ running: boolean;
6
+ start(): void;
7
+ stop(): void;
8
+ reset(): void;
9
+ getTime(): number;
10
+ }
@@ -0,0 +1,65 @@
1
+ import type { Context } from './types/context';
2
+ /**
3
+ * Middleware for modifying requests before they are sent
4
+ * `this` is bound to the Context instance
5
+ */
6
+ export type RequestMiddleware = (this: Context, request: Request, next: () => Promise<Response>) => Promise<Response>;
7
+ /**
8
+ * Middleware for handling responses after they are received
9
+ * `this` is bound to the Context instance
10
+ */
11
+ export type ResponseMiddleware = (this: Context, response: Response, next: () => Promise<Response>) => Promise<Response>;
12
+ /**
13
+ * Interface for fetch middleware implementations
14
+ */
15
+ export interface Fetcher {
16
+ use(type: 'request', middleware: RequestMiddleware): void;
17
+ use(type: 'response', middleware: ResponseMiddleware): void;
18
+ create(ctx: Context): typeof globalThis.fetch;
19
+ }
20
+ /**
21
+ * Context-aware fetch implementation with middleware support
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const fetcher = new ContextAwareFetcher();
26
+ *
27
+ * fetcher.use('request', function(request, next) {
28
+ * const token = this.application.user?.token;
29
+ * if (token) {
30
+ * request.headers.set('Authorization', `Bearer ${token}`);
31
+ * }
32
+ * return next();
33
+ * });
34
+ *
35
+ * fetcher.use('response', async function(response, next) {
36
+ * if (!response.ok) {
37
+ * throw new Error(`HTTP ${response.status}`);
38
+ * }
39
+ * return next();
40
+ * });
41
+ *
42
+ * const router = Router({
43
+ * target: '#app',
44
+ * context: { user: null },
45
+ * fetcher
46
+ * });
47
+ * ```
48
+ */
49
+ export declare class ContextAwareFetcher implements Fetcher {
50
+ private requestMiddlewares;
51
+ private responseMiddlewares;
52
+ /**
53
+ * Add middleware to the fetch pipeline
54
+ * @param type - 'request' for pre-fetch middleware, 'response' for post-fetch middleware
55
+ * @param middleware - The middleware function
56
+ */
57
+ use(type: 'request', middleware: RequestMiddleware): void;
58
+ use(type: 'response', middleware: ResponseMiddleware): void;
59
+ /**
60
+ * Create a fetch function bound to the given Context instance
61
+ * @param ctx - The Context instance to bind to
62
+ * @returns A fetch function with middleware applied
63
+ */
64
+ create(ctx: Context): typeof globalThis.fetch;
65
+ }
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * snice v3.5.0
2
+ * snice v3.7.0
3
3
  * Imperative TypeScript framework for building vanilla web components with decorators, differential rendering, routing, and controllers. No virtual DOM, no build complexity.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
@@ -2366,7 +2366,7 @@ let contextIdCounter = 0;
2366
2366
  * Represents the bundled router state that can notify registered elements of changes
2367
2367
  */
2368
2368
  class Context {
2369
- constructor(context = {}, placards = [], currentRoute = '', routeParams = {}) {
2369
+ constructor(context = {}, placards = [], currentRoute = '', routeParams = {}, fetcher) {
2370
2370
  this[_a] = new WeakMap();
2371
2371
  this[_b] = new Set();
2372
2372
  this[_c] = false;
@@ -2377,6 +2377,16 @@ class Context {
2377
2377
  route: currentRoute,
2378
2378
  params: routeParams
2379
2379
  };
2380
+ // Initialize fetch with middleware support or fallback to native fetch
2381
+ if (fetcher && typeof fetcher.create === 'function') {
2382
+ this.fetch = fetcher.create(this);
2383
+ }
2384
+ else if (typeof fetch === 'function') {
2385
+ this.fetch = fetch.bind(this);
2386
+ }
2387
+ else {
2388
+ throw new Error('No fetch implementation available');
2389
+ }
2380
2390
  }
2381
2391
  /**
2382
2392
  * Register an element to receive context updates
@@ -4471,7 +4481,7 @@ function Router(options) {
4471
4481
  let currentLayoutTimestamp = null; // Track current layout timestamp
4472
4482
  const context = options.context || {}; // Store context for guards
4473
4483
  // Create Context instance for managing router state
4474
- const navigationContext = new Context(context, [], '', {});
4484
+ const navigationContext = new Context(context, [], '', {}, options.fetcher);
4475
4485
  function getCurrentLayoutElement(target) {
4476
4486
  const noCurrentLayout = !currentLayoutName || !currentLayoutTimestamp;
4477
4487
  if (noCurrentLayout) {
@@ -5400,7 +5410,86 @@ function resetOnce(instance, methodName) {
5400
5410
  }
5401
5411
  }
5402
5412
 
5413
+ /**
5414
+ * Context-aware fetch implementation with middleware support
5415
+ *
5416
+ * @example
5417
+ * ```typescript
5418
+ * const fetcher = new ContextAwareFetcher();
5419
+ *
5420
+ * fetcher.use('request', function(request, next) {
5421
+ * const token = this.application.user?.token;
5422
+ * if (token) {
5423
+ * request.headers.set('Authorization', `Bearer ${token}`);
5424
+ * }
5425
+ * return next();
5426
+ * });
5427
+ *
5428
+ * fetcher.use('response', async function(response, next) {
5429
+ * if (!response.ok) {
5430
+ * throw new Error(`HTTP ${response.status}`);
5431
+ * }
5432
+ * return next();
5433
+ * });
5434
+ *
5435
+ * const router = Router({
5436
+ * target: '#app',
5437
+ * context: { user: null },
5438
+ * fetcher
5439
+ * });
5440
+ * ```
5441
+ */
5442
+ class ContextAwareFetcher {
5443
+ constructor() {
5444
+ this.requestMiddlewares = [];
5445
+ this.responseMiddlewares = [];
5446
+ }
5447
+ use(type, middleware) {
5448
+ if (type === 'request') {
5449
+ this.requestMiddlewares.push(middleware);
5450
+ }
5451
+ else {
5452
+ this.responseMiddlewares.push(middleware);
5453
+ }
5454
+ }
5455
+ /**
5456
+ * Create a fetch function bound to the given Context instance
5457
+ * @param ctx - The Context instance to bind to
5458
+ * @returns A fetch function with middleware applied
5459
+ */
5460
+ create(ctx) {
5461
+ const requestMiddlewares = this.requestMiddlewares;
5462
+ const responseMiddlewares = this.responseMiddlewares;
5463
+ const fetchFn = async function (input, init) {
5464
+ const request = new Request(input, init);
5465
+ // Request middleware chain
5466
+ let reqIndex = 0;
5467
+ const nextRequest = async () => {
5468
+ if (reqIndex < requestMiddlewares.length) {
5469
+ const middleware = requestMiddlewares[reqIndex++];
5470
+ return middleware.call(this, request, nextRequest);
5471
+ }
5472
+ // Execute actual fetch
5473
+ const response = await fetch(request);
5474
+ // Response middleware chain
5475
+ let resIndex = 0;
5476
+ const nextResponse = async () => {
5477
+ if (resIndex < responseMiddlewares.length) {
5478
+ const middleware = responseMiddlewares[resIndex++];
5479
+ return middleware.call(this, response, nextResponse);
5480
+ }
5481
+ return response;
5482
+ };
5483
+ return nextResponse();
5484
+ };
5485
+ return nextRequest();
5486
+ };
5487
+ return fetchFn.bind(ctx);
5488
+ }
5489
+ }
5490
+
5403
5491
  exports.Context = Context;
5492
+ exports.ContextAwareFetcher = ContextAwareFetcher;
5404
5493
  exports.IS_CONTROLLER_INSTANCE = IS_CONTROLLER_INSTANCE;
5405
5494
  exports.Router = Router;
5406
5495
  exports.SimpleArray = SimpleArray;