@c4h/chuci 0.1.0 → 0.2.1

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 CHANGED
@@ -1,225 +1,225 @@
1
- # Chuci (楚辞)
2
-
3
- [![CI](https://github.com/code4history/Chuci/actions/workflows/ci.yml/badge.svg)](https://github.com/code4history/Chuci/actions/workflows/ci.yml)
4
- [![npm version](https://badge.fury.io/js/@c4h%2Fchuci.svg)](https://www.npmjs.com/package/@c4h/chuci)
5
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
-
7
- A standalone multimedia swiper and viewer web components library extracted from [Quyuan](https://github.com/code4history/Quyuan). Provides touch-enabled carousel and multimedia viewers without any framework dependencies.
8
-
9
- ## Features
10
-
11
- - 🚀 **Framework-agnostic**: Pure Web Components, works with any framework or vanilla JS
12
- - 📱 **Touch-enabled**: Built on Swiper.js for smooth touch interactions
13
- - 🎬 **Multiple media types**: Support for images, panoramas, videos, YouTube, 3D models, and Gaussian splats
14
- - 🔧 **Zero dependencies**: All dependencies are bundled (no Lit dependency)
15
- - 📦 **Lightweight**: Optimized bundle size with tree-shaking support
16
- - 🛠️ **TypeScript**: Full TypeScript support with type definitions
17
-
18
- ## Installation
19
-
20
- ```bash
21
- npm install @c4h/chuci
22
- ```
23
-
24
- ## Usage
25
-
26
- ### Basic Swiper
27
-
28
- ```html
29
- <cc-swiper>
30
- <cc-swiper-slide
31
- thumbnail-url="thumb1.jpg"
32
- image-url="full1.jpg"
33
- image-type="image"
34
- caption="First image">
35
- </cc-swiper-slide>
36
- <cc-swiper-slide
37
- thumbnail-url="thumb2.jpg"
38
- image-url="full2.jpg"
39
- image-type="image"
40
- caption="Second image">
41
- </cc-swiper-slide>
42
- </cc-swiper>
43
-
44
- <script type="module">
45
- import '@c4h/chuci'
46
- </script>
47
- ```
48
-
49
- ### Programmatic Usage
50
-
51
- ```javascript
52
- import '@c4h/chuci';
53
-
54
- // Get swiper element
55
- const swiper = document.querySelector('cc-swiper');
56
-
57
- // Open viewer programmatically
58
- swiper.openViewer('path/to/image.jpg', 'image', 0);
59
-
60
- // Listen to slide changes
61
- swiper.addEventListener('slidechange', (e) => {
62
- console.log('Current slide:', e.detail.activeIndex);
63
- });
64
- ```
65
-
66
- ### With Thumbnails Gallery
67
-
68
- ```html
69
- <cc-swiper has-thumb>
70
- <cc-swiper-slide thumbnail-url="..." image-url="..." image-type="image"></cc-swiper-slide>
71
- <cc-swiper-slide thumbnail-url="..." image-url="..." image-type="image"></cc-swiper-slide>
72
- </cc-swiper>
73
- ```
74
-
75
- ### Autoplay
76
-
77
- ```html
78
- <cc-swiper autoplay>
79
- <!-- slides -->
80
- </cc-swiper>
81
- ```
82
-
83
- ## Supported Media Types
84
-
85
- - **image**: Regular images (jpg, png, gif, etc.)
86
- - **panorama**: 360° panoramic images
87
- - **youtube**: YouTube videos (provide YouTube URL)
88
- - **video**: HTML5 videos (mp4, webm, etc.)
89
- - **3dmodel**: 3D models (OBJ/MTL format)
90
- - **gaussian**: Gaussian splatting files (.splat, .ply)
91
-
92
- ## Components
93
-
94
- ### `<cc-swiper>`
95
-
96
- Main carousel component.
97
-
98
- **Attributes:**
99
- - `has-thumb`: Show thumbnail gallery
100
- - `autoplay`: Enable autoplay
101
-
102
- **Methods:**
103
- - `openViewer(imageUrl: string, imageType: string, slideIndex?: number)`: Programmatically open viewer
104
-
105
- **Events:**
106
- - `slidechange`: Fired when slide changes
107
-
108
- ### `<cc-swiper-slide>`
109
-
110
- Individual slide component.
111
-
112
- **Attributes:**
113
- - `thumbnail-url`: URL for thumbnail image
114
- - `image-url`: URL for full media
115
- - `image-type`: Media type (see supported types above)
116
- - `caption`: Optional caption text
117
-
118
- ### Viewer Components
119
-
120
- All viewer components inherit from `CcViewerBase` and support:
121
-
122
- **Methods:**
123
- - `open(url: string)`: Open viewer with media
124
- - `close()`: Close viewer
125
-
126
- **Properties:**
127
- - `showPrevButton`: Show/hide previous button
128
- - `showNextButton`: Show/hide next button
129
-
130
- ### Media-specific Examples
131
-
132
- #### 3D Model Viewer
133
- ```html
134
- <cc-swiper-slide
135
- thumbnail-url="thumb.jpg"
136
- image-url="model.obj"
137
- image-type="3dmodel"
138
- material-url="model.mtl"
139
- debug-mode="true"
140
- camera-position="0,1,5"
141
- camera-target="0,0,0"
142
- show-texture="true">
143
- </cc-swiper-slide>
144
- ```
145
-
146
- #### Gaussian Splatting Viewer
147
- ```html
148
- <cc-swiper-slide
149
- thumbnail-url="thumb.jpg"
150
- image-url="scene.splat"
151
- image-type="gaussian"
152
- debug-mode="true"
153
- camera-position="0,0,10">
154
- </cc-swiper-slide>
155
- ```
156
-
157
- #### YouTube Video
158
- ```html
159
- <cc-swiper-slide
160
- thumbnail-url="thumb.jpg"
161
- image-url="https://www.youtube.com/watch?v=VIDEO_ID"
162
- image-type="youtube">
163
- </cc-swiper-slide>
164
- ```
165
-
166
- ## Styling
167
-
168
- CSS Custom Properties:
169
-
170
- ```css
171
- cc-swiper {
172
- --cc-slider-theme-color: #007aff;
173
- --cc-slider-navigation-color: #007aff;
174
- }
175
-
176
- cc-viewer {
177
- --cc-viewer-z-index: 1000;
178
- }
179
- ```
180
-
181
- ## Browser Support
182
-
183
- Works in all modern browsers that support Web Components:
184
- - Chrome/Edge 79+
185
- - Firefox 63+
186
- - Safari 12.1+
187
-
188
- ## Development
189
-
190
- ```bash
191
- # Install dependencies
192
- pnpm install
193
-
194
- # Start development server
195
- pnpm run dev
196
-
197
- # Run tests
198
- pnpm test
199
-
200
- # Build library
201
- pnpm run build
202
- ```
203
-
204
- ## License
205
-
206
- MIT License - see LICENSE file for details.
207
-
208
- ## Migration from Quyuan
209
-
210
- If you're migrating from the original Quyuan implementation:
211
-
212
- 1. Change imports from `quyuan` to `@c4h/chuci`
213
- 2. Component names remain the same (`cc-swiper`, `cc-swiper-slide`, etc.)
214
- 3. 3D model URLs no longer use pipe-separated format:
215
- ```html
216
- <!-- Old -->
217
- <cc-swiper-slide image-url="model.obj|model.mtl" ...>
218
-
219
- <!-- New -->
220
- <cc-swiper-slide image-url="model.obj" material-url="model.mtl" ...>
221
- ```
222
-
223
- ## Credits
224
-
1
+ # Chuci (楚辞)
2
+
3
+ [![CI](https://github.com/code4history/Chuci/actions/workflows/ci.yml/badge.svg)](https://github.com/code4history/Chuci/actions/workflows/ci.yml)
4
+ [![npm version](https://badge.fury.io/js/@c4h%2Fchuci.svg)](https://www.npmjs.com/package/@c4h/chuci)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ A standalone multimedia swiper and viewer web components library extracted from [Quyuan](https://github.com/code4history/Quyuan). Provides touch-enabled carousel and multimedia viewers without any framework dependencies.
8
+
9
+ ## Features
10
+
11
+ - 🚀 **Framework-agnostic**: Pure Web Components, works with any framework or vanilla JS
12
+ - 📱 **Touch-enabled**: Built on Swiper.js for smooth touch interactions
13
+ - 🎬 **Multiple media types**: Support for images, panoramas, videos, YouTube, 3D models, and Gaussian splats
14
+ - 🔧 **Zero dependencies**: All dependencies are bundled (no Lit dependency)
15
+ - 📦 **Lightweight**: Optimized bundle size with tree-shaking support
16
+ - 🛠️ **TypeScript**: Full TypeScript support with type definitions
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ npm install @c4h/chuci
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ### Basic Swiper
27
+
28
+ ```html
29
+ <cc-swiper>
30
+ <cc-swiper-slide
31
+ thumbnail-url="thumb1.jpg"
32
+ image-url="full1.jpg"
33
+ image-type="image"
34
+ caption="First image">
35
+ </cc-swiper-slide>
36
+ <cc-swiper-slide
37
+ thumbnail-url="thumb2.jpg"
38
+ image-url="full2.jpg"
39
+ image-type="image"
40
+ caption="Second image">
41
+ </cc-swiper-slide>
42
+ </cc-swiper>
43
+
44
+ <script type="module">
45
+ import '@c4h/chuci'
46
+ </script>
47
+ ```
48
+
49
+ ### Programmatic Usage
50
+
51
+ ```javascript
52
+ import '@c4h/chuci';
53
+
54
+ // Get swiper element
55
+ const swiper = document.querySelector('cc-swiper');
56
+
57
+ // Open viewer programmatically
58
+ swiper.openViewer('path/to/image.jpg', 'image', 0);
59
+
60
+ // Listen to slide changes
61
+ swiper.addEventListener('slidechange', (e) => {
62
+ console.log('Current slide:', e.detail.activeIndex);
63
+ });
64
+ ```
65
+
66
+ ### With Thumbnails Gallery
67
+
68
+ ```html
69
+ <cc-swiper has-thumb>
70
+ <cc-swiper-slide thumbnail-url="..." image-url="..." image-type="image"></cc-swiper-slide>
71
+ <cc-swiper-slide thumbnail-url="..." image-url="..." image-type="image"></cc-swiper-slide>
72
+ </cc-swiper>
73
+ ```
74
+
75
+ ### Autoplay
76
+
77
+ ```html
78
+ <cc-swiper autoplay>
79
+ <!-- slides -->
80
+ </cc-swiper>
81
+ ```
82
+
83
+ ## Supported Media Types
84
+
85
+ - **image**: Regular images (jpg, png, gif, etc.)
86
+ - **panorama**: 360° panoramic images
87
+ - **youtube**: YouTube videos (provide YouTube URL)
88
+ - **video**: HTML5 videos (mp4, webm, etc.)
89
+ - **3dmodel**: 3D models (OBJ/MTL format)
90
+ - **gaussian**: Gaussian splatting files (.splat, .ply)
91
+
92
+ ## Components
93
+
94
+ ### `<cc-swiper>`
95
+
96
+ Main carousel component.
97
+
98
+ **Attributes:**
99
+ - `has-thumb`: Show thumbnail gallery
100
+ - `autoplay`: Enable autoplay
101
+
102
+ **Methods:**
103
+ - `openViewer(imageUrl: string, imageType: string, slideIndex?: number)`: Programmatically open viewer
104
+
105
+ **Events:**
106
+ - `slidechange`: Fired when slide changes
107
+
108
+ ### `<cc-swiper-slide>`
109
+
110
+ Individual slide component.
111
+
112
+ **Attributes:**
113
+ - `thumbnail-url`: URL for thumbnail image
114
+ - `image-url`: URL for full media
115
+ - `image-type`: Media type (see supported types above)
116
+ - `caption`: Optional caption text
117
+
118
+ ### Viewer Components
119
+
120
+ All viewer components inherit from `CcViewerBase` and support:
121
+
122
+ **Methods:**
123
+ - `open(url: string)`: Open viewer with media
124
+ - `close()`: Close viewer
125
+
126
+ **Properties:**
127
+ - `showPrevButton`: Show/hide previous button
128
+ - `showNextButton`: Show/hide next button
129
+
130
+ ### Media-specific Examples
131
+
132
+ #### 3D Model Viewer
133
+ ```html
134
+ <cc-swiper-slide
135
+ thumbnail-url="thumb.jpg"
136
+ image-url="model.obj"
137
+ image-type="3dmodel"
138
+ material-url="model.mtl"
139
+ debug-mode="true"
140
+ camera-position="0,1,5"
141
+ camera-target="0,0,0"
142
+ show-texture="true">
143
+ </cc-swiper-slide>
144
+ ```
145
+
146
+ #### Gaussian Splatting Viewer
147
+ ```html
148
+ <cc-swiper-slide
149
+ thumbnail-url="thumb.jpg"
150
+ image-url="scene.splat"
151
+ image-type="gaussian"
152
+ debug-mode="true"
153
+ camera-position="0,0,10">
154
+ </cc-swiper-slide>
155
+ ```
156
+
157
+ #### YouTube Video
158
+ ```html
159
+ <cc-swiper-slide
160
+ thumbnail-url="thumb.jpg"
161
+ image-url="https://www.youtube.com/watch?v=VIDEO_ID"
162
+ image-type="youtube">
163
+ </cc-swiper-slide>
164
+ ```
165
+
166
+ ## Styling
167
+
168
+ CSS Custom Properties:
169
+
170
+ ```css
171
+ cc-swiper {
172
+ --cc-slider-theme-color: #007aff;
173
+ --cc-slider-navigation-color: #007aff;
174
+ }
175
+
176
+ cc-viewer {
177
+ --cc-viewer-z-index: 1000;
178
+ }
179
+ ```
180
+
181
+ ## Browser Support
182
+
183
+ Works in all modern browsers that support Web Components:
184
+ - Chrome/Edge 79+
185
+ - Firefox 63+
186
+ - Safari 12.1+
187
+
188
+ ## Development
189
+
190
+ ```bash
191
+ # Install dependencies
192
+ pnpm install
193
+
194
+ # Start development server
195
+ pnpm run dev
196
+
197
+ # Run tests
198
+ pnpm test
199
+
200
+ # Build library
201
+ pnpm run build
202
+ ```
203
+
204
+ ## License
205
+
206
+ MIT License - see LICENSE file for details.
207
+
208
+ ## Migration from Quyuan
209
+
210
+ If you're migrating from the original Quyuan implementation:
211
+
212
+ 1. Change imports from `quyuan` to `@c4h/chuci`
213
+ 2. Component names remain the same (`cc-swiper`, `cc-swiper-slide`, etc.)
214
+ 3. 3D model URLs no longer use pipe-separated format:
215
+ ```html
216
+ <!-- Old -->
217
+ <cc-swiper-slide image-url="model.obj|model.mtl" ...>
218
+
219
+ <!-- New -->
220
+ <cc-swiper-slide image-url="model.obj" material-url="model.mtl" ...>
221
+ ```
222
+
223
+ ## Credits
224
+
225
225
  Extracted from [Quyuan](https://github.com/code4history/Quyuan) by Code for History.