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.
- package/README.md +2 -2
- package/bin/snice.js +4 -5
- package/bin/templates/CLAUDE.md +25 -3
- package/bin/templates/pwa/README.md +188 -0
- package/bin/templates/pwa/global.d.ts +10 -0
- package/bin/templates/pwa/index.html +16 -0
- package/bin/templates/pwa/package.json +32 -0
- package/bin/templates/pwa/public/icons/.gitkeep +6 -0
- package/bin/templates/pwa/src/daemons/notifications.ts +148 -0
- package/bin/templates/pwa/src/fetcher.ts +15 -0
- package/bin/templates/pwa/src/guards/auth.ts +12 -0
- package/bin/templates/pwa/src/main.ts +42 -0
- package/bin/templates/pwa/src/middleware/auth.ts +16 -0
- package/bin/templates/pwa/src/middleware/error.ts +36 -0
- package/bin/templates/pwa/src/middleware/retry.ts +31 -0
- package/bin/templates/pwa/src/pages/dashboard.ts +143 -0
- package/bin/templates/pwa/src/pages/login.ts +161 -0
- package/bin/templates/pwa/src/pages/notifications.ts +156 -0
- package/bin/templates/pwa/src/pages/profile.ts +164 -0
- package/bin/templates/pwa/src/router.ts +20 -0
- package/bin/templates/pwa/src/services/auth.ts +48 -0
- package/bin/templates/pwa/src/services/jwt.ts +35 -0
- package/bin/templates/pwa/src/services/storage.ts +24 -0
- package/bin/templates/pwa/src/styles/global.css +55 -0
- package/bin/templates/pwa/src/types/auth.ts +21 -0
- package/bin/templates/pwa/src/types/notifications.ts +9 -0
- package/bin/templates/pwa/tests/helpers/test-utils.ts +84 -0
- package/bin/templates/pwa/tests/middleware/auth.test.ts +67 -0
- package/bin/templates/pwa/tests/middleware/error.test.ts +105 -0
- package/bin/templates/pwa/tests/middleware/retry.test.ts +103 -0
- package/bin/templates/pwa/tests/services/auth.test.ts +89 -0
- package/bin/templates/pwa/tests/services/jwt.test.ts +76 -0
- package/bin/templates/pwa/tests/services/storage.test.ts +69 -0
- package/bin/templates/{social → pwa}/tsconfig.json +11 -10
- package/bin/templates/pwa/vite.config.ts +94 -0
- package/bin/templates/{social/vite.config.ts → pwa/vitest.config.ts} +12 -17
- package/dist/components/music-player/snice-music-player.d.ts +72 -0
- package/dist/components/music-player/snice-music-player.js +730 -0
- package/dist/components/music-player/snice-music-player.js.map +1 -0
- package/dist/components/music-player/snice-music-player.types.d.ts +43 -0
- package/dist/components/timer/snice-timer.d.ts +27 -0
- package/dist/components/timer/snice-timer.js +197 -0
- package/dist/components/timer/snice-timer.js.map +1 -0
- package/dist/components/timer/snice-timer.types.d.ts +10 -0
- package/dist/fetcher.d.ts +65 -0
- package/dist/index.cjs +92 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.esm.js +92 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +92 -3
- package/dist/index.iife.js.map +1 -1
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/dist/types/context.d.ts +7 -1
- package/dist/types/router-options.d.ts +6 -0
- package/docs/ai/api.md +33 -1
- package/docs/ai/components/music-player.md +134 -0
- package/docs/ai/components/timer.md +43 -0
- package/docs/ai/patterns.md +48 -1
- package/docs/components/music-player.md +314 -0
- package/docs/components/timer.md +143 -0
- package/docs/fetcher.md +447 -0
- package/docs/routing.md +11 -8
- package/package.json +2 -1
- package/bin/templates/social/README.md +0 -42
- package/bin/templates/social/global.d.ts +0 -14
- package/bin/templates/social/index.html +0 -13
- package/bin/templates/social/package.json +0 -21
- package/bin/templates/social/src/main.ts +0 -33
- package/bin/templates/social/src/pages/feed-page.ts +0 -111
- package/bin/templates/social/src/pages/messages-page.ts +0 -102
- package/bin/templates/social/src/pages/not-found-page.ts +0 -46
- package/bin/templates/social/src/pages/profile-page.ts +0 -99
- package/bin/templates/social/src/pages/settings-page.ts +0 -119
- package/bin/templates/social/src/router.ts +0 -9
- package/bin/templates/social/src/styles/global.css +0 -156
- /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":"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"}
|
|
@@ -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.
|
|
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;
|