@djangocfg/ui-tools 2.1.110 → 2.1.111
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 +242 -49
- package/dist/JsonSchemaForm-65NLLK56.mjs +4 -0
- package/dist/JsonSchemaForm-65NLLK56.mjs.map +1 -0
- package/dist/JsonSchemaForm-PY6DH3HE.cjs +13 -0
- package/dist/JsonSchemaForm-PY6DH3HE.cjs.map +1 -0
- package/dist/JsonTree-6RYAOPSS.mjs +4 -0
- package/dist/JsonTree-6RYAOPSS.mjs.map +1 -0
- package/dist/JsonTree-7OH6CIHT.cjs +10 -0
- package/dist/JsonTree-7OH6CIHT.cjs.map +1 -0
- package/dist/MapContainer-GXQLP5WY.mjs +214 -0
- package/dist/MapContainer-GXQLP5WY.mjs.map +1 -0
- package/dist/MapContainer-RYG4HPH4.cjs +221 -0
- package/dist/MapContainer-RYG4HPH4.cjs.map +1 -0
- package/dist/{Mermaid.client-4OCKJ6QD.mjs → Mermaid.client-OKACITCW.mjs} +16 -7
- package/dist/Mermaid.client-OKACITCW.mjs.map +1 -0
- package/dist/{Mermaid.client-ZP6OE46Z.cjs → Mermaid.client-PNXEC6YL.cjs} +16 -7
- package/dist/Mermaid.client-PNXEC6YL.cjs.map +1 -0
- package/dist/{PlaygroundLayout-XXVBU4WZ.cjs → PlaygroundLayout-SYMEAG3J.cjs} +25 -24
- package/dist/PlaygroundLayout-SYMEAG3J.cjs.map +1 -0
- package/dist/{PlaygroundLayout-LMQTVXSP.mjs → PlaygroundLayout-UQRBU5RH.mjs} +4 -3
- package/dist/PlaygroundLayout-UQRBU5RH.mjs.map +1 -0
- package/dist/{PrettyCode.client-2CLSV2VD.cjs → PrettyCode.client-DANYYQYO.cjs} +11 -4
- package/dist/PrettyCode.client-DANYYQYO.cjs.map +1 -0
- package/dist/{PrettyCode.client-Y2BVON7R.mjs → PrettyCode.client-RS5ZTNBT.mjs} +11 -4
- package/dist/PrettyCode.client-RS5ZTNBT.mjs.map +1 -0
- package/dist/chunk-2DSR7V2L.mjs +561 -0
- package/dist/chunk-2DSR7V2L.mjs.map +1 -0
- package/dist/chunk-47T5ECYV.cjs +1357 -0
- package/dist/chunk-47T5ECYV.cjs.map +1 -0
- package/dist/chunk-5QT3QYFZ.cjs +189 -0
- package/dist/chunk-5QT3QYFZ.cjs.map +1 -0
- package/dist/chunk-7IIRYG4S.mjs +1057 -0
- package/dist/chunk-7IIRYG4S.mjs.map +1 -0
- package/dist/{chunk-FB5QBSI3.cjs → chunk-DI3HUXHK.cjs} +15 -195
- package/dist/chunk-DI3HUXHK.cjs.map +1 -0
- package/dist/chunk-EVGWYASL.cjs +1528 -0
- package/dist/chunk-EVGWYASL.cjs.map +1 -0
- package/dist/chunk-F2N7P5XU.cjs +30 -0
- package/dist/chunk-F2N7P5XU.cjs.map +1 -0
- package/dist/{chunk-L6UHASYQ.mjs → chunk-G6PRZP5I.mjs} +7 -186
- package/dist/chunk-G6PRZP5I.mjs.map +1 -0
- package/dist/chunk-JWB2EWQO.mjs +5 -0
- package/dist/chunk-JWB2EWQO.mjs.map +1 -0
- package/dist/chunk-LTJX2JXE.mjs +338 -0
- package/dist/chunk-LTJX2JXE.mjs.map +1 -0
- package/dist/chunk-OVNC4KW6.mjs +1494 -0
- package/dist/chunk-OVNC4KW6.mjs.map +1 -0
- package/dist/chunk-PNZSJN6T.cjs +1086 -0
- package/dist/chunk-PNZSJN6T.cjs.map +1 -0
- package/dist/chunk-TEFRA7GW.cjs +565 -0
- package/dist/chunk-TEFRA7GW.cjs.map +1 -0
- package/dist/chunk-UOMPPIED.mjs +1343 -0
- package/dist/chunk-UOMPPIED.mjs.map +1 -0
- package/dist/chunk-W6YHQI4F.mjs +187 -0
- package/dist/chunk-W6YHQI4F.mjs.map +1 -0
- package/dist/chunk-XTBRWVIV.cjs +346 -0
- package/dist/chunk-XTBRWVIV.cjs.map +1 -0
- package/dist/components-C7ZL7OMY.mjs +5 -0
- package/dist/components-C7ZL7OMY.mjs.map +1 -0
- package/dist/components-CJ2IB65O.cjs +27 -0
- package/dist/components-CJ2IB65O.cjs.map +1 -0
- package/dist/components-EASJYK45.mjs +6 -0
- package/dist/components-EASJYK45.mjs.map +1 -0
- package/dist/components-LDRFDV4A.cjs +22 -0
- package/dist/components-LDRFDV4A.cjs.map +1 -0
- package/dist/components-VZKUTDJK.mjs +5 -0
- package/dist/components-VZKUTDJK.mjs.map +1 -0
- package/dist/components-Y64GTIMQ.cjs +42 -0
- package/dist/components-Y64GTIMQ.cjs.map +1 -0
- package/dist/index.cjs +701 -4813
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1274 -1026
- package/dist/index.d.ts +1274 -1026
- package/dist/index.mjs +358 -4730
- package/dist/index.mjs.map +1 -1
- package/package.json +27 -4
- package/src/components/index.ts +17 -0
- package/src/components/lazy-wrapper.tsx +281 -0
- package/src/index.ts +92 -7
- package/src/tools/AudioPlayer/components/HybridAudioPlayer.tsx +14 -5
- package/src/tools/AudioPlayer/lazy.tsx +85 -0
- package/src/tools/Gallery/components/Gallery.tsx +182 -0
- package/src/tools/Gallery/components/GalleryCarousel.tsx +251 -0
- package/src/tools/Gallery/components/GalleryCompact.tsx +173 -0
- package/src/tools/Gallery/components/GalleryGrid.tsx +493 -0
- package/src/tools/Gallery/components/GalleryImage.tsx +66 -0
- package/src/tools/Gallery/components/GalleryLightbox.tsx +331 -0
- package/src/tools/Gallery/components/GalleryMedia.tsx +66 -0
- package/src/tools/Gallery/components/GalleryThumbnails.tsx +173 -0
- package/src/tools/Gallery/components/GalleryThumbnailsVirtual.tsx +138 -0
- package/src/tools/Gallery/components/GalleryVideo.tsx +222 -0
- package/src/tools/Gallery/components/index.ts +13 -0
- package/src/tools/Gallery/hooks/index.ts +23 -0
- package/src/tools/Gallery/hooks/useGallery.ts +137 -0
- package/src/tools/Gallery/hooks/useImageDimensions.ts +223 -0
- package/src/tools/Gallery/hooks/usePinchZoom.ts +234 -0
- package/src/tools/Gallery/hooks/usePreloadImages.ts +71 -0
- package/src/tools/Gallery/hooks/useSwipe.ts +86 -0
- package/src/tools/Gallery/hooks/useVirtualList.ts +129 -0
- package/src/tools/Gallery/hooks/useZoom.ts +316 -0
- package/src/tools/Gallery/index.ts +66 -0
- package/src/tools/Gallery/types.ts +183 -0
- package/src/tools/Gallery/utils/imageAnalysis.ts +52 -0
- package/src/tools/Gallery/utils/index.ts +11 -0
- package/src/tools/ImageViewer/components/ImageToolbar.tsx +20 -8
- package/src/tools/ImageViewer/components/ImageViewer.tsx +12 -4
- package/src/tools/ImageViewer/lazy.tsx +37 -0
- package/src/tools/JsonForm/lazy.tsx +43 -0
- package/src/tools/JsonForm/widgets/ColorWidget.tsx +4 -1
- package/src/tools/JsonTree/lazy.tsx +45 -0
- package/src/tools/LottiePlayer/lazy.tsx +57 -0
- package/src/tools/Map/components/CustomOverlay.tsx +54 -0
- package/src/tools/Map/components/DrawControl.tsx +36 -0
- package/src/tools/Map/components/GeocoderControl.tsx +70 -0
- package/src/tools/Map/components/LayerSwitcher.tsx +225 -0
- package/src/tools/Map/components/MapCluster.tsx +273 -0
- package/src/tools/Map/components/MapContainer.tsx +191 -0
- package/src/tools/Map/components/MapControls.tsx +44 -0
- package/src/tools/Map/components/MapLegend.tsx +161 -0
- package/src/tools/Map/components/MapMarker.tsx +102 -0
- package/src/tools/Map/components/MapPopup.tsx +46 -0
- package/src/tools/Map/components/MapSource.tsx +30 -0
- package/src/tools/Map/components/index.ts +20 -0
- package/src/tools/Map/context/MapContext.tsx +89 -0
- package/src/tools/Map/context/index.ts +2 -0
- package/src/tools/Map/hooks/index.ts +9 -0
- package/src/tools/Map/hooks/useMap.ts +11 -0
- package/src/tools/Map/hooks/useMapControl.ts +99 -0
- package/src/tools/Map/hooks/useMapEvents.ts +147 -0
- package/src/tools/Map/hooks/useMapLayers.ts +83 -0
- package/src/tools/Map/hooks/useMapViewport.ts +62 -0
- package/src/tools/Map/hooks/useMarkers.ts +85 -0
- package/src/tools/Map/index.ts +116 -0
- package/src/tools/Map/layers/cluster.ts +94 -0
- package/src/tools/Map/layers/index.ts +15 -0
- package/src/tools/Map/layers/line.ts +93 -0
- package/src/tools/Map/layers/point.ts +61 -0
- package/src/tools/Map/layers/polygon.ts +73 -0
- package/src/tools/Map/lazy.tsx +56 -0
- package/src/tools/Map/styles/index.ts +15 -0
- package/src/tools/Map/types.ts +259 -0
- package/src/tools/Map/utils/geo.ts +88 -0
- package/src/tools/Map/utils/index.ts +16 -0
- package/src/tools/Map/utils/transform.ts +107 -0
- package/src/tools/Mermaid/Mermaid.client.tsx +12 -4
- package/src/tools/Mermaid/components/MermaidFullscreenModal.tsx +6 -2
- package/src/tools/Mermaid/lazy.tsx +46 -0
- package/src/tools/OpenapiViewer/lazy.tsx +72 -0
- package/src/tools/PrettyCode/PrettyCode.client.tsx +10 -3
- package/src/tools/PrettyCode/lazy.tsx +64 -0
- package/src/tools/VideoPlayer/lazy.tsx +63 -0
- package/dist/Mermaid.client-4OCKJ6QD.mjs.map +0 -1
- package/dist/Mermaid.client-ZP6OE46Z.cjs.map +0 -1
- package/dist/PlaygroundLayout-LMQTVXSP.mjs.map +0 -1
- package/dist/PlaygroundLayout-XXVBU4WZ.cjs.map +0 -1
- package/dist/PrettyCode.client-2CLSV2VD.cjs.map +0 -1
- package/dist/PrettyCode.client-Y2BVON7R.mjs.map +0 -1
- package/dist/chunk-FB5QBSI3.cjs.map +0 -1
- package/dist/chunk-L6UHASYQ.mjs.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,233 +1,350 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { CommonExternalProps } from 'react-json-tree';
|
|
3
2
|
import * as React$1 from 'react';
|
|
4
|
-
import React__default, { ReactNode } from 'react';
|
|
3
|
+
import React__default, { ReactNode, ComponentType } from 'react';
|
|
4
|
+
import { ViewState } from 'react-map-gl/maplibre';
|
|
5
5
|
import { Language } from 'prism-react-renderer';
|
|
6
6
|
export { Language } from 'prism-react-renderer';
|
|
7
7
|
import { RJSFSchema, UiSchema, WidgetProps, FieldTemplateProps, ObjectFieldTemplateProps, ArrayFieldTemplateProps, ArrayFieldItemTemplateProps, ErrorListProps } from '@rjsf/utils';
|
|
8
8
|
import { FormProps, IChangeEvent } from '@rjsf/core';
|
|
9
|
+
import { CommonExternalProps } from 'react-json-tree';
|
|
9
10
|
import { MediaPlayerInstance } from '@vidstack/react';
|
|
10
11
|
import * as zustand_middleware from 'zustand/middleware';
|
|
11
12
|
import * as zustand from 'zustand';
|
|
12
13
|
|
|
13
|
-
interface
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
maxStringLength?: number;
|
|
22
|
-
/** Collection limit for performance (default: 50) */
|
|
23
|
-
collectionLimit?: number;
|
|
24
|
-
/** Whether to show collection info (array length, object keys count) */
|
|
25
|
-
showCollectionInfo?: boolean;
|
|
26
|
-
/** Whether to show expand/collapse all buttons */
|
|
27
|
-
showExpandControls?: boolean;
|
|
28
|
-
/** Whether to show copy/download buttons */
|
|
29
|
-
showActionButtons?: boolean;
|
|
30
|
-
/** Custom CSS classes for the container */
|
|
14
|
+
interface LoadingFallbackProps {
|
|
15
|
+
/** Minimum height of the loading container */
|
|
16
|
+
minHeight?: string | number;
|
|
17
|
+
/** Show loading text */
|
|
18
|
+
showText?: boolean;
|
|
19
|
+
/** Custom loading text */
|
|
20
|
+
text?: string;
|
|
21
|
+
/** Additional CSS classes */
|
|
31
22
|
className?: string;
|
|
32
|
-
/** Whether to preserve object key order (default: true) */
|
|
33
|
-
preserveKeyOrder?: boolean;
|
|
34
23
|
}
|
|
35
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Spinner - Simple spinning loader
|
|
26
|
+
*/
|
|
27
|
+
declare function Spinner({ className }: {
|
|
28
|
+
className?: string;
|
|
29
|
+
}): react_jsx_runtime.JSX.Element;
|
|
30
|
+
/**
|
|
31
|
+
* LoadingFallback - Default loading state for lazy components
|
|
32
|
+
*/
|
|
33
|
+
declare function LoadingFallback({ minHeight, showText, text, className, }: LoadingFallbackProps): react_jsx_runtime.JSX.Element;
|
|
34
|
+
/**
|
|
35
|
+
* CardLoadingFallback - Loading state styled as a card
|
|
36
|
+
*/
|
|
37
|
+
declare function CardLoadingFallback({ title, description, minHeight, className, }: {
|
|
36
38
|
title?: string;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
declare const JsonTreeComponent: ({ title, data, config, jsonTreeProps }: JsonTreeComponentProps) => react_jsx_runtime.JSX.Element;
|
|
43
|
-
|
|
39
|
+
description?: string;
|
|
40
|
+
minHeight?: string | number;
|
|
41
|
+
className?: string;
|
|
42
|
+
}): react_jsx_runtime.JSX.Element;
|
|
44
43
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* Lazy loads the heavy Mermaid library (~800KB) only when needed.
|
|
48
|
-
* This significantly reduces the initial bundle size.
|
|
44
|
+
* MapLoadingFallback - Loading state for map components
|
|
49
45
|
*/
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
declare function MapLoadingFallback({ minHeight, className, }: {
|
|
47
|
+
minHeight?: string | number;
|
|
48
|
+
className?: string;
|
|
49
|
+
}): react_jsx_runtime.JSX.Element;
|
|
50
|
+
interface LazyWrapperProps {
|
|
51
|
+
children: ReactNode;
|
|
52
|
+
/** Custom fallback component */
|
|
53
|
+
fallback?: ReactNode;
|
|
54
|
+
/** Use card-style fallback */
|
|
55
|
+
card?: boolean;
|
|
56
|
+
/** Card title (when card=true) */
|
|
57
|
+
cardTitle?: string;
|
|
58
|
+
/** Card description (when card=true) */
|
|
59
|
+
cardDescription?: string;
|
|
60
|
+
/** Minimum height for fallback */
|
|
61
|
+
minHeight?: string | number;
|
|
62
|
+
/** Additional CSS classes for fallback */
|
|
53
63
|
className?: string;
|
|
54
|
-
isCompact?: boolean;
|
|
55
64
|
}
|
|
56
|
-
declare const Mermaid: React__default.FC<MermaidProps>;
|
|
57
|
-
|
|
58
65
|
/**
|
|
59
|
-
*
|
|
66
|
+
* LazyWrapper - Suspense wrapper with configurable fallbacks
|
|
60
67
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
68
|
+
* @example
|
|
69
|
+
* // Basic usage
|
|
70
|
+
* <LazyWrapper>
|
|
71
|
+
* <LazyComponent />
|
|
72
|
+
* </LazyWrapper>
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* // Card style fallback
|
|
76
|
+
* <LazyWrapper card cardTitle="Diagram" minHeight={300}>
|
|
77
|
+
* <Mermaid chart={...} />
|
|
78
|
+
* </LazyWrapper>
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* // Custom fallback
|
|
82
|
+
* <LazyWrapper fallback={<MyCustomLoader />}>
|
|
83
|
+
* <HeavyComponent />
|
|
84
|
+
* </LazyWrapper>
|
|
63
85
|
*/
|
|
64
|
-
|
|
65
|
-
interface
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
inline?: boolean;
|
|
71
|
-
customBg?: string;
|
|
72
|
-
isCompact?: boolean;
|
|
86
|
+
declare function LazyWrapper({ children, fallback, card, cardTitle, cardDescription, minHeight, className, }: LazyWrapperProps): react_jsx_runtime.JSX.Element;
|
|
87
|
+
interface CreateLazyComponentOptions<P> {
|
|
88
|
+
/** Loading fallback component */
|
|
89
|
+
fallback?: ReactNode | ((props: P) => ReactNode);
|
|
90
|
+
/** Display name for the component */
|
|
91
|
+
displayName?: string;
|
|
73
92
|
}
|
|
74
|
-
declare const PrettyCode: React__default.FC<PrettyCodeProps>;
|
|
75
|
-
|
|
76
93
|
/**
|
|
77
|
-
*
|
|
94
|
+
* createLazyComponent - Factory for creating lazy-loaded components
|
|
78
95
|
*
|
|
79
|
-
*
|
|
96
|
+
* @example
|
|
97
|
+
* const LazyMermaid = createLazyComponent(
|
|
98
|
+
* () => import('./Mermaid.client'),
|
|
99
|
+
* {
|
|
100
|
+
* displayName: 'Mermaid',
|
|
101
|
+
* fallback: <CardLoadingFallback title="Diagram" />,
|
|
102
|
+
* }
|
|
103
|
+
* );
|
|
80
104
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Custom width (overrides size preset)
|
|
96
|
-
*/
|
|
97
|
-
width?: number | string;
|
|
98
|
-
/**
|
|
99
|
-
* Custom height (overrides size preset)
|
|
100
|
-
*/
|
|
101
|
-
height?: number | string;
|
|
102
|
-
/**
|
|
103
|
-
* Autoplay animation
|
|
104
|
-
* @default true
|
|
105
|
-
*/
|
|
106
|
-
autoplay?: boolean;
|
|
107
|
-
/**
|
|
108
|
-
* Loop animation
|
|
109
|
-
* @default true
|
|
110
|
-
*/
|
|
111
|
-
loop?: boolean | number;
|
|
112
|
-
/**
|
|
113
|
-
* Playback speed
|
|
114
|
-
* @default 1
|
|
115
|
-
*/
|
|
116
|
-
speed?: LottieSpeed;
|
|
117
|
-
/**
|
|
118
|
-
* Direction (1 = forward, -1 = reverse)
|
|
119
|
-
* @default 1
|
|
120
|
-
*/
|
|
121
|
-
direction?: LottieDirection;
|
|
105
|
+
declare function createLazyComponent<P extends object>(loader: () => Promise<{
|
|
106
|
+
default: ComponentType<P>;
|
|
107
|
+
}>, options?: CreateLazyComponentOptions<P>): ComponentType<P>;
|
|
108
|
+
|
|
109
|
+
interface MarkdownMessageProps {
|
|
110
|
+
/** Markdown content to render */
|
|
111
|
+
content: string;
|
|
112
|
+
/** Additional CSS classes */
|
|
113
|
+
className?: string;
|
|
114
|
+
/** Whether the message is from the user (affects styling) */
|
|
115
|
+
isUser?: boolean;
|
|
116
|
+
/** Use compact size (text-xs instead of text-sm) */
|
|
117
|
+
isCompact?: boolean;
|
|
122
118
|
/**
|
|
123
|
-
*
|
|
119
|
+
* Enable collapsible "Read more..." functionality
|
|
120
|
+
* When enabled, long content will be truncated with a toggle button
|
|
124
121
|
* @default false
|
|
125
122
|
*/
|
|
126
|
-
|
|
123
|
+
collapsible?: boolean;
|
|
127
124
|
/**
|
|
128
|
-
*
|
|
125
|
+
* Maximum character length before showing "Read more..."
|
|
126
|
+
* Only applies when collapsible is true
|
|
127
|
+
* If both maxLength and maxLines are set, the stricter limit applies
|
|
129
128
|
*/
|
|
130
|
-
|
|
129
|
+
maxLength?: number;
|
|
131
130
|
/**
|
|
132
|
-
*
|
|
131
|
+
* Maximum number of lines before showing "Read more..."
|
|
132
|
+
* Only applies when collapsible is true
|
|
133
|
+
* If both maxLength and maxLines are set, the stricter limit applies
|
|
133
134
|
*/
|
|
134
|
-
|
|
135
|
+
maxLines?: number;
|
|
135
136
|
/**
|
|
136
|
-
*
|
|
137
|
-
* @default
|
|
137
|
+
* Custom "Read more" button text
|
|
138
|
+
* @default "Read more..."
|
|
138
139
|
*/
|
|
139
|
-
|
|
140
|
+
readMoreLabel?: string;
|
|
140
141
|
/**
|
|
141
|
-
*
|
|
142
|
+
* Custom "Show less" button text
|
|
143
|
+
* @default "Show less"
|
|
142
144
|
*/
|
|
143
|
-
|
|
145
|
+
showLessLabel?: string;
|
|
144
146
|
/**
|
|
145
|
-
*
|
|
147
|
+
* Start expanded (only applies when collapsible is true)
|
|
148
|
+
* @default false
|
|
146
149
|
*/
|
|
147
|
-
|
|
150
|
+
defaultExpanded?: boolean;
|
|
148
151
|
/**
|
|
149
|
-
* Callback
|
|
152
|
+
* Callback when collapsed state changes
|
|
150
153
|
*/
|
|
151
|
-
|
|
154
|
+
onCollapseChange?: (isCollapsed: boolean) => void;
|
|
152
155
|
}
|
|
153
|
-
|
|
154
156
|
/**
|
|
155
|
-
*
|
|
157
|
+
* MarkdownMessage - Renders markdown content with syntax highlighting and GFM support
|
|
156
158
|
*
|
|
157
|
-
*
|
|
159
|
+
* Features:
|
|
160
|
+
* - GitHub Flavored Markdown (GFM) support
|
|
161
|
+
* - Syntax highlighted code blocks with copy button
|
|
162
|
+
* - Mermaid diagram rendering
|
|
163
|
+
* - Tables, lists, blockquotes
|
|
164
|
+
* - User/assistant styling modes
|
|
165
|
+
* - Plain text optimization (skips ReactMarkdown for simple text)
|
|
166
|
+
* - Collapsible "Read more..." for long messages
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```tsx
|
|
170
|
+
* <MarkdownMessage content="# Hello\n\nThis is **bold** text." />
|
|
171
|
+
*
|
|
172
|
+
* // User message styling
|
|
173
|
+
* <MarkdownMessage content="Some content" isUser />
|
|
174
|
+
*
|
|
175
|
+
* // Collapsible long content (for chat apps)
|
|
176
|
+
* <MarkdownMessage
|
|
177
|
+
* content={longText}
|
|
178
|
+
* collapsible
|
|
179
|
+
* maxLength={300}
|
|
180
|
+
* maxLines={5}
|
|
181
|
+
* />
|
|
182
|
+
* ```
|
|
158
183
|
*/
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
*/
|
|
163
|
-
src: string | object;
|
|
164
|
-
/**
|
|
165
|
-
* Enable caching of loaded animations
|
|
166
|
-
* @default true
|
|
167
|
-
*/
|
|
168
|
-
cache?: boolean;
|
|
169
|
-
}
|
|
170
|
-
interface UseLottieReturn {
|
|
171
|
-
/**
|
|
172
|
-
* Loaded animation data
|
|
173
|
-
*/
|
|
174
|
-
animationData: object | null;
|
|
184
|
+
declare const MarkdownMessage: React__default.FC<MarkdownMessageProps>;
|
|
185
|
+
|
|
186
|
+
interface UseCollapsibleContentOptions {
|
|
175
187
|
/**
|
|
176
|
-
*
|
|
188
|
+
* Maximum character length before collapsing
|
|
189
|
+
* If both maxLength and maxLines are set, the stricter limit applies
|
|
177
190
|
*/
|
|
178
|
-
|
|
191
|
+
maxLength?: number;
|
|
179
192
|
/**
|
|
180
|
-
*
|
|
193
|
+
* Maximum number of lines before collapsing
|
|
194
|
+
* If both maxLength and maxLines are set, the stricter limit applies
|
|
181
195
|
*/
|
|
182
|
-
|
|
196
|
+
maxLines?: number;
|
|
183
197
|
/**
|
|
184
|
-
*
|
|
198
|
+
* Start in expanded state (default: false - starts collapsed)
|
|
185
199
|
*/
|
|
186
|
-
|
|
200
|
+
defaultExpanded?: boolean;
|
|
201
|
+
}
|
|
202
|
+
interface UseCollapsibleContentResult {
|
|
203
|
+
/** Whether content is currently collapsed */
|
|
204
|
+
isCollapsed: boolean;
|
|
205
|
+
/** Toggle between collapsed/expanded state */
|
|
206
|
+
toggleCollapsed: () => void;
|
|
207
|
+
/** Set collapsed state directly */
|
|
208
|
+
setCollapsed: (collapsed: boolean) => void;
|
|
209
|
+
/** Content to display (truncated if collapsed, full if expanded) */
|
|
210
|
+
displayContent: string;
|
|
211
|
+
/** Whether the content exceeds limits and should be collapsible */
|
|
212
|
+
shouldCollapse: boolean;
|
|
213
|
+
/** Original content length */
|
|
214
|
+
originalLength: number;
|
|
215
|
+
/** Original line count */
|
|
216
|
+
originalLineCount: number;
|
|
187
217
|
}
|
|
188
218
|
/**
|
|
189
|
-
* Hook for
|
|
190
|
-
*
|
|
191
|
-
* Features:
|
|
192
|
-
* - Loads animations from URLs or accepts animation objects directly
|
|
193
|
-
* - Caching support to prevent re-fetching the same animation
|
|
194
|
-
* - Error handling with retry capability
|
|
195
|
-
* - Loading states
|
|
219
|
+
* Hook for managing collapsible content with "Read more..." functionality
|
|
196
220
|
*
|
|
197
|
-
*
|
|
221
|
+
* @example
|
|
198
222
|
* ```tsx
|
|
199
|
-
* const {
|
|
200
|
-
*
|
|
201
|
-
* }
|
|
202
|
-
*
|
|
203
|
-
* if (isLoading) return <div>Loading...</div>;
|
|
204
|
-
* if (error) return <div>Error: {error.message} <button onClick={retry}>Retry</button></div>;
|
|
205
|
-
* if (!animationData) return null;
|
|
223
|
+
* const { isCollapsed, toggleCollapsed, displayContent, shouldCollapse } = useCollapsibleContent(
|
|
224
|
+
* longText,
|
|
225
|
+
* { maxLength: 300, maxLines: 5 }
|
|
226
|
+
* );
|
|
206
227
|
*
|
|
207
|
-
* return
|
|
228
|
+
* return (
|
|
229
|
+
* <div>
|
|
230
|
+
* <Markdown content={displayContent} />
|
|
231
|
+
* {shouldCollapse && (
|
|
232
|
+
* <button onClick={toggleCollapsed}>
|
|
233
|
+
* {isCollapsed ? 'Read more...' : 'Show less'}
|
|
234
|
+
* </button>
|
|
235
|
+
* )}
|
|
236
|
+
* </div>
|
|
237
|
+
* );
|
|
208
238
|
* ```
|
|
209
239
|
*/
|
|
210
|
-
declare function
|
|
240
|
+
declare function useCollapsibleContent(content: string, options?: UseCollapsibleContentOptions): UseCollapsibleContentResult;
|
|
241
|
+
|
|
242
|
+
interface MarkerData {
|
|
243
|
+
id: string;
|
|
244
|
+
longitude: number;
|
|
245
|
+
latitude: number;
|
|
246
|
+
data?: Record<string, unknown>;
|
|
247
|
+
}
|
|
248
|
+
interface MapViewport extends Partial<ViewState> {
|
|
249
|
+
longitude: number;
|
|
250
|
+
latitude: number;
|
|
251
|
+
zoom: number;
|
|
252
|
+
bearing?: number;
|
|
253
|
+
pitch?: number;
|
|
254
|
+
transitionDuration?: number;
|
|
255
|
+
}
|
|
256
|
+
type MapStyleKey = 'light' | 'dark' | 'streets' | 'satellite';
|
|
257
|
+
|
|
258
|
+
interface MapContainerProps {
|
|
259
|
+
children?: ReactNode;
|
|
260
|
+
initialViewport?: Partial<MapViewport>;
|
|
261
|
+
mapStyle?: MapStyleKey | string;
|
|
262
|
+
interactiveLayerIds?: string[];
|
|
263
|
+
className?: string;
|
|
264
|
+
style?: React.CSSProperties;
|
|
265
|
+
cursor?: string;
|
|
266
|
+
attributionControl?: boolean;
|
|
267
|
+
reuseMaps?: boolean;
|
|
268
|
+
/** URL to open in external maps app (shows "Open in Maps" button if provided) */
|
|
269
|
+
openInMapsUrl?: string;
|
|
270
|
+
/** Label for the open in maps button */
|
|
271
|
+
openInMapsLabel?: string;
|
|
272
|
+
/** Auto-reset to initial viewport after N ms of inactivity (0 = disabled) */
|
|
273
|
+
autoResetDelay?: number;
|
|
274
|
+
/** Show reset button */
|
|
275
|
+
showResetButton?: boolean;
|
|
276
|
+
}
|
|
211
277
|
|
|
212
278
|
/**
|
|
213
|
-
*
|
|
279
|
+
* LazyMapContainer - Lazy-loaded map container
|
|
214
280
|
*
|
|
215
|
-
*
|
|
216
|
-
|
|
281
|
+
* Automatically shows loading state while MapLibre GL loads (~800KB)
|
|
282
|
+
*/
|
|
283
|
+
declare const LazyMapContainer: React$1.ComponentType<MapContainerProps>;
|
|
284
|
+
/**
|
|
285
|
+
* LazyMapView - Lazy-loaded map view (alias for MapContainer)
|
|
286
|
+
*/
|
|
287
|
+
declare const LazyMapView: React$1.ComponentType<Omit<MapContainerProps, "initialViewport">>;
|
|
288
|
+
|
|
289
|
+
interface MermaidProps$1 {
|
|
290
|
+
chart: string;
|
|
291
|
+
className?: string;
|
|
292
|
+
isCompact?: boolean;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* LazyMermaid - Lazy-loaded Mermaid diagram renderer
|
|
217
296
|
*
|
|
218
|
-
*
|
|
219
|
-
|
|
220
|
-
|
|
297
|
+
* Automatically shows loading state while Mermaid loads (~800KB)
|
|
298
|
+
*/
|
|
299
|
+
declare const LazyMermaid: React$1.ComponentType<MermaidProps$1>;
|
|
300
|
+
|
|
301
|
+
interface PrettyCodeProps$1 {
|
|
302
|
+
data: string | object;
|
|
303
|
+
language: Language;
|
|
304
|
+
className?: string;
|
|
305
|
+
mode?: 'dark' | 'light';
|
|
306
|
+
inline?: boolean;
|
|
307
|
+
customBg?: string;
|
|
308
|
+
isCompact?: boolean;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* LazyPrettyCode - Lazy-loaded code syntax highlighter
|
|
221
313
|
*
|
|
222
|
-
*
|
|
223
|
-
* src="https://example.com/animation.json"
|
|
224
|
-
* size="md"
|
|
225
|
-
* autoplay
|
|
226
|
-
* loop
|
|
227
|
-
* />
|
|
228
|
-
* ```
|
|
314
|
+
* Automatically shows loading state while Prism loads (~500KB)
|
|
229
315
|
*/
|
|
230
|
-
declare
|
|
316
|
+
declare const LazyPrettyCode: React$1.ComponentType<PrettyCodeProps$1>;
|
|
317
|
+
|
|
318
|
+
interface SchemaSource {
|
|
319
|
+
id: string;
|
|
320
|
+
name: string;
|
|
321
|
+
url: string;
|
|
322
|
+
}
|
|
323
|
+
interface PlaygroundConfig {
|
|
324
|
+
schemas: SchemaSource[];
|
|
325
|
+
defaultSchemaId?: string;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Lazy-loaded OpenapiViewer Component
|
|
330
|
+
*
|
|
331
|
+
* Heavy OpenAPI viewer (~400KB) is loaded only when component is rendered.
|
|
332
|
+
* Use this for automatic code-splitting with Suspense fallback.
|
|
333
|
+
*
|
|
334
|
+
* For direct imports without lazy loading, use:
|
|
335
|
+
* import OpenapiViewer from '@djangocfg/ui-tools/openapi'
|
|
336
|
+
*/
|
|
337
|
+
|
|
338
|
+
interface PlaygroundProps$1 {
|
|
339
|
+
config: PlaygroundConfig;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* LazyOpenapiViewer - Lazy-loaded OpenAPI schema viewer & playground
|
|
344
|
+
*
|
|
345
|
+
* Automatically shows loading state while OpenAPI components load (~400KB)
|
|
346
|
+
*/
|
|
347
|
+
declare const LazyOpenapiViewer: React$1.FC<PlaygroundProps$1>;
|
|
231
348
|
|
|
232
349
|
/**
|
|
233
350
|
* JSON Schema Form props interface
|
|
@@ -262,228 +379,500 @@ interface JsonSchemaFormProps<T = any> extends Partial<FormProps<T>> {
|
|
|
262
379
|
}
|
|
263
380
|
|
|
264
381
|
/**
|
|
265
|
-
* JSON Schema
|
|
266
|
-
*
|
|
267
|
-
* A fully-featured form generator that creates forms from JSON Schema.
|
|
268
|
-
* Built on top of react-jsonschema-form with custom widgets and templates
|
|
269
|
-
* using @djangocfg/ui components.
|
|
270
|
-
*
|
|
271
|
-
* @example
|
|
272
|
-
* ```tsx
|
|
273
|
-
* const schema = {
|
|
274
|
-
* type: 'object',
|
|
275
|
-
* required: ['name'],
|
|
276
|
-
* properties: {
|
|
277
|
-
* name: { type: 'string', title: 'Name' },
|
|
278
|
-
* age: { type: 'number', title: 'Age' },
|
|
279
|
-
* active: { type: 'boolean', title: 'Active' }
|
|
280
|
-
* }
|
|
281
|
-
* };
|
|
382
|
+
* LazyJsonSchemaForm - Lazy-loaded JSON Schema form generator
|
|
282
383
|
*
|
|
283
|
-
*
|
|
284
|
-
* schema={schema}
|
|
285
|
-
* onSubmit={(data) => console.log(data.formData)}
|
|
286
|
-
* />
|
|
287
|
-
* ```
|
|
384
|
+
* Automatically shows loading state while RJSF loads (~300KB)
|
|
288
385
|
*/
|
|
289
|
-
declare
|
|
386
|
+
declare const LazyJsonSchemaForm: React$1.ComponentType<JsonSchemaFormProps<any>>;
|
|
290
387
|
|
|
291
388
|
/**
|
|
292
|
-
*
|
|
293
|
-
*
|
|
389
|
+
* LottiePlayer Types
|
|
390
|
+
*
|
|
391
|
+
* Type definitions for the Lottie animation player component
|
|
294
392
|
*/
|
|
295
|
-
|
|
393
|
+
type LottieSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
394
|
+
type LottieSpeed = 0.5 | 1 | 1.5 | 2;
|
|
395
|
+
type LottieDirection = 1 | -1;
|
|
396
|
+
interface LottiePlayerProps {
|
|
397
|
+
/**
|
|
398
|
+
* Animation data (JSON object) or URL to load from
|
|
399
|
+
*/
|
|
400
|
+
src: string | object;
|
|
401
|
+
/**
|
|
402
|
+
* Size preset for the player
|
|
403
|
+
* @default 'md'
|
|
404
|
+
*/
|
|
405
|
+
size?: LottieSize;
|
|
406
|
+
/**
|
|
407
|
+
* Custom width (overrides size preset)
|
|
408
|
+
*/
|
|
409
|
+
width?: number | string;
|
|
410
|
+
/**
|
|
411
|
+
* Custom height (overrides size preset)
|
|
412
|
+
*/
|
|
413
|
+
height?: number | string;
|
|
414
|
+
/**
|
|
415
|
+
* Autoplay animation
|
|
416
|
+
* @default true
|
|
417
|
+
*/
|
|
418
|
+
autoplay?: boolean;
|
|
419
|
+
/**
|
|
420
|
+
* Loop animation
|
|
421
|
+
* @default true
|
|
422
|
+
*/
|
|
423
|
+
loop?: boolean | number;
|
|
424
|
+
/**
|
|
425
|
+
* Playback speed
|
|
426
|
+
* @default 1
|
|
427
|
+
*/
|
|
428
|
+
speed?: LottieSpeed;
|
|
429
|
+
/**
|
|
430
|
+
* Direction (1 = forward, -1 = reverse)
|
|
431
|
+
* @default 1
|
|
432
|
+
*/
|
|
433
|
+
direction?: LottieDirection;
|
|
434
|
+
/**
|
|
435
|
+
* Show playback controls
|
|
436
|
+
* @default false
|
|
437
|
+
*/
|
|
438
|
+
controls?: boolean;
|
|
439
|
+
/**
|
|
440
|
+
* Background color
|
|
441
|
+
*/
|
|
442
|
+
background?: string;
|
|
443
|
+
/**
|
|
444
|
+
* CSS class name
|
|
445
|
+
*/
|
|
446
|
+
className?: string;
|
|
447
|
+
/**
|
|
448
|
+
* Show loading state
|
|
449
|
+
* @default true
|
|
450
|
+
*/
|
|
451
|
+
showLoading?: boolean;
|
|
452
|
+
/**
|
|
453
|
+
* Callback when animation completes
|
|
454
|
+
*/
|
|
455
|
+
onComplete?: () => void;
|
|
456
|
+
/**
|
|
457
|
+
* Callback when animation loads
|
|
458
|
+
*/
|
|
459
|
+
onLoad?: () => void;
|
|
460
|
+
/**
|
|
461
|
+
* Callback on error
|
|
462
|
+
*/
|
|
463
|
+
onError?: (error: Error) => void;
|
|
464
|
+
}
|
|
296
465
|
|
|
297
466
|
/**
|
|
298
|
-
*
|
|
299
|
-
*
|
|
467
|
+
* LazyLottiePlayer - Lazy-loaded Lottie animation player
|
|
468
|
+
*
|
|
469
|
+
* Automatically shows loading state while Lottie loads (~200KB)
|
|
300
470
|
*/
|
|
301
|
-
declare
|
|
471
|
+
declare const LazyLottiePlayer: React$1.ComponentType<LottiePlayerProps>;
|
|
472
|
+
|
|
473
|
+
interface HybridAudioPlayerProps {
|
|
474
|
+
/** Show playback controls */
|
|
475
|
+
showControls?: boolean;
|
|
476
|
+
/** Show frequency waveform */
|
|
477
|
+
showWaveform?: boolean;
|
|
478
|
+
/** Waveform visualization mode */
|
|
479
|
+
waveformMode?: 'frequency' | 'static';
|
|
480
|
+
/** Waveform height in pixels */
|
|
481
|
+
waveformHeight?: number;
|
|
482
|
+
/** Show time display */
|
|
483
|
+
showTimer?: boolean;
|
|
484
|
+
/** Show volume control */
|
|
485
|
+
showVolume?: boolean;
|
|
486
|
+
/** Show loop button */
|
|
487
|
+
showLoop?: boolean;
|
|
488
|
+
/** Additional CSS class */
|
|
489
|
+
className?: string;
|
|
490
|
+
/** Inline styles */
|
|
491
|
+
style?: React.CSSProperties;
|
|
492
|
+
}
|
|
493
|
+
declare const HybridAudioPlayer: React$1.NamedExoticComponent<HybridAudioPlayerProps>;
|
|
302
494
|
|
|
303
495
|
/**
|
|
304
|
-
*
|
|
305
|
-
*
|
|
496
|
+
* Audio Reactive Effects - Common utilities and types
|
|
497
|
+
*
|
|
498
|
+
* Provides reusable effect calculations and configurations
|
|
306
499
|
*/
|
|
307
|
-
|
|
308
|
-
|
|
500
|
+
type EffectVariant = 'glow' | 'orbs' | 'spotlight' | 'mesh';
|
|
501
|
+
type EffectIntensity = 'subtle' | 'medium' | 'strong';
|
|
502
|
+
type EffectColorScheme = 'primary' | 'vibrant' | 'cool' | 'warm';
|
|
503
|
+
interface AudioLevels {
|
|
504
|
+
bass: number;
|
|
505
|
+
mid: number;
|
|
506
|
+
high: number;
|
|
507
|
+
overall: number;
|
|
508
|
+
}
|
|
509
|
+
interface EffectConfig$1 {
|
|
510
|
+
opacity: number;
|
|
511
|
+
scale: number;
|
|
512
|
+
blur: string;
|
|
513
|
+
}
|
|
514
|
+
interface EffectColors {
|
|
515
|
+
colors: string[];
|
|
516
|
+
hueShift: number;
|
|
517
|
+
}
|
|
518
|
+
interface EffectLayer {
|
|
519
|
+
inset: number;
|
|
520
|
+
opacity: number;
|
|
521
|
+
scale: number;
|
|
522
|
+
background: string;
|
|
523
|
+
blur: string;
|
|
524
|
+
animation?: string;
|
|
525
|
+
}
|
|
526
|
+
declare const INTENSITY_CONFIG: Record<EffectIntensity, EffectConfig$1>;
|
|
527
|
+
declare const COLOR_SCHEMES: Record<EffectColorScheme, string[]>;
|
|
309
528
|
/**
|
|
310
|
-
*
|
|
311
|
-
* Handles enum fields
|
|
529
|
+
* Get effect configuration from intensity setting
|
|
312
530
|
*/
|
|
313
|
-
declare function
|
|
314
|
-
|
|
531
|
+
declare function getEffectConfig(intensity: EffectIntensity): EffectConfig$1;
|
|
315
532
|
/**
|
|
316
|
-
*
|
|
317
|
-
* Alternative boolean input
|
|
533
|
+
* Get color array from color scheme
|
|
318
534
|
*/
|
|
319
|
-
declare function
|
|
320
|
-
|
|
535
|
+
declare function getColors(colorScheme: EffectColorScheme): string[];
|
|
321
536
|
/**
|
|
322
|
-
*
|
|
323
|
-
* Supports HSL format (h s% l%) and HEX format
|
|
324
|
-
* Click on color box to open native color picker directly
|
|
325
|
-
*/
|
|
326
|
-
declare function ColorWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Slider widget for JSON Schema Form
|
|
330
|
-
*
|
|
331
|
-
* Supports:
|
|
332
|
-
* - number/integer types
|
|
333
|
-
* - min/max from schema
|
|
334
|
-
* - step from schema or options
|
|
335
|
-
* - unit suffix (e.g., "rem", "px", "%")
|
|
336
|
-
* - optional text input for precise values
|
|
337
|
-
*
|
|
338
|
-
* Usage in uiSchema:
|
|
339
|
-
* ```json
|
|
340
|
-
* {
|
|
341
|
-
* "radius": {
|
|
342
|
-
* "ui:widget": "slider",
|
|
343
|
-
* "ui:options": {
|
|
344
|
-
* "unit": "rem",
|
|
345
|
-
* "showInput": true,
|
|
346
|
-
* "step": 0.125
|
|
347
|
-
* }
|
|
348
|
-
* }
|
|
349
|
-
* }
|
|
350
|
-
* ```
|
|
351
|
-
*/
|
|
352
|
-
declare function SliderWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
353
|
-
|
|
354
|
-
/**
|
|
355
|
-
* Field template for JSON Schema Form
|
|
356
|
-
* Controls the layout and styling of individual form fields
|
|
357
|
-
*/
|
|
358
|
-
declare function FieldTemplate(props: FieldTemplateProps): react_jsx_runtime.JSX.Element;
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Object field template for JSON Schema Form
|
|
362
|
-
*
|
|
363
|
-
* Supports:
|
|
364
|
-
* - Collapsible groups via ui:collapsible option
|
|
365
|
-
* - Grid layout via ui:grid option
|
|
366
|
-
* - Custom styling via ui:className
|
|
367
|
-
*
|
|
368
|
-
* Usage in uiSchema:
|
|
369
|
-
* ```json
|
|
370
|
-
* {
|
|
371
|
-
* "colors": {
|
|
372
|
-
* "ui:collapsible": true,
|
|
373
|
-
* "ui:collapsed": false,
|
|
374
|
-
* "ui:grid": 2
|
|
375
|
-
* }
|
|
376
|
-
* }
|
|
377
|
-
* ```
|
|
378
|
-
*/
|
|
379
|
-
declare function ObjectFieldTemplate(props: ObjectFieldTemplateProps): react_jsx_runtime.JSX.Element;
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* Array field template for JSON Schema Form
|
|
383
|
-
* Renders array items with add/remove controls
|
|
384
|
-
*
|
|
385
|
-
* NOTE: In RJSF v6, `items` is an array of ReactElement (already rendered),
|
|
386
|
-
* NOT an array of objects with {children, hasRemove, etc.}.
|
|
387
|
-
* The actual rendering of each item (including remove buttons) is handled
|
|
388
|
-
* by ArrayFieldItemTemplate.
|
|
389
|
-
*/
|
|
390
|
-
declare function ArrayFieldTemplate(props: ArrayFieldTemplateProps): react_jsx_runtime.JSX.Element;
|
|
391
|
-
|
|
392
|
-
/**
|
|
393
|
-
* Array field item template for JSON Schema Form
|
|
394
|
-
* Renders individual array items with proper styling and action buttons
|
|
395
|
-
*
|
|
396
|
-
* In RJSF v6, this template is responsible for rendering each item in an array,
|
|
397
|
-
* including the item content (children) and the action buttons (remove, move up/down, copy).
|
|
398
|
-
*/
|
|
399
|
-
declare function ArrayFieldItemTemplate(props: ArrayFieldItemTemplateProps): react_jsx_runtime.JSX.Element;
|
|
400
|
-
|
|
401
|
-
/**
|
|
402
|
-
* Error list template for JSON Schema Form
|
|
403
|
-
* Displays validation errors at the top of the form
|
|
404
|
-
*/
|
|
405
|
-
declare function ErrorListTemplate(props: ErrorListProps): react_jsx_runtime.JSX.Element;
|
|
406
|
-
|
|
407
|
-
/**
|
|
408
|
-
* Base input template for JSON Schema Form
|
|
409
|
-
*
|
|
410
|
-
* This template is CRITICAL for rendering primitive types (string, number)
|
|
411
|
-
* inside arrays. Without it, array items with primitive types will render
|
|
412
|
-
* as empty containers.
|
|
413
|
-
*
|
|
414
|
-
* RJSF uses this template for:
|
|
415
|
-
* - Array items with primitive types (e.g., array of strings)
|
|
416
|
-
* - Fields without explicit widget mapping
|
|
417
|
-
* - All text-based widgets internally
|
|
418
|
-
*
|
|
419
|
-
* @see https://rjsf-team.github.io/react-jsonschema-form/docs/advanced-customization/custom-templates/#baseinputtemplate
|
|
420
|
-
*/
|
|
421
|
-
declare function BaseInputTemplate(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
422
|
-
|
|
423
|
-
/**
|
|
424
|
-
* Utility functions for JSON Schema Form
|
|
425
|
-
*/
|
|
426
|
-
/**
|
|
427
|
-
* Safely validates and normalizes JSON Schema
|
|
428
|
-
* Ensures schema is valid before rendering
|
|
429
|
-
*/
|
|
430
|
-
declare function validateSchema(schema: any): RJSFSchema | null;
|
|
431
|
-
/**
|
|
432
|
-
* Safely normalizes form data
|
|
433
|
-
* Removes undefined values and ensures data structure matches schema
|
|
434
|
-
*/
|
|
435
|
-
declare function normalizeFormData<T = any>(formData: any, schema: RJSFSchema): T;
|
|
436
|
-
/**
|
|
437
|
-
* Merges schema defaults with form data
|
|
537
|
+
* Prepare colors with hue shift based on audio levels
|
|
438
538
|
*/
|
|
439
|
-
declare function
|
|
539
|
+
declare function prepareEffectColors(colorScheme: EffectColorScheme, levels: AudioLevels): EffectColors;
|
|
440
540
|
/**
|
|
441
|
-
*
|
|
541
|
+
* Calculate glow layer properties
|
|
442
542
|
*/
|
|
443
|
-
declare function
|
|
543
|
+
declare function calculateGlowLayers(levels: AudioLevels, config: EffectConfig$1, colors: string[]): EffectLayer[];
|
|
444
544
|
/**
|
|
445
|
-
*
|
|
545
|
+
* Calculate orb positions and properties - highly reactive
|
|
446
546
|
*/
|
|
447
|
-
declare function
|
|
547
|
+
declare function calculateOrbs(levels: AudioLevels, config: EffectConfig$1, colors: string[], baseSize?: number): {
|
|
548
|
+
x: number;
|
|
549
|
+
y: number;
|
|
550
|
+
size: number;
|
|
551
|
+
color: string;
|
|
552
|
+
opacity: number;
|
|
553
|
+
scale: number;
|
|
554
|
+
}[];
|
|
448
555
|
/**
|
|
449
|
-
*
|
|
556
|
+
* Calculate mesh gradient positions - dynamic and reactive
|
|
450
557
|
*/
|
|
451
|
-
declare function
|
|
558
|
+
declare function calculateMeshGradients(levels: AudioLevels, config: EffectConfig$1, colors: string[]): ({
|
|
559
|
+
width: string;
|
|
560
|
+
height: string;
|
|
561
|
+
top: string;
|
|
562
|
+
right: string;
|
|
563
|
+
color: string;
|
|
564
|
+
opacity: number;
|
|
565
|
+
scale: number;
|
|
566
|
+
rotation: number;
|
|
567
|
+
blur: string;
|
|
568
|
+
bottom?: undefined;
|
|
569
|
+
left?: undefined;
|
|
570
|
+
isCenter?: undefined;
|
|
571
|
+
} | {
|
|
572
|
+
width: string;
|
|
573
|
+
height: string;
|
|
574
|
+
bottom: string;
|
|
575
|
+
left: string;
|
|
576
|
+
color: string;
|
|
577
|
+
opacity: number;
|
|
578
|
+
scale: number;
|
|
579
|
+
rotation: number;
|
|
580
|
+
blur: string;
|
|
581
|
+
top?: undefined;
|
|
582
|
+
right?: undefined;
|
|
583
|
+
isCenter?: undefined;
|
|
584
|
+
} | {
|
|
585
|
+
width: string;
|
|
586
|
+
height: string;
|
|
587
|
+
top: string;
|
|
588
|
+
left: string;
|
|
589
|
+
color: string;
|
|
590
|
+
opacity: number;
|
|
591
|
+
scale: number;
|
|
592
|
+
rotation: number;
|
|
593
|
+
blur: string;
|
|
594
|
+
right?: undefined;
|
|
595
|
+
bottom?: undefined;
|
|
596
|
+
isCenter?: undefined;
|
|
597
|
+
} | {
|
|
598
|
+
width: string;
|
|
599
|
+
height: string;
|
|
600
|
+
top: string;
|
|
601
|
+
left: string;
|
|
602
|
+
color: string;
|
|
603
|
+
opacity: number;
|
|
604
|
+
scale: number;
|
|
605
|
+
rotation: number;
|
|
606
|
+
isCenter: boolean;
|
|
607
|
+
blur: string;
|
|
608
|
+
right?: undefined;
|
|
609
|
+
bottom?: undefined;
|
|
610
|
+
})[];
|
|
452
611
|
/**
|
|
453
|
-
*
|
|
612
|
+
* Calculate spotlight effect properties - highly reactive
|
|
454
613
|
*/
|
|
455
|
-
declare function
|
|
614
|
+
declare function calculateSpotlight(levels: AudioLevels, config: EffectConfig$1, colors: string[], rotation: number): {
|
|
615
|
+
rotation: number;
|
|
616
|
+
inset: number;
|
|
617
|
+
colors: {
|
|
618
|
+
color: string;
|
|
619
|
+
opacity: number;
|
|
620
|
+
}[];
|
|
621
|
+
pulseInset: number;
|
|
622
|
+
pulseOpacity: number;
|
|
623
|
+
pulseScale: number;
|
|
624
|
+
ringOpacity: number;
|
|
625
|
+
ringScale: number;
|
|
626
|
+
};
|
|
456
627
|
/**
|
|
457
|
-
*
|
|
628
|
+
* CSS for effect animations - can be injected once
|
|
458
629
|
*/
|
|
459
|
-
declare
|
|
460
|
-
valid: boolean;
|
|
461
|
-
missing: string[];
|
|
462
|
-
};
|
|
630
|
+
declare const EFFECT_ANIMATIONS = "\n @keyframes spotlight-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n @keyframes orb-float-1 {\n 0%, 100% { transform: translate(-50%, -50%) translateY(0); }\n 50% { transform: translate(-50%, -50%) translateY(-15px); }\n }\n\n @keyframes orb-float-2 {\n 0%, 100% { transform: translate(-50%, -50%) translateX(0); }\n 50% { transform: translate(-50%, -50%) translateX(15px); }\n }\n\n @keyframes orb-float-3 {\n 0%, 100% { transform: translate(-50%, -50%) translate(0, 0); }\n 33% { transform: translate(-50%, -50%) translate(10px, -10px); }\n 66% { transform: translate(-50%, -50%) translate(-10px, 10px); }\n }\n\n @keyframes orb-float-4 {\n 0%, 100% { transform: translate(-50%, -50%) translate(0, 0); }\n 50% { transform: translate(-50%, -50%) translate(-15px, -10px); }\n }\n\n @keyframes mesh-float-1 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 25% { transform: translate(-5%, 10%) scale(1.05); }\n 50% { transform: translate(5%, 5%) scale(0.95); }\n 75% { transform: translate(-3%, -5%) scale(1.02); }\n }\n\n @keyframes mesh-float-2 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 33% { transform: translate(8%, -8%) scale(1.08); }\n 66% { transform: translate(-6%, 6%) scale(0.92); }\n }\n\n @keyframes mesh-float-3 {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 50% { transform: translate(10%, 10%) scale(1.1); }\n }\n\n @keyframes mesh-float-4 {\n 0%, 100% { transform: translate(0, 0) scale(1) rotate(0deg); }\n 25% { transform: translate(10%, -5%) scale(1.1) rotate(5deg); }\n 50% { transform: translate(-5%, 10%) scale(0.95) rotate(-5deg); }\n 75% { transform: translate(-10%, -10%) scale(1.05) rotate(3deg); }\n }\n\n @keyframes mesh-pulse {\n 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.3; }\n 50% { transform: translate(-50%, -50%) scale(1.2); opacity: 0.5; }\n }\n\n @keyframes glow-breathe {\n 0%, 100% { opacity: 0.6; transform: scale(1); }\n 50% { opacity: 1; transform: scale(1.05); }\n }\n\n @keyframes glow-rotate {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n\n @keyframes sparkle-move {\n 0% { opacity: 0; transform: scale(0.8); }\n 50% { opacity: 1; }\n 100% { opacity: 0; transform: scale(1.2); }\n }\n";
|
|
463
631
|
|
|
464
|
-
interface
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
632
|
+
interface UseHybridAudioOptions {
|
|
633
|
+
src: string;
|
|
634
|
+
autoPlay?: boolean;
|
|
635
|
+
initialVolume?: number;
|
|
636
|
+
loop?: boolean;
|
|
637
|
+
crossOrigin?: 'anonymous' | 'use-credentials';
|
|
638
|
+
onPlay?: () => void;
|
|
639
|
+
onPause?: () => void;
|
|
640
|
+
onEnded?: () => void;
|
|
641
|
+
onTimeUpdate?: (time: number) => void;
|
|
642
|
+
onError?: (error: Error) => void;
|
|
643
|
+
onReady?: () => void;
|
|
472
644
|
}
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
645
|
+
interface HybridAudioState {
|
|
646
|
+
isReady: boolean;
|
|
647
|
+
isPlaying: boolean;
|
|
648
|
+
currentTime: number;
|
|
649
|
+
duration: number;
|
|
650
|
+
volume: number;
|
|
651
|
+
isMuted: boolean;
|
|
652
|
+
isLooping: boolean;
|
|
653
|
+
buffered: TimeRanges | null;
|
|
654
|
+
error: Error | null;
|
|
476
655
|
}
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
656
|
+
interface HybridAudioControls {
|
|
657
|
+
play: () => Promise<void>;
|
|
658
|
+
pause: () => void;
|
|
659
|
+
togglePlay: () => void;
|
|
660
|
+
seek: (time: number) => void;
|
|
661
|
+
seekTo: (progress: number) => void;
|
|
662
|
+
skip: (seconds: number) => void;
|
|
663
|
+
setVolume: (vol: number) => void;
|
|
664
|
+
toggleMute: () => void;
|
|
665
|
+
toggleLoop: () => void;
|
|
666
|
+
setLoop: (enabled: boolean) => void;
|
|
667
|
+
restart: () => void;
|
|
668
|
+
}
|
|
669
|
+
interface HybridWebAudioAPI {
|
|
670
|
+
context: AudioContext | null;
|
|
671
|
+
analyser: AnalyserNode | null;
|
|
672
|
+
sourceNode: MediaElementAudioSourceNode | null;
|
|
673
|
+
}
|
|
674
|
+
interface UseHybridAudioReturn {
|
|
675
|
+
audioRef: React.RefObject<HTMLAudioElement | null>;
|
|
676
|
+
state: HybridAudioState;
|
|
677
|
+
controls: HybridAudioControls;
|
|
678
|
+
webAudio: HybridWebAudioAPI;
|
|
679
|
+
}
|
|
680
|
+
declare function useHybridAudio(options: UseHybridAudioOptions): UseHybridAudioReturn;
|
|
681
|
+
|
|
682
|
+
declare function useHybridAudioAnalysis(analyser: AnalyserNode | null, isPlaying: boolean): AudioLevels;
|
|
683
|
+
|
|
684
|
+
type VisualizationVariant = 'glow' | 'orbs' | 'spotlight' | 'mesh' | 'none';
|
|
685
|
+
type VisualizationIntensity = 'subtle' | 'medium' | 'strong';
|
|
686
|
+
type VisualizationColorScheme = 'primary' | 'vibrant' | 'cool' | 'warm';
|
|
687
|
+
interface VisualizationSettings {
|
|
688
|
+
/** Enable reactive cover animation */
|
|
689
|
+
enabled: boolean;
|
|
690
|
+
/** Visual effect variant */
|
|
691
|
+
variant: VisualizationVariant;
|
|
692
|
+
/** Effect intensity */
|
|
693
|
+
intensity: VisualizationIntensity;
|
|
694
|
+
/** Color scheme */
|
|
695
|
+
colorScheme: VisualizationColorScheme;
|
|
696
|
+
/** Playback volume (0-1) */
|
|
697
|
+
volume: number;
|
|
698
|
+
/** Loop playback */
|
|
699
|
+
isLooping: boolean;
|
|
700
|
+
}
|
|
701
|
+
interface UseVisualizationReturn {
|
|
702
|
+
/** Current settings */
|
|
703
|
+
settings: VisualizationSettings;
|
|
704
|
+
/** Toggle visualization on/off */
|
|
705
|
+
toggle: () => void;
|
|
706
|
+
/** Set specific setting */
|
|
707
|
+
setSetting: <K extends keyof VisualizationSettings>(key: K, value: VisualizationSettings[K]) => void;
|
|
708
|
+
/** Cycle to next variant */
|
|
709
|
+
nextVariant: () => void;
|
|
710
|
+
/** Cycle to next intensity */
|
|
711
|
+
nextIntensity: () => void;
|
|
712
|
+
/** Cycle to next color scheme */
|
|
713
|
+
nextColorScheme: () => void;
|
|
714
|
+
/** Reset to defaults */
|
|
715
|
+
reset: () => void;
|
|
716
|
+
}
|
|
717
|
+
type UseAudioVisualizationReturn = UseVisualizationReturn;
|
|
718
|
+
interface VisualizationProviderProps {
|
|
719
|
+
children: ReactNode;
|
|
720
|
+
}
|
|
721
|
+
declare function VisualizationProvider({ children }: VisualizationProviderProps): react_jsx_runtime.JSX.Element;
|
|
722
|
+
declare function useVisualization(): UseVisualizationReturn;
|
|
723
|
+
declare const useAudioVisualization: typeof useVisualization;
|
|
724
|
+
declare const VARIANT_INFO: Record<VisualizationVariant, {
|
|
725
|
+
label: string;
|
|
726
|
+
icon: string;
|
|
727
|
+
}>;
|
|
728
|
+
declare const INTENSITY_INFO: Record<VisualizationIntensity, {
|
|
729
|
+
label: string;
|
|
730
|
+
}>;
|
|
731
|
+
declare const COLOR_SCHEME_INFO: Record<VisualizationColorScheme, {
|
|
732
|
+
label: string;
|
|
733
|
+
preview: string;
|
|
734
|
+
}>;
|
|
735
|
+
|
|
736
|
+
interface HybridSimplePlayerProps {
|
|
737
|
+
/** Audio source URL */
|
|
738
|
+
src: string;
|
|
739
|
+
/** Track title */
|
|
740
|
+
title?: string;
|
|
741
|
+
/** Artist name */
|
|
742
|
+
artist?: string;
|
|
743
|
+
/** Cover art URL or ReactNode */
|
|
744
|
+
coverArt?: string | ReactNode;
|
|
745
|
+
/** Cover art size */
|
|
746
|
+
coverSize?: 'sm' | 'md' | 'lg';
|
|
747
|
+
/** Show frequency waveform */
|
|
748
|
+
showWaveform?: boolean;
|
|
749
|
+
/** Waveform visualization mode */
|
|
750
|
+
waveformMode?: 'frequency' | 'static';
|
|
751
|
+
/** Waveform height in pixels */
|
|
752
|
+
waveformHeight?: number;
|
|
753
|
+
/** Show timer */
|
|
754
|
+
showTimer?: boolean;
|
|
755
|
+
/** Show volume control */
|
|
756
|
+
showVolume?: boolean;
|
|
757
|
+
/** Show loop/repeat button */
|
|
758
|
+
showLoop?: boolean;
|
|
759
|
+
/** Enable audio-reactive cover effects */
|
|
760
|
+
reactiveCover?: boolean;
|
|
761
|
+
/** Reactive effect variant */
|
|
762
|
+
variant?: VisualizationVariant;
|
|
763
|
+
/** Reactive effect intensity */
|
|
764
|
+
intensity?: EffectIntensity;
|
|
765
|
+
/** Reactive effect color scheme */
|
|
766
|
+
colorScheme?: EffectColorScheme;
|
|
767
|
+
/** Auto-play on load */
|
|
768
|
+
autoPlay?: boolean;
|
|
769
|
+
/** Loop playback */
|
|
770
|
+
loop?: boolean;
|
|
771
|
+
/** Initial volume (0-1) */
|
|
772
|
+
initialVolume?: number;
|
|
773
|
+
/** Layout direction */
|
|
774
|
+
layout?: 'vertical' | 'horizontal';
|
|
775
|
+
/** Additional class name */
|
|
776
|
+
className?: string;
|
|
777
|
+
/** Callbacks */
|
|
778
|
+
onPlay?: () => void;
|
|
779
|
+
onPause?: () => void;
|
|
780
|
+
onEnded?: () => void;
|
|
781
|
+
onError?: (error: Error) => void;
|
|
782
|
+
}
|
|
783
|
+
declare function HybridSimplePlayer(props: HybridSimplePlayerProps): react_jsx_runtime.JSX.Element;
|
|
784
|
+
|
|
785
|
+
interface HybridWaveformProps {
|
|
786
|
+
/** Visualization mode */
|
|
787
|
+
mode?: 'frequency' | 'static';
|
|
788
|
+
/** Canvas height in pixels */
|
|
789
|
+
height?: number;
|
|
790
|
+
/** Bar width in pixels */
|
|
791
|
+
barWidth?: number;
|
|
792
|
+
/** Gap between bars in pixels */
|
|
793
|
+
barGap?: number;
|
|
794
|
+
/** Bar border radius */
|
|
795
|
+
barRadius?: number;
|
|
796
|
+
/** Color for played portion */
|
|
797
|
+
progressColor?: string;
|
|
798
|
+
/** Color for unplayed portion */
|
|
799
|
+
waveColor?: string;
|
|
800
|
+
/** Color for buffered regions indicator */
|
|
801
|
+
bufferedColor?: string;
|
|
802
|
+
/** Additional CSS class */
|
|
803
|
+
className?: string;
|
|
804
|
+
/** Callback when user seeks */
|
|
805
|
+
onSeek?: (time: number) => void;
|
|
806
|
+
}
|
|
807
|
+
declare const HybridWaveform: React$1.NamedExoticComponent<HybridWaveformProps>;
|
|
808
|
+
|
|
809
|
+
interface AudioReactiveCoverProps {
|
|
810
|
+
children: ReactNode;
|
|
811
|
+
size?: 'sm' | 'md' | 'lg';
|
|
812
|
+
variant?: EffectVariant;
|
|
813
|
+
intensity?: EffectIntensity;
|
|
814
|
+
colorScheme?: EffectColorScheme;
|
|
815
|
+
onClick?: () => void;
|
|
816
|
+
className?: string;
|
|
817
|
+
}
|
|
818
|
+
declare function AudioReactiveCover({ children, size, variant, intensity, colorScheme, onClick, className, }: AudioReactiveCoverProps): react_jsx_runtime.JSX.Element;
|
|
819
|
+
|
|
820
|
+
interface GlowEffectData {
|
|
821
|
+
layers: ReturnType<typeof calculateGlowLayers>;
|
|
822
|
+
hueShift: number;
|
|
823
|
+
showPulseRings: boolean;
|
|
824
|
+
showSparkle: boolean;
|
|
825
|
+
}
|
|
826
|
+
interface GlowEffectProps {
|
|
827
|
+
data: GlowEffectData;
|
|
828
|
+
colors: string[];
|
|
829
|
+
isPlaying: boolean;
|
|
830
|
+
}
|
|
831
|
+
declare function GlowEffect({ data, colors, isPlaying }: GlowEffectProps): react_jsx_runtime.JSX.Element;
|
|
832
|
+
|
|
833
|
+
interface OrbsEffectProps {
|
|
834
|
+
orbs: ReturnType<typeof calculateOrbs>;
|
|
835
|
+
blur: string;
|
|
836
|
+
isPlaying: boolean;
|
|
837
|
+
}
|
|
838
|
+
declare function OrbsEffect({ orbs, blur, isPlaying }: OrbsEffectProps): react_jsx_runtime.JSX.Element;
|
|
839
|
+
|
|
840
|
+
interface SpotlightEffectProps {
|
|
841
|
+
data: ReturnType<typeof calculateSpotlight>;
|
|
842
|
+
colors: string[];
|
|
843
|
+
blur: string;
|
|
844
|
+
isPlaying: boolean;
|
|
845
|
+
}
|
|
846
|
+
declare function SpotlightEffect({ data, colors, blur, isPlaying }: SpotlightEffectProps): react_jsx_runtime.JSX.Element;
|
|
847
|
+
|
|
848
|
+
interface MeshEffectProps {
|
|
849
|
+
gradients: ReturnType<typeof calculateMeshGradients>;
|
|
850
|
+
blur: string;
|
|
851
|
+
isPlaying: boolean;
|
|
852
|
+
}
|
|
853
|
+
declare function MeshEffect({ gradients, isPlaying }: MeshEffectProps): react_jsx_runtime.JSX.Element;
|
|
854
|
+
|
|
855
|
+
/**
|
|
856
|
+
* LazyHybridAudioPlayer - Lazy-loaded full-featured audio player
|
|
857
|
+
*
|
|
858
|
+
* Automatically shows loading state while WaveSurfer loads (~200KB)
|
|
859
|
+
*/
|
|
860
|
+
declare const LazyHybridAudioPlayer: React$1.ComponentType<HybridAudioPlayerProps>;
|
|
861
|
+
/**
|
|
862
|
+
* LazyHybridSimplePlayer - Lazy-loaded simple audio player
|
|
863
|
+
*
|
|
864
|
+
* Automatically shows loading state while WaveSurfer loads (~200KB)
|
|
865
|
+
*/
|
|
866
|
+
declare const LazyHybridSimplePlayer: React$1.ComponentType<HybridSimplePlayerProps>;
|
|
867
|
+
|
|
868
|
+
/**
|
|
869
|
+
* Video source type definitions
|
|
870
|
+
*/
|
|
871
|
+
/** Simple URL source (mp4, webm, etc.) */
|
|
872
|
+
interface UrlSource {
|
|
873
|
+
type: 'url';
|
|
874
|
+
url: string;
|
|
875
|
+
title?: string;
|
|
487
876
|
poster?: string;
|
|
488
877
|
}
|
|
489
878
|
/** YouTube embed source */
|
|
@@ -722,586 +1111,604 @@ interface SimpleStreamSource {
|
|
|
722
1111
|
}
|
|
723
1112
|
|
|
724
1113
|
/**
|
|
725
|
-
*
|
|
726
|
-
*
|
|
727
|
-
* Supports multiple modes:
|
|
728
|
-
* - vidstack: Full-featured player (YouTube, Vimeo, HLS, DASH)
|
|
729
|
-
* - native: Lightweight HTML5 player
|
|
730
|
-
* - streaming: HTTP Range streaming with auth / Blob sources
|
|
731
|
-
*
|
|
732
|
-
* @example
|
|
733
|
-
* // YouTube video
|
|
734
|
-
* <VideoPlayer source={{ type: 'youtube', id: 'dQw4w9WgXcQ' }} />
|
|
1114
|
+
* LazyVideoPlayer - Lazy-loaded professional video player
|
|
735
1115
|
*
|
|
736
|
-
*
|
|
737
|
-
* // HLS stream
|
|
738
|
-
* <VideoPlayer source={{ type: 'hls', url: 'https://example.com/video.m3u8' }} />
|
|
739
|
-
*
|
|
740
|
-
* @example
|
|
741
|
-
* // HTTP Range streaming with auth (full source)
|
|
742
|
-
* <VideoPlayer
|
|
743
|
-
* source={{
|
|
744
|
-
* type: 'stream',
|
|
745
|
-
* sessionId: 'abc123',
|
|
746
|
-
* path: '/videos/movie.mp4',
|
|
747
|
-
* getStreamUrl: (id, path) => `/api/stream/${id}?path=${path}&token=${token}`
|
|
748
|
-
* }}
|
|
749
|
-
* />
|
|
750
|
-
*
|
|
751
|
-
* @example
|
|
752
|
-
* // HTTP Range streaming (simplified, using VideoPlayerProvider context)
|
|
753
|
-
* <VideoPlayerProvider sessionId={sessionId} getStreamUrl={getStreamUrl}>
|
|
754
|
-
* <VideoPlayer source={{ type: 'stream', path: '/videos/movie.mp4' }} />
|
|
755
|
-
* </VideoPlayerProvider>
|
|
756
|
-
*
|
|
757
|
-
* @example
|
|
758
|
-
* // Blob/ArrayBuffer
|
|
759
|
-
* <VideoPlayer source={{ type: 'blob', data: arrayBuffer, mimeType: 'video/mp4' }} />
|
|
1116
|
+
* Automatically shows loading state while Vidstack loads (~150KB)
|
|
760
1117
|
*/
|
|
1118
|
+
declare const LazyVideoPlayer: React$1.ComponentType<VideoPlayerProps>;
|
|
761
1119
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
|
|
775
|
-
/**
|
|
776
|
-
|
|
777
|
-
/**
|
|
778
|
-
|
|
779
|
-
/**
|
|
780
|
-
showRetry?: boolean;
|
|
781
|
-
/** Custom className */
|
|
1120
|
+
interface JsonTreeConfig {
|
|
1121
|
+
/** Maximum depth to expand automatically (default: 2) */
|
|
1122
|
+
maxAutoExpandDepth?: number;
|
|
1123
|
+
/** Maximum items in array to auto-expand (default: 10) */
|
|
1124
|
+
maxAutoExpandArrayItems?: number;
|
|
1125
|
+
/** Maximum object keys to auto-expand (default: 5) */
|
|
1126
|
+
maxAutoExpandObjectKeys?: number;
|
|
1127
|
+
/** Maximum string length before truncation (default: 200) */
|
|
1128
|
+
maxStringLength?: number;
|
|
1129
|
+
/** Collection limit for performance (default: 50) */
|
|
1130
|
+
collectionLimit?: number;
|
|
1131
|
+
/** Whether to show collection info (array length, object keys count) */
|
|
1132
|
+
showCollectionInfo?: boolean;
|
|
1133
|
+
/** Whether to show expand/collapse all buttons */
|
|
1134
|
+
showExpandControls?: boolean;
|
|
1135
|
+
/** Whether to show copy/download buttons */
|
|
1136
|
+
showActionButtons?: boolean;
|
|
1137
|
+
/** Custom CSS classes for the container */
|
|
782
1138
|
className?: string;
|
|
783
|
-
/**
|
|
784
|
-
|
|
785
|
-
|
|
1139
|
+
/** Whether to preserve object key order (default: true) */
|
|
1140
|
+
preserveKeyOrder?: boolean;
|
|
1141
|
+
}
|
|
1142
|
+
interface JsonTreeComponentProps {
|
|
786
1143
|
title?: string;
|
|
787
|
-
|
|
788
|
-
|
|
1144
|
+
data: unknown;
|
|
1145
|
+
config?: JsonTreeConfig;
|
|
1146
|
+
/** Override for react-json-tree props */
|
|
1147
|
+
jsonTreeProps?: Partial<CommonExternalProps>;
|
|
789
1148
|
}
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
* errorFallback={(props) => (
|
|
798
|
-
* <VideoErrorFallback
|
|
799
|
-
* {...props}
|
|
800
|
-
* downloadUrl={getDownloadUrl()}
|
|
801
|
-
* downloadFilename="video.mp4"
|
|
802
|
-
* />
|
|
803
|
-
* )}
|
|
804
|
-
* />
|
|
805
|
-
*
|
|
806
|
-
* @example
|
|
807
|
-
* // With file size
|
|
808
|
-
* <VideoErrorFallback
|
|
809
|
-
* error="Failed to load video"
|
|
810
|
-
* downloadUrl="/api/download/video.mp4"
|
|
811
|
-
* fileSize="125 MB"
|
|
812
|
-
* showRetry
|
|
813
|
-
* retry={() => reloadVideo()}
|
|
814
|
-
* />
|
|
815
|
-
*/
|
|
816
|
-
declare function VideoErrorFallback({ error, retry, downloadUrl, downloadFilename, fileSize, showRetry, className, icon, title, description, }: VideoErrorFallbackProps): react_jsx_runtime.JSX.Element;
|
|
817
|
-
interface CreateVideoErrorFallbackOptions {
|
|
818
|
-
/** Function to get download URL from source */
|
|
819
|
-
getDownloadUrl?: (source: unknown) => string | undefined;
|
|
820
|
-
/** Function to get filename from source */
|
|
821
|
-
getFilename?: (source: unknown) => string | undefined;
|
|
822
|
-
/** Function to get file size from source */
|
|
823
|
-
getFileSize?: (source: unknown) => string | undefined;
|
|
824
|
-
/** Show retry button */
|
|
825
|
-
showRetry?: boolean;
|
|
1149
|
+
declare const JsonTreeComponent: ({ title, data, config, jsonTreeProps }: JsonTreeComponentProps) => react_jsx_runtime.JSX.Element;
|
|
1150
|
+
|
|
1151
|
+
interface JsonTreeProps {
|
|
1152
|
+
title?: string;
|
|
1153
|
+
data: unknown;
|
|
1154
|
+
config?: JsonTreeConfig;
|
|
1155
|
+
jsonTreeProps?: Partial<CommonExternalProps>;
|
|
826
1156
|
}
|
|
1157
|
+
|
|
827
1158
|
/**
|
|
828
|
-
*
|
|
829
|
-
*
|
|
830
|
-
* @example
|
|
831
|
-
* const errorFallback = createVideoErrorFallback({
|
|
832
|
-
* getDownloadUrl: (source) => source.downloadUrl,
|
|
833
|
-
* getFilename: (source) => source.filename,
|
|
834
|
-
* showRetry: true,
|
|
835
|
-
* });
|
|
1159
|
+
* LazyJsonTree - Lazy-loaded JSON visualization tree
|
|
836
1160
|
*
|
|
837
|
-
*
|
|
1161
|
+
* Automatically shows loading state while JsonTree loads (~100KB)
|
|
838
1162
|
*/
|
|
839
|
-
declare
|
|
1163
|
+
declare const LazyJsonTree: React$1.ComponentType<JsonTreeProps>;
|
|
840
1164
|
|
|
841
1165
|
/**
|
|
842
|
-
*
|
|
843
|
-
* Supports YouTube, Vimeo, HLS, DASH, and direct URLs
|
|
1166
|
+
* ImageViewer type definitions
|
|
844
1167
|
*/
|
|
845
|
-
|
|
846
|
-
|
|
1168
|
+
interface ImageFile {
|
|
1169
|
+
/** Display name for the image */
|
|
1170
|
+
name: string;
|
|
1171
|
+
/** File path used for change detection and caching */
|
|
1172
|
+
path: string;
|
|
1173
|
+
/** Optional MIME type */
|
|
1174
|
+
mimeType?: string;
|
|
1175
|
+
}
|
|
1176
|
+
interface ImageViewerProps {
|
|
1177
|
+
/** File info (name, path, mimeType) */
|
|
1178
|
+
file: ImageFile;
|
|
1179
|
+
/** Image content as string (data URL or base64) or ArrayBuffer */
|
|
1180
|
+
content: string | ArrayBuffer;
|
|
1181
|
+
/**
|
|
1182
|
+
* Direct image URL for HTTP streaming.
|
|
1183
|
+
* When provided, bypasses content→blob conversion and uses URL directly.
|
|
1184
|
+
* Useful for large files loaded via HTTP Range requests.
|
|
1185
|
+
*/
|
|
1186
|
+
src?: string;
|
|
1187
|
+
/** Hide expand button when already in dialog */
|
|
1188
|
+
inDialog?: boolean;
|
|
1189
|
+
}
|
|
847
1190
|
|
|
848
1191
|
/**
|
|
849
|
-
*
|
|
850
|
-
*
|
|
1192
|
+
* LazyImageViewer - Lazy-loaded image viewer with zoom/pan/rotate
|
|
1193
|
+
*
|
|
1194
|
+
* Automatically shows loading state while ImageViewer loads (~50KB)
|
|
851
1195
|
*/
|
|
852
|
-
|
|
853
|
-
declare const NativeProvider: React__default.ForwardRefExoticComponent<NativeProviderProps & React__default.RefAttributes<VideoPlayerRef>>;
|
|
1196
|
+
declare const LazyImageViewer: React$1.ComponentType<ImageViewerProps>;
|
|
854
1197
|
|
|
855
1198
|
/**
|
|
856
|
-
*
|
|
857
|
-
*
|
|
858
|
-
*
|
|
859
|
-
*
|
|
860
|
-
* - Data URL sources
|
|
861
|
-
* - Fill parent container mode
|
|
862
|
-
* - Custom error fallback
|
|
1199
|
+
* Mermaid Component - Dynamic Import Wrapper
|
|
1200
|
+
*
|
|
1201
|
+
* Lazy loads the heavy Mermaid library (~800KB) only when needed.
|
|
1202
|
+
* This significantly reduces the initial bundle size.
|
|
863
1203
|
*/
|
|
864
1204
|
|
|
865
|
-
|
|
1205
|
+
interface MermaidProps {
|
|
1206
|
+
chart: string;
|
|
1207
|
+
className?: string;
|
|
1208
|
+
isCompact?: boolean;
|
|
1209
|
+
}
|
|
1210
|
+
declare const Mermaid: React__default.FC<MermaidProps>;
|
|
866
1211
|
|
|
867
1212
|
/**
|
|
868
|
-
*
|
|
1213
|
+
* PrettyCode Component - Dynamic Import Wrapper
|
|
869
1214
|
*
|
|
870
|
-
*
|
|
871
|
-
*
|
|
872
|
-
* <VideoPlayerProvider
|
|
873
|
-
* sessionId={sessionId}
|
|
874
|
-
* getStreamUrl={terminalClient.terminal_media.streamStreamRetrieveUrl}
|
|
875
|
-
* >
|
|
876
|
-
* <VideoPlayer source={{ type: 'stream', path: '/video.mp4' }} />
|
|
877
|
-
* </VideoPlayerProvider>
|
|
878
|
-
*/
|
|
879
|
-
declare function VideoPlayerProvider({ children, getStreamUrl, sessionId, }: VideoPlayerProviderProps): react_jsx_runtime.JSX.Element;
|
|
880
|
-
/**
|
|
881
|
-
* Hook to access VideoPlayer context
|
|
1215
|
+
* Lazy loads the heavy Prism library (~500KB) only when needed.
|
|
1216
|
+
* This significantly reduces the initial bundle size.
|
|
882
1217
|
*/
|
|
883
|
-
declare function useVideoPlayerContext(): VideoPlayerContextValue | null;
|
|
884
1218
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
1219
|
+
interface PrettyCodeProps {
|
|
1220
|
+
data: string | object;
|
|
1221
|
+
language: Language;
|
|
1222
|
+
className?: string;
|
|
1223
|
+
mode?: 'dark' | 'light';
|
|
1224
|
+
inline?: boolean;
|
|
1225
|
+
customBg?: string;
|
|
1226
|
+
isCompact?: boolean;
|
|
1227
|
+
}
|
|
1228
|
+
declare const PrettyCode: React__default.FC<PrettyCodeProps>;
|
|
888
1229
|
|
|
889
1230
|
/**
|
|
890
|
-
*
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
/**
|
|
894
|
-
* Check if source is a simplified stream source (without getStreamUrl)
|
|
1231
|
+
* useLottie Hook
|
|
1232
|
+
*
|
|
1233
|
+
* Hook for loading and managing Lottie animation data
|
|
895
1234
|
*/
|
|
896
|
-
|
|
1235
|
+
interface UseLottieOptions {
|
|
1236
|
+
/**
|
|
1237
|
+
* Animation data (JSON object) or URL to load from
|
|
1238
|
+
*/
|
|
1239
|
+
src: string | object;
|
|
1240
|
+
/**
|
|
1241
|
+
* Enable caching of loaded animations
|
|
1242
|
+
* @default true
|
|
1243
|
+
*/
|
|
1244
|
+
cache?: boolean;
|
|
1245
|
+
}
|
|
1246
|
+
interface UseLottieReturn {
|
|
1247
|
+
/**
|
|
1248
|
+
* Loaded animation data
|
|
1249
|
+
*/
|
|
1250
|
+
animationData: object | null;
|
|
1251
|
+
/**
|
|
1252
|
+
* Loading state
|
|
1253
|
+
*/
|
|
1254
|
+
isLoading: boolean;
|
|
1255
|
+
/**
|
|
1256
|
+
* Error state
|
|
1257
|
+
*/
|
|
1258
|
+
error: Error | null;
|
|
1259
|
+
/**
|
|
1260
|
+
* Retry loading the animation
|
|
1261
|
+
*/
|
|
1262
|
+
retry: () => void;
|
|
1263
|
+
}
|
|
897
1264
|
/**
|
|
898
|
-
*
|
|
1265
|
+
* Hook for loading Lottie animations from URLs or objects
|
|
1266
|
+
*
|
|
1267
|
+
* Features:
|
|
1268
|
+
* - Loads animations from URLs or accepts animation objects directly
|
|
1269
|
+
* - Caching support to prevent re-fetching the same animation
|
|
1270
|
+
* - Error handling with retry capability
|
|
1271
|
+
* - Loading states
|
|
1272
|
+
*
|
|
1273
|
+
* Usage:
|
|
1274
|
+
* ```tsx
|
|
1275
|
+
* const { animationData, isLoading, error, retry } = useLottie({
|
|
1276
|
+
* src: 'https://example.com/animation.json'
|
|
1277
|
+
* });
|
|
1278
|
+
*
|
|
1279
|
+
* if (isLoading) return <div>Loading...</div>;
|
|
1280
|
+
* if (error) return <div>Error: {error.message} <button onClick={retry}>Retry</button></div>;
|
|
1281
|
+
* if (!animationData) return null;
|
|
1282
|
+
*
|
|
1283
|
+
* return <LottiePlayer animationData={animationData} />;
|
|
1284
|
+
* ```
|
|
899
1285
|
*/
|
|
900
|
-
declare function
|
|
1286
|
+
declare function useLottie(options: UseLottieOptions): UseLottieReturn;
|
|
901
1287
|
|
|
902
1288
|
/**
|
|
903
|
-
*
|
|
1289
|
+
* LottiePlayer component wrapper with dynamic import
|
|
1290
|
+
*
|
|
1291
|
+
* This component automatically handles code splitting and lazy loading
|
|
1292
|
+
* of the Lottie player to optimize bundle size.
|
|
1293
|
+
*
|
|
1294
|
+
* Usage:
|
|
1295
|
+
* ```tsx
|
|
1296
|
+
* import { LottiePlayer } from '@djangocfg/ui-core/tools';
|
|
1297
|
+
*
|
|
1298
|
+
* <LottiePlayer
|
|
1299
|
+
* src="https://example.com/animation.json"
|
|
1300
|
+
* size="md"
|
|
1301
|
+
* autoplay
|
|
1302
|
+
* loop
|
|
1303
|
+
* />
|
|
1304
|
+
* ```
|
|
904
1305
|
*/
|
|
1306
|
+
declare function LottiePlayer(props: LottiePlayerProps): react_jsx_runtime.JSX.Element;
|
|
905
1307
|
|
|
906
1308
|
/**
|
|
907
|
-
*
|
|
908
|
-
*
|
|
1309
|
+
* JSON Schema Form Component
|
|
1310
|
+
*
|
|
1311
|
+
* A fully-featured form generator that creates forms from JSON Schema.
|
|
1312
|
+
* Built on top of react-jsonschema-form with custom widgets and templates
|
|
1313
|
+
* using @djangocfg/ui components.
|
|
909
1314
|
*
|
|
910
1315
|
* @example
|
|
911
|
-
*
|
|
912
|
-
*
|
|
913
|
-
*
|
|
914
|
-
*
|
|
915
|
-
*
|
|
916
|
-
*
|
|
917
|
-
*
|
|
918
|
-
* }
|
|
1316
|
+
* ```tsx
|
|
1317
|
+
* const schema = {
|
|
1318
|
+
* type: 'object',
|
|
1319
|
+
* required: ['name'],
|
|
1320
|
+
* properties: {
|
|
1321
|
+
* name: { type: 'string', title: 'Name' },
|
|
1322
|
+
* age: { type: 'number', title: 'Age' },
|
|
1323
|
+
* active: { type: 'boolean', title: 'Active' }
|
|
1324
|
+
* }
|
|
1325
|
+
* };
|
|
919
1326
|
*
|
|
920
|
-
* <
|
|
1327
|
+
* <JsonSchemaForm
|
|
1328
|
+
* schema={schema}
|
|
1329
|
+
* onSubmit={(data) => console.log(data.formData)}
|
|
1330
|
+
* />
|
|
1331
|
+
* ```
|
|
921
1332
|
*/
|
|
922
|
-
declare function
|
|
1333
|
+
declare function JsonSchemaForm<T = any>(props: JsonSchemaFormProps<T>): react_jsx_runtime.JSX.Element;
|
|
923
1334
|
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
/** Waveform visualization mode */
|
|
930
|
-
waveformMode?: 'frequency' | 'static';
|
|
931
|
-
/** Waveform height in pixels */
|
|
932
|
-
waveformHeight?: number;
|
|
933
|
-
/** Show time display */
|
|
934
|
-
showTimer?: boolean;
|
|
935
|
-
/** Show volume control */
|
|
936
|
-
showVolume?: boolean;
|
|
937
|
-
/** Show loop button */
|
|
938
|
-
showLoop?: boolean;
|
|
939
|
-
/** Additional CSS class */
|
|
940
|
-
className?: string;
|
|
941
|
-
/** Inline styles */
|
|
942
|
-
style?: React.CSSProperties;
|
|
943
|
-
}
|
|
944
|
-
declare const HybridAudioPlayer: React$1.NamedExoticComponent<HybridAudioPlayerProps>;
|
|
1335
|
+
/**
|
|
1336
|
+
* Text input widget for JSON Schema Form
|
|
1337
|
+
* Handles string fields with optional textarea for multiline
|
|
1338
|
+
*/
|
|
1339
|
+
declare function TextWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
945
1340
|
|
|
946
1341
|
/**
|
|
947
|
-
*
|
|
948
|
-
*
|
|
949
|
-
* Provides reusable effect calculations and configurations
|
|
1342
|
+
* Number input widget for JSON Schema Form
|
|
1343
|
+
* Handles integer and number fields
|
|
950
1344
|
*/
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
type EffectColorScheme = 'primary' | 'vibrant' | 'cool' | 'warm';
|
|
954
|
-
interface AudioLevels {
|
|
955
|
-
bass: number;
|
|
956
|
-
mid: number;
|
|
957
|
-
high: number;
|
|
958
|
-
overall: number;
|
|
959
|
-
}
|
|
960
|
-
interface EffectConfig$1 {
|
|
961
|
-
opacity: number;
|
|
962
|
-
scale: number;
|
|
963
|
-
blur: string;
|
|
964
|
-
}
|
|
965
|
-
interface EffectColors {
|
|
966
|
-
colors: string[];
|
|
967
|
-
hueShift: number;
|
|
968
|
-
}
|
|
969
|
-
interface EffectLayer {
|
|
970
|
-
inset: number;
|
|
971
|
-
opacity: number;
|
|
972
|
-
scale: number;
|
|
973
|
-
background: string;
|
|
974
|
-
blur: string;
|
|
975
|
-
animation?: string;
|
|
976
|
-
}
|
|
977
|
-
declare const INTENSITY_CONFIG: Record<EffectIntensity, EffectConfig$1>;
|
|
978
|
-
declare const COLOR_SCHEMES: Record<EffectColorScheme, string[]>;
|
|
1345
|
+
declare function NumberWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1346
|
+
|
|
979
1347
|
/**
|
|
980
|
-
*
|
|
1348
|
+
* Checkbox widget for JSON Schema Form
|
|
1349
|
+
* Handles boolean fields
|
|
981
1350
|
*/
|
|
982
|
-
declare function
|
|
1351
|
+
declare function CheckboxWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1352
|
+
|
|
983
1353
|
/**
|
|
984
|
-
*
|
|
1354
|
+
* Select dropdown widget for JSON Schema Form
|
|
1355
|
+
* Handles enum fields
|
|
985
1356
|
*/
|
|
986
|
-
declare function
|
|
1357
|
+
declare function SelectWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1358
|
+
|
|
987
1359
|
/**
|
|
988
|
-
*
|
|
1360
|
+
* Switch toggle widget for JSON Schema Form
|
|
1361
|
+
* Alternative boolean input
|
|
989
1362
|
*/
|
|
990
|
-
declare function
|
|
1363
|
+
declare function SwitchWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1364
|
+
|
|
991
1365
|
/**
|
|
992
|
-
*
|
|
1366
|
+
* Color input widget for JSON Schema Form
|
|
1367
|
+
* Supports HSL format (h s% l%) and HEX format
|
|
1368
|
+
* Click on color box to open native color picker directly
|
|
993
1369
|
*/
|
|
994
|
-
declare function
|
|
1370
|
+
declare function ColorWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1371
|
+
|
|
995
1372
|
/**
|
|
996
|
-
*
|
|
1373
|
+
* Slider widget for JSON Schema Form
|
|
1374
|
+
*
|
|
1375
|
+
* Supports:
|
|
1376
|
+
* - number/integer types
|
|
1377
|
+
* - min/max from schema
|
|
1378
|
+
* - step from schema or options
|
|
1379
|
+
* - unit suffix (e.g., "rem", "px", "%")
|
|
1380
|
+
* - optional text input for precise values
|
|
1381
|
+
*
|
|
1382
|
+
* Usage in uiSchema:
|
|
1383
|
+
* ```json
|
|
1384
|
+
* {
|
|
1385
|
+
* "radius": {
|
|
1386
|
+
* "ui:widget": "slider",
|
|
1387
|
+
* "ui:options": {
|
|
1388
|
+
* "unit": "rem",
|
|
1389
|
+
* "showInput": true,
|
|
1390
|
+
* "step": 0.125
|
|
1391
|
+
* }
|
|
1392
|
+
* }
|
|
1393
|
+
* }
|
|
1394
|
+
* ```
|
|
997
1395
|
*/
|
|
998
|
-
declare function
|
|
999
|
-
|
|
1000
|
-
y: number;
|
|
1001
|
-
size: number;
|
|
1002
|
-
color: string;
|
|
1003
|
-
opacity: number;
|
|
1004
|
-
scale: number;
|
|
1005
|
-
}[];
|
|
1396
|
+
declare function SliderWidget(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1397
|
+
|
|
1006
1398
|
/**
|
|
1007
|
-
*
|
|
1399
|
+
* Field template for JSON Schema Form
|
|
1400
|
+
* Controls the layout and styling of individual form fields
|
|
1008
1401
|
*/
|
|
1009
|
-
declare function
|
|
1010
|
-
|
|
1011
|
-
height: string;
|
|
1012
|
-
top: string;
|
|
1013
|
-
right: string;
|
|
1014
|
-
color: string;
|
|
1015
|
-
opacity: number;
|
|
1016
|
-
scale: number;
|
|
1017
|
-
rotation: number;
|
|
1018
|
-
blur: string;
|
|
1019
|
-
bottom?: undefined;
|
|
1020
|
-
left?: undefined;
|
|
1021
|
-
isCenter?: undefined;
|
|
1022
|
-
} | {
|
|
1023
|
-
width: string;
|
|
1024
|
-
height: string;
|
|
1025
|
-
bottom: string;
|
|
1026
|
-
left: string;
|
|
1027
|
-
color: string;
|
|
1028
|
-
opacity: number;
|
|
1029
|
-
scale: number;
|
|
1030
|
-
rotation: number;
|
|
1031
|
-
blur: string;
|
|
1032
|
-
top?: undefined;
|
|
1033
|
-
right?: undefined;
|
|
1034
|
-
isCenter?: undefined;
|
|
1035
|
-
} | {
|
|
1036
|
-
width: string;
|
|
1037
|
-
height: string;
|
|
1038
|
-
top: string;
|
|
1039
|
-
left: string;
|
|
1040
|
-
color: string;
|
|
1041
|
-
opacity: number;
|
|
1042
|
-
scale: number;
|
|
1043
|
-
rotation: number;
|
|
1044
|
-
blur: string;
|
|
1045
|
-
right?: undefined;
|
|
1046
|
-
bottom?: undefined;
|
|
1047
|
-
isCenter?: undefined;
|
|
1048
|
-
} | {
|
|
1049
|
-
width: string;
|
|
1050
|
-
height: string;
|
|
1051
|
-
top: string;
|
|
1052
|
-
left: string;
|
|
1053
|
-
color: string;
|
|
1054
|
-
opacity: number;
|
|
1055
|
-
scale: number;
|
|
1056
|
-
rotation: number;
|
|
1057
|
-
isCenter: boolean;
|
|
1058
|
-
blur: string;
|
|
1059
|
-
right?: undefined;
|
|
1060
|
-
bottom?: undefined;
|
|
1061
|
-
})[];
|
|
1402
|
+
declare function FieldTemplate(props: FieldTemplateProps): react_jsx_runtime.JSX.Element;
|
|
1403
|
+
|
|
1062
1404
|
/**
|
|
1063
|
-
*
|
|
1405
|
+
* Object field template for JSON Schema Form
|
|
1406
|
+
*
|
|
1407
|
+
* Supports:
|
|
1408
|
+
* - Collapsible groups via ui:collapsible option
|
|
1409
|
+
* - Grid layout via ui:grid option
|
|
1410
|
+
* - Custom styling via ui:className
|
|
1411
|
+
*
|
|
1412
|
+
* Usage in uiSchema:
|
|
1413
|
+
* ```json
|
|
1414
|
+
* {
|
|
1415
|
+
* "colors": {
|
|
1416
|
+
* "ui:collapsible": true,
|
|
1417
|
+
* "ui:collapsed": false,
|
|
1418
|
+
* "ui:grid": 2
|
|
1419
|
+
* }
|
|
1420
|
+
* }
|
|
1421
|
+
* ```
|
|
1064
1422
|
*/
|
|
1065
|
-
declare function
|
|
1066
|
-
|
|
1067
|
-
inset: number;
|
|
1068
|
-
colors: {
|
|
1069
|
-
color: string;
|
|
1070
|
-
opacity: number;
|
|
1071
|
-
}[];
|
|
1072
|
-
pulseInset: number;
|
|
1073
|
-
pulseOpacity: number;
|
|
1074
|
-
pulseScale: number;
|
|
1075
|
-
ringOpacity: number;
|
|
1076
|
-
ringScale: number;
|
|
1077
|
-
};
|
|
1423
|
+
declare function ObjectFieldTemplate(props: ObjectFieldTemplateProps): react_jsx_runtime.JSX.Element;
|
|
1424
|
+
|
|
1078
1425
|
/**
|
|
1079
|
-
*
|
|
1426
|
+
* Array field template for JSON Schema Form
|
|
1427
|
+
* Renders array items with add/remove controls
|
|
1428
|
+
*
|
|
1429
|
+
* NOTE: In RJSF v6, `items` is an array of ReactElement (already rendered),
|
|
1430
|
+
* NOT an array of objects with {children, hasRemove, etc.}.
|
|
1431
|
+
* The actual rendering of each item (including remove buttons) is handled
|
|
1432
|
+
* by ArrayFieldItemTemplate.
|
|
1080
1433
|
*/
|
|
1081
|
-
declare
|
|
1434
|
+
declare function ArrayFieldTemplate(props: ArrayFieldTemplateProps): react_jsx_runtime.JSX.Element;
|
|
1082
1435
|
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
onEnded?: () => void;
|
|
1092
|
-
onTimeUpdate?: (time: number) => void;
|
|
1093
|
-
onError?: (error: Error) => void;
|
|
1094
|
-
onReady?: () => void;
|
|
1095
|
-
}
|
|
1096
|
-
interface HybridAudioState {
|
|
1097
|
-
isReady: boolean;
|
|
1098
|
-
isPlaying: boolean;
|
|
1099
|
-
currentTime: number;
|
|
1100
|
-
duration: number;
|
|
1101
|
-
volume: number;
|
|
1102
|
-
isMuted: boolean;
|
|
1103
|
-
isLooping: boolean;
|
|
1104
|
-
buffered: TimeRanges | null;
|
|
1105
|
-
error: Error | null;
|
|
1106
|
-
}
|
|
1107
|
-
interface HybridAudioControls {
|
|
1108
|
-
play: () => Promise<void>;
|
|
1109
|
-
pause: () => void;
|
|
1110
|
-
togglePlay: () => void;
|
|
1111
|
-
seek: (time: number) => void;
|
|
1112
|
-
seekTo: (progress: number) => void;
|
|
1113
|
-
skip: (seconds: number) => void;
|
|
1114
|
-
setVolume: (vol: number) => void;
|
|
1115
|
-
toggleMute: () => void;
|
|
1116
|
-
toggleLoop: () => void;
|
|
1117
|
-
setLoop: (enabled: boolean) => void;
|
|
1118
|
-
restart: () => void;
|
|
1119
|
-
}
|
|
1120
|
-
interface HybridWebAudioAPI {
|
|
1121
|
-
context: AudioContext | null;
|
|
1122
|
-
analyser: AnalyserNode | null;
|
|
1123
|
-
sourceNode: MediaElementAudioSourceNode | null;
|
|
1124
|
-
}
|
|
1125
|
-
interface UseHybridAudioReturn {
|
|
1126
|
-
audioRef: React.RefObject<HTMLAudioElement | null>;
|
|
1127
|
-
state: HybridAudioState;
|
|
1128
|
-
controls: HybridAudioControls;
|
|
1129
|
-
webAudio: HybridWebAudioAPI;
|
|
1130
|
-
}
|
|
1131
|
-
declare function useHybridAudio(options: UseHybridAudioOptions): UseHybridAudioReturn;
|
|
1436
|
+
/**
|
|
1437
|
+
* Array field item template for JSON Schema Form
|
|
1438
|
+
* Renders individual array items with proper styling and action buttons
|
|
1439
|
+
*
|
|
1440
|
+
* In RJSF v6, this template is responsible for rendering each item in an array,
|
|
1441
|
+
* including the item content (children) and the action buttons (remove, move up/down, copy).
|
|
1442
|
+
*/
|
|
1443
|
+
declare function ArrayFieldItemTemplate(props: ArrayFieldItemTemplateProps): react_jsx_runtime.JSX.Element;
|
|
1132
1444
|
|
|
1133
|
-
|
|
1445
|
+
/**
|
|
1446
|
+
* Error list template for JSON Schema Form
|
|
1447
|
+
* Displays validation errors at the top of the form
|
|
1448
|
+
*/
|
|
1449
|
+
declare function ErrorListTemplate(props: ErrorListProps): react_jsx_runtime.JSX.Element;
|
|
1134
1450
|
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1451
|
+
/**
|
|
1452
|
+
* Base input template for JSON Schema Form
|
|
1453
|
+
*
|
|
1454
|
+
* This template is CRITICAL for rendering primitive types (string, number)
|
|
1455
|
+
* inside arrays. Without it, array items with primitive types will render
|
|
1456
|
+
* as empty containers.
|
|
1457
|
+
*
|
|
1458
|
+
* RJSF uses this template for:
|
|
1459
|
+
* - Array items with primitive types (e.g., array of strings)
|
|
1460
|
+
* - Fields without explicit widget mapping
|
|
1461
|
+
* - All text-based widgets internally
|
|
1462
|
+
*
|
|
1463
|
+
* @see https://rjsf-team.github.io/react-jsonschema-form/docs/advanced-customization/custom-templates/#baseinputtemplate
|
|
1464
|
+
*/
|
|
1465
|
+
declare function BaseInputTemplate(props: WidgetProps): react_jsx_runtime.JSX.Element;
|
|
1466
|
+
|
|
1467
|
+
/**
|
|
1468
|
+
* Utility functions for JSON Schema Form
|
|
1469
|
+
*/
|
|
1470
|
+
/**
|
|
1471
|
+
* Safely validates and normalizes JSON Schema
|
|
1472
|
+
* Ensures schema is valid before rendering
|
|
1473
|
+
*/
|
|
1474
|
+
declare function validateSchema(schema: any): RJSFSchema | null;
|
|
1475
|
+
/**
|
|
1476
|
+
* Safely normalizes form data
|
|
1477
|
+
* Removes undefined values and ensures data structure matches schema
|
|
1478
|
+
*/
|
|
1479
|
+
declare function normalizeFormData<T = any>(formData: any, schema: RJSFSchema): T;
|
|
1480
|
+
/**
|
|
1481
|
+
* Merges schema defaults with form data
|
|
1482
|
+
*/
|
|
1483
|
+
declare function mergeDefaults(formData: any, schema: RJSFSchema): any;
|
|
1484
|
+
/**
|
|
1485
|
+
* Safely parses JSON string with error handling
|
|
1486
|
+
*/
|
|
1487
|
+
declare function safeJsonParse<T = any>(jsonString: string, fallback: T): T;
|
|
1488
|
+
/**
|
|
1489
|
+
* Safely stringifies object to JSON
|
|
1490
|
+
*/
|
|
1491
|
+
declare function safeJsonStringify(obj: any, pretty?: boolean): string;
|
|
1492
|
+
/**
|
|
1493
|
+
* Checks if schema has required fields
|
|
1494
|
+
*/
|
|
1495
|
+
declare function hasRequiredFields(schema: RJSFSchema): boolean;
|
|
1496
|
+
/**
|
|
1497
|
+
* Gets all required field paths from schema
|
|
1498
|
+
*/
|
|
1499
|
+
declare function getRequiredFields(schema: RJSFSchema, prefix?: string): string[];
|
|
1500
|
+
/**
|
|
1501
|
+
* Validates form data against required fields
|
|
1502
|
+
*/
|
|
1503
|
+
declare function validateRequiredFields(formData: any, schema: RJSFSchema): {
|
|
1504
|
+
valid: boolean;
|
|
1505
|
+
missing: string[];
|
|
1506
|
+
};
|
|
1507
|
+
|
|
1508
|
+
interface PlaygroundProps {
|
|
1509
|
+
config: PlaygroundConfig;
|
|
1171
1510
|
}
|
|
1172
|
-
declare
|
|
1173
|
-
declare function useVisualization(): UseVisualizationReturn;
|
|
1174
|
-
declare const useAudioVisualization: typeof useVisualization;
|
|
1175
|
-
declare const VARIANT_INFO: Record<VisualizationVariant, {
|
|
1176
|
-
label: string;
|
|
1177
|
-
icon: string;
|
|
1178
|
-
}>;
|
|
1179
|
-
declare const INTENSITY_INFO: Record<VisualizationIntensity, {
|
|
1180
|
-
label: string;
|
|
1181
|
-
}>;
|
|
1182
|
-
declare const COLOR_SCHEME_INFO: Record<VisualizationColorScheme, {
|
|
1183
|
-
label: string;
|
|
1184
|
-
preview: string;
|
|
1185
|
-
}>;
|
|
1511
|
+
declare const Playground: React__default.FC<PlaygroundProps>;
|
|
1186
1512
|
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1513
|
+
/**
|
|
1514
|
+
* VideoPlayer - Unified Video Player Component
|
|
1515
|
+
*
|
|
1516
|
+
* Supports multiple modes:
|
|
1517
|
+
* - vidstack: Full-featured player (YouTube, Vimeo, HLS, DASH)
|
|
1518
|
+
* - native: Lightweight HTML5 player
|
|
1519
|
+
* - streaming: HTTP Range streaming with auth / Blob sources
|
|
1520
|
+
*
|
|
1521
|
+
* @example
|
|
1522
|
+
* // YouTube video
|
|
1523
|
+
* <VideoPlayer source={{ type: 'youtube', id: 'dQw4w9WgXcQ' }} />
|
|
1524
|
+
*
|
|
1525
|
+
* @example
|
|
1526
|
+
* // HLS stream
|
|
1527
|
+
* <VideoPlayer source={{ type: 'hls', url: 'https://example.com/video.m3u8' }} />
|
|
1528
|
+
*
|
|
1529
|
+
* @example
|
|
1530
|
+
* // HTTP Range streaming with auth (full source)
|
|
1531
|
+
* <VideoPlayer
|
|
1532
|
+
* source={{
|
|
1533
|
+
* type: 'stream',
|
|
1534
|
+
* sessionId: 'abc123',
|
|
1535
|
+
* path: '/videos/movie.mp4',
|
|
1536
|
+
* getStreamUrl: (id, path) => `/api/stream/${id}?path=${path}&token=${token}`
|
|
1537
|
+
* }}
|
|
1538
|
+
* />
|
|
1539
|
+
*
|
|
1540
|
+
* @example
|
|
1541
|
+
* // HTTP Range streaming (simplified, using VideoPlayerProvider context)
|
|
1542
|
+
* <VideoPlayerProvider sessionId={sessionId} getStreamUrl={getStreamUrl}>
|
|
1543
|
+
* <VideoPlayer source={{ type: 'stream', path: '/videos/movie.mp4' }} />
|
|
1544
|
+
* </VideoPlayerProvider>
|
|
1545
|
+
*
|
|
1546
|
+
* @example
|
|
1547
|
+
* // Blob/ArrayBuffer
|
|
1548
|
+
* <VideoPlayer source={{ type: 'blob', data: arrayBuffer, mimeType: 'video/mp4' }} />
|
|
1549
|
+
*/
|
|
1550
|
+
|
|
1551
|
+
declare const VideoPlayer: React__default.ForwardRefExoticComponent<VideoPlayerProps & {
|
|
1552
|
+
source: VideoSourceUnion | SimpleStreamSource;
|
|
1553
|
+
} & React__default.RefAttributes<VideoPlayerRef>>;
|
|
1554
|
+
|
|
1555
|
+
interface VideoControlsProps {
|
|
1556
|
+
player: React__default.RefObject<MediaPlayerInstance | null>;
|
|
1227
1557
|
className?: string;
|
|
1228
|
-
/** Callbacks */
|
|
1229
|
-
onPlay?: () => void;
|
|
1230
|
-
onPause?: () => void;
|
|
1231
|
-
onEnded?: () => void;
|
|
1232
|
-
onError?: (error: Error) => void;
|
|
1233
1558
|
}
|
|
1234
|
-
declare function
|
|
1559
|
+
declare function VideoControls({ player, className }: VideoControlsProps): react_jsx_runtime.JSX.Element;
|
|
1235
1560
|
|
|
1236
|
-
interface
|
|
1237
|
-
/**
|
|
1238
|
-
|
|
1239
|
-
/**
|
|
1240
|
-
|
|
1241
|
-
/**
|
|
1242
|
-
|
|
1243
|
-
/**
|
|
1244
|
-
|
|
1245
|
-
/**
|
|
1246
|
-
barRadius?: number;
|
|
1247
|
-
/** Color for played portion */
|
|
1248
|
-
progressColor?: string;
|
|
1249
|
-
/** Color for unplayed portion */
|
|
1250
|
-
waveColor?: string;
|
|
1251
|
-
/** Color for buffered regions indicator */
|
|
1252
|
-
bufferedColor?: string;
|
|
1253
|
-
/** Additional CSS class */
|
|
1561
|
+
interface VideoErrorFallbackProps extends ErrorFallbackProps {
|
|
1562
|
+
/** URL for download button (if provided, shows download button) */
|
|
1563
|
+
downloadUrl?: string;
|
|
1564
|
+
/** Filename for download */
|
|
1565
|
+
downloadFilename?: string;
|
|
1566
|
+
/** File size to display */
|
|
1567
|
+
fileSize?: string;
|
|
1568
|
+
/** Show retry button */
|
|
1569
|
+
showRetry?: boolean;
|
|
1570
|
+
/** Custom className */
|
|
1254
1571
|
className?: string;
|
|
1255
|
-
/**
|
|
1256
|
-
|
|
1572
|
+
/** Custom icon */
|
|
1573
|
+
icon?: React__default.ReactNode;
|
|
1574
|
+
/** Custom title (defaults to error message) */
|
|
1575
|
+
title?: string;
|
|
1576
|
+
/** Custom description */
|
|
1577
|
+
description?: string;
|
|
1257
1578
|
}
|
|
1258
|
-
|
|
1579
|
+
/**
|
|
1580
|
+
* Pre-built error fallback component for VideoPlayer
|
|
1581
|
+
*
|
|
1582
|
+
* @example
|
|
1583
|
+
* // Basic usage
|
|
1584
|
+
* <VideoPlayer
|
|
1585
|
+
* source={source}
|
|
1586
|
+
* errorFallback={(props) => (
|
|
1587
|
+
* <VideoErrorFallback
|
|
1588
|
+
* {...props}
|
|
1589
|
+
* downloadUrl={getDownloadUrl()}
|
|
1590
|
+
* downloadFilename="video.mp4"
|
|
1591
|
+
* />
|
|
1592
|
+
* )}
|
|
1593
|
+
* />
|
|
1594
|
+
*
|
|
1595
|
+
* @example
|
|
1596
|
+
* // With file size
|
|
1597
|
+
* <VideoErrorFallback
|
|
1598
|
+
* error="Failed to load video"
|
|
1599
|
+
* downloadUrl="/api/download/video.mp4"
|
|
1600
|
+
* fileSize="125 MB"
|
|
1601
|
+
* showRetry
|
|
1602
|
+
* retry={() => reloadVideo()}
|
|
1603
|
+
* />
|
|
1604
|
+
*/
|
|
1605
|
+
declare function VideoErrorFallback({ error, retry, downloadUrl, downloadFilename, fileSize, showRetry, className, icon, title, description, }: VideoErrorFallbackProps): react_jsx_runtime.JSX.Element;
|
|
1606
|
+
interface CreateVideoErrorFallbackOptions {
|
|
1607
|
+
/** Function to get download URL from source */
|
|
1608
|
+
getDownloadUrl?: (source: unknown) => string | undefined;
|
|
1609
|
+
/** Function to get filename from source */
|
|
1610
|
+
getFilename?: (source: unknown) => string | undefined;
|
|
1611
|
+
/** Function to get file size from source */
|
|
1612
|
+
getFileSize?: (source: unknown) => string | undefined;
|
|
1613
|
+
/** Show retry button */
|
|
1614
|
+
showRetry?: boolean;
|
|
1615
|
+
}
|
|
1616
|
+
/**
|
|
1617
|
+
* Factory to create error fallback function for VideoPlayer
|
|
1618
|
+
*
|
|
1619
|
+
* @example
|
|
1620
|
+
* const errorFallback = createVideoErrorFallback({
|
|
1621
|
+
* getDownloadUrl: (source) => source.downloadUrl,
|
|
1622
|
+
* getFilename: (source) => source.filename,
|
|
1623
|
+
* showRetry: true,
|
|
1624
|
+
* });
|
|
1625
|
+
*
|
|
1626
|
+
* <VideoPlayer source={source} errorFallback={errorFallback} />
|
|
1627
|
+
*/
|
|
1628
|
+
declare function createVideoErrorFallback(options: CreateVideoErrorFallbackOptions): (props: ErrorFallbackProps, source?: unknown) => React__default.ReactNode;
|
|
1629
|
+
|
|
1630
|
+
/**
|
|
1631
|
+
* VidstackProvider - Full-featured video player using Vidstack
|
|
1632
|
+
* Supports YouTube, Vimeo, HLS, DASH, and direct URLs
|
|
1633
|
+
*/
|
|
1634
|
+
|
|
1635
|
+
declare const VidstackProvider: React__default.ForwardRefExoticComponent<VidstackProviderProps & React__default.RefAttributes<VideoPlayerRef>>;
|
|
1636
|
+
|
|
1637
|
+
/**
|
|
1638
|
+
* NativeProvider - Lightweight native HTML5 video player
|
|
1639
|
+
* For demo videos, background videos, autoplay loop muted scenarios
|
|
1640
|
+
*/
|
|
1641
|
+
|
|
1642
|
+
declare const NativeProvider: React__default.ForwardRefExoticComponent<NativeProviderProps & React__default.RefAttributes<VideoPlayerRef>>;
|
|
1643
|
+
|
|
1644
|
+
/**
|
|
1645
|
+
* StreamProvider - HTTP Range streaming and Blob video player
|
|
1646
|
+
* Supports:
|
|
1647
|
+
* - HTTP Range requests with authorization (for large files)
|
|
1648
|
+
* - Blob/ArrayBuffer sources
|
|
1649
|
+
* - Data URL sources
|
|
1650
|
+
* - Fill parent container mode
|
|
1651
|
+
* - Custom error fallback
|
|
1652
|
+
*/
|
|
1259
1653
|
|
|
1260
|
-
|
|
1261
|
-
children: ReactNode;
|
|
1262
|
-
size?: 'sm' | 'md' | 'lg';
|
|
1263
|
-
variant?: EffectVariant;
|
|
1264
|
-
intensity?: EffectIntensity;
|
|
1265
|
-
colorScheme?: EffectColorScheme;
|
|
1266
|
-
onClick?: () => void;
|
|
1267
|
-
className?: string;
|
|
1268
|
-
}
|
|
1269
|
-
declare function AudioReactiveCover({ children, size, variant, intensity, colorScheme, onClick, className, }: AudioReactiveCoverProps): react_jsx_runtime.JSX.Element;
|
|
1654
|
+
declare const StreamProvider: React__default.ForwardRefExoticComponent<StreamProviderProps & React__default.RefAttributes<VideoPlayerRef>>;
|
|
1270
1655
|
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1656
|
+
/**
|
|
1657
|
+
* Provider for VideoPlayer streaming configuration
|
|
1658
|
+
*
|
|
1659
|
+
* @example
|
|
1660
|
+
* // In your app layout or FileWorkspace
|
|
1661
|
+
* <VideoPlayerProvider
|
|
1662
|
+
* sessionId={sessionId}
|
|
1663
|
+
* getStreamUrl={terminalClient.terminal_media.streamStreamRetrieveUrl}
|
|
1664
|
+
* >
|
|
1665
|
+
* <VideoPlayer source={{ type: 'stream', path: '/video.mp4' }} />
|
|
1666
|
+
* </VideoPlayerProvider>
|
|
1667
|
+
*/
|
|
1668
|
+
declare function VideoPlayerProvider({ children, getStreamUrl, sessionId, }: VideoPlayerProviderProps): react_jsx_runtime.JSX.Element;
|
|
1669
|
+
/**
|
|
1670
|
+
* Hook to access VideoPlayer context
|
|
1671
|
+
*/
|
|
1672
|
+
declare function useVideoPlayerContext(): VideoPlayerContextValue | null;
|
|
1283
1673
|
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
isPlaying: boolean;
|
|
1288
|
-
}
|
|
1289
|
-
declare function OrbsEffect({ orbs, blur, isPlaying }: OrbsEffectProps): react_jsx_runtime.JSX.Element;
|
|
1674
|
+
/**
|
|
1675
|
+
* Video source and player mode resolvers
|
|
1676
|
+
*/
|
|
1290
1677
|
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1678
|
+
/**
|
|
1679
|
+
* Determine which provider to use based on source type
|
|
1680
|
+
*/
|
|
1681
|
+
declare function resolvePlayerMode(source: VideoSourceUnion, mode?: PlayerMode): 'vidstack' | 'native' | 'streaming';
|
|
1682
|
+
/**
|
|
1683
|
+
* Check if source is a simplified stream source (without getStreamUrl)
|
|
1684
|
+
*/
|
|
1685
|
+
declare function isSimpleStreamSource(source: VideoSourceUnion | SimpleStreamSource): source is SimpleStreamSource;
|
|
1686
|
+
/**
|
|
1687
|
+
* Resolve simplified stream source to full stream source using context
|
|
1688
|
+
*/
|
|
1689
|
+
declare function resolveStreamSource(source: SimpleStreamSource, context: VideoPlayerContextValue | null): StreamSource | null;
|
|
1298
1690
|
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1691
|
+
/**
|
|
1692
|
+
* File source resolution utilities
|
|
1693
|
+
*/
|
|
1694
|
+
|
|
1695
|
+
/**
|
|
1696
|
+
* Resolve file content to VideoSourceUnion
|
|
1697
|
+
* Useful for FileWorkspace/file manager integrations
|
|
1698
|
+
*
|
|
1699
|
+
* @example
|
|
1700
|
+
* const source = resolveFileSource({
|
|
1701
|
+
* content: file.content,
|
|
1702
|
+
* path: file.path,
|
|
1703
|
+
* mimeType: file.mimeType,
|
|
1704
|
+
* sessionId: sessionId,
|
|
1705
|
+
* loadMethod: file.loadMethod,
|
|
1706
|
+
* getStreamUrl: terminalClient.terminal_media.streamStreamRetrieveUrl
|
|
1707
|
+
* });
|
|
1708
|
+
*
|
|
1709
|
+
* <VideoPlayer source={source} />
|
|
1710
|
+
*/
|
|
1711
|
+
declare function resolveFileSource(options: ResolveFileSourceOptions): VideoSourceUnion | null;
|
|
1305
1712
|
|
|
1306
1713
|
interface HybridAudioContextValue {
|
|
1307
1714
|
state: HybridAudioState;
|
|
@@ -1352,32 +1759,6 @@ interface EqualizerOptions {
|
|
|
1352
1759
|
*/
|
|
1353
1760
|
declare function formatTime(seconds: number): string;
|
|
1354
1761
|
|
|
1355
|
-
/**
|
|
1356
|
-
* ImageViewer type definitions
|
|
1357
|
-
*/
|
|
1358
|
-
interface ImageFile {
|
|
1359
|
-
/** Display name for the image */
|
|
1360
|
-
name: string;
|
|
1361
|
-
/** File path used for change detection and caching */
|
|
1362
|
-
path: string;
|
|
1363
|
-
/** Optional MIME type */
|
|
1364
|
-
mimeType?: string;
|
|
1365
|
-
}
|
|
1366
|
-
interface ImageViewerProps {
|
|
1367
|
-
/** File info (name, path, mimeType) */
|
|
1368
|
-
file: ImageFile;
|
|
1369
|
-
/** Image content as string (data URL or base64) or ArrayBuffer */
|
|
1370
|
-
content: string | ArrayBuffer;
|
|
1371
|
-
/**
|
|
1372
|
-
* Direct image URL for HTTP streaming.
|
|
1373
|
-
* When provided, bypasses content→blob conversion and uses URL directly.
|
|
1374
|
-
* Useful for large files loaded via HTTP Range requests.
|
|
1375
|
-
*/
|
|
1376
|
-
src?: string;
|
|
1377
|
-
/** Hide expand button when already in dialog */
|
|
1378
|
-
inDialog?: boolean;
|
|
1379
|
-
}
|
|
1380
|
-
|
|
1381
1762
|
declare function ImageViewer({ file, content, src: directSrc, inDialog }: ImageViewerProps): react_jsx_runtime.JSX.Element;
|
|
1382
1763
|
|
|
1383
1764
|
interface BlobUrlEntry {
|
|
@@ -1558,137 +1939,4 @@ declare function useBlobUrlCleanup(key: string | null): void;
|
|
|
1558
1939
|
*/
|
|
1559
1940
|
declare function generateContentKey(content: ArrayBuffer): string;
|
|
1560
1941
|
|
|
1561
|
-
|
|
1562
|
-
/** Markdown content to render */
|
|
1563
|
-
content: string;
|
|
1564
|
-
/** Additional CSS classes */
|
|
1565
|
-
className?: string;
|
|
1566
|
-
/** Whether the message is from the user (affects styling) */
|
|
1567
|
-
isUser?: boolean;
|
|
1568
|
-
/** Use compact size (text-xs instead of text-sm) */
|
|
1569
|
-
isCompact?: boolean;
|
|
1570
|
-
/**
|
|
1571
|
-
* Enable collapsible "Read more..." functionality
|
|
1572
|
-
* When enabled, long content will be truncated with a toggle button
|
|
1573
|
-
* @default false
|
|
1574
|
-
*/
|
|
1575
|
-
collapsible?: boolean;
|
|
1576
|
-
/**
|
|
1577
|
-
* Maximum character length before showing "Read more..."
|
|
1578
|
-
* Only applies when collapsible is true
|
|
1579
|
-
* If both maxLength and maxLines are set, the stricter limit applies
|
|
1580
|
-
*/
|
|
1581
|
-
maxLength?: number;
|
|
1582
|
-
/**
|
|
1583
|
-
* Maximum number of lines before showing "Read more..."
|
|
1584
|
-
* Only applies when collapsible is true
|
|
1585
|
-
* If both maxLength and maxLines are set, the stricter limit applies
|
|
1586
|
-
*/
|
|
1587
|
-
maxLines?: number;
|
|
1588
|
-
/**
|
|
1589
|
-
* Custom "Read more" button text
|
|
1590
|
-
* @default "Read more..."
|
|
1591
|
-
*/
|
|
1592
|
-
readMoreLabel?: string;
|
|
1593
|
-
/**
|
|
1594
|
-
* Custom "Show less" button text
|
|
1595
|
-
* @default "Show less"
|
|
1596
|
-
*/
|
|
1597
|
-
showLessLabel?: string;
|
|
1598
|
-
/**
|
|
1599
|
-
* Start expanded (only applies when collapsible is true)
|
|
1600
|
-
* @default false
|
|
1601
|
-
*/
|
|
1602
|
-
defaultExpanded?: boolean;
|
|
1603
|
-
/**
|
|
1604
|
-
* Callback when collapsed state changes
|
|
1605
|
-
*/
|
|
1606
|
-
onCollapseChange?: (isCollapsed: boolean) => void;
|
|
1607
|
-
}
|
|
1608
|
-
/**
|
|
1609
|
-
* MarkdownMessage - Renders markdown content with syntax highlighting and GFM support
|
|
1610
|
-
*
|
|
1611
|
-
* Features:
|
|
1612
|
-
* - GitHub Flavored Markdown (GFM) support
|
|
1613
|
-
* - Syntax highlighted code blocks with copy button
|
|
1614
|
-
* - Mermaid diagram rendering
|
|
1615
|
-
* - Tables, lists, blockquotes
|
|
1616
|
-
* - User/assistant styling modes
|
|
1617
|
-
* - Plain text optimization (skips ReactMarkdown for simple text)
|
|
1618
|
-
* - Collapsible "Read more..." for long messages
|
|
1619
|
-
*
|
|
1620
|
-
* @example
|
|
1621
|
-
* ```tsx
|
|
1622
|
-
* <MarkdownMessage content="# Hello\n\nThis is **bold** text." />
|
|
1623
|
-
*
|
|
1624
|
-
* // User message styling
|
|
1625
|
-
* <MarkdownMessage content="Some content" isUser />
|
|
1626
|
-
*
|
|
1627
|
-
* // Collapsible long content (for chat apps)
|
|
1628
|
-
* <MarkdownMessage
|
|
1629
|
-
* content={longText}
|
|
1630
|
-
* collapsible
|
|
1631
|
-
* maxLength={300}
|
|
1632
|
-
* maxLines={5}
|
|
1633
|
-
* />
|
|
1634
|
-
* ```
|
|
1635
|
-
*/
|
|
1636
|
-
declare const MarkdownMessage: React__default.FC<MarkdownMessageProps>;
|
|
1637
|
-
|
|
1638
|
-
interface UseCollapsibleContentOptions {
|
|
1639
|
-
/**
|
|
1640
|
-
* Maximum character length before collapsing
|
|
1641
|
-
* If both maxLength and maxLines are set, the stricter limit applies
|
|
1642
|
-
*/
|
|
1643
|
-
maxLength?: number;
|
|
1644
|
-
/**
|
|
1645
|
-
* Maximum number of lines before collapsing
|
|
1646
|
-
* If both maxLength and maxLines are set, the stricter limit applies
|
|
1647
|
-
*/
|
|
1648
|
-
maxLines?: number;
|
|
1649
|
-
/**
|
|
1650
|
-
* Start in expanded state (default: false - starts collapsed)
|
|
1651
|
-
*/
|
|
1652
|
-
defaultExpanded?: boolean;
|
|
1653
|
-
}
|
|
1654
|
-
interface UseCollapsibleContentResult {
|
|
1655
|
-
/** Whether content is currently collapsed */
|
|
1656
|
-
isCollapsed: boolean;
|
|
1657
|
-
/** Toggle between collapsed/expanded state */
|
|
1658
|
-
toggleCollapsed: () => void;
|
|
1659
|
-
/** Set collapsed state directly */
|
|
1660
|
-
setCollapsed: (collapsed: boolean) => void;
|
|
1661
|
-
/** Content to display (truncated if collapsed, full if expanded) */
|
|
1662
|
-
displayContent: string;
|
|
1663
|
-
/** Whether the content exceeds limits and should be collapsible */
|
|
1664
|
-
shouldCollapse: boolean;
|
|
1665
|
-
/** Original content length */
|
|
1666
|
-
originalLength: number;
|
|
1667
|
-
/** Original line count */
|
|
1668
|
-
originalLineCount: number;
|
|
1669
|
-
}
|
|
1670
|
-
/**
|
|
1671
|
-
* Hook for managing collapsible content with "Read more..." functionality
|
|
1672
|
-
*
|
|
1673
|
-
* @example
|
|
1674
|
-
* ```tsx
|
|
1675
|
-
* const { isCollapsed, toggleCollapsed, displayContent, shouldCollapse } = useCollapsibleContent(
|
|
1676
|
-
* longText,
|
|
1677
|
-
* { maxLength: 300, maxLines: 5 }
|
|
1678
|
-
* );
|
|
1679
|
-
*
|
|
1680
|
-
* return (
|
|
1681
|
-
* <div>
|
|
1682
|
-
* <Markdown content={displayContent} />
|
|
1683
|
-
* {shouldCollapse && (
|
|
1684
|
-
* <button onClick={toggleCollapsed}>
|
|
1685
|
-
* {isCollapsed ? 'Read more...' : 'Show less'}
|
|
1686
|
-
* </button>
|
|
1687
|
-
* )}
|
|
1688
|
-
* </div>
|
|
1689
|
-
* );
|
|
1690
|
-
* ```
|
|
1691
|
-
*/
|
|
1692
|
-
declare function useCollapsibleContent(content: string, options?: UseCollapsibleContentOptions): UseCollapsibleContentResult;
|
|
1693
|
-
|
|
1694
|
-
export { ArrayFieldItemTemplate, ArrayFieldTemplate, type AspectRatioValue, type AudioLevels, AudioReactiveCover, type AudioReactiveCoverProps, BaseInputTemplate, type BlobSource, COLOR_SCHEMES, COLOR_SCHEME_INFO, CheckboxWidget, ColorWidget, type CreateVideoErrorFallbackOptions, type DASHSource, type DataUrlSource, EFFECT_ANIMATIONS, type EffectColorScheme, type EffectColors, type EffectConfig$1 as EffectConfig, type EffectIntensity, type EffectLayer, type EffectVariant, type EqualizerOptions, type ErrorFallbackProps, ErrorListTemplate, FieldTemplate, GlowEffect, type GlowEffectData, type HLSSource, type HybridAudioContextValue, type HybridAudioControls, HybridAudioPlayer, type HybridAudioPlayerProps, HybridAudioProvider, type HybridAudioProviderProps, type HybridAudioState, HybridSimplePlayer, type HybridSimplePlayerProps, HybridWaveform, type HybridWaveformProps, type HybridWebAudioAPI, INTENSITY_CONFIG, INTENSITY_INFO, type ImageFile, ImageViewer, type ImageViewerProps, JsonSchemaForm, type JsonSchemaFormProps, JsonTreeComponent as JsonTree, type JsonTreeConfig, type LottieDirection, LottiePlayer, type LottiePlayerProps, type LottieSize, type LottieSpeed, MarkdownMessage, type MarkdownMessageProps, Mermaid, MeshEffect, NativeProvider, NumberWidget, ObjectFieldTemplate, Playground as OpenapiViewer, OrbsEffect, type PlayerMode, type PlaygroundConfig, type PlaygroundProps, PrettyCode, type ResolveFileSourceOptions, type SchemaSource, SelectWidget, type SimpleStreamSource, SliderWidget, SpotlightEffect, StreamProvider, type StreamSource, SwitchWidget, TextWidget, type UrlSource, type UseAudioVisualizationReturn, type UseCollapsibleContentOptions, type UseCollapsibleContentResult, type UseHybridAudioOptions, type UseHybridAudioReturn, type UseLottieOptions, type UseLottieReturn, type UseVisualizationReturn, VARIANT_INFO, VideoControls, VideoErrorFallback, type VideoErrorFallbackProps, VideoPlayer, type VideoPlayerContextValue, type VideoPlayerProps, VideoPlayerProvider, type VideoPlayerProviderProps, type VideoPlayerRef, type VideoSourceUnion, VidstackProvider, type VimeoSource, type VisualizationColorScheme, type VisualizationIntensity, VisualizationProvider, type VisualizationProviderProps, type VisualizationSettings, type VisualizationVariant, type YouTubeSource, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, createVideoErrorFallback, formatTime, generateContentKey, getColors, getEffectConfig, getRequiredFields, hasRequiredFields, isSimpleStreamSource, mergeDefaults, normalizeFormData, prepareEffectColors, resolveFileSource, resolvePlayerMode, resolveStreamSource, safeJsonParse, safeJsonStringify, useAudioCache, useAudioVisualization, useBlobUrlCleanup, useCollapsibleContent, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useImageCache, useLottie, useMediaCacheStore, useVideoCache, useVideoPlayerContext, useVideoPlayerSettings, useVisualization, validateRequiredFields, validateSchema };
|
|
1942
|
+
export { ArrayFieldItemTemplate, ArrayFieldTemplate, type AspectRatioValue, type AudioLevels, AudioReactiveCover, type AudioReactiveCoverProps, BaseInputTemplate, type BlobSource, COLOR_SCHEMES, COLOR_SCHEME_INFO, CardLoadingFallback, CheckboxWidget, ColorWidget, type CreateLazyComponentOptions, type CreateVideoErrorFallbackOptions, type DASHSource, type DataUrlSource, EFFECT_ANIMATIONS, type EffectColorScheme, type EffectColors, type EffectConfig$1 as EffectConfig, type EffectIntensity, type EffectLayer, type EffectVariant, type EqualizerOptions, type ErrorFallbackProps, ErrorListTemplate, FieldTemplate, GlowEffect, type GlowEffectData, type HLSSource, type HybridAudioContextValue, type HybridAudioControls, HybridAudioPlayer, type HybridAudioPlayerProps, HybridAudioProvider, type HybridAudioProviderProps, type HybridAudioState, HybridSimplePlayer, type HybridSimplePlayerProps, HybridWaveform, type HybridWaveformProps, type HybridWebAudioAPI, INTENSITY_CONFIG, INTENSITY_INFO, type ImageFile, ImageViewer, type ImageViewerProps, JsonSchemaForm, type JsonSchemaFormProps, JsonTreeComponent as JsonTree, type JsonTreeConfig, type JsonTreeProps, LazyHybridAudioPlayer, LazyHybridSimplePlayer, LazyImageViewer, LazyJsonSchemaForm, LazyJsonTree, LazyLottiePlayer, LazyMapContainer, LazyMapView, LazyMermaid, LazyOpenapiViewer, LazyPrettyCode, LazyVideoPlayer, LazyWrapper, type LazyWrapperProps, LoadingFallback, type LoadingFallbackProps, type LottieDirection, LottiePlayer, type LottiePlayerProps, type LottieSize, type LottieSpeed, type MapContainerProps, MapLoadingFallback, type MapStyleKey, type MapViewport, MarkdownMessage, type MarkdownMessageProps, type MarkerData, Mermaid, type MermaidProps$1 as MermaidProps, MeshEffect, NativeProvider, NumberWidget, ObjectFieldTemplate, Playground as OpenapiViewer, OrbsEffect, type PlayerMode, type PlaygroundConfig, type PlaygroundProps$1 as PlaygroundProps, PrettyCode, type PrettyCodeProps$1 as PrettyCodeProps, type ResolveFileSourceOptions, type SchemaSource, SelectWidget, type SimpleStreamSource, SliderWidget, Spinner, SpotlightEffect, StreamProvider, type StreamSource, SwitchWidget, TextWidget, type UrlSource, type UseAudioVisualizationReturn, type UseCollapsibleContentOptions, type UseCollapsibleContentResult, type UseHybridAudioOptions, type UseHybridAudioReturn, type UseLottieOptions, type UseLottieReturn, type UseVisualizationReturn, VARIANT_INFO, VideoControls, VideoErrorFallback, type VideoErrorFallbackProps, VideoPlayer, type VideoPlayerContextValue, type VideoPlayerProps, VideoPlayerProvider, type VideoPlayerProviderProps, type VideoPlayerRef, type VideoSourceUnion, VidstackProvider, type VimeoSource, type VisualizationColorScheme, type VisualizationIntensity, VisualizationProvider, type VisualizationProviderProps, type VisualizationSettings, type VisualizationVariant, type YouTubeSource, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, createLazyComponent, createVideoErrorFallback, formatTime, generateContentKey, getColors, getEffectConfig, getRequiredFields, hasRequiredFields, isSimpleStreamSource, mergeDefaults, normalizeFormData, prepareEffectColors, resolveFileSource, resolvePlayerMode, resolveStreamSource, safeJsonParse, safeJsonStringify, useAudioCache, useAudioVisualization, useBlobUrlCleanup, useCollapsibleContent, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useImageCache, useLottie, useMediaCacheStore, useVideoCache, useVideoPlayerContext, useVideoPlayerSettings, useVisualization, validateRequiredFields, validateSchema };
|