@apple-pie/slice 0.1.22 → 0.1.23

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.
Files changed (133) hide show
  1. package/dist/cjs/chunks/AudioBubble-v4xKclI8.js +54 -0
  2. package/dist/cjs/chunks/{Button-KGA0e9-0.js → Button-DmWbooXb.js} +1 -1
  3. package/dist/cjs/chunks/{FileList-CIRALfrW.js → FileList-DjTXjXnK.js} +1 -1
  4. package/dist/cjs/chunks/{ProgressIndicator-DETWiASA.js → ProgressIndicator-8QZwTSyY.js} +3 -2
  5. package/dist/cjs/chunks/{PromptInput-DUxwal3V.js → PromptInput-D1wP5-uN.js} +1 -1
  6. package/dist/cjs/chunks/{TextArea-mSespe9z.js → TextArea-rWqDDui3.js} +1 -1
  7. package/dist/cjs/chunks/{TextField-Cz2lh-fP.js → TextField-C6U-qhDt.js} +1 -1
  8. package/dist/cjs/chunks/{UploadArea-CtvvqLU7.js → UploadArea-BS2BPuhZ.js} +1 -1
  9. package/dist/cjs/chunks/audioVisualizer-EIfIjWH7.js +60 -0
  10. package/dist/cjs/components/AudioBubble/index.js +10 -0
  11. package/dist/cjs/components/Button/index.js +2 -2
  12. package/dist/cjs/components/FileList/index.js +2 -2
  13. package/dist/cjs/components/Progress/index.js +1 -1
  14. package/dist/cjs/components/PromptInput/index.js +4 -4
  15. package/dist/cjs/components/TextArea/index.js +3 -3
  16. package/dist/cjs/components/Textfield/index.js +3 -3
  17. package/dist/cjs/components/UploadArea/index.js +3 -3
  18. package/dist/cjs/hooks/useAudioRecorder.js +70 -0
  19. package/dist/cjs/hooks/useMicrophone.js +132 -0
  20. package/dist/cjs/hooks.js +3 -2
  21. package/dist/cjs/index.js +14 -12
  22. package/dist/cjs/utils/index.js +3 -3
  23. package/dist/cjs/utils/objects/index.js +3 -3
  24. package/dist/esm/chunks/AudioBubble-Dvsrq1dZ.mjs +62 -0
  25. package/dist/esm/chunks/{Avatar-CSLVUF_y.mjs → Avatar-C8uV7ROZ.mjs} +2 -2
  26. package/dist/esm/chunks/{AvatarGroup--ELW-bO1.mjs → AvatarGroup-Bt1Lkn5S.mjs} +2 -2
  27. package/dist/esm/chunks/{Badge-DyICxZP2.mjs → Badge-D-U1jomY.mjs} +1 -1
  28. package/dist/esm/chunks/{Button-Bp51g5jC.mjs → Button-sEYjFcR2.mjs} +5 -5
  29. package/dist/esm/chunks/{ButtonBar-BK-uB7oe.mjs → ButtonBar-DSR2lhhN.mjs} +3 -3
  30. package/dist/esm/chunks/{Camera-BYi_Aqbl.mjs → Camera-DSSiOeJd.mjs} +4 -4
  31. package/dist/esm/chunks/{CheckBox-BB5olQbT.mjs → CheckBox-B6zWSySW.mjs} +3 -3
  32. package/dist/esm/chunks/{Chip-CxqFCtT6.mjs → Chip-BBKJ6wG4.mjs} +3 -3
  33. package/dist/esm/chunks/{DivInput-DeSpC8Wm.mjs → DivInput-cIMIH07H.mjs} +2 -2
  34. package/dist/esm/chunks/{Dot-CLGwQu-i.mjs → Dot-Cj6gWj4_.mjs} +1 -1
  35. package/dist/esm/chunks/{DrggablePanel-BfBCRXa8.mjs → DrggablePanel-CQcIbxpX.mjs} +2 -2
  36. package/dist/esm/chunks/{DropDown-CK-sPjsQ.mjs → DropDown-B98ZoY1x.mjs} +3 -3
  37. package/dist/esm/chunks/{ErrorSummary-BNdjCQbn.mjs → ErrorSummary-Mz9siVxm.mjs} +1 -1
  38. package/dist/esm/chunks/{FileIcon-BXKnFJBn.mjs → FileIcon-DeW-ZBiv.mjs} +2 -2
  39. package/dist/esm/chunks/{FileList-CyUhkk-m.mjs → FileList-0Dzx15hl.mjs} +5 -5
  40. package/dist/esm/chunks/{Grouper-Daz1o_Ai.mjs → Grouper-B04WxD6K.mjs} +3 -3
  41. package/dist/esm/chunks/{Icon-CbwaBi0l.mjs → Icon-KDwlMXzH.mjs} +2 -2
  42. package/dist/esm/chunks/{IconButton-BKZD9jsp.mjs → IconButton-oAB8ZFTf.mjs} +4 -4
  43. package/dist/esm/chunks/{IndexedDB-CJgzPHPB.mjs → IndexedDB-Dk7a4fPS.mjs} +1 -1
  44. package/dist/esm/chunks/{Label-QTsUvGme.mjs → Label-BD7VlTDw.mjs} +2 -2
  45. package/dist/esm/chunks/{Overlay-TOzZXnwF.mjs → Overlay-3KkyDm1f.mjs} +1 -1
  46. package/dist/esm/chunks/{Pager-BYT7_mCb.mjs → Pager-DmiwYLl5.mjs} +2 -2
  47. package/dist/esm/chunks/{ProgressIndicator-Cg7CCrAE.mjs → ProgressIndicator-CxsZm_As.mjs} +5 -4
  48. package/dist/esm/chunks/{PromptInput-DJInpjRX.mjs → PromptInput-D4Q-DWjz.mjs} +3 -3
  49. package/dist/esm/chunks/{RadioButton-CYp8RkDK.mjs → RadioButton-B0jvM5VW.mjs} +3 -3
  50. package/dist/esm/chunks/{RadioButtonList-BSzV9Zz-.mjs → RadioButtonList-DBRAv87_.mjs} +3 -3
  51. package/dist/esm/chunks/{Slider-DL2iuNlh.mjs → Slider-CONGTXUE.mjs} +2 -2
  52. package/dist/esm/chunks/{Spacer-BlgEdKEM.mjs → Spacer-C5fcJYq-.mjs} +1 -1
  53. package/dist/esm/chunks/{Switch-BhCOo5Lu.mjs → Switch-CyoaJwSX.mjs} +1 -1
  54. package/dist/esm/chunks/{TabBar-Dd5-VZcG.mjs → TabBar-DmO1ixBz.mjs} +4 -4
  55. package/dist/esm/chunks/{TextArea-C_2D7sZV.mjs → TextArea-Bd_obSSH.mjs} +2 -2
  56. package/dist/esm/chunks/{TextField-RG1AsLTh.mjs → TextField-CZnUNhFe.mjs} +5 -5
  57. package/dist/esm/chunks/{Tip-BnKB9qMi.mjs → Tip-DrQvxDsH.mjs} +2 -2
  58. package/dist/esm/chunks/{Toast-BfuKRAns.mjs → Toast-C5XSDgno.mjs} +3 -3
  59. package/dist/esm/chunks/{UploadArea-ByvnUxhr.mjs → UploadArea-Gpq-MhqB.mjs} +4 -4
  60. package/dist/esm/chunks/{WSConnection-D9mpsVdc.mjs → WSConnection-DV7k84B4.mjs} +1 -1
  61. package/dist/esm/chunks/{_types-CPrEyJX9.mjs → _types-DOQAaLqq.mjs} +1 -1
  62. package/dist/esm/chunks/audioVisualizer-ZgT77nUw.mjs +60 -0
  63. package/dist/esm/chunks/{localDBStore-B4jkR5Jx.mjs → localDBStore-Dnpo5nSv.mjs} +2 -2
  64. package/dist/esm/chunks/{misc-N8KLjOXc.mjs → misc-BeEWwOaJ.mjs} +1 -1
  65. package/dist/esm/chunks/{sseStore-2JIpEKfz.mjs → sseStore-DjrfpNAS.mjs} +1 -1
  66. package/dist/esm/chunks/{tslib.es6-c-7TIv71.mjs → tslib.es6-C-olHjXV.mjs} +1 -1
  67. package/dist/esm/chunks/{uploads-worker-Dv-4zGnC.mjs → uploads-worker-7X9EwX9N.mjs} +1 -1
  68. package/dist/esm/chunks/{uploadsStore-D69fEXMY.mjs → uploadsStore-B7VECR5Q.mjs} +1 -1
  69. package/dist/esm/chunks/{windowStore-BOTh1g37.mjs → windowStore-CAzx2-QV.mjs} +1 -1
  70. package/dist/esm/components/AudioBubble/index.mjs +31 -0
  71. package/dist/esm/components/Avatar/index.mjs +3 -3
  72. package/dist/esm/components/AvatarGroup/index.mjs +4 -4
  73. package/dist/esm/components/Badge/index.mjs +2 -2
  74. package/dist/esm/components/Button/index.mjs +7 -7
  75. package/dist/esm/components/ButtonBar/index.mjs +4 -4
  76. package/dist/esm/components/Camera/index.mjs +5 -5
  77. package/dist/esm/components/CheckBox/index.mjs +4 -4
  78. package/dist/esm/components/Chip/index.mjs +4 -4
  79. package/dist/esm/components/DivInput/index.mjs +3 -3
  80. package/dist/esm/components/Dot/index.mjs +2 -2
  81. package/dist/esm/components/DraggablePanel/index.mjs +3 -3
  82. package/dist/esm/components/DropDown/index.mjs +4 -4
  83. package/dist/esm/components/ErrorSummary/index.mjs +2 -2
  84. package/dist/esm/components/FileIcon/index.mjs +3 -3
  85. package/dist/esm/components/FileList/index.mjs +6 -6
  86. package/dist/esm/components/FlexDiv/index.mjs +2 -2
  87. package/dist/esm/components/Grouper/index.mjs +5 -5
  88. package/dist/esm/components/Icon/index.mjs +3 -3
  89. package/dist/esm/components/IconButton/index.mjs +6 -6
  90. package/dist/esm/components/Label/index.mjs +3 -3
  91. package/dist/esm/components/Overlay/index.mjs +2 -2
  92. package/dist/esm/components/Pager/index.mjs +3 -3
  93. package/dist/esm/components/Progress/index.mjs +4 -4
  94. package/dist/esm/components/PromptInput/index.mjs +10 -10
  95. package/dist/esm/components/RadioButton/index.mjs +4 -4
  96. package/dist/esm/components/RadioButtonList/index.mjs +5 -5
  97. package/dist/esm/components/Slider/index.mjs +3 -3
  98. package/dist/esm/components/Spacer/index.mjs +2 -2
  99. package/dist/esm/components/Switch/index.mjs +2 -2
  100. package/dist/esm/components/TabBar/index.mjs +7 -7
  101. package/dist/esm/components/TextArea/index.mjs +8 -8
  102. package/dist/esm/components/Textfield/index.mjs +9 -9
  103. package/dist/esm/components/Tip/index.mjs +3 -3
  104. package/dist/esm/components/Toast/index.mjs +4 -4
  105. package/dist/esm/components/UploadArea/index.mjs +7 -7
  106. package/dist/esm/hooks/useAudioRecorder.mjs +74 -0
  107. package/dist/esm/hooks/useMdStreamBuffer.mjs +1 -1
  108. package/dist/esm/hooks/useMicrophone.mjs +134 -0
  109. package/dist/esm/hooks/useTrackRenders.mjs +2 -2
  110. package/dist/esm/hooks.mjs +5 -1
  111. package/dist/esm/index.mjs +47 -39
  112. package/dist/esm/stores/LocalDB.mjs +3 -3
  113. package/dist/esm/stores/SSE.mjs +2 -2
  114. package/dist/esm/stores/WS.mjs +2 -2
  115. package/dist/esm/stores/uploads.mjs +3 -3
  116. package/dist/esm/stores/window.mjs +2 -2
  117. package/dist/esm/stores.mjs +7 -7
  118. package/dist/esm/utils/index.mjs +6 -4
  119. package/dist/esm/utils/objects/index.mjs +5 -3
  120. package/dist/esm/workers/uploads/uploads.mjs +2 -2
  121. package/dist/types/components/AudioBubble/AudioBubble.d.ts +3 -0
  122. package/dist/types/components/AudioBubble/_types.d.ts +18 -0
  123. package/dist/types/components/AudioBubble/index.d.ts +2 -0
  124. package/dist/types/hooks/index.d.ts +2 -0
  125. package/dist/types/hooks/useAudioRecorder/useAudioRecorder.d.ts +14 -0
  126. package/dist/types/hooks/useMicrophone/useMicrophone.d.ts +19 -0
  127. package/dist/types/index.d.ts +3 -1
  128. package/dist/types/utils/index.d.ts +2 -2
  129. package/dist/types/utils/objects/WebRTCConnection/WebRTCConnection.d.ts +86 -0
  130. package/dist/types/utils/objects/WebRTCConnection/_types.d.ts +11 -0
  131. package/dist/types/utils/objects/audioVisualizer/audioVisualizer.d.ts +40 -0
  132. package/dist/types/utils/objects/index.d.ts +2 -0
  133. package/package.json +1 -1
@@ -0,0 +1,86 @@
1
+ import type { WebRTCConnectionOptions } from './_types';
2
+ export declare class WebRTCConnection {
3
+ private readonly peerConnection;
4
+ private readonly RTCSenderAudioTrack?;
5
+ private readonly RTCSenderVideoTrack?;
6
+ private RTCScreenShareTrack;
7
+ private RTCScreenShareSender;
8
+ private readonly RTCReceiverAudioStream;
9
+ private readonly RTCReceiverVideoTracks;
10
+ private readonly RTCReceiverAudioTracks;
11
+ private readonly RTCDataChannels;
12
+ private readonly connectionUrl;
13
+ private connectionOffer;
14
+ private audioElement;
15
+ private readonly autoPlayAudio;
16
+ private readonly onRemoteAudioStream?;
17
+ private readonly onRemoteVideoStream?;
18
+ private readonly onDataChannelEvent?;
19
+ private iceTimer?;
20
+ private offerOptions?;
21
+ private bearerToken?;
22
+ /**
23
+ * Create the base instance
24
+ */
25
+ constructor(rtcConnectionInfo: WebRTCConnectionOptions);
26
+ /**
27
+ * Initialize the RTC connection
28
+ */
29
+ initialize(offerOptions?: RTCOfferOptions, bearerToken?: string): Promise<void>;
30
+ /**
31
+ * Start an optional screen share stream and renegotiate if already connected
32
+ */
33
+ startScreenShare(): Promise<void>;
34
+ /**
35
+ * Stop the optional screen share stream and renegotiate if already connected
36
+ */
37
+ stopScreenShare(stopTrack?: boolean): Promise<void>;
38
+ /**
39
+ * Create an offer, wait for ICE gathering, POST SDP, and apply the answer
40
+ */
41
+ private negotiate;
42
+ /**
43
+ * Send a JSON-serializable payload over a named data channel
44
+ */
45
+ sendMessage(channelName: string, data: string | number | boolean | object | null): void;
46
+ /**
47
+ * Mute or unmute all incoming audio playback
48
+ */
49
+ muteAllAudio(muted: boolean): void;
50
+ /**
51
+ * Mute or unmute a specific incoming audio track
52
+ */
53
+ muteAudioTrack(trackId: string, muted: boolean): void;
54
+ /**
55
+ * Set the playback volume for the incoming audio element
56
+ */
57
+ setAudioVolume(volume: number): void;
58
+ /**
59
+ * Create an audio source node from the unified incoming audio stream
60
+ */
61
+ createIncomingAudioSource(audioContext: AudioContext): MediaStreamAudioSourceNode;
62
+ /**
63
+ * Handle track events adding them to the unified audio and video streams
64
+ */
65
+ private onTrack;
66
+ /**
67
+ * Create a local audio element and set its source to the rtc incoming media stream
68
+ */
69
+ private setupIncomingAudioStream;
70
+ /**
71
+ * Set up a local stream with mic and video tracks and add to peer connection
72
+ */
73
+ private setupOutgoingMediaStream;
74
+ /**
75
+ * Setup data channels
76
+ */
77
+ private setupDataChannels;
78
+ /**
79
+ * Add listeners for data events and push through callback
80
+ */
81
+ private setupDataChannelEventListeners;
82
+ /**
83
+ * Wait for the ICE gathering to be complete
84
+ */
85
+ private waitForIceGathering;
86
+ }
@@ -0,0 +1,11 @@
1
+ export interface WebRTCConnectionOptions {
2
+ connectionUrl?: string;
3
+ audioElement?: HTMLAudioElement;
4
+ autoPlayAudio?: boolean;
5
+ dataChannels?: string | string[];
6
+ micMediaTrack: MediaStreamTrack;
7
+ videoMediaTrack?: MediaStreamTrack;
8
+ onRemoteVideoStream?: (streams: Map<string, MediaStream>) => void;
9
+ onRemoteAudioStream?: (streams: Map<string, MediaStream>) => void;
10
+ onDataChannelEvent?: (channel: string, eventType: 'message' | 'open' | 'close' | 'error', eventData: MessageEvent | Event | RTCErrorEvent) => void;
11
+ }
@@ -0,0 +1,40 @@
1
+ type AudioVisualizerSource = MediaStream | MediaStreamTrack;
2
+ type AudioVisualizerOptions = {
3
+ fftSize?: number;
4
+ intensityMultiplier?: number;
5
+ maxScale?: number;
6
+ minScale?: number;
7
+ onUpdate?: (state: {
8
+ intensity: number;
9
+ scale: number;
10
+ }) => void;
11
+ peakIntensity?: number;
12
+ releasePerSecond?: number;
13
+ risePerSecond?: number;
14
+ };
15
+ export declare class AudioVisualizer {
16
+ private readonly fftSize;
17
+ private readonly intensityMultiplier;
18
+ private readonly maxScale;
19
+ private readonly minScale;
20
+ private readonly onUpdate?;
21
+ private readonly peakIntensity;
22
+ private readonly releasePerSecond;
23
+ private readonly risePerSecond;
24
+ private readonly source;
25
+ private analyser;
26
+ private animationFrameId;
27
+ private audioContext;
28
+ private currentIntensity;
29
+ private lastFrameTime;
30
+ private sourceNode;
31
+ private timeDomainData;
32
+ constructor(source: AudioVisualizerSource, options?: AudioVisualizerOptions);
33
+ start(): void;
34
+ stop(): void;
35
+ dispose(): void;
36
+ getIntensity(): number;
37
+ getScale(): number;
38
+ private readonly onFrame;
39
+ }
40
+ export type { AudioVisualizerOptions, AudioVisualizerSource };
@@ -1,5 +1,7 @@
1
1
  export { IndexedDB } from './IndexedDB/IndexedDB';
2
2
  export type { IndexedDBOptions } from './IndexedDB/IndexedDB';
3
+ export { AudioVisualizer } from './audioVisualizer/audioVisualizer';
4
+ export type { AudioVisualizerOptions, AudioVisualizerSource, } from './audioVisualizer/audioVisualizer';
3
5
  export { MdBuffer } from './MDStreamBuffer/MdStreamBuffer';
4
6
  export type { MarkdownAutoCloseRule, MarkdownStreamBufferOptions, MarkdownStreamBufferSnapshot, } from './MDStreamBuffer/_types';
5
7
  export { SSEConnection } from './SSEConnection/SSEConnection';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apple-pie/slice",
3
- "version": "0.1.22",
3
+ "version": "0.1.23",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/esm/index.mjs",
6
6
  "exports": {