@alikhalilll/a-smart-skeleton 0.0.0-stage → 2.0.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/LICENSE +21 -0
- package/README.md +356 -2
- package/dist/_chunks/core.js +2314 -0
- package/dist/_chunks/core.js.map +1 -0
- package/dist/_chunks/index.d.ts +431 -0
- package/dist/core/index.cjs +67 -0
- package/dist/core/index.d.cts +2 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +2 -0
- package/dist/element/index.cjs +47 -0
- package/dist/element/index.cjs.map +1 -0
- package/dist/element/index.d.cts +24 -0
- package/dist/element/index.d.ts +24 -0
- package/dist/element/index.js +46 -0
- package/dist/element/index.js.map +1 -0
- package/dist/index.cjs +512 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +204 -0
- package/dist/index.d.ts +204 -0
- package/dist/index.js +441 -0
- package/dist/index.js.map +1 -0
- package/dist/nuxt/index.cjs +36 -0
- package/dist/nuxt/index.cjs.map +1 -0
- package/dist/nuxt/index.d.cts +30 -0
- package/dist/nuxt/index.d.ts +30 -0
- package/dist/nuxt/index.js +36 -0
- package/dist/nuxt/index.js.map +1 -0
- package/dist/resolver/index.cjs +26 -0
- package/dist/resolver/index.cjs.map +1 -0
- package/dist/resolver/index.d.cts +19 -0
- package/dist/resolver/index.d.ts +19 -0
- package/dist/resolver/index.js +26 -0
- package/dist/resolver/index.js.map +1 -0
- package/dist/styles.css +136 -0
- package/package.json +144 -3
- package/src/components/ASmartSkeleton.vue +228 -0
- package/src/components/ASmartSkeletonBox.vue +23 -0
- package/src/components/ASmartSkeletonProvider.vue +34 -0
- package/src/components/ASmartSkeletonSuspense.vue +142 -0
- package/src/composables/useSmartSkeleton.ts +20 -0
- package/src/composables/useStyles.ts +8 -0
- package/src/core/boot.ts +63 -0
- package/src/core/canvas.ts +7 -0
- package/src/core/constants.ts +76 -0
- package/src/core/debug.ts +154 -0
- package/src/core/dev.ts +53 -0
- package/src/core/fade.ts +490 -0
- package/src/core/ghost.ts +236 -0
- package/src/core/images.ts +28 -0
- package/src/core/index.ts +71 -0
- package/src/core/inline.generated.ts +9 -0
- package/src/core/measure.ts +571 -0
- package/src/core/memory.ts +146 -0
- package/src/core/motion.ts +12 -0
- package/src/core/plan.ts +368 -0
- package/src/core/reveal.ts +89 -0
- package/src/core/reveals.ts +39 -0
- package/src/core/shapes.ts +84 -0
- package/src/core/shimmer.ts +229 -0
- package/src/core/skeleton.ts +43 -0
- package/src/core/snapshot.ts +159 -0
- package/src/core/styles.ts +187 -0
- package/src/core/sweep.ts +203 -0
- package/src/core/theme.ts +162 -0
- package/src/element/index.ts +59 -0
- package/src/index.ts +27 -0
- package/src/nuxt/index.ts +59 -0
- package/src/resolver/index.ts +35 -0
- package/src/types.ts +100 -0
- package/src/vue/Skeleton.ts +275 -0
- package/src/vue/Suspense.ts +157 -0
- package/src/vue/config.ts +78 -0
- package/src/vue/index.ts +7 -0
- package/web-types.json +256 -0
package/web-types.json
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/web-types",
|
|
3
|
+
"name": "@alikhalilll/a-smart-skeleton",
|
|
4
|
+
"version": "2.0.0",
|
|
5
|
+
"js-types-syntax": "typescript",
|
|
6
|
+
"description-markup": "markdown",
|
|
7
|
+
"framework": "vue",
|
|
8
|
+
"framework-config": {
|
|
9
|
+
"enable-when": {
|
|
10
|
+
"node-packages": [
|
|
11
|
+
"vue"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"contributions": {
|
|
16
|
+
"html": {
|
|
17
|
+
"vue-components": [
|
|
18
|
+
{
|
|
19
|
+
"name": "ASmartSkeleton",
|
|
20
|
+
"source": {
|
|
21
|
+
"module": "@alikhalilll/a-smart-skeleton",
|
|
22
|
+
"symbol": "ASmartSkeleton"
|
|
23
|
+
},
|
|
24
|
+
"description": "Slots: `default` (with `{ data }` when `data` is bound), `skeleton`, `empty`,\n`error` (with `{ error }`).",
|
|
25
|
+
"props": [
|
|
26
|
+
{
|
|
27
|
+
"name": "class",
|
|
28
|
+
"type": "string",
|
|
29
|
+
"required": false
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "data",
|
|
33
|
+
"type": "T | null",
|
|
34
|
+
"required": false,
|
|
35
|
+
"description": "Loading while `null` or `undefined`; handed to the default slot as `{ data }`."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "empty",
|
|
39
|
+
"type": "boolean",
|
|
40
|
+
"required": false,
|
|
41
|
+
"description": "Renders the `empty` slot instead of the content."
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": "error",
|
|
45
|
+
"type": "unknown",
|
|
46
|
+
"required": false,
|
|
47
|
+
"description": "When set, renders the `error` slot with `{ error }` instead of the content."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "id",
|
|
51
|
+
"type": "string",
|
|
52
|
+
"required": false,
|
|
53
|
+
"description": "Remembers the shape under this key across visits."
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "label",
|
|
57
|
+
"type": "string",
|
|
58
|
+
"required": false,
|
|
59
|
+
"description": "Read to screen readers while loading, in place of the skeleton — \"Loading profile\"."
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "loading",
|
|
63
|
+
"type": "boolean",
|
|
64
|
+
"required": false,
|
|
65
|
+
"description": "Shows the skeleton, even over `data`. With `data`, it also shows while there is none."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "onReveal",
|
|
69
|
+
"type": "(() => void)",
|
|
70
|
+
"required": false,
|
|
71
|
+
"description": "Called once content has come in over a skeleton; `@reveal` in a template."
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "reveal",
|
|
75
|
+
"type": "RevealMode",
|
|
76
|
+
"required": false,
|
|
77
|
+
"description": "Overrides the provider's reveal for this skeleton alone."
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"name": "sample",
|
|
81
|
+
"type": "T",
|
|
82
|
+
"required": false,
|
|
83
|
+
"description": "Stands in for `data` to draw the skeleton before any has loaded."
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "style",
|
|
87
|
+
"type": "Record<string, string | number>",
|
|
88
|
+
"required": false
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"slots": [
|
|
92
|
+
{
|
|
93
|
+
"name": "default",
|
|
94
|
+
"description": "The content. Receives `{ data }` when `data` is bound."
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "empty",
|
|
98
|
+
"description": "Shown when `empty` is set. Falls back to the content."
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "error",
|
|
102
|
+
"description": "Shown when `error` is set. Receives `{ error }`."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "skeleton",
|
|
106
|
+
"description": "Shown while loading instead of the measured skeleton."
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"js": {
|
|
110
|
+
"events": [
|
|
111
|
+
{
|
|
112
|
+
"name": "reveal",
|
|
113
|
+
"description": "Content has come in over a skeleton."
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"name": "ASmartSkeletonBox",
|
|
120
|
+
"source": {
|
|
121
|
+
"module": "@alikhalilll/a-smart-skeleton",
|
|
122
|
+
"symbol": "ASmartSkeletonBox"
|
|
123
|
+
},
|
|
124
|
+
"props": [
|
|
125
|
+
{
|
|
126
|
+
"name": "class",
|
|
127
|
+
"type": "string",
|
|
128
|
+
"required": false
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"name": "height",
|
|
132
|
+
"type": "Length",
|
|
133
|
+
"required": false
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "radius",
|
|
137
|
+
"type": "Length",
|
|
138
|
+
"required": false
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"name": "style",
|
|
142
|
+
"type": "Record<string, string | number>",
|
|
143
|
+
"required": false
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "width",
|
|
147
|
+
"type": "Length",
|
|
148
|
+
"required": false
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "ASmartSkeletonSuspense",
|
|
154
|
+
"source": {
|
|
155
|
+
"module": "@alikhalilll/a-smart-skeleton",
|
|
156
|
+
"symbol": "ASmartSkeletonSuspense"
|
|
157
|
+
},
|
|
158
|
+
"description": "Slots: `default`, the content that suspends; `skeleton`, the content rendered from sample data.",
|
|
159
|
+
"props": [
|
|
160
|
+
{
|
|
161
|
+
"name": "id",
|
|
162
|
+
"type": "string",
|
|
163
|
+
"required": false,
|
|
164
|
+
"description": "Remembers the shape under this key across visits."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"name": "label",
|
|
168
|
+
"type": "string",
|
|
169
|
+
"required": false,
|
|
170
|
+
"description": "Read to screen readers while suspended, in place of the skeleton."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "onReveal",
|
|
174
|
+
"type": "(() => void)",
|
|
175
|
+
"required": false,
|
|
176
|
+
"description": "Called once content has come in over the skeleton; `@reveal` in a template."
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "reveal",
|
|
180
|
+
"type": "RevealMode",
|
|
181
|
+
"required": false,
|
|
182
|
+
"description": "Overrides the provider's reveal for this boundary alone."
|
|
183
|
+
}
|
|
184
|
+
],
|
|
185
|
+
"slots": [
|
|
186
|
+
{
|
|
187
|
+
"name": "default"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "skeleton"
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
"js": {
|
|
194
|
+
"events": [
|
|
195
|
+
{
|
|
196
|
+
"name": "reveal",
|
|
197
|
+
"description": "Content has come in over the skeleton."
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"name": "ASmartSkeletonProvider",
|
|
204
|
+
"source": {
|
|
205
|
+
"module": "@alikhalilll/a-smart-skeleton",
|
|
206
|
+
"symbol": "ASmartSkeletonProvider"
|
|
207
|
+
},
|
|
208
|
+
"description": "Settings for every skeleton inside. Per request on the server, as a nonce must be.",
|
|
209
|
+
"props": [
|
|
210
|
+
{
|
|
211
|
+
"name": "debug",
|
|
212
|
+
"type": "boolean",
|
|
213
|
+
"required": false,
|
|
214
|
+
"description": "Outlines every reveal with where its skeleton came from and whether anything moved."
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"name": "mode",
|
|
218
|
+
"type": "SkeletonMode",
|
|
219
|
+
"required": false,
|
|
220
|
+
"description": "`system` follows `prefers-color-scheme`; the others pin one set of colours."
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"name": "nonce",
|
|
224
|
+
"type": "string",
|
|
225
|
+
"required": false,
|
|
226
|
+
"description": "Set on the inline script and stylesheets rendered, for a Content Security Policy."
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"name": "reveal",
|
|
230
|
+
"type": "RevealMode",
|
|
231
|
+
"required": false,
|
|
232
|
+
"description": "How content replaces its skeleton: `smart` (the default), `together`, `sequence`, `sweep`, or a `RevealSpec` of your own."
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "text",
|
|
236
|
+
"type": "SkeletonText",
|
|
237
|
+
"required": false,
|
|
238
|
+
"description": "Where text bars run: from `top` (ascender, cap-height, x-height) down to `bottom` (baseline, descender)."
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"name": "theme",
|
|
242
|
+
"type": "SkeletonTheme",
|
|
243
|
+
"required": false,
|
|
244
|
+
"description": "Colours for light and dark; `mode` picks between them."
|
|
245
|
+
}
|
|
246
|
+
],
|
|
247
|
+
"slots": [
|
|
248
|
+
{
|
|
249
|
+
"name": "default"
|
|
250
|
+
}
|
|
251
|
+
]
|
|
252
|
+
}
|
|
253
|
+
]
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|