snice 3.8.0 → 3.10.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/bin/snice.js +8 -0
- package/bin/templates/CLAUDE.md +11 -0
- package/dist/components/file-gallery/snice-file-gallery.d.ts +87 -0
- package/dist/components/file-gallery/snice-file-gallery.js +892 -0
- package/dist/components/file-gallery/snice-file-gallery.js.map +1 -0
- package/dist/components/file-gallery/snice-file-gallery.types.d.ts +72 -0
- package/dist/components/qr-reader/qr-decoder.d.ts +20 -0
- package/dist/components/qr-reader/qr-decoder.js +49 -0
- package/dist/components/qr-reader/qr-decoder.js.map +1 -0
- package/dist/components/qr-reader/qr-worker.d.ts +6 -0
- package/dist/components/qr-reader/qr-worker.js +64 -0
- package/dist/components/qr-reader/qr-worker.js.map +1 -0
- package/dist/components/qr-reader/snice-qr-reader.d.ts +41 -0
- package/dist/components/qr-reader/snice-qr-reader.js +463 -0
- package/dist/components/qr-reader/snice-qr-reader.js.map +1 -0
- package/dist/components/qr-reader/snice-qr-reader.types.d.ts +17 -0
- package/dist/components/qr-reader/zxing-reader.mjs +1582 -0
- package/dist/components/qr-reader/zxing-share.mjs +305 -0
- package/dist/components/qr-reader/zxing_reader.wasm +0 -0
- package/dist/components/zxing-reader-B3Rfebg9.js +1771 -0
- package/dist/components/zxing-reader-B3Rfebg9.js.map +1 -0
- package/dist/index.cjs +21 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +21 -4
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +21 -4
- 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/docs/ai/README.md +1 -1
- package/docs/ai/api.md +5 -0
- package/docs/ai/components/file-gallery.md +206 -0
- package/docs/ai/components/qr-reader.md +80 -0
- package/docs/components/file-gallery.md +692 -0
- package/docs/components/qr-reader.md +327 -0
- package/package.json +1 -1
package/bin/snice.js
CHANGED
|
@@ -104,6 +104,14 @@ function createApp(projectPath, template = 'base') {
|
|
|
104
104
|
writeFileSync(join(targetDir, 'CLAUDE.md'), claudeMdContent.replace(/\{\{projectName\}\}/g, projectName));
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
// Copy shared .gitignore
|
|
108
|
+
const gitignorePath = join(__dirname, 'templates', '.gitignore');
|
|
109
|
+
if (existsSync(gitignorePath)) {
|
|
110
|
+
console.log(` Creating .gitignore...`);
|
|
111
|
+
const gitignoreContent = readFileSync(gitignorePath, 'utf8');
|
|
112
|
+
writeFileSync(join(targetDir, '.gitignore'), gitignoreContent);
|
|
113
|
+
}
|
|
114
|
+
|
|
107
115
|
console.log(`\n✨ Project created successfully!\n`);
|
|
108
116
|
console.log('Next steps:');
|
|
109
117
|
|
package/bin/templates/CLAUDE.md
CHANGED
|
@@ -139,6 +139,17 @@ html`
|
|
|
139
139
|
- **Element ↔ Controller:** Request/Response (`@request`, `@respond`)
|
|
140
140
|
- **Global State:** Context (`@context()`)
|
|
141
141
|
|
|
142
|
+
**IMPORTANT - Event names with @:**
|
|
143
|
+
When event names start with `@` (like `@snice/qr-scan`), use `@@` in templates:
|
|
144
|
+
```typescript
|
|
145
|
+
// Correct:
|
|
146
|
+
html`<el @@snice/qr-scan=${handler}></el>`
|
|
147
|
+
|
|
148
|
+
// Wrong:
|
|
149
|
+
html`<el @snice/qr-scan=${handler}></el>`
|
|
150
|
+
```
|
|
151
|
+
The first `@` is template syntax for events, second `@` is part of the event name.
|
|
152
|
+
|
|
142
153
|
## Common Mistakes
|
|
143
154
|
|
|
144
155
|
**Controllers are NOT global services.** They attach to elements via `controller="name"`. Use `utils/` for shared logic like API calls, auth, toasts.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { FileGalleryView, GalleryFile, CustomAction, UploadRequest, SniceFileGalleryElement } from './snice-file-gallery.types';
|
|
2
|
+
export declare class SniceFileGallery extends HTMLElement implements SniceFileGalleryElement {
|
|
3
|
+
accept: string;
|
|
4
|
+
multiple: boolean;
|
|
5
|
+
disabled: boolean;
|
|
6
|
+
maxSize: number;
|
|
7
|
+
maxFiles: number;
|
|
8
|
+
view: FileGalleryView;
|
|
9
|
+
showProgress: boolean;
|
|
10
|
+
allowPause: boolean;
|
|
11
|
+
allowDelete: boolean;
|
|
12
|
+
autoUpload: boolean;
|
|
13
|
+
showAddButton: boolean;
|
|
14
|
+
hideAddButton: boolean;
|
|
15
|
+
input?: HTMLInputElement;
|
|
16
|
+
dropZone?: HTMLElement;
|
|
17
|
+
private galleryFiles;
|
|
18
|
+
private galleryCustomActions;
|
|
19
|
+
private isDragOver;
|
|
20
|
+
private uploadAbortControllers;
|
|
21
|
+
private container?;
|
|
22
|
+
private galleryContainer?;
|
|
23
|
+
private galleryHeader?;
|
|
24
|
+
uploadFile(request: UploadRequest): any;
|
|
25
|
+
get files(): GalleryFile[];
|
|
26
|
+
get customActions(): CustomAction[];
|
|
27
|
+
getFile(fileId: string): GalleryFile | undefined;
|
|
28
|
+
getCustomAction(actionId: string): CustomAction | undefined;
|
|
29
|
+
isPending(fileId: string): boolean;
|
|
30
|
+
isUploading(fileId: string): boolean;
|
|
31
|
+
isPaused(fileId: string): boolean;
|
|
32
|
+
isCompleted(fileId: string): boolean;
|
|
33
|
+
hasError(fileId: string): boolean;
|
|
34
|
+
canAddFiles(): boolean;
|
|
35
|
+
setupComponent(): void;
|
|
36
|
+
private updateGalleryDOM;
|
|
37
|
+
private updateHeaderDOM;
|
|
38
|
+
private updateFileItemDOM;
|
|
39
|
+
private createFileItem;
|
|
40
|
+
private createAddButton;
|
|
41
|
+
private createCustomAction;
|
|
42
|
+
renderContent(): import("snice").TemplateResult;
|
|
43
|
+
componentStyles(): import("snice").CSSResult;
|
|
44
|
+
private handleDropZoneClick;
|
|
45
|
+
private handleFileSelect;
|
|
46
|
+
private handleDragEnter;
|
|
47
|
+
private handleDragLeave;
|
|
48
|
+
private handleDragOver;
|
|
49
|
+
private handleDrop;
|
|
50
|
+
private handleViewToggle;
|
|
51
|
+
private handleClearAll;
|
|
52
|
+
addFiles(files: FileList | File[]): void;
|
|
53
|
+
addFileWithPreview(file: File, previewDataUrl: string): void;
|
|
54
|
+
removeFile(fileId: string): void;
|
|
55
|
+
pauseUpload(fileId: string): void;
|
|
56
|
+
resumeUpload(fileId: string): void;
|
|
57
|
+
retryUpload(fileId: string): void;
|
|
58
|
+
clear(): void;
|
|
59
|
+
addCustomAction(icon: string, text: string): string;
|
|
60
|
+
removeCustomAction(actionId: string): void;
|
|
61
|
+
clearCustomActions(): void;
|
|
62
|
+
clearCompleted(): void;
|
|
63
|
+
clearErrors(): void;
|
|
64
|
+
pauseAll(): void;
|
|
65
|
+
resumeAll(): void;
|
|
66
|
+
retryAll(): void;
|
|
67
|
+
cancelUpload(fileId: string): void;
|
|
68
|
+
cancelAll(): void;
|
|
69
|
+
openFilePicker(): void;
|
|
70
|
+
setFileBadge(fileId: string, badge: string, position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'): void;
|
|
71
|
+
removeFileBadge(fileId: string): void;
|
|
72
|
+
private handleCustomActionClick;
|
|
73
|
+
private startUpload;
|
|
74
|
+
private generatePreview;
|
|
75
|
+
private generateFileId;
|
|
76
|
+
private isAcceptedType;
|
|
77
|
+
private formatAcceptTypes;
|
|
78
|
+
private formatFileSize;
|
|
79
|
+
private emitFilesChange;
|
|
80
|
+
private emitFileRemove;
|
|
81
|
+
private emitUploadProgress;
|
|
82
|
+
private emitUploadComplete;
|
|
83
|
+
private emitUploadError;
|
|
84
|
+
private emitUploadPause;
|
|
85
|
+
private emitError;
|
|
86
|
+
cleanup(): void;
|
|
87
|
+
}
|