@djangocfg/ui-tools 2.1.310 → 2.1.313
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 +38 -22
- package/dist/{DocsLayout-W5JLRNSZ.mjs → DocsLayout-ESVQZO3V.mjs} +3 -3
- package/dist/{DocsLayout-W5JLRNSZ.mjs.map → DocsLayout-ESVQZO3V.mjs.map} +1 -1
- package/dist/{DocsLayout-ZXD2CUOH.cjs → DocsLayout-KUPDWJ3G.cjs} +48 -48
- package/dist/{DocsLayout-ZXD2CUOH.cjs.map → DocsLayout-KUPDWJ3G.cjs.map} +1 -1
- package/dist/Player-M3GC3VPE.mjs +4 -0
- package/dist/Player-M3GC3VPE.mjs.map +1 -0
- package/dist/Player-ZGQKKOWI.css +65 -0
- package/dist/Player-ZGQKKOWI.css.map +1 -0
- package/dist/Player-ZL2X5LGG.cjs +13 -0
- package/dist/Player-ZL2X5LGG.cjs.map +1 -0
- package/dist/{chunk-CXVGN6ZW.cjs → chunk-DFTVB66S.cjs} +7 -6
- package/dist/chunk-DFTVB66S.cjs.map +1 -0
- package/dist/{chunk-2QY3LJR6.mjs → chunk-EUADAUBQ.mjs} +5 -4
- package/dist/chunk-EUADAUBQ.mjs.map +1 -0
- package/dist/chunk-FX2QFYWF.mjs +2059 -0
- package/dist/chunk-FX2QFYWF.mjs.map +1 -0
- package/dist/{chunk-6HNAPVZ2.mjs → chunk-GBLQTHWT.mjs} +11 -13
- package/dist/chunk-GBLQTHWT.mjs.map +1 -0
- package/dist/{chunk-FYLR232K.cjs → chunk-S44PW6NK.cjs} +11 -13
- package/dist/chunk-S44PW6NK.cjs.map +1 -0
- package/dist/chunk-ZLQHUZDU.cjs +2061 -0
- package/dist/chunk-ZLQHUZDU.cjs.map +1 -0
- package/dist/components-WYEZL5TE.cjs +26 -0
- package/dist/{components-3RTH76CV.cjs.map → components-WYEZL5TE.cjs.map} +1 -1
- package/dist/components-ZAGG2PBO.mjs +5 -0
- package/dist/{components-5GVVL2Q6.mjs.map → components-ZAGG2PBO.mjs.map} +1 -1
- package/dist/index.cjs +36 -220
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +65 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +44 -500
- package/dist/index.d.ts +44 -500
- package/dist/index.mjs +16 -62
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -6
- package/src/components/markdown/MarkdownMessage/ActionRow.tsx +48 -0
- package/src/components/markdown/MarkdownMessage/ChatMessageRow.tsx +97 -0
- package/src/components/markdown/MarkdownMessage/CodeBlock.tsx +9 -13
- package/src/components/markdown/MarkdownMessage/MarkdownMessage.story.tsx +77 -2
- package/src/components/markdown/MarkdownMessage/MarkdownMessage.tsx +2 -3
- package/src/components/markdown/MarkdownMessage/README.md +72 -0
- package/src/components/markdown/MarkdownMessage/components.tsx +3 -3
- package/src/components/markdown/MarkdownMessage/index.ts +6 -0
- package/src/index.ts +2 -11
- package/src/tools/AudioPlayer/AudioPlayer.story.tsx +454 -107
- package/src/tools/AudioPlayer/Player.tsx +80 -0
- package/src/tools/AudioPlayer/PlayerShell.tsx +122 -0
- package/src/tools/AudioPlayer/README.md +139 -204
- package/src/tools/AudioPlayer/audio/audioContext.ts +39 -0
- package/src/tools/AudioPlayer/audio/decodePeaks.ts +36 -0
- package/src/tools/AudioPlayer/audio/index.ts +4 -0
- package/src/tools/AudioPlayer/audio/mediaElementSourceCache.ts +20 -0
- package/src/tools/AudioPlayer/audio/peaksCache.ts +37 -0
- package/src/tools/AudioPlayer/context/AudioRefContext.tsx +9 -0
- package/src/tools/AudioPlayer/context/ControlsContext.tsx +7 -0
- package/src/tools/AudioPlayer/context/LevelsContext.tsx +7 -0
- package/src/tools/AudioPlayer/context/MetaContext.tsx +16 -0
- package/src/tools/AudioPlayer/context/PlayerProvider.tsx +314 -0
- package/src/tools/AudioPlayer/context/StateContext.tsx +7 -0
- package/src/tools/AudioPlayer/context/index.ts +16 -15
- package/src/tools/AudioPlayer/context/selectors.ts +36 -0
- package/src/tools/AudioPlayer/hooks/index.ts +12 -39
- package/src/tools/AudioPlayer/hooks/useActivePlayer.ts +31 -0
- package/src/tools/AudioPlayer/hooks/useAnalyser.ts +62 -0
- package/src/tools/AudioPlayer/hooks/useAudioElementEvents.ts +102 -0
- package/src/tools/AudioPlayer/hooks/useKeyboardShortcuts.ts +91 -0
- package/src/tools/AudioPlayer/hooks/useMediaSession.ts +74 -0
- package/src/tools/AudioPlayer/hooks/usePeaks.ts +83 -0
- package/src/tools/AudioPlayer/hooks/usePlayerPreferences.ts +21 -0
- package/src/tools/AudioPlayer/hooks/usePlayheadLoop.ts +77 -0
- package/src/tools/AudioPlayer/hooks/useResizeObserver.ts +20 -0
- package/src/tools/AudioPlayer/hooks/useThemeWatcher.ts +22 -0
- package/src/tools/AudioPlayer/index.ts +63 -134
- package/src/tools/AudioPlayer/lazy.tsx +8 -97
- package/src/tools/AudioPlayer/parts/Controls/ControlsRow.tsx +30 -0
- package/src/tools/AudioPlayer/parts/Controls/IconButton.tsx +62 -0
- package/src/tools/AudioPlayer/parts/Controls/LoopButton.tsx +33 -0
- package/src/tools/AudioPlayer/parts/Controls/PlayButton.tsx +86 -0
- package/src/tools/AudioPlayer/parts/Controls/SkipButton.tsx +17 -0
- package/src/tools/AudioPlayer/parts/Controls/VolumeControl.tsx +171 -0
- package/src/tools/AudioPlayer/parts/Controls/index.ts +6 -0
- package/src/tools/AudioPlayer/parts/Cover/Cover.tsx +24 -0
- package/src/tools/AudioPlayer/parts/Cover/CoverPlaceholder.tsx +27 -0
- package/src/tools/AudioPlayer/parts/Cover/ReactivePulse.tsx +66 -0
- package/src/tools/AudioPlayer/parts/Cover/index.ts +3 -0
- package/src/tools/AudioPlayer/parts/ErrorState/ErrorState.tsx +35 -0
- package/src/tools/AudioPlayer/parts/ErrorState/index.ts +1 -0
- package/src/tools/AudioPlayer/parts/Layout/CompactLayout.tsx +25 -0
- package/src/tools/AudioPlayer/parts/Layout/DefaultLayout.tsx +48 -0
- package/src/tools/AudioPlayer/parts/Layout/index.ts +2 -0
- package/src/tools/AudioPlayer/parts/Meta/Artist.tsx +14 -0
- package/src/tools/AudioPlayer/parts/Meta/TimeDisplay.tsx +49 -0
- package/src/tools/AudioPlayer/parts/Meta/Title.tsx +13 -0
- package/src/tools/AudioPlayer/parts/Meta/index.ts +3 -0
- package/src/tools/AudioPlayer/parts/Skeleton/CoverSkeleton.tsx +13 -0
- package/src/tools/AudioPlayer/parts/Skeleton/MetaSkeleton.tsx +10 -0
- package/src/tools/AudioPlayer/parts/Skeleton/index.ts +2 -0
- package/src/tools/AudioPlayer/parts/Waveform/BarsWaveform.tsx +48 -0
- package/src/tools/AudioPlayer/parts/Waveform/LiveWaveform.tsx +95 -0
- package/src/tools/AudioPlayer/parts/Waveform/PeaksWaveform.tsx +100 -0
- package/src/tools/AudioPlayer/parts/Waveform/ProgressBar.tsx +76 -0
- package/src/tools/AudioPlayer/parts/Waveform/Waveform.tsx +74 -0
- package/src/tools/AudioPlayer/parts/Waveform/WaveformSkeleton.tsx +16 -0
- package/src/tools/AudioPlayer/parts/Waveform/index.ts +8 -0
- package/src/tools/AudioPlayer/parts/Waveform/waveformInteraction.ts +106 -0
- package/src/tools/AudioPlayer/parts/Waveform/waveformRenderer.ts +91 -0
- package/src/tools/AudioPlayer/parts/index.ts +1 -0
- package/src/tools/AudioPlayer/store/activePlayerBus.ts +63 -0
- package/src/tools/AudioPlayer/store/createLevelsStore.ts +37 -0
- package/src/tools/AudioPlayer/store/index.ts +16 -0
- package/src/tools/AudioPlayer/store/preferencesStore.ts +104 -0
- package/src/tools/AudioPlayer/styles/webview-safe.css +77 -0
- package/src/tools/AudioPlayer/types.ts +95 -0
- package/src/tools/AudioPlayer/utils/bucketize.ts +27 -0
- package/src/tools/AudioPlayer/utils/clamp.ts +5 -0
- package/src/tools/AudioPlayer/utils/dpr.ts +19 -0
- package/src/tools/AudioPlayer/utils/formatTime.ts +12 -8
- package/src/tools/AudioPlayer/utils/index.ts +4 -5
- package/src/tools/AudioPlayer/utils/readCssVar.ts +7 -0
- package/src/tools/AudioPlayer/utils/resolveCanvasColor.ts +28 -0
- package/src/tools/index.ts +5 -75
- package/dist/chunk-2QY3LJR6.mjs.map +0 -1
- package/dist/chunk-6HNAPVZ2.mjs.map +0 -1
- package/dist/chunk-CXVGN6ZW.cjs.map +0 -1
- package/dist/chunk-F2N7P5XU.cjs +0 -30
- package/dist/chunk-F2N7P5XU.cjs.map +0 -1
- package/dist/chunk-FYLR232K.cjs.map +0 -1
- package/dist/chunk-HMHIVEMS.mjs +0 -1619
- package/dist/chunk-HMHIVEMS.mjs.map +0 -1
- package/dist/chunk-JWB2EWQO.mjs +0 -5
- package/dist/chunk-JWB2EWQO.mjs.map +0 -1
- package/dist/chunk-YZX6FH3H.cjs +0 -1656
- package/dist/chunk-YZX6FH3H.cjs.map +0 -1
- package/dist/components-3RTH76CV.cjs +0 -27
- package/dist/components-5GVVL2Q6.mjs +0 -5
- package/dist/components-CPHOUQ5F.cjs +0 -46
- package/dist/components-CPHOUQ5F.cjs.map +0 -1
- package/dist/components-OTK43IMD.mjs +0 -6
- package/dist/components-OTK43IMD.mjs.map +0 -1
- package/src/tools/AudioPlayer/components/HybridAudioPlayer.tsx +0 -225
- package/src/tools/AudioPlayer/components/HybridCompactPlayer.tsx +0 -163
- package/src/tools/AudioPlayer/components/HybridSimplePlayer.tsx +0 -284
- package/src/tools/AudioPlayer/components/HybridWaveform.tsx +0 -286
- package/src/tools/AudioPlayer/components/ReactiveCover/AudioReactiveCover.tsx +0 -151
- package/src/tools/AudioPlayer/components/ReactiveCover/effects/GlowEffect.tsx +0 -110
- package/src/tools/AudioPlayer/components/ReactiveCover/effects/MeshEffect.tsx +0 -58
- package/src/tools/AudioPlayer/components/ReactiveCover/effects/OrbsEffect.tsx +0 -45
- package/src/tools/AudioPlayer/components/ReactiveCover/effects/SpotlightEffect.tsx +0 -82
- package/src/tools/AudioPlayer/components/ReactiveCover/effects/index.ts +0 -8
- package/src/tools/AudioPlayer/components/ReactiveCover/index.ts +0 -6
- package/src/tools/AudioPlayer/components/index.ts +0 -23
- package/src/tools/AudioPlayer/context/HybridAudioProvider.tsx +0 -158
- package/src/tools/AudioPlayer/effects/index.ts +0 -412
- package/src/tools/AudioPlayer/hooks/useAudioBus.ts +0 -76
- package/src/tools/AudioPlayer/hooks/useHybridAudio.ts +0 -403
- package/src/tools/AudioPlayer/hooks/useHybridAudioAnalysis.ts +0 -96
- package/src/tools/AudioPlayer/hooks/useVisualization.tsx +0 -207
- package/src/tools/AudioPlayer/types/effects.ts +0 -73
- package/src/tools/AudioPlayer/types/index.ts +0 -27
- package/src/tools/AudioPlayer/utils/debug.ts +0 -14
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ This package contains heavy components that are loaded lazily to keep your initi
|
|
|
40
40
|
| `JsonForm` | ~300KB | JSON Schema form generator |
|
|
41
41
|
| `MarkdownEditor` | ~200KB | WYSIWYG markdown editor with Tiptap, `@`-mentions (auto-flip popup), customizable markdown serialization via presets |
|
|
42
42
|
| `LottiePlayer` | ~200KB | Lottie animation player |
|
|
43
|
-
| `AudioPlayer` | ~
|
|
43
|
+
| `AudioPlayer` | ~80KB | WebView-safe audio player (v6) — static peaks waveform + clip-path playhead |
|
|
44
44
|
| `VideoPlayer` | ~150KB | Professional video player with Vidstack |
|
|
45
45
|
| `MarkdownMessage` | ~120KB | Read-only chat-tuned markdown renderer — GFM + soft line breaks + smart typography + emoji shortcodes + sanitized HTML + syntax-highlighted code fences + mermaid + declarative `linkRules` for custom URL schemes. See [MarkdownMessage/README.md](src/components/markdown/MarkdownMessage/README.md) for the plugin pipeline. |
|
|
46
46
|
| `JsonTree` | ~100KB | JSON visualization with modes (full/compact/inline) |
|
|
@@ -249,31 +249,49 @@ import { VideoPlayer } from '@djangocfg/ui-tools';
|
|
|
249
249
|
|
|
250
250
|
## Audio Player
|
|
251
251
|
|
|
252
|
-
|
|
252
|
+
WebView-safe v6 player. Single component, two layouts (`default` / `compact`),
|
|
253
|
+
container-query auto-switching, waveform doubles as the seek bar. Designed for
|
|
254
|
+
60 fps in WKWebView (Wails / Electron) and Tauri-style WebView2.
|
|
253
255
|
|
|
254
256
|
```tsx
|
|
255
|
-
import {
|
|
256
|
-
LazyHybridSimplePlayer, // Full player: cover art + reactive effects + controls
|
|
257
|
-
LazyHybridCompactPlayer, // Single-row: play/pause + waveform + timer
|
|
258
|
-
LazyHybridAudioPlayer, // Controls only (requires HybridAudioProvider)
|
|
259
|
-
} from '@djangocfg/ui-tools';
|
|
260
|
-
|
|
261
|
-
// Full player with reactive cover art
|
|
262
|
-
<LazyHybridSimplePlayer
|
|
263
|
-
src="https://example.com/audio.mp3"
|
|
264
|
-
title="Track Title"
|
|
265
|
-
reactiveCover
|
|
266
|
-
variant="spotlight"
|
|
267
|
-
/>
|
|
257
|
+
import { LazyAudioPlayer } from '@djangocfg/ui-tools';
|
|
268
258
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
src="https://example.com/audio.mp3"
|
|
259
|
+
<LazyAudioPlayer
|
|
260
|
+
src="/audio/track.mp3"
|
|
272
261
|
title="Track Title"
|
|
273
|
-
|
|
262
|
+
artist="Artist"
|
|
263
|
+
cover="/cover.jpg"
|
|
274
264
|
/>
|
|
275
265
|
```
|
|
276
266
|
|
|
267
|
+
Highlights:
|
|
268
|
+
|
|
269
|
+
- **Static peaks waveform** by default (decoded once, cached per `src`); zero
|
|
270
|
+
canvas paints during playback — playhead animates via `clip-path` + a single
|
|
271
|
+
CSS variable on the GPU thread.
|
|
272
|
+
- Five waveform modes: `peaks` (default), `live` (AnalyserNode), `bars`
|
|
273
|
+
(CSS-only decoration), `progress` (plain scrubber, no animation), `none`.
|
|
274
|
+
Decode failure quietly degrades `peaks` → `progress`.
|
|
275
|
+
- **Slot composition**: drop `<PlayerProvider>` + import the parts you need
|
|
276
|
+
(`Cover`, `Title`, `Waveform`, `PlayButton`, …) to build any custom layout.
|
|
277
|
+
- **Click on the waveform = seek + play** (configurable via
|
|
278
|
+
`seekStartsPlayback`); drag to scrub.
|
|
279
|
+
- **One active player at a time** by default — `exclusive` prop, coordinated
|
|
280
|
+
same-tab + cross-tab via `BroadcastChannel`.
|
|
281
|
+
- **Persistent volume / mute** in `localStorage`, synced across all uncontrolled
|
|
282
|
+
players (and tabs). Pass `initialVolume` / `muted` to opt out per-player.
|
|
283
|
+
- **Mobile-aware**: auto-switches to `compact` on phone viewports, volume
|
|
284
|
+
popover toggles on tap, hover affordances disabled on touch, iOS Safari
|
|
285
|
+
hides the volume slider (read-only there).
|
|
286
|
+
- **Keyboard**: Space/K toggle, ←/→ seek 5s, ↑/↓ volume, M mute, L loop.
|
|
287
|
+
Active only when focus is in the player.
|
|
288
|
+
- **Selector hooks** — `usePlayerState`, `usePlayerControls`, `usePlayerLevels`,
|
|
289
|
+
`useActivePlayer`, `useLastActivePlayer`, `useIsActivePlayer`,
|
|
290
|
+
`usePlayerPreferences` — for custom toolbars / "now playing" UIs.
|
|
291
|
+
|
|
292
|
+
See [`AudioPlayer/README.md`](src/tools/AudioPlayer/README.md) for the full API
|
|
293
|
+
and the docs at `@dev/@refactoring6-audioplayer/` for architecture / ADRs.
|
|
294
|
+
|
|
277
295
|
## Mermaid Diagrams
|
|
278
296
|
|
|
279
297
|
Render Mermaid diagrams with fullscreen zoom support and type-safe declarative builders.
|
|
@@ -829,9 +847,7 @@ import {
|
|
|
829
847
|
LazyOpenapiViewer, // ~400KB
|
|
830
848
|
LazyJsonSchemaForm, // ~300KB
|
|
831
849
|
LazyLottiePlayer, // ~200KB
|
|
832
|
-
|
|
833
|
-
LazyHybridSimplePlayer, // ~200KB — full player with cover & effects
|
|
834
|
-
LazyHybridCompactPlayer, // ~200KB — compact single-row player
|
|
850
|
+
LazyAudioPlayer, // ~80KB — WebView-safe v6 player
|
|
835
851
|
LazyVideoPlayer, // ~150KB
|
|
836
852
|
LazyJsonTree, // ~100KB
|
|
837
853
|
LazyImageViewer, // ~50KB
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { deduplicateEndpoints, dereferenceSchema, resolveBaseUrl, usePlaygroundContext, toMarkdown, toCompactJson, toRawJson, formatBytes, MarkdownMessage, CODE_SAMPLE_TARGETS, buildHarRequest, resolveAbsolute, renderSnippet, PrettyCode_default, relativePath, endpointToMarkdown, isValidJson, findApiKeyById, parseRequestHeaders, UrlBuilder, sampleSchemaJson, joinUrl } from './chunk-
|
|
1
|
+
import { deduplicateEndpoints, dereferenceSchema, resolveBaseUrl, usePlaygroundContext, toMarkdown, toCompactJson, toRawJson, formatBytes, MarkdownMessage, CODE_SAMPLE_TARGETS, buildHarRequest, resolveAbsolute, renderSnippet, PrettyCode_default, relativePath, endpointToMarkdown, isValidJson, findApiKeyById, parseRequestHeaders, UrlBuilder, sampleSchemaJson, joinUrl } from './chunk-GBLQTHWT.mjs';
|
|
2
2
|
import { JsonTree_default } from './chunk-LFWQ36LJ.mjs';
|
|
3
3
|
import './chunk-SSUOENAZ.mjs';
|
|
4
4
|
import { __name } from './chunk-CGILA3WO.mjs';
|
|
@@ -3459,5 +3459,5 @@ var DocsLayout = /* @__PURE__ */ __name(() => {
|
|
|
3459
3459
|
}, "DocsLayout");
|
|
3460
3460
|
|
|
3461
3461
|
export { DocsLayout };
|
|
3462
|
-
//# sourceMappingURL=DocsLayout-
|
|
3463
|
-
//# sourceMappingURL=DocsLayout-
|
|
3462
|
+
//# sourceMappingURL=DocsLayout-ESVQZO3V.mjs.map
|
|
3463
|
+
//# sourceMappingURL=DocsLayout-ESVQZO3V.mjs.map
|