@bagelink/vue 1.2.141 → 1.2.145
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/dist/components/AddressSearch.vue.d.ts.map +1 -1
- package/dist/components/BglVideo.vue.d.ts.map +1 -1
- package/dist/components/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/Icon.vue.d.ts +16 -0
- package/dist/components/Icon.vue.d.ts.map +1 -0
- package/dist/components/calendar/views/CalendarPopover.vue.d.ts +2 -2
- package/dist/components/calendar/views/CalendarPopover.vue.d.ts.map +1 -1
- package/dist/components/form/BglFieldSet.vue.d.ts +25 -0
- package/dist/components/form/BglFieldSet.vue.d.ts.map +1 -0
- package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
- package/dist/components/form/inputs/Upload/useFileUpload.d.ts.map +1 -1
- package/dist/components/lightbox/Lightbox.vue.d.ts.map +1 -1
- package/dist/iconify-0J3vK-m1.cjs +1693 -0
- package/dist/iconify-Bc1B42Ak.cjs +1771 -0
- package/dist/iconify-BiLGk5km.js +1693 -0
- package/dist/iconify-DVnNdzog.js +1771 -0
- package/dist/index.cjs +60 -39
- package/dist/index.mjs +60 -39
- package/dist/style.css +156 -149
- package/dist/types/BagelForm.d.ts +8 -6
- package/dist/types/BagelForm.d.ts.map +1 -1
- package/dist/types/timeago.d.ts +23 -0
- package/dist/types/timeago.d.ts.map +1 -0
- package/dist/utils/BagelFormUtils.d.ts +6 -6
- package/dist/utils/BagelFormUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/BglVideo.vue +25 -5
- package/src/components/form/inputs/Upload/UploadInput.vue +4 -4
- package/src/components/form/inputs/Upload/useFileUpload.ts +4 -5
- package/src/components/lightbox/Lightbox.vue +3 -0
- package/src/types/BagelForm.ts +15 -6
- package/src/utils/BagelFormUtils.ts +9 -15
- package/dist/components/Carousel2.vue.d.ts +0 -89
- package/dist/components/Carousel2.vue.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ArrayFieldVal, BaseBagelField, BglFormSchemaT,
|
|
1
|
+
import { ArrayFieldVal, BaseBagelField, BglFormSchemaT, FieldByP, IconType, InputBagelField, Option, Path, SchemaChild, SelectBagelField, UploadInputProps } from '..';
|
|
2
2
|
interface InputOptions<T, P extends Path<T>> extends Partial<BaseBagelField<T, P>> {
|
|
3
3
|
defaultValue?: string | number;
|
|
4
4
|
autocomplete?: AutoFillField;
|
|
@@ -53,7 +53,7 @@ interface EmailInputOptions<T, P extends Path<T>> extends InputOptions<T, P> {
|
|
|
53
53
|
export declare function emailField<T, P extends Path<T>>(id: P, label?: string, options?: EmailInputOptions<T, P>): BaseBagelField<T, P>;
|
|
54
54
|
export declare function dateField<T, P extends Path<T>>(id: P, label?: string, options?: DateOptions<T, P>): BaseBagelField<T, P>;
|
|
55
55
|
export declare function numField<T, P extends Path<T>>(id: P, label?: string, options?: NumFieldOptions<T, P>): BaseBagelField<T, P>;
|
|
56
|
-
export declare function frmRow<T, P extends Path<T>>(...children: SchemaChild<T, P>[]):
|
|
56
|
+
export declare function frmRow<T, P extends Path<T>>(...children: SchemaChild<T, P>[]): FieldByP<T, P>;
|
|
57
57
|
export interface UploadOptions<T, K extends Path<T>> extends Omit<UploadInputProps, 'id'>, InputOptions<T, K> {
|
|
58
58
|
}
|
|
59
59
|
export declare function uploadField<T, P extends Path<T>>(id: P, label?: string, options?: UploadOptions<T, P>): BaseBagelField<T, P>;
|
|
@@ -66,16 +66,16 @@ interface RangeOptions<T, K extends Path<T>> extends InputOptions<T, K> {
|
|
|
66
66
|
formatValue?: (value: number) => string;
|
|
67
67
|
}
|
|
68
68
|
export declare function rangeField<T, P extends Path<T>>(id: P, label?: string, options?: RangeOptions<T, P>): BaseBagelField<T, P>;
|
|
69
|
-
export declare function bglForm<T>(idOrField?: string |
|
|
69
|
+
export declare function bglForm<T>(idOrField?: string | FieldByP<T, Path<T>>, ...schema: FieldByP<T, Path<T>>[]): {
|
|
70
70
|
$el: string;
|
|
71
71
|
id: string;
|
|
72
72
|
attrs: {
|
|
73
|
-
schema: (string |
|
|
73
|
+
schema: (string | FieldByP<T, Path<T>>)[];
|
|
74
74
|
};
|
|
75
75
|
} | {
|
|
76
76
|
$el: string;
|
|
77
77
|
attrs: {
|
|
78
|
-
schema: (
|
|
78
|
+
schema: (FieldByP<T, Path<T>> | undefined)[];
|
|
79
79
|
};
|
|
80
80
|
id?: undefined;
|
|
81
81
|
};
|
|
@@ -85,7 +85,7 @@ export declare function telField<T, P extends Path<T>>(id: P, label?: string, op
|
|
|
85
85
|
export declare function colorField<T, P extends Path<T>>(id: P, label?: string, options?: {
|
|
86
86
|
[key: string]: any;
|
|
87
87
|
}): BaseBagelField<T, P>;
|
|
88
|
-
export declare function findBglFieldById<T>(id: string, _schema: BglFormSchemaT<T>):
|
|
88
|
+
export declare function findBglFieldById<T>(id: string, _schema: BglFormSchemaT<T>): FieldByP<T, Path<T>> | undefined;
|
|
89
89
|
export interface ArrayFieldOptions<T, K extends Path<T>> extends InputOptions<T, K> {
|
|
90
90
|
delete?: boolean;
|
|
91
91
|
add?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAc,cAAc,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"BagelFormUtils.d.ts","sourceRoot":"","sources":["../../src/utils/BagelFormUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,12 +18,20 @@ const props = defineProps<Props>()
|
|
|
18
18
|
|
|
19
19
|
const videoFormat = $computed(() => props.src?.split('.').pop()?.split('?').shift()?.toLowerCase() || 'mp4')
|
|
20
20
|
|
|
21
|
+
const videoContainer = $ref<HTMLElement | null>()
|
|
22
|
+
|
|
23
|
+
const isYoutubeShort = $computed(() => {
|
|
24
|
+
return props.src?.includes('youtube.com/shorts/') || false
|
|
25
|
+
})
|
|
26
|
+
|
|
21
27
|
const aspectRatio = $computed(
|
|
22
|
-
() =>
|
|
28
|
+
() => {
|
|
29
|
+
if (isYoutubeShort) return '9/16' // Vertical aspect ratio for Shorts
|
|
30
|
+
return props.aspectRatio?.replace(':', '/') || '16/9'
|
|
31
|
+
}
|
|
23
32
|
)
|
|
24
33
|
|
|
25
34
|
const video = $ref<HTMLVideoElement | null>()
|
|
26
|
-
const videoContainer = $ref<HTMLElement | null>()
|
|
27
35
|
|
|
28
36
|
function play() {
|
|
29
37
|
video?.play()
|
|
@@ -35,7 +43,7 @@ function pause() {
|
|
|
35
43
|
|
|
36
44
|
// Setup intersection observer for autoplay="visible"
|
|
37
45
|
if (props.autoplay === 'visible') {
|
|
38
|
-
|
|
46
|
+
useIntersectionObserver(
|
|
39
47
|
videoContainer,
|
|
40
48
|
([{ isIntersecting }]) => {
|
|
41
49
|
if (isIntersecting) {
|
|
@@ -65,7 +73,14 @@ const embedType = $computed<'YouTube' | 'Vimeo' | undefined>(() => {
|
|
|
65
73
|
const videoUrl = $computed(() => {
|
|
66
74
|
if (embedType) {
|
|
67
75
|
if (embedType === 'YouTube') {
|
|
68
|
-
|
|
76
|
+
// Extract video ID from YouTube regular or Shorts URL
|
|
77
|
+
let videoId = ''
|
|
78
|
+
if (props.src?.includes('youtube.com/shorts/')) {
|
|
79
|
+
videoId = props.src.split('/shorts/')[1]?.split('?')[0] || ''
|
|
80
|
+
} else {
|
|
81
|
+
videoId = props.src?.split(/v=|youtu\.be\//)[1]?.split('&')?.[0] || ''
|
|
82
|
+
}
|
|
83
|
+
|
|
69
84
|
const queryParams = new URLSearchParams({
|
|
70
85
|
autoplay: props.autoplay ? '1' : '0',
|
|
71
86
|
controls: '0',
|
|
@@ -87,7 +102,7 @@ const videoUrl = $computed(() => {
|
|
|
87
102
|
</script>
|
|
88
103
|
|
|
89
104
|
<template>
|
|
90
|
-
<div ref="videoContainer" class="bgl_vid" :class="{ vid_empty: !src }">
|
|
105
|
+
<div ref="videoContainer" class="bgl_vid" :class="{ vid_empty: !src, vid_short: isYoutubeShort }">
|
|
91
106
|
<iframe
|
|
92
107
|
v-if="embedType"
|
|
93
108
|
:src="videoUrl"
|
|
@@ -127,4 +142,9 @@ const videoUrl = $computed(() => {
|
|
|
127
142
|
background: var(--input-bg);
|
|
128
143
|
border-radius: var(--input-border-radius);
|
|
129
144
|
}
|
|
145
|
+
|
|
146
|
+
.bgl_vid.vid_short {
|
|
147
|
+
max-width: 56.25vh; /* Limit width for shorts to maintain aspect ratio */
|
|
148
|
+
margin: 0 auto;
|
|
149
|
+
}
|
|
130
150
|
</style>
|
|
@@ -82,7 +82,7 @@ function fileName(pathKey: string) {
|
|
|
82
82
|
icon="upload"
|
|
83
83
|
outline
|
|
84
84
|
:value="btnPlaceholder || 'Upload'"
|
|
85
|
-
@click="browse(
|
|
85
|
+
@click="browse()"
|
|
86
86
|
/>
|
|
87
87
|
|
|
88
88
|
<template v-for="path_key in pathKeys" :key="path_key">
|
|
@@ -100,7 +100,7 @@ function fileName(pathKey: string) {
|
|
|
100
100
|
color="gray"
|
|
101
101
|
thin
|
|
102
102
|
icon="autorenew"
|
|
103
|
-
@click="browse(
|
|
103
|
+
@click="browse()"
|
|
104
104
|
/>
|
|
105
105
|
<Btn
|
|
106
106
|
icon="download"
|
|
@@ -139,7 +139,7 @@ function fileName(pathKey: string) {
|
|
|
139
139
|
'bgl_oval-upload': oval,
|
|
140
140
|
}"
|
|
141
141
|
:style="{ width, height }"
|
|
142
|
-
@click="browse(
|
|
142
|
+
@click="browse()"
|
|
143
143
|
@dragover="(e) => handleDrag(e, true)"
|
|
144
144
|
@drop="handleDrop"
|
|
145
145
|
@dragleave="(e) => handleDrag(e)"
|
|
@@ -223,7 +223,7 @@ function fileName(pathKey: string) {
|
|
|
223
223
|
color="gray"
|
|
224
224
|
thin
|
|
225
225
|
icon="autorenew"
|
|
226
|
-
@click="browse(
|
|
226
|
+
@click="browse()"
|
|
227
227
|
/>
|
|
228
228
|
<Btn
|
|
229
229
|
v-tooltip="'Download'"
|
|
@@ -30,7 +30,7 @@ export function useFileUpload(props: UseFileUploadProps = {}) {
|
|
|
30
30
|
// File handling methods
|
|
31
31
|
const fileToUrl = (file: File) => URL.createObjectURL(file)
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
function addFile(file?: File | File[] | FileList | null) {
|
|
34
34
|
if (!file) return
|
|
35
35
|
|
|
36
36
|
let filesToAdd: File[] = []
|
|
@@ -62,7 +62,7 @@ export function useFileUpload(props: UseFileUploadProps = {}) {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
async function removeFile(pathKeyOrFile: string | File | QueueFile) {
|
|
66
66
|
if (typeof pathKeyOrFile === 'string') {
|
|
67
67
|
// Remove from both lists
|
|
68
68
|
storageFiles.value = storageFiles.value.filter(file => file.path_key !== pathKeyOrFile)
|
|
@@ -92,8 +92,7 @@ export function useFileUpload(props: UseFileUploadProps = {}) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
const flushQueue = async () => {
|
|
95
|
+
async function flushQueue() {
|
|
97
96
|
// Only process files in the current namespace
|
|
98
97
|
const namespaceQueue = fileQueue.value.filter(file => file.namespace === namespace)
|
|
99
98
|
|
|
@@ -123,7 +122,7 @@ export function useFileUpload(props: UseFileUploadProps = {}) {
|
|
|
123
122
|
}
|
|
124
123
|
|
|
125
124
|
// UI interaction
|
|
126
|
-
|
|
125
|
+
function browse(autoFlush = false) {
|
|
127
126
|
if (props.disabled) return
|
|
128
127
|
|
|
129
128
|
const input = document.createElement('input')
|
package/src/types/BagelForm.ts
CHANGED
|
@@ -29,7 +29,7 @@ export type BagelFieldOptions<T> = (
|
|
|
29
29
|
| boolean
|
|
30
30
|
| { [key: string]: any }
|
|
31
31
|
)[]
|
|
32
|
-
| ((val
|
|
32
|
+
| ((val?: any, rowData?: T) => void)
|
|
33
33
|
)
|
|
34
34
|
// TODO: ^^ replace any with a more specific type (perhaps FieldVal<T, P>)
|
|
35
35
|
|
|
@@ -40,7 +40,7 @@ export type VIfType<T, P extends Path<T>> = (
|
|
|
40
40
|
)
|
|
41
41
|
|
|
42
42
|
export type ValidationFn<T, P extends Path<T>> = (
|
|
43
|
-
val
|
|
43
|
+
val?: FieldVal<T, P>,
|
|
44
44
|
rowData?: T,
|
|
45
45
|
) => string | undefined
|
|
46
46
|
|
|
@@ -62,7 +62,12 @@ export type Path<T> = (
|
|
|
62
62
|
)
|
|
63
63
|
|
|
64
64
|
/** The value type at path P in object T. */
|
|
65
|
-
|
|
65
|
+
// Fall back to any if type resolution fails
|
|
66
|
+
export type FieldVal<T, P extends Path<T>> = (
|
|
67
|
+
unknown extends Get<T, P> ?
|
|
68
|
+
unknown :
|
|
69
|
+
Get<T, P>
|
|
70
|
+
)
|
|
66
71
|
|
|
67
72
|
/** If path P in T is an array, this gives the array's element type. */
|
|
68
73
|
export type ArrayFieldVal<T, P extends Path<T>> = IterableElement<Get<T, P>>
|
|
@@ -92,11 +97,15 @@ export interface BaseBagelField<T, P extends Path<T>> {
|
|
|
92
97
|
'validate'?: ValidationFn<T, P>
|
|
93
98
|
}
|
|
94
99
|
|
|
95
|
-
export type
|
|
100
|
+
export type _MappedBaseBagelField<T> = {
|
|
96
101
|
[P in Path<T>]: BaseBagelField<T, P>
|
|
97
|
-
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export type MappedBaseBagelFieldP<T, P extends Path<T>> = _MappedBaseBagelField<T>[P]
|
|
105
|
+
|
|
106
|
+
export type FieldByP<T, P extends Path<T>> = MappedBaseBagelFieldP<T, P>
|
|
98
107
|
|
|
99
|
-
export type Field<T> =
|
|
108
|
+
export type Field<T> = MappedBaseBagelFieldP<T, Path<T>>
|
|
100
109
|
|
|
101
110
|
export type BglFieldT<T> = Field<T>
|
|
102
111
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ArrayFieldVal, Attributes, BaseBagelField, BglFormSchemaT,
|
|
1
|
+
import type { ArrayFieldVal, Attributes, BaseBagelField, BglFormSchemaT, FieldByP, IconType, InputBagelField, Option, Path, SchemaChild, SelectBagelField, UploadInputProps } from '@bagelink/vue'
|
|
2
2
|
|
|
3
3
|
interface InputOptions<T, P extends Path<T>> extends Partial<BaseBagelField<T, P>> {
|
|
4
4
|
defaultValue?: string | number
|
|
@@ -229,25 +229,19 @@ export function numField<T, P extends Path<T>>(
|
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
export function frmRow<
|
|
233
|
-
T,
|
|
234
|
-
P extends Path<T>
|
|
235
|
-
>(
|
|
232
|
+
export function frmRow<T, P extends Path<T>>(
|
|
236
233
|
...children: SchemaChild<T, P>[]
|
|
237
|
-
):
|
|
234
|
+
): FieldByP<T, P> {
|
|
238
235
|
return {
|
|
239
236
|
$el: 'div',
|
|
240
237
|
class: 'flex gap-1 m_block align-items-end',
|
|
241
|
-
children
|
|
238
|
+
children,
|
|
242
239
|
}
|
|
243
240
|
}
|
|
244
241
|
|
|
245
242
|
export interface UploadOptions<T, K extends Path<T>> extends Omit<UploadInputProps, 'id'>, InputOptions<T, K> {}
|
|
246
243
|
|
|
247
|
-
export function uploadField<
|
|
248
|
-
T,
|
|
249
|
-
P extends Path<T>
|
|
250
|
-
>(
|
|
244
|
+
export function uploadField<T, P extends Path<T>>(
|
|
251
245
|
id: P,
|
|
252
246
|
label?: string,
|
|
253
247
|
options?: UploadOptions<T, P>
|
|
@@ -294,7 +288,7 @@ export function rangeField<T, P extends Path<T>>(
|
|
|
294
288
|
}
|
|
295
289
|
}
|
|
296
290
|
|
|
297
|
-
export function bglForm<T>(idOrField?: string |
|
|
291
|
+
export function bglForm<T>(idOrField?: string | FieldByP<T, Path<T>>, ...schema: FieldByP<T, Path<T>>[]) {
|
|
298
292
|
if (typeof idOrField === 'string') {
|
|
299
293
|
return {
|
|
300
294
|
$el: 'bagelform',
|
|
@@ -342,15 +336,15 @@ export function colorField<T, P extends Path<T>>(
|
|
|
342
336
|
}
|
|
343
337
|
}
|
|
344
338
|
|
|
345
|
-
export function findBglFieldById<T>(id: string, _schema: BglFormSchemaT<T>):
|
|
339
|
+
export function findBglFieldById<T>(id: string, _schema: BglFormSchemaT<T>): FieldByP<T, Path<T>> | undefined {
|
|
346
340
|
for (const field of _schema) {
|
|
347
|
-
if (field.id === id) return field as
|
|
341
|
+
if (field.id === id) return field as FieldByP<T, Path<T>> | undefined
|
|
348
342
|
if (field.children && Number(field.children.length) > 0) {
|
|
349
343
|
const fieldChildren = field.children.filter(
|
|
350
344
|
c => typeof c === 'object' && '$el' in c
|
|
351
345
|
)
|
|
352
346
|
const child = findBglFieldById(id, fieldChildren as BglFormSchemaT<T>)
|
|
353
|
-
if (child) return child as
|
|
347
|
+
if (child) return child as FieldByP<T, Path<T>> | undefined
|
|
354
348
|
}
|
|
355
349
|
}
|
|
356
350
|
return undefined
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
type Easing = 'ease-in-out' | 'ease-in' | 'ease-out' | 'linear';
|
|
2
|
-
type AutoplayMode = 'disabled' | 'standard' | 'linear';
|
|
3
|
-
type AutoplayValue = boolean | AutoplayMode;
|
|
4
|
-
interface CarouselOptions {
|
|
5
|
-
duration?: number;
|
|
6
|
-
easing?: Easing;
|
|
7
|
-
perPage?: number | {
|
|
8
|
-
[key: number]: number;
|
|
9
|
-
};
|
|
10
|
-
startIndex?: number;
|
|
11
|
-
draggable?: boolean;
|
|
12
|
-
multipleDrag?: boolean;
|
|
13
|
-
threshold?: number;
|
|
14
|
-
loop?: boolean;
|
|
15
|
-
rtl?: boolean;
|
|
16
|
-
autoplay?: AutoplayValue;
|
|
17
|
-
autoplayInterval?: number;
|
|
18
|
-
autoplaySpeed?: number;
|
|
19
|
-
pauseOnHover?: boolean;
|
|
20
|
-
dots?: boolean;
|
|
21
|
-
slideWidth?: number;
|
|
22
|
-
onInit?: () => void;
|
|
23
|
-
onChange?: () => void;
|
|
24
|
-
}
|
|
25
|
-
declare function prev(howManySlides?: number): void;
|
|
26
|
-
declare function next(howManySlides?: number): void;
|
|
27
|
-
declare function goTo(index: number): void;
|
|
28
|
-
declare function remove(index: number): void;
|
|
29
|
-
declare function insert(item: Element, index: number): void;
|
|
30
|
-
declare function prepend(item: Element): void;
|
|
31
|
-
declare function append(item: Element): void;
|
|
32
|
-
declare function destroy(restoreMarkup?: boolean): void;
|
|
33
|
-
declare function pauseAutoplay(): void;
|
|
34
|
-
declare function resumeAutoplay(): void;
|
|
35
|
-
declare function __VLS_template(): {
|
|
36
|
-
attrs: Partial<{}>;
|
|
37
|
-
slots: {
|
|
38
|
-
default?(_: {}): any;
|
|
39
|
-
};
|
|
40
|
-
refs: {
|
|
41
|
-
carouselRef: HTMLDivElement;
|
|
42
|
-
};
|
|
43
|
-
rootEl: HTMLDivElement;
|
|
44
|
-
};
|
|
45
|
-
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
46
|
-
declare const __VLS_component: import('vue').DefineComponent<CarouselOptions, {
|
|
47
|
-
prev: typeof prev;
|
|
48
|
-
next: typeof next;
|
|
49
|
-
goTo: typeof goTo;
|
|
50
|
-
remove: typeof remove;
|
|
51
|
-
insert: typeof insert;
|
|
52
|
-
prepend: typeof prepend;
|
|
53
|
-
append: typeof append;
|
|
54
|
-
destroy: typeof destroy;
|
|
55
|
-
currentSlide: import('vue').Ref<number, number>;
|
|
56
|
-
pauseAutoplay: typeof pauseAutoplay;
|
|
57
|
-
resumeAutoplay: typeof resumeAutoplay;
|
|
58
|
-
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
59
|
-
change: () => any;
|
|
60
|
-
init: () => any;
|
|
61
|
-
}, string, import('vue').PublicProps, Readonly<CarouselOptions> & Readonly<{
|
|
62
|
-
onChange?: (() => any) | undefined;
|
|
63
|
-
onInit?: (() => any) | undefined;
|
|
64
|
-
}>, {
|
|
65
|
-
autoplay: AutoplayValue;
|
|
66
|
-
loop: boolean;
|
|
67
|
-
duration: number;
|
|
68
|
-
easing: Easing;
|
|
69
|
-
startIndex: number;
|
|
70
|
-
draggable: boolean;
|
|
71
|
-
multipleDrag: boolean;
|
|
72
|
-
threshold: number;
|
|
73
|
-
rtl: boolean;
|
|
74
|
-
autoplayInterval: number;
|
|
75
|
-
autoplaySpeed: number;
|
|
76
|
-
pauseOnHover: boolean;
|
|
77
|
-
dots: boolean;
|
|
78
|
-
slideWidth: number;
|
|
79
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
80
|
-
carouselRef: HTMLDivElement;
|
|
81
|
-
}, HTMLDivElement>;
|
|
82
|
-
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
83
|
-
export default _default;
|
|
84
|
-
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
85
|
-
new (): {
|
|
86
|
-
$slots: S;
|
|
87
|
-
};
|
|
88
|
-
};
|
|
89
|
-
//# sourceMappingURL=Carousel2.vue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel2.vue.d.ts","sourceRoot":"","sources":["../../src/components/Carousel2.vue"],"names":[],"mappings":"AAy/BA,KAAK,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;AAC/D,KAAK,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAA;AACtD,KAAK,aAAa,GAAG,OAAO,GAAG,YAAY,CAAA;AAE3C,UAAU,eAAe;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAkWD,iBAAS,IAAI,CAAC,aAAa,GAAE,MAAU,GAAG,IAAI,CAmC7C;AAED,iBAAS,IAAI,CAAC,aAAa,GAAE,MAAU,GAAG,IAAI,CAmC7C;AAED,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAejC;AA+SD,iBAAS,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAenC;AAED,iBAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAkBlD;AAED,iBAAS,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEpC;AAED,iBAAS,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnC;AAED,iBAAS,OAAO,CAAC,aAAa,GAAE,OAAe,GAAG,IAAI,CAkBrD;AAqGD,iBAAS,aAAa,IAAI,IAAI,CAE7B;AAED,iBAAS,cAAc,IAAI,IAAI,CAI9B;AAgDD,iBAAS,cAAc;WAyDT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAcD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;cA3hCT,aAAa;UAFjB,OAAO;cAPH,MAAM;YACR,MAAM;gBAEF,MAAM;eACP,OAAO;kBACJ,OAAO;eACV,MAAM;SAEZ,OAAO;sBAEM,MAAM;mBACT,MAAM;kBACP,OAAO;UACf,OAAO;gBACD,MAAM;;;kBAiiClB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}
|