@streamplace/components 0.7.3 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/chat/chat-box.js +212 -24
- package/dist/components/chat/chat-message.js +5 -5
- package/dist/components/chat/chat.js +83 -5
- package/dist/components/chat/emoji-suggestions.js +35 -0
- package/dist/components/chat/mod-view.js +59 -8
- package/dist/components/chat/system-message.js +19 -0
- package/dist/components/icons/bluesky-icon.js +9 -0
- package/dist/components/keep-awake.js +7 -0
- package/dist/components/keep-awake.native.js +16 -0
- package/dist/components/mobile-player/fullscreen.js +2 -1
- package/dist/components/mobile-player/fullscreen.native.js +3 -3
- package/dist/components/mobile-player/player.js +15 -30
- package/dist/components/mobile-player/ui/index.js +2 -1
- package/dist/components/mobile-player/ui/report-modal.js +90 -0
- package/dist/components/mobile-player/ui/{loading.js → streamer-loading-overlay.js} +1 -1
- package/dist/components/mobile-player/ui/viewer-context-menu.js +20 -1
- package/dist/components/mobile-player/ui/viewer-loading-overlay.js +49 -0
- package/dist/components/mobile-player/use-webrtc.js +7 -1
- package/dist/components/mobile-player/video-retry.js +29 -0
- package/dist/components/mobile-player/video.js +84 -9
- package/dist/components/mobile-player/video.native.js +24 -10
- package/dist/components/share/sharesheet.js +91 -0
- package/dist/components/ui/dialog.js +1 -1
- package/dist/components/ui/dropdown.js +6 -6
- package/dist/components/ui/index.js +2 -0
- package/dist/components/ui/primitives/modal.js +0 -1
- package/dist/components/ui/slider.js +5 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/usePointerDevice.js +71 -0
- package/dist/index.js +10 -3
- package/dist/lib/system-messages.js +101 -0
- package/dist/livestream-store/chat.js +111 -18
- package/dist/livestream-store/livestream-store.js +3 -0
- package/dist/livestream-store/problems.js +76 -0
- package/dist/livestream-store/websocket-consumer.js +39 -4
- package/dist/player-store/player-store.js +30 -4
- package/dist/streamplace-store/block.js +51 -12
- package/dist/ui/index.js +79 -0
- package/node-compile-cache/v22.15.0-x64-efe9a9df-0/37be0eec +0 -0
- package/node-compile-cache/v22.15.0-x64-efe9a9df-0/56540125 +0 -0
- package/node-compile-cache/v22.15.0-x64-efe9a9df-0/67b1eb60 +0 -0
- package/node-compile-cache/v22.15.0-x64-efe9a9df-0/7c275f90 +0 -0
- package/package.json +6 -2
- package/src/components/chat/chat-box.tsx +295 -25
- package/src/components/chat/chat-message.tsx +6 -7
- package/src/components/chat/chat.tsx +192 -41
- package/src/components/chat/emoji-suggestions.tsx +94 -0
- package/src/components/chat/mod-view.tsx +119 -40
- package/src/components/chat/system-message.tsx +38 -0
- package/src/components/icons/bluesky-icon.tsx +9 -0
- package/src/components/keep-awake.native.tsx +13 -0
- package/src/components/keep-awake.tsx +3 -0
- package/src/components/mobile-player/fullscreen.native.tsx +12 -3
- package/src/components/mobile-player/fullscreen.tsx +10 -3
- package/src/components/mobile-player/player.tsx +28 -36
- package/src/components/mobile-player/props.tsx +1 -0
- package/src/components/mobile-player/ui/index.ts +2 -1
- package/src/components/mobile-player/ui/report-modal.tsx +195 -0
- package/src/components/mobile-player/ui/{loading.tsx → streamer-loading-overlay.tsx} +1 -1
- package/src/components/mobile-player/ui/viewer-context-menu.tsx +31 -3
- package/src/components/mobile-player/ui/viewer-loading-overlay.tsx +66 -0
- package/src/components/mobile-player/use-webrtc.tsx +10 -2
- package/src/components/mobile-player/video-retry.tsx +28 -0
- package/src/components/mobile-player/video.native.tsx +24 -10
- package/src/components/mobile-player/video.tsx +100 -21
- package/src/components/share/sharesheet.tsx +185 -0
- package/src/components/ui/dialog.tsx +1 -1
- package/src/components/ui/dropdown.tsx +13 -13
- package/src/components/ui/index.ts +2 -0
- package/src/components/ui/primitives/modal.tsx +0 -1
- package/src/components/ui/slider.tsx +1 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/usePointerDevice.ts +89 -0
- package/src/index.tsx +11 -2
- package/src/lib/system-messages.ts +135 -0
- package/src/livestream-store/chat.tsx +145 -17
- package/src/livestream-store/livestream-state.tsx +10 -0
- package/src/livestream-store/livestream-store.tsx +3 -0
- package/src/livestream-store/problems.tsx +96 -0
- package/src/livestream-store/websocket-consumer.tsx +44 -4
- package/src/player-store/player-state.tsx +21 -4
- package/src/player-store/player-store.tsx +38 -5
- package/src/streamplace-store/block.tsx +55 -13
- package/src/ui/index.ts +86 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findProblems = void 0;
|
|
4
|
+
const VARIANCE_THRESHOLD = 0.5;
|
|
5
|
+
const DURATION_THRESHOLD = 5000000000; // 5s in ns
|
|
6
|
+
const detectVariableSegmentLength = (segments) => {
|
|
7
|
+
if (segments.length < 3) {
|
|
8
|
+
// Need at least 3 segments to detect variability
|
|
9
|
+
return { variable: false, duration: false };
|
|
10
|
+
}
|
|
11
|
+
const durations = segments
|
|
12
|
+
.map((segment) => segment.duration)
|
|
13
|
+
.filter((duration) => duration !== undefined && duration > 0);
|
|
14
|
+
if (durations.length < 3) {
|
|
15
|
+
return { variable: false, duration: false };
|
|
16
|
+
}
|
|
17
|
+
// Calculate mean
|
|
18
|
+
const mean = durations.reduce((sum, duration) => sum + duration, 0) /
|
|
19
|
+
durations.length;
|
|
20
|
+
// Calculate standard deviation
|
|
21
|
+
const variance = durations.reduce((sum, duration) => {
|
|
22
|
+
const diff = duration - mean;
|
|
23
|
+
return sum + diff * diff;
|
|
24
|
+
}, 0) / durations.length;
|
|
25
|
+
const stdDev = Math.sqrt(variance);
|
|
26
|
+
// Calculate coefficient of variation (CV)
|
|
27
|
+
const cv = stdDev / mean;
|
|
28
|
+
// CV > 0.5 indicates high variability
|
|
29
|
+
// This threshold can be adjusted based on testing
|
|
30
|
+
return {
|
|
31
|
+
variable: cv > VARIANCE_THRESHOLD,
|
|
32
|
+
duration: mean > DURATION_THRESHOLD,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
const findProblems = (segments) => {
|
|
36
|
+
const problems = [];
|
|
37
|
+
let hasBFrames = false;
|
|
38
|
+
for (const segment of segments) {
|
|
39
|
+
const video = segment.video?.[0];
|
|
40
|
+
if (!video) {
|
|
41
|
+
// i mean yes this is a problem but it can't happen yet
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
if (video.bframes === true) {
|
|
45
|
+
hasBFrames = true;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (hasBFrames) {
|
|
50
|
+
problems.push({
|
|
51
|
+
code: "bframes",
|
|
52
|
+
message: "Your stream contains B-Frames, which are not supported in Streamplace. Your stream will stutter.",
|
|
53
|
+
severity: "error",
|
|
54
|
+
link: "https://stream.place/docs/guides/start-streaming/obs/#obs-configuration",
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
const { variable, duration } = detectVariableSegmentLength(segments);
|
|
58
|
+
if (variable) {
|
|
59
|
+
problems.push({
|
|
60
|
+
code: "variable_segment_length",
|
|
61
|
+
message: "Your stream contains variable segment lengths, which may cause playback issues.",
|
|
62
|
+
severity: "warning",
|
|
63
|
+
link: "https://stream.place/docs/guides/start-streaming/obs/#obs-configuration",
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (duration) {
|
|
67
|
+
problems.push({
|
|
68
|
+
code: "long_segments",
|
|
69
|
+
message: "Your stream contains long segments (>5s). This will work fine, but increases the delay of the livestream.",
|
|
70
|
+
severity: "warning",
|
|
71
|
+
link: "https://stream.place/docs/guides/start-streaming/obs/#obs-configuration",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return problems;
|
|
75
|
+
};
|
|
76
|
+
exports.findProblems = findProblems;
|
|
@@ -3,13 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.handleWebSocketMessages = void 0;
|
|
4
4
|
const api_1 = require("@atproto/api");
|
|
5
5
|
const streamplace_1 = require("streamplace");
|
|
6
|
+
const system_messages_1 = require("../lib/system-messages");
|
|
6
7
|
const chat_1 = require("./chat");
|
|
8
|
+
const problems_1 = require("./problems");
|
|
9
|
+
const MAX_RECENT_SEGMENTS = 10;
|
|
7
10
|
const handleWebSocketMessages = (state, messages) => {
|
|
8
11
|
for (const message of messages) {
|
|
9
12
|
if (streamplace_1.PlaceStreamLivestream.isLivestreamView(message)) {
|
|
13
|
+
const newLivestream = message;
|
|
14
|
+
const oldLivestream = state.livestream;
|
|
15
|
+
// check if this is actually new
|
|
16
|
+
if (!oldLivestream || oldLivestream.uri !== newLivestream.uri) {
|
|
17
|
+
const streamTitle = newLivestream.record.title || "something cool!";
|
|
18
|
+
const systemMessage = system_messages_1.SystemMessages.streamStart(streamTitle);
|
|
19
|
+
// set proper times
|
|
20
|
+
systemMessage.indexedAt = newLivestream.indexedAt;
|
|
21
|
+
systemMessage.record.createdAt = newLivestream.record.createdAt;
|
|
22
|
+
state = (0, chat_1.reduceChat)(state, [systemMessage], []);
|
|
23
|
+
}
|
|
10
24
|
state = {
|
|
11
25
|
...state,
|
|
12
|
-
livestream:
|
|
26
|
+
livestream: newLivestream,
|
|
13
27
|
};
|
|
14
28
|
}
|
|
15
29
|
else if (streamplace_1.PlaceStreamLivestream.isViewerCount(message)) {
|
|
@@ -28,18 +42,26 @@ const handleWebSocketMessages = (state, messages) => {
|
|
|
28
42
|
indexedAt: message.indexedAt,
|
|
29
43
|
chatProfile: message.chatProfile,
|
|
30
44
|
replyTo: message.replyTo,
|
|
45
|
+
deleted: message.deleted,
|
|
31
46
|
};
|
|
32
|
-
state = (0, chat_1.reduceChat)(state, [hydrated], []);
|
|
47
|
+
state = (0, chat_1.reduceChat)(state, [hydrated], [], []);
|
|
33
48
|
}
|
|
34
49
|
else if (streamplace_1.PlaceStreamSegment.isRecord(message)) {
|
|
50
|
+
const newRecentSegments = [...state.recentSegments];
|
|
51
|
+
newRecentSegments.unshift(message);
|
|
52
|
+
if (newRecentSegments.length > MAX_RECENT_SEGMENTS) {
|
|
53
|
+
newRecentSegments.pop();
|
|
54
|
+
}
|
|
35
55
|
state = {
|
|
36
56
|
...state,
|
|
37
57
|
segment: message,
|
|
58
|
+
recentSegments: newRecentSegments,
|
|
59
|
+
problems: (0, problems_1.findProblems)(newRecentSegments),
|
|
38
60
|
};
|
|
39
61
|
}
|
|
40
62
|
else if (streamplace_1.PlaceStreamDefs.isBlockView(message)) {
|
|
41
63
|
const block = message;
|
|
42
|
-
state = (0, chat_1.reduceChat)(state, [], [block]);
|
|
64
|
+
state = (0, chat_1.reduceChat)(state, [], [block], []);
|
|
43
65
|
}
|
|
44
66
|
else if (streamplace_1.PlaceStreamDefs.isRenditions(message)) {
|
|
45
67
|
state = {
|
|
@@ -53,7 +75,20 @@ const handleWebSocketMessages = (state, messages) => {
|
|
|
53
75
|
profile: message,
|
|
54
76
|
};
|
|
55
77
|
}
|
|
78
|
+
else if (streamplace_1.PlaceStreamChatGate.isRecord(message)) {
|
|
79
|
+
const hideRecord = message;
|
|
80
|
+
const hiddenMessageUri = hideRecord.hiddenMessage;
|
|
81
|
+
const newPendingHides = [...state.pendingHides];
|
|
82
|
+
if (!newPendingHides.includes(hiddenMessageUri)) {
|
|
83
|
+
newPendingHides.push(hiddenMessageUri);
|
|
84
|
+
}
|
|
85
|
+
state = {
|
|
86
|
+
...state,
|
|
87
|
+
pendingHides: newPendingHides,
|
|
88
|
+
};
|
|
89
|
+
state = (0, chat_1.reduceChat)(state, [], [], [hiddenMessageUri]);
|
|
90
|
+
}
|
|
56
91
|
}
|
|
57
|
-
return (0, chat_1.reduceChat)(state, [], []);
|
|
92
|
+
return (0, chat_1.reduceChat)(state, [], [], []);
|
|
58
93
|
};
|
|
59
94
|
exports.handleWebSocketMessages = handleWebSocketMessages;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.intoPlayerProtocol = exports.usePlayerProtocol = exports.makePlayerStore = void 0;
|
|
3
|
+
exports.useOffline = exports.intoPlayerProtocol = exports.usePlayerProtocol = exports.makePlayerStore = void 0;
|
|
4
4
|
exports.usePlayerContext = usePlayerContext;
|
|
5
5
|
exports.getPlayerStoreById = getPlayerStoreById;
|
|
6
6
|
exports.getFirstPlayerID = getFirstPlayerID;
|
|
@@ -8,6 +8,7 @@ exports.getPlayerStoreFromContext = getPlayerStoreFromContext;
|
|
|
8
8
|
exports.usePlayerStore = usePlayerStore;
|
|
9
9
|
const react_1 = require("react");
|
|
10
10
|
const zustand_1 = require("zustand");
|
|
11
|
+
const livestream_store_1 = require("../livestream-store");
|
|
11
12
|
const context_1 = require("./context");
|
|
12
13
|
const player_state_1 = require("./player-state");
|
|
13
14
|
const makePlayerStore = (id) => {
|
|
@@ -41,8 +42,6 @@ const makePlayerStore = (id) => {
|
|
|
41
42
|
setStatus: (status) => set(() => ({ status })),
|
|
42
43
|
playTime: 0,
|
|
43
44
|
setPlayTime: (playTime) => set(() => ({ playTime })),
|
|
44
|
-
offline: false,
|
|
45
|
-
setOffline: (offline) => set(() => ({ offline })),
|
|
46
45
|
videoRef: undefined,
|
|
47
46
|
setVideoRef: (videoRef) => set(() => ({ videoRef })),
|
|
48
47
|
pipMode: false,
|
|
@@ -68,6 +67,8 @@ const makePlayerStore = (id) => {
|
|
|
68
67
|
setTelemetry: (telemetry) => set(() => ({ telemetry })),
|
|
69
68
|
ingestLive: false,
|
|
70
69
|
setIngestLive: (ingestLive) => set(() => ({ ingestLive })),
|
|
70
|
+
reportingURL: null,
|
|
71
|
+
setReportingURL: (reportingURL) => set(() => ({ reportingURL })),
|
|
71
72
|
playerEvent: async (url, time, eventType, meta) => set((x) => {
|
|
72
73
|
const data = {
|
|
73
74
|
time: time,
|
|
@@ -79,7 +80,8 @@ const makePlayerStore = (id) => {
|
|
|
79
80
|
};
|
|
80
81
|
try {
|
|
81
82
|
// fetch url from sp provider
|
|
82
|
-
|
|
83
|
+
const reportingURL = x.reportingURL ?? `${url}/api/player-event`;
|
|
84
|
+
fetch(reportingURL, {
|
|
83
85
|
method: "POST",
|
|
84
86
|
body: JSON.stringify(data),
|
|
85
87
|
});
|
|
@@ -109,6 +111,10 @@ const makePlayerStore = (id) => {
|
|
|
109
111
|
setShowDebugInfo: (showDebugInfo) => set(() => ({ showDebugInfo })),
|
|
110
112
|
modMessage: null,
|
|
111
113
|
setModMessage: (modMessage) => set(() => ({ modMessage })),
|
|
114
|
+
reportModalOpen: false,
|
|
115
|
+
setReportModalOpen: (reportModalOpen) => set(() => ({ reportModalOpen })),
|
|
116
|
+
reportSubject: null,
|
|
117
|
+
setReportSubject: (subject) => set(() => ({ reportSubject: subject })),
|
|
112
118
|
}));
|
|
113
119
|
};
|
|
114
120
|
exports.makePlayerStore = makePlayerStore;
|
|
@@ -171,3 +177,23 @@ const intoPlayerProtocol = (protocol) => {
|
|
|
171
177
|
}
|
|
172
178
|
};
|
|
173
179
|
exports.intoPlayerProtocol = intoPlayerProtocol;
|
|
180
|
+
// returns true if the livestream has been offline for more than 10 seconds and we're not playing
|
|
181
|
+
const useOffline = () => {
|
|
182
|
+
const status = usePlayerStore((x) => x.status);
|
|
183
|
+
const segment = (0, livestream_store_1.useLivestreamStore)((x) => x.segment);
|
|
184
|
+
const [now, setNow] = (0, react_1.useState)(Date.now());
|
|
185
|
+
(0, react_1.useEffect)(() => {
|
|
186
|
+
const interval = setInterval(() => {
|
|
187
|
+
setNow(Date.now());
|
|
188
|
+
}, 500);
|
|
189
|
+
return () => clearInterval(interval);
|
|
190
|
+
}, []);
|
|
191
|
+
if (status === player_state_1.PlayerStatus.PLAYING) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
if (!segment?.startTime) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
return now - Date.parse(segment.startTime) > 10000;
|
|
198
|
+
};
|
|
199
|
+
exports.useOffline = useOffline;
|
|
@@ -1,26 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.useCreateBlockRecord = useCreateBlockRecord;
|
|
4
|
+
exports.useCreateHideChatRecord = useCreateHideChatRecord;
|
|
5
|
+
const react_1 = require("react");
|
|
4
6
|
const xrpc_1 = require("./xrpc");
|
|
5
7
|
function useCreateBlockRecord() {
|
|
6
8
|
let agent = (0, xrpc_1.usePDSAgent)();
|
|
7
|
-
|
|
9
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
10
|
+
const createBlock = async (subjectDID) => {
|
|
8
11
|
if (!agent) {
|
|
9
12
|
throw new Error("No PDS agent found");
|
|
10
13
|
}
|
|
11
14
|
if (!agent.did) {
|
|
12
15
|
throw new Error("No user DID found, assuming not logged in");
|
|
13
16
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
17
|
+
setIsLoading(true);
|
|
18
|
+
try {
|
|
19
|
+
const record = {
|
|
20
|
+
$type: "app.bsky.graph.block",
|
|
21
|
+
subject: subjectDID,
|
|
22
|
+
createdAt: new Date().toISOString(),
|
|
23
|
+
};
|
|
24
|
+
const result = await agent.com.atproto.repo.createRecord({
|
|
25
|
+
repo: agent.did,
|
|
26
|
+
collection: "app.bsky.graph.block",
|
|
27
|
+
record,
|
|
28
|
+
});
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
setIsLoading(false);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
return { createBlock, isLoading };
|
|
36
|
+
}
|
|
37
|
+
function useCreateHideChatRecord() {
|
|
38
|
+
let agent = (0, xrpc_1.usePDSAgent)();
|
|
39
|
+
const [isLoading, setIsLoading] = (0, react_1.useState)(false);
|
|
40
|
+
const createHideChat = async (chatMessageUri) => {
|
|
41
|
+
if (!agent) {
|
|
42
|
+
throw new Error("No PDS agent found");
|
|
43
|
+
}
|
|
44
|
+
if (!agent.did) {
|
|
45
|
+
throw new Error("No user DID found, assuming not logged in");
|
|
46
|
+
}
|
|
47
|
+
setIsLoading(true);
|
|
48
|
+
try {
|
|
49
|
+
const record = {
|
|
50
|
+
$type: "place.stream.chat.gate",
|
|
51
|
+
hiddenMessage: chatMessageUri,
|
|
52
|
+
};
|
|
53
|
+
const result = await agent.com.atproto.repo.createRecord({
|
|
54
|
+
repo: agent.did,
|
|
55
|
+
collection: "place.stream.chat.gate",
|
|
56
|
+
record,
|
|
57
|
+
});
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
finally {
|
|
61
|
+
setIsLoading(false);
|
|
62
|
+
}
|
|
25
63
|
};
|
|
64
|
+
return { createHideChat, isLoading };
|
|
26
65
|
}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @streamplace/components/ui - Streamplace ZeroCSS
|
|
4
|
+
*
|
|
5
|
+
* Clean export path for ZeroCSS styling utilities, design tokens, and atomic styles.
|
|
6
|
+
* ZeroCSS provides a zero-config, atomic styling system optimized for React Native.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.atomsNS = exports.theme = exports.useTheme = exports.usePlatformTypography = exports.lightTheme = exports.darkTheme = exports.createThemedStyles = exports.createThemeStyles = exports.createThemeIcons = exports.createThemeColors = exports.ThemeProvider = exports.responsiveValue = exports.platformStyle = exports.mergeStyles = exports.debounce = exports.typography = exports.spacing = exports.shadows = exports.colors = exports.breakpoints = exports.borderRadius = exports.w = exports.top = exports.text = exports.right = exports.r = exports.py = exports.px = exports.pt = exports.pr = exports.position = exports.pl = exports.pb = exports.p = exports.my = exports.mx = exports.mt = exports.mr = exports.ml = exports.mb = exports.m = exports.left = exports.layout = exports.h = exports.gap = exports.flex = exports.bottom = exports.borders = exports.bg = exports.atoms = void 0;
|
|
10
|
+
exports.utils = exports.tokens = void 0;
|
|
11
|
+
const tslib_1 = require("tslib");
|
|
12
|
+
// Export the most commonly used ZeroCSS utilities
|
|
13
|
+
var atoms_1 = require("../lib/theme/atoms");
|
|
14
|
+
// Core atoms object
|
|
15
|
+
Object.defineProperty(exports, "atoms", { enumerable: true, get: function () { return atoms_1.atoms; } });
|
|
16
|
+
// Common shorthand utilities
|
|
17
|
+
Object.defineProperty(exports, "bg", { enumerable: true, get: function () { return atoms_1.bg; } });
|
|
18
|
+
// Border utilities
|
|
19
|
+
Object.defineProperty(exports, "borders", { enumerable: true, get: function () { return atoms_1.borders; } });
|
|
20
|
+
Object.defineProperty(exports, "bottom", { enumerable: true, get: function () { return atoms_1.bottom; } });
|
|
21
|
+
// Flex utilities
|
|
22
|
+
Object.defineProperty(exports, "flex", { enumerable: true, get: function () { return atoms_1.flex; } });
|
|
23
|
+
// Gap utilities (React Native 0.71+)
|
|
24
|
+
Object.defineProperty(exports, "gap", { enumerable: true, get: function () { return atoms_1.gap; } });
|
|
25
|
+
Object.defineProperty(exports, "h", { enumerable: true, get: function () { return atoms_1.h; } });
|
|
26
|
+
// Layout utilities
|
|
27
|
+
Object.defineProperty(exports, "layout", { enumerable: true, get: function () { return atoms_1.layout; } });
|
|
28
|
+
Object.defineProperty(exports, "left", { enumerable: true, get: function () { return atoms_1.left; } });
|
|
29
|
+
Object.defineProperty(exports, "m", { enumerable: true, get: function () { return atoms_1.m; } });
|
|
30
|
+
Object.defineProperty(exports, "mb", { enumerable: true, get: function () { return atoms_1.mb; } });
|
|
31
|
+
Object.defineProperty(exports, "ml", { enumerable: true, get: function () { return atoms_1.ml; } });
|
|
32
|
+
Object.defineProperty(exports, "mr", { enumerable: true, get: function () { return atoms_1.mr; } });
|
|
33
|
+
Object.defineProperty(exports, "mt", { enumerable: true, get: function () { return atoms_1.mt; } });
|
|
34
|
+
Object.defineProperty(exports, "mx", { enumerable: true, get: function () { return atoms_1.mx; } });
|
|
35
|
+
Object.defineProperty(exports, "my", { enumerable: true, get: function () { return atoms_1.my; } });
|
|
36
|
+
Object.defineProperty(exports, "p", { enumerable: true, get: function () { return atoms_1.p; } });
|
|
37
|
+
Object.defineProperty(exports, "pb", { enumerable: true, get: function () { return atoms_1.pb; } });
|
|
38
|
+
Object.defineProperty(exports, "pl", { enumerable: true, get: function () { return atoms_1.pl; } });
|
|
39
|
+
// Position utilities
|
|
40
|
+
Object.defineProperty(exports, "position", { enumerable: true, get: function () { return atoms_1.position; } });
|
|
41
|
+
Object.defineProperty(exports, "pr", { enumerable: true, get: function () { return atoms_1.pr; } });
|
|
42
|
+
Object.defineProperty(exports, "pt", { enumerable: true, get: function () { return atoms_1.pt; } });
|
|
43
|
+
Object.defineProperty(exports, "px", { enumerable: true, get: function () { return atoms_1.px; } });
|
|
44
|
+
Object.defineProperty(exports, "py", { enumerable: true, get: function () { return atoms_1.py; } });
|
|
45
|
+
Object.defineProperty(exports, "r", { enumerable: true, get: function () { return atoms_1.r; } });
|
|
46
|
+
Object.defineProperty(exports, "right", { enumerable: true, get: function () { return atoms_1.right; } });
|
|
47
|
+
Object.defineProperty(exports, "text", { enumerable: true, get: function () { return atoms_1.text; } });
|
|
48
|
+
Object.defineProperty(exports, "top", { enumerable: true, get: function () { return atoms_1.top; } });
|
|
49
|
+
Object.defineProperty(exports, "w", { enumerable: true, get: function () { return atoms_1.w; } });
|
|
50
|
+
// Export ZeroCSS design tokens
|
|
51
|
+
var tokens_1 = require("../lib/theme/tokens");
|
|
52
|
+
Object.defineProperty(exports, "borderRadius", { enumerable: true, get: function () { return tokens_1.borderRadius; } });
|
|
53
|
+
Object.defineProperty(exports, "breakpoints", { enumerable: true, get: function () { return tokens_1.breakpoints; } });
|
|
54
|
+
Object.defineProperty(exports, "colors", { enumerable: true, get: function () { return tokens_1.colors; } });
|
|
55
|
+
Object.defineProperty(exports, "shadows", { enumerable: true, get: function () { return tokens_1.shadows; } });
|
|
56
|
+
Object.defineProperty(exports, "spacing", { enumerable: true, get: function () { return tokens_1.spacing; } });
|
|
57
|
+
Object.defineProperty(exports, "typography", { enumerable: true, get: function () { return tokens_1.typography; } });
|
|
58
|
+
// Export ZeroCSS utility functions
|
|
59
|
+
var utils_1 = require("../lib/utils");
|
|
60
|
+
Object.defineProperty(exports, "debounce", { enumerable: true, get: function () { return utils_1.debounce; } });
|
|
61
|
+
Object.defineProperty(exports, "mergeStyles", { enumerable: true, get: function () { return utils_1.mergeStyles; } });
|
|
62
|
+
Object.defineProperty(exports, "platformStyle", { enumerable: true, get: function () { return utils_1.platformStyle; } });
|
|
63
|
+
Object.defineProperty(exports, "responsiveValue", { enumerable: true, get: function () { return utils_1.responsiveValue; } });
|
|
64
|
+
// Export ZeroCSS theme system
|
|
65
|
+
var theme_1 = require("../lib/theme/theme");
|
|
66
|
+
Object.defineProperty(exports, "ThemeProvider", { enumerable: true, get: function () { return theme_1.ThemeProvider; } });
|
|
67
|
+
Object.defineProperty(exports, "createThemeColors", { enumerable: true, get: function () { return theme_1.createThemeColors; } });
|
|
68
|
+
Object.defineProperty(exports, "createThemeIcons", { enumerable: true, get: function () { return theme_1.createThemeIcons; } });
|
|
69
|
+
Object.defineProperty(exports, "createThemeStyles", { enumerable: true, get: function () { return theme_1.createThemeStyles; } });
|
|
70
|
+
Object.defineProperty(exports, "createThemedStyles", { enumerable: true, get: function () { return theme_1.createThemedStyles; } });
|
|
71
|
+
Object.defineProperty(exports, "darkTheme", { enumerable: true, get: function () { return theme_1.darkTheme; } });
|
|
72
|
+
Object.defineProperty(exports, "lightTheme", { enumerable: true, get: function () { return theme_1.lightTheme; } });
|
|
73
|
+
Object.defineProperty(exports, "usePlatformTypography", { enumerable: true, get: function () { return theme_1.usePlatformTypography; } });
|
|
74
|
+
Object.defineProperty(exports, "useTheme", { enumerable: true, get: function () { return theme_1.useTheme; } });
|
|
75
|
+
// Namespace exports for power users
|
|
76
|
+
exports.theme = tslib_1.__importStar(require("../lib/theme"));
|
|
77
|
+
exports.atomsNS = tslib_1.__importStar(require("../lib/theme/atoms"));
|
|
78
|
+
exports.tokens = tslib_1.__importStar(require("../lib/theme/tokens"));
|
|
79
|
+
exports.utils = tslib_1.__importStar(require("../lib/utils"));
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamplace/components",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.7",
|
|
4
4
|
"description": "Streamplace React (Native) Components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "src/index.tsx",
|
|
@@ -28,11 +28,14 @@
|
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@atproto/api": "^0.15.7",
|
|
30
30
|
"@atproto/crypto": "^0.4.4",
|
|
31
|
+
"@emoji-mart/react": "^1.1.1",
|
|
31
32
|
"@gorhom/bottom-sheet": "^5.1.6",
|
|
32
33
|
"@react-navigation/native": "^6.1.18",
|
|
33
34
|
"@rn-primitives/dropdown-menu": "^1.2.0",
|
|
34
35
|
"@rn-primitives/portal": "^1.3.0",
|
|
36
|
+
"@rn-primitives/slider": "^1.2.0",
|
|
35
37
|
"class-variance-authority": "^0.6.1",
|
|
38
|
+
"expo-keep-awake": "~14.1.4",
|
|
36
39
|
"expo-video": "~2.2.1",
|
|
37
40
|
"hls.js": "^1.5.17",
|
|
38
41
|
"lucide-react-native": "^0.514.0",
|
|
@@ -41,6 +44,7 @@
|
|
|
41
44
|
"react-native-gesture-handler": "~2.26.0",
|
|
42
45
|
"react-native-reanimated": "~3.18.0",
|
|
43
46
|
"react-native-safe-area-context": "5.4.1",
|
|
47
|
+
"react-native-svg": "15.12.0",
|
|
44
48
|
"react-native-webrtc": "git+https://github.com/streamplace/react-native-webrtc.git#6b8472a771ac47f89217d327058a8a4124a6ae56",
|
|
45
49
|
"react-use-websocket": "^4.13.0",
|
|
46
50
|
"streamplace": "0.7.2",
|
|
@@ -50,5 +54,5 @@
|
|
|
50
54
|
"peerDependencies": {
|
|
51
55
|
"react": "*"
|
|
52
56
|
},
|
|
53
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "8c2cad31c840efeda8aa7f797f91dddbedb95397"
|
|
54
58
|
}
|