@djangocfg/ui-tools 2.1.203 → 2.1.205

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkXMZWMGKE_cjs = require('./chunk-XMZWMGKE.cjs');
3
+ var chunkHJMDAPQH_cjs = require('./chunk-HJMDAPQH.cjs');
4
4
  var chunk46VDB3BJ_cjs = require('./chunk-46VDB3BJ.cjs');
5
5
  require('./chunk-F2N7P5XU.cjs');
6
6
  var chunk6RG7HOVF_cjs = require('./chunk-6RG7HOVF.cjs');
@@ -791,21 +791,21 @@ function AudioLoadingFallback() {
791
791
  }
792
792
  chunkWGEGR3DF_cjs.__name(AudioLoadingFallback, "AudioLoadingFallback");
793
793
  var LazyHybridAudioPlayer = createLazyComponent(
794
- () => import('./components-OZEGOPNP.cjs').then((mod) => ({ default: mod.HybridAudioPlayer })),
794
+ () => import('./components-F2ZYYCH4.cjs').then((mod) => ({ default: mod.HybridAudioPlayer })),
795
795
  {
796
796
  displayName: "LazyHybridAudioPlayer",
797
797
  fallback: /* @__PURE__ */ jsxRuntime.jsx(AudioLoadingFallback, {})
798
798
  }
799
799
  );
800
800
  var LazyHybridSimplePlayer = createLazyComponent(
801
- () => import('./components-OZEGOPNP.cjs').then((mod) => ({ default: mod.HybridSimplePlayer })),
801
+ () => import('./components-F2ZYYCH4.cjs').then((mod) => ({ default: mod.HybridSimplePlayer })),
802
802
  {
803
803
  displayName: "LazyHybridSimplePlayer",
804
804
  fallback: /* @__PURE__ */ jsxRuntime.jsx(AudioLoadingFallback, {})
805
805
  }
806
806
  );
807
807
  var LazyHybridCompactPlayer = createLazyComponent(
808
- () => import('./components-OZEGOPNP.cjs').then((mod) => ({ default: mod.HybridCompactPlayer })),
808
+ () => import('./components-F2ZYYCH4.cjs').then((mod) => ({ default: mod.HybridCompactPlayer })),
809
809
  {
810
810
  displayName: "LazyHybridCompactPlayer",
811
811
  fallback: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 h-8 px-1 animate-pulse", children: [
@@ -906,135 +906,143 @@ chunkWGEGR3DF_cjs.__name(CronSchedulerFallback, "CronSchedulerFallback");
906
906
 
907
907
  Object.defineProperty(exports, "AudioReactiveCover", {
908
908
  enumerable: true,
909
- get: function () { return chunkXMZWMGKE_cjs.AudioReactiveCover; }
909
+ get: function () { return chunkHJMDAPQH_cjs.AudioReactiveCover; }
910
910
  });
911
911
  Object.defineProperty(exports, "COLOR_SCHEMES", {
912
912
  enumerable: true,
913
- get: function () { return chunkXMZWMGKE_cjs.COLOR_SCHEMES; }
913
+ get: function () { return chunkHJMDAPQH_cjs.COLOR_SCHEMES; }
914
914
  });
915
915
  Object.defineProperty(exports, "COLOR_SCHEME_INFO", {
916
916
  enumerable: true,
917
- get: function () { return chunkXMZWMGKE_cjs.COLOR_SCHEME_INFO; }
917
+ get: function () { return chunkHJMDAPQH_cjs.COLOR_SCHEME_INFO; }
918
918
  });
919
919
  Object.defineProperty(exports, "EFFECT_ANIMATIONS", {
920
920
  enumerable: true,
921
- get: function () { return chunkXMZWMGKE_cjs.EFFECT_ANIMATIONS; }
921
+ get: function () { return chunkHJMDAPQH_cjs.EFFECT_ANIMATIONS; }
922
922
  });
923
923
  Object.defineProperty(exports, "GlowEffect", {
924
924
  enumerable: true,
925
- get: function () { return chunkXMZWMGKE_cjs.GlowEffect; }
925
+ get: function () { return chunkHJMDAPQH_cjs.GlowEffect; }
926
926
  });
927
927
  Object.defineProperty(exports, "HybridAudioPlayer", {
928
928
  enumerable: true,
929
- get: function () { return chunkXMZWMGKE_cjs.HybridAudioPlayer; }
929
+ get: function () { return chunkHJMDAPQH_cjs.HybridAudioPlayer; }
930
930
  });
931
931
  Object.defineProperty(exports, "HybridAudioProvider", {
932
932
  enumerable: true,
933
- get: function () { return chunkXMZWMGKE_cjs.HybridAudioProvider; }
933
+ get: function () { return chunkHJMDAPQH_cjs.HybridAudioProvider; }
934
934
  });
935
935
  Object.defineProperty(exports, "HybridSimplePlayer", {
936
936
  enumerable: true,
937
- get: function () { return chunkXMZWMGKE_cjs.HybridSimplePlayer; }
937
+ get: function () { return chunkHJMDAPQH_cjs.HybridSimplePlayer; }
938
938
  });
939
939
  Object.defineProperty(exports, "HybridWaveform", {
940
940
  enumerable: true,
941
- get: function () { return chunkXMZWMGKE_cjs.HybridWaveform; }
941
+ get: function () { return chunkHJMDAPQH_cjs.HybridWaveform; }
942
942
  });
943
943
  Object.defineProperty(exports, "INTENSITY_CONFIG", {
944
944
  enumerable: true,
945
- get: function () { return chunkXMZWMGKE_cjs.INTENSITY_CONFIG; }
945
+ get: function () { return chunkHJMDAPQH_cjs.INTENSITY_CONFIG; }
946
946
  });
947
947
  Object.defineProperty(exports, "INTENSITY_INFO", {
948
948
  enumerable: true,
949
- get: function () { return chunkXMZWMGKE_cjs.INTENSITY_INFO; }
949
+ get: function () { return chunkHJMDAPQH_cjs.INTENSITY_INFO; }
950
950
  });
951
951
  Object.defineProperty(exports, "MeshEffect", {
952
952
  enumerable: true,
953
- get: function () { return chunkXMZWMGKE_cjs.MeshEffect; }
953
+ get: function () { return chunkHJMDAPQH_cjs.MeshEffect; }
954
954
  });
955
955
  Object.defineProperty(exports, "OrbsEffect", {
956
956
  enumerable: true,
957
- get: function () { return chunkXMZWMGKE_cjs.OrbsEffect; }
957
+ get: function () { return chunkHJMDAPQH_cjs.OrbsEffect; }
958
958
  });
959
959
  Object.defineProperty(exports, "SpotlightEffect", {
960
960
  enumerable: true,
961
- get: function () { return chunkXMZWMGKE_cjs.SpotlightEffect; }
961
+ get: function () { return chunkHJMDAPQH_cjs.SpotlightEffect; }
962
962
  });
963
963
  Object.defineProperty(exports, "VARIANT_INFO", {
964
964
  enumerable: true,
965
- get: function () { return chunkXMZWMGKE_cjs.VARIANT_INFO; }
965
+ get: function () { return chunkHJMDAPQH_cjs.VARIANT_INFO; }
966
966
  });
967
967
  Object.defineProperty(exports, "VisualizationProvider", {
968
968
  enumerable: true,
969
- get: function () { return chunkXMZWMGKE_cjs.VisualizationProvider; }
969
+ get: function () { return chunkHJMDAPQH_cjs.VisualizationProvider; }
970
970
  });
971
971
  Object.defineProperty(exports, "calculateGlowLayers", {
972
972
  enumerable: true,
973
- get: function () { return chunkXMZWMGKE_cjs.calculateGlowLayers; }
973
+ get: function () { return chunkHJMDAPQH_cjs.calculateGlowLayers; }
974
974
  });
975
975
  Object.defineProperty(exports, "calculateMeshGradients", {
976
976
  enumerable: true,
977
- get: function () { return chunkXMZWMGKE_cjs.calculateMeshGradients; }
977
+ get: function () { return chunkHJMDAPQH_cjs.calculateMeshGradients; }
978
978
  });
979
979
  Object.defineProperty(exports, "calculateOrbs", {
980
980
  enumerable: true,
981
- get: function () { return chunkXMZWMGKE_cjs.calculateOrbs; }
981
+ get: function () { return chunkHJMDAPQH_cjs.calculateOrbs; }
982
982
  });
983
983
  Object.defineProperty(exports, "calculateSpotlight", {
984
984
  enumerable: true,
985
- get: function () { return chunkXMZWMGKE_cjs.calculateSpotlight; }
985
+ get: function () { return chunkHJMDAPQH_cjs.calculateSpotlight; }
986
986
  });
987
987
  Object.defineProperty(exports, "formatTime", {
988
988
  enumerable: true,
989
- get: function () { return chunkXMZWMGKE_cjs.formatTime; }
989
+ get: function () { return chunkHJMDAPQH_cjs.formatTime; }
990
990
  });
991
991
  Object.defineProperty(exports, "getColors", {
992
992
  enumerable: true,
993
- get: function () { return chunkXMZWMGKE_cjs.getColors; }
993
+ get: function () { return chunkHJMDAPQH_cjs.getColors; }
994
994
  });
995
995
  Object.defineProperty(exports, "getEffectConfig", {
996
996
  enumerable: true,
997
- get: function () { return chunkXMZWMGKE_cjs.getEffectConfig; }
997
+ get: function () { return chunkHJMDAPQH_cjs.getEffectConfig; }
998
998
  });
999
999
  Object.defineProperty(exports, "prepareEffectColors", {
1000
1000
  enumerable: true,
1001
- get: function () { return chunkXMZWMGKE_cjs.prepareEffectColors; }
1001
+ get: function () { return chunkHJMDAPQH_cjs.prepareEffectColors; }
1002
+ });
1003
+ Object.defineProperty(exports, "useAudioBus", {
1004
+ enumerable: true,
1005
+ get: function () { return chunkHJMDAPQH_cjs.useAudioBus; }
1006
+ });
1007
+ Object.defineProperty(exports, "useAudioBusStore", {
1008
+ enumerable: true,
1009
+ get: function () { return chunkHJMDAPQH_cjs.useAudioBusStore; }
1002
1010
  });
1003
1011
  Object.defineProperty(exports, "useAudioVisualization", {
1004
1012
  enumerable: true,
1005
- get: function () { return chunkXMZWMGKE_cjs.useAudioVisualization; }
1013
+ get: function () { return chunkHJMDAPQH_cjs.useAudioVisualization; }
1006
1014
  });
1007
1015
  Object.defineProperty(exports, "useHybridAudio", {
1008
1016
  enumerable: true,
1009
- get: function () { return chunkXMZWMGKE_cjs.useHybridAudio; }
1017
+ get: function () { return chunkHJMDAPQH_cjs.useHybridAudio; }
1010
1018
  });
1011
1019
  Object.defineProperty(exports, "useHybridAudioAnalysis", {
1012
1020
  enumerable: true,
1013
- get: function () { return chunkXMZWMGKE_cjs.useHybridAudioAnalysis; }
1021
+ get: function () { return chunkHJMDAPQH_cjs.useHybridAudioAnalysis; }
1014
1022
  });
1015
1023
  Object.defineProperty(exports, "useHybridAudioContext", {
1016
1024
  enumerable: true,
1017
- get: function () { return chunkXMZWMGKE_cjs.useHybridAudioContext; }
1025
+ get: function () { return chunkHJMDAPQH_cjs.useHybridAudioContext; }
1018
1026
  });
1019
1027
  Object.defineProperty(exports, "useHybridAudioControls", {
1020
1028
  enumerable: true,
1021
- get: function () { return chunkXMZWMGKE_cjs.useHybridAudioControls; }
1029
+ get: function () { return chunkHJMDAPQH_cjs.useHybridAudioControls; }
1022
1030
  });
1023
1031
  Object.defineProperty(exports, "useHybridAudioLevels", {
1024
1032
  enumerable: true,
1025
- get: function () { return chunkXMZWMGKE_cjs.useHybridAudioLevels; }
1033
+ get: function () { return chunkHJMDAPQH_cjs.useHybridAudioLevels; }
1026
1034
  });
1027
1035
  Object.defineProperty(exports, "useHybridAudioState", {
1028
1036
  enumerable: true,
1029
- get: function () { return chunkXMZWMGKE_cjs.useHybridAudioState; }
1037
+ get: function () { return chunkHJMDAPQH_cjs.useHybridAudioState; }
1030
1038
  });
1031
1039
  Object.defineProperty(exports, "useHybridWebAudio", {
1032
1040
  enumerable: true,
1033
- get: function () { return chunkXMZWMGKE_cjs.useHybridWebAudio; }
1041
+ get: function () { return chunkHJMDAPQH_cjs.useHybridWebAudio; }
1034
1042
  });
1035
1043
  Object.defineProperty(exports, "useVisualization", {
1036
1044
  enumerable: true,
1037
- get: function () { return chunkXMZWMGKE_cjs.useVisualization; }
1045
+ get: function () { return chunkHJMDAPQH_cjs.useVisualization; }
1038
1046
  });
1039
1047
  Object.defineProperty(exports, "NativeProvider", {
1040
1048
  enumerable: true,
package/dist/index.d.cts CHANGED
@@ -6,10 +6,10 @@ 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 * as zustand from 'zustand';
9
10
  import { CommonExternalProps } from 'react-json-tree';
10
11
  import { MediaPlayerInstance } from '@vidstack/react';
11
12
  import * as zustand_middleware from 'zustand/middleware';
12
- import * as zustand from 'zustand';
13
13
 
14
14
  interface LoadingFallbackProps {
15
15
  /** Minimum height of the loading container */
@@ -640,6 +640,24 @@ declare function calculateSpotlight(levels: AudioLevels, config: EffectConfig$1,
640
640
  */
641
641
  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";
642
642
 
643
+ interface AudioBusStore {
644
+ /** ID of the currently active (playing) player, null if none */
645
+ activeId: string | null;
646
+ setActiveId: (id: string | null) => void;
647
+ }
648
+ declare const useAudioBusStore: zustand.UseBoundStore<zustand.StoreApi<AudioBusStore>>;
649
+ interface UseAudioBusReturn {
650
+ /** Broadcast: this player is now playing — all others should stop */
651
+ announce: () => void;
652
+ /** Release: this player stopped (clears activeId if it was ours) */
653
+ release: () => void;
654
+ }
655
+ /**
656
+ * @param playerId Stable unique ID for this player instance
657
+ * @param onStop Called when another player announces — should pause this player
658
+ */
659
+ declare function useAudioBus(playerId: string, onStop: () => void): UseAudioBusReturn;
660
+
643
661
  interface UseHybridAudioOptions {
644
662
  src: string;
645
663
  autoPlay?: boolean;
@@ -2298,4 +2316,4 @@ declare function useBlobUrlCleanup(key: string | null): void;
2298
2316
  */
2299
2317
  declare function generateContentKey(content: ArrayBuffer): string;
2300
2318
 
2301
- 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, CronScheduler, type CronSchedulerContextValue, type CronSchedulerProps, CronSchedulerProvider, type CronSchedulerState, CustomInput, type DASHSource, type DataUrlSource, DayChips, 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, type HybridCompactPlayerProps, 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, LazyCronScheduler, LazyHybridAudioPlayer, LazyHybridCompactPlayer, 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, MeshEffect, type MonthDay, MonthDayGrid, NativeProvider, NumberWidget, ObjectFieldTemplate, Playground as OpenapiViewer, OrbsEffect, type PlayerMode, type PlaygroundConfig, type PlaygroundProps$1 as PlaygroundProps, PrettyCode, type PrettyCodeProps$1 as PrettyCodeProps, type ResolveFileSourceOptions, SchedulePreview, type ScheduleType, ScheduleTypeSelector, type SchemaSource, SelectWidget, type SimpleStreamSource, SliderWidget, Spinner, SpotlightEffect, StreamProvider, type StreamSource, SwitchWidget, TextWidget, TimeSelector, 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 WeekDay, type YouTubeSource, buildCron, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, createLazyComponent, createVideoErrorFallback, formatTime, generateContentKey, getColors, getEffectConfig, getRequiredFields, hasRequiredFields, humanizeCron, isSimpleStreamSource, isValidCron, mergeDefaults, normalizeFormData, parseCron, prepareEffectColors, resolveFileSource, resolvePlayerMode, resolveStreamSource, safeJsonParse, safeJsonStringify, useAudioCache, useAudioVisualization, useBlobUrlCleanup, useCollapsibleContent, useCronCustom, useCronMonthDays, useCronPreview, useCronScheduler, useCronSchedulerContext, useCronTime, useCronType, useCronWeekDays, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useImageCache, useLottie, useMediaCacheStore, useVideoCache, useVideoPlayerContext, useVideoPlayerSettings, useVisualization, validateRequiredFields, validateSchema };
2319
+ 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, CronScheduler, type CronSchedulerContextValue, type CronSchedulerProps, CronSchedulerProvider, type CronSchedulerState, CustomInput, type DASHSource, type DataUrlSource, DayChips, 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, type HybridCompactPlayerProps, 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, LazyCronScheduler, LazyHybridAudioPlayer, LazyHybridCompactPlayer, 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, MeshEffect, type MonthDay, MonthDayGrid, NativeProvider, NumberWidget, ObjectFieldTemplate, Playground as OpenapiViewer, OrbsEffect, type PlayerMode, type PlaygroundConfig, type PlaygroundProps$1 as PlaygroundProps, PrettyCode, type PrettyCodeProps$1 as PrettyCodeProps, type ResolveFileSourceOptions, SchedulePreview, type ScheduleType, ScheduleTypeSelector, type SchemaSource, SelectWidget, type SimpleStreamSource, SliderWidget, Spinner, SpotlightEffect, StreamProvider, type StreamSource, SwitchWidget, TextWidget, TimeSelector, type UrlSource, type UseAudioBusReturn, 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 WeekDay, type YouTubeSource, buildCron, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, createLazyComponent, createVideoErrorFallback, formatTime, generateContentKey, getColors, getEffectConfig, getRequiredFields, hasRequiredFields, humanizeCron, isSimpleStreamSource, isValidCron, mergeDefaults, normalizeFormData, parseCron, prepareEffectColors, resolveFileSource, resolvePlayerMode, resolveStreamSource, safeJsonParse, safeJsonStringify, useAudioBus, useAudioBusStore, useAudioCache, useAudioVisualization, useBlobUrlCleanup, useCollapsibleContent, useCronCustom, useCronMonthDays, useCronPreview, useCronScheduler, useCronSchedulerContext, useCronTime, useCronType, useCronWeekDays, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useImageCache, useLottie, useMediaCacheStore, useVideoCache, useVideoPlayerContext, useVideoPlayerSettings, useVisualization, validateRequiredFields, validateSchema };
package/dist/index.d.ts CHANGED
@@ -6,10 +6,10 @@ 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 * as zustand from 'zustand';
9
10
  import { CommonExternalProps } from 'react-json-tree';
10
11
  import { MediaPlayerInstance } from '@vidstack/react';
11
12
  import * as zustand_middleware from 'zustand/middleware';
12
- import * as zustand from 'zustand';
13
13
 
14
14
  interface LoadingFallbackProps {
15
15
  /** Minimum height of the loading container */
@@ -640,6 +640,24 @@ declare function calculateSpotlight(levels: AudioLevels, config: EffectConfig$1,
640
640
  */
641
641
  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";
642
642
 
643
+ interface AudioBusStore {
644
+ /** ID of the currently active (playing) player, null if none */
645
+ activeId: string | null;
646
+ setActiveId: (id: string | null) => void;
647
+ }
648
+ declare const useAudioBusStore: zustand.UseBoundStore<zustand.StoreApi<AudioBusStore>>;
649
+ interface UseAudioBusReturn {
650
+ /** Broadcast: this player is now playing — all others should stop */
651
+ announce: () => void;
652
+ /** Release: this player stopped (clears activeId if it was ours) */
653
+ release: () => void;
654
+ }
655
+ /**
656
+ * @param playerId Stable unique ID for this player instance
657
+ * @param onStop Called when another player announces — should pause this player
658
+ */
659
+ declare function useAudioBus(playerId: string, onStop: () => void): UseAudioBusReturn;
660
+
643
661
  interface UseHybridAudioOptions {
644
662
  src: string;
645
663
  autoPlay?: boolean;
@@ -2298,4 +2316,4 @@ declare function useBlobUrlCleanup(key: string | null): void;
2298
2316
  */
2299
2317
  declare function generateContentKey(content: ArrayBuffer): string;
2300
2318
 
2301
- 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, CronScheduler, type CronSchedulerContextValue, type CronSchedulerProps, CronSchedulerProvider, type CronSchedulerState, CustomInput, type DASHSource, type DataUrlSource, DayChips, 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, type HybridCompactPlayerProps, 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, LazyCronScheduler, LazyHybridAudioPlayer, LazyHybridCompactPlayer, 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, MeshEffect, type MonthDay, MonthDayGrid, NativeProvider, NumberWidget, ObjectFieldTemplate, Playground as OpenapiViewer, OrbsEffect, type PlayerMode, type PlaygroundConfig, type PlaygroundProps$1 as PlaygroundProps, PrettyCode, type PrettyCodeProps$1 as PrettyCodeProps, type ResolveFileSourceOptions, SchedulePreview, type ScheduleType, ScheduleTypeSelector, type SchemaSource, SelectWidget, type SimpleStreamSource, SliderWidget, Spinner, SpotlightEffect, StreamProvider, type StreamSource, SwitchWidget, TextWidget, TimeSelector, 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 WeekDay, type YouTubeSource, buildCron, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, createLazyComponent, createVideoErrorFallback, formatTime, generateContentKey, getColors, getEffectConfig, getRequiredFields, hasRequiredFields, humanizeCron, isSimpleStreamSource, isValidCron, mergeDefaults, normalizeFormData, parseCron, prepareEffectColors, resolveFileSource, resolvePlayerMode, resolveStreamSource, safeJsonParse, safeJsonStringify, useAudioCache, useAudioVisualization, useBlobUrlCleanup, useCollapsibleContent, useCronCustom, useCronMonthDays, useCronPreview, useCronScheduler, useCronSchedulerContext, useCronTime, useCronType, useCronWeekDays, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useImageCache, useLottie, useMediaCacheStore, useVideoCache, useVideoPlayerContext, useVideoPlayerSettings, useVisualization, validateRequiredFields, validateSchema };
2319
+ 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, CronScheduler, type CronSchedulerContextValue, type CronSchedulerProps, CronSchedulerProvider, type CronSchedulerState, CustomInput, type DASHSource, type DataUrlSource, DayChips, 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, type HybridCompactPlayerProps, 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, LazyCronScheduler, LazyHybridAudioPlayer, LazyHybridCompactPlayer, 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, MeshEffect, type MonthDay, MonthDayGrid, NativeProvider, NumberWidget, ObjectFieldTemplate, Playground as OpenapiViewer, OrbsEffect, type PlayerMode, type PlaygroundConfig, type PlaygroundProps$1 as PlaygroundProps, PrettyCode, type PrettyCodeProps$1 as PrettyCodeProps, type ResolveFileSourceOptions, SchedulePreview, type ScheduleType, ScheduleTypeSelector, type SchemaSource, SelectWidget, type SimpleStreamSource, SliderWidget, Spinner, SpotlightEffect, StreamProvider, type StreamSource, SwitchWidget, TextWidget, TimeSelector, type UrlSource, type UseAudioBusReturn, 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 WeekDay, type YouTubeSource, buildCron, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, createLazyComponent, createVideoErrorFallback, formatTime, generateContentKey, getColors, getEffectConfig, getRequiredFields, hasRequiredFields, humanizeCron, isSimpleStreamSource, isValidCron, mergeDefaults, normalizeFormData, parseCron, prepareEffectColors, resolveFileSource, resolvePlayerMode, resolveStreamSource, safeJsonParse, safeJsonStringify, useAudioBus, useAudioBusStore, useAudioCache, useAudioVisualization, useBlobUrlCleanup, useCollapsibleContent, useCronCustom, useCronMonthDays, useCronPreview, useCronScheduler, useCronSchedulerContext, useCronTime, useCronType, useCronWeekDays, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useImageCache, useLottie, useMediaCacheStore, useVideoCache, useVideoPlayerContext, useVideoPlayerSettings, useVisualization, validateRequiredFields, validateSchema };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { AudioReactiveCover, COLOR_SCHEMES, COLOR_SCHEME_INFO, EFFECT_ANIMATIONS, GlowEffect, HybridAudioPlayer, HybridAudioProvider, HybridSimplePlayer, HybridWaveform, INTENSITY_CONFIG, INTENSITY_INFO, MeshEffect, OrbsEffect, SpotlightEffect, VARIANT_INFO, VisualizationProvider, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, formatTime, getColors, getEffectConfig, prepareEffectColors, useAudioVisualization, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useVisualization } from './chunk-O55KZXKD.mjs';
1
+ export { AudioReactiveCover, COLOR_SCHEMES, COLOR_SCHEME_INFO, EFFECT_ANIMATIONS, GlowEffect, HybridAudioPlayer, HybridAudioProvider, HybridSimplePlayer, HybridWaveform, INTENSITY_CONFIG, INTENSITY_INFO, MeshEffect, OrbsEffect, SpotlightEffect, VARIANT_INFO, VisualizationProvider, calculateGlowLayers, calculateMeshGradients, calculateOrbs, calculateSpotlight, formatTime, getColors, getEffectConfig, prepareEffectColors, useAudioBus, useAudioBusStore, useAudioVisualization, useHybridAudio, useHybridAudioAnalysis, useHybridAudioContext, useHybridAudioControls, useHybridAudioLevels, useHybridAudioState, useHybridWebAudio, useVisualization } from './chunk-CDP3K6BI.mjs';
2
2
  export { NativeProvider, StreamProvider, VideoControls, VideoErrorFallback, VideoPlayer, VideoPlayerProvider, VidstackProvider, createVideoErrorFallback, isSimpleStreamSource, resolveFileSource, resolvePlayerMode, resolveStreamSource, useVideoPlayerContext } from './chunk-QKG4LERV.mjs';
3
3
  import './chunk-JWB2EWQO.mjs';
4
4
  export { ImageViewer } from './chunk-MADKYFI3.mjs';
@@ -767,21 +767,21 @@ function AudioLoadingFallback() {
767
767
  }
768
768
  __name(AudioLoadingFallback, "AudioLoadingFallback");
769
769
  var LazyHybridAudioPlayer = createLazyComponent(
770
- () => import('./components-R4CC6JGG.mjs').then((mod) => ({ default: mod.HybridAudioPlayer })),
770
+ () => import('./components-3RJ5Y3TB.mjs').then((mod) => ({ default: mod.HybridAudioPlayer })),
771
771
  {
772
772
  displayName: "LazyHybridAudioPlayer",
773
773
  fallback: /* @__PURE__ */ jsx(AudioLoadingFallback, {})
774
774
  }
775
775
  );
776
776
  var LazyHybridSimplePlayer = createLazyComponent(
777
- () => import('./components-R4CC6JGG.mjs').then((mod) => ({ default: mod.HybridSimplePlayer })),
777
+ () => import('./components-3RJ5Y3TB.mjs').then((mod) => ({ default: mod.HybridSimplePlayer })),
778
778
  {
779
779
  displayName: "LazyHybridSimplePlayer",
780
780
  fallback: /* @__PURE__ */ jsx(AudioLoadingFallback, {})
781
781
  }
782
782
  );
783
783
  var LazyHybridCompactPlayer = createLazyComponent(
784
- () => import('./components-R4CC6JGG.mjs').then((mod) => ({ default: mod.HybridCompactPlayer })),
784
+ () => import('./components-3RJ5Y3TB.mjs').then((mod) => ({ default: mod.HybridCompactPlayer })),
785
785
  {
786
786
  displayName: "LazyHybridCompactPlayer",
787
787
  fallback: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 h-8 px-1 animate-pulse", children: [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@djangocfg/ui-tools",
3
- "version": "2.1.203",
3
+ "version": "2.1.205",
4
4
  "description": "Heavy React tools with lazy loading - for Electron, Vite, CRA, Next.js apps",
5
5
  "keywords": [
6
6
  "ui-tools",
@@ -78,8 +78,8 @@
78
78
  "check": "tsc --noEmit"
79
79
  },
80
80
  "peerDependencies": {
81
- "@djangocfg/i18n": "^2.1.203",
82
- "@djangocfg/ui-core": "^2.1.203",
81
+ "@djangocfg/i18n": "^2.1.205",
82
+ "@djangocfg/ui-core": "^2.1.205",
83
83
  "lucide-react": "^0.545.0",
84
84
  "react": "^19.0.0",
85
85
  "react-dom": "^19.0.0",
@@ -112,10 +112,10 @@
112
112
  "@maplibre/maplibre-gl-geocoder": "^1.7.0"
113
113
  },
114
114
  "devDependencies": {
115
- "@djangocfg/i18n": "^2.1.203",
115
+ "@djangocfg/i18n": "^2.1.205",
116
116
  "@djangocfg/playground": "workspace:*",
117
- "@djangocfg/typescript-config": "^2.1.203",
118
- "@djangocfg/ui-core": "^2.1.203",
117
+ "@djangocfg/typescript-config": "^2.1.205",
118
+ "@djangocfg/ui-core": "^2.1.205",
119
119
  "@types/mapbox__mapbox-gl-draw": "^1.4.8",
120
120
  "@types/node": "^24.7.2",
121
121
  "@types/react": "^19.1.0",
package/src/index.ts CHANGED
@@ -87,6 +87,10 @@ export {
87
87
  } from './tools/AudioPlayer/lazy';
88
88
  export type { HybridCompactPlayerProps } from './tools/AudioPlayer/lazy';
89
89
 
90
+ // AudioBus — global audio exclusivity (one player at a time)
91
+ export { useAudioBus, useAudioBusStore } from './tools/AudioPlayer/hooks/useAudioBus';
92
+ export type { UseAudioBusReturn } from './tools/AudioPlayer/hooks/useAudioBus';
93
+
90
94
  // VideoPlayer (~150KB)
91
95
  export { LazyVideoPlayer } from './tools/VideoPlayer/lazy';
92
96