@vibes.diy/use-vibes-base 0.12.15-dev05 → 0.12.15-dev07
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/index.d.ts +18 -11
- package/index.js +126 -20
- package/index.js.map +1 -1
- package/package.json +4 -4
- package/vibe-app-mount.d.ts +12 -0
- package/vibe-app-mount.js +116 -0
- package/vibe-app-mount.js.map +1 -0
- package/stories/VibeControlMount.stories.d.ts +0 -14
- package/stories/VibeControlMount.stories.js +0 -182
- package/stories/VibeControlMount.stories.js.map +0 -1
- package/vibe-auth-wall.d.ts +0 -14
- package/vibe-auth-wall.js +0 -79
- package/vibe-auth-wall.js.map +0 -1
- package/vibe-control-mount.d.ts +0 -14
- package/vibe-control-mount.js +0 -75
- package/vibe-control-mount.js.map +0 -1
- package/vibe-hidden-menu-mount.d.ts +0 -18
- package/vibe-hidden-menu-mount.js +0 -76
- package/vibe-hidden-menu-mount.js.map +0 -1
package/index.d.ts
CHANGED
|
@@ -14,6 +14,17 @@ export declare function useFireproof(nameOrDatabase?: string | Database): {
|
|
|
14
14
|
enableSync: () => void;
|
|
15
15
|
disableSync: () => void;
|
|
16
16
|
syncEnabled: boolean | null;
|
|
17
|
+
share: (options: {
|
|
18
|
+
email: string;
|
|
19
|
+
role?: "admin" | "member" | undefined;
|
|
20
|
+
right?: "read" | "write" | undefined;
|
|
21
|
+
}) => Promise<{
|
|
22
|
+
success: any;
|
|
23
|
+
email: any;
|
|
24
|
+
role: any;
|
|
25
|
+
right: any;
|
|
26
|
+
message: any;
|
|
27
|
+
}>;
|
|
17
28
|
};
|
|
18
29
|
import { callAI } from 'call-ai';
|
|
19
30
|
export { callAI, callAI as callAi };
|
|
@@ -22,8 +33,8 @@ export { default as ImgGen } from './components/ImgGen.js';
|
|
|
22
33
|
export type { ImgGenProps } from './components/ImgGen.js';
|
|
23
34
|
export { ControlsBar } from './components/ControlsBar.js';
|
|
24
35
|
export { PromptBar } from './components/PromptBar.js';
|
|
25
|
-
export { VibesSwitch } from './components/VibesSwitch/VibesSwitch.js';
|
|
26
36
|
export { VibesButton } from './components/VibesButton/VibesButton.js';
|
|
37
|
+
export { VibesSwitch } from './components/VibesSwitch/VibesSwitch.js';
|
|
27
38
|
export { hashInput, useImageGen } from './hooks/image-gen/index.js';
|
|
28
39
|
export { defaultClasses } from './utils/style-utils.js';
|
|
29
40
|
export type { ImgGenClasses } from '@vibes.diy/use-vibes-types';
|
|
@@ -34,22 +45,18 @@ export { ImgGenModal, type ImgGenModalProps } from './components/ImgGenUtils/Img
|
|
|
34
45
|
export { ImageOverlay } from './components/ImgGenUtils/overlays/ImageOverlay.js';
|
|
35
46
|
export { addNewVersion, MODULE_STATE } from './hooks/image-gen/utils.js';
|
|
36
47
|
export type { ImageDocument, PartialImageDocument, UseImageGenOptions, UseImageGenResult, } from '@vibes.diy/use-vibes-types';
|
|
37
|
-
export { useVibes } from './hooks/vibes-gen/index.js';
|
|
38
48
|
export type { UseVibesOptions, UseVibesResult, VibeDocument } from '@vibes.diy/use-vibes-types';
|
|
49
|
+
export { useVibes } from './hooks/vibes-gen/index.js';
|
|
39
50
|
export { VibeControl } from './components/VibeControl.js';
|
|
40
51
|
export type { VibeControlProps } from './components/VibeControl.js';
|
|
41
|
-
export { mountVibeControl, mountVibeControlToBody, autoMountVibeControl, } from './vibe-control-mount.js';
|
|
42
|
-
export type { MountVibeControlOptions, MountVibeControlResult } from './vibe-control-mount.js';
|
|
43
52
|
export { HiddenMenuWrapper } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
|
|
44
53
|
export type { HiddenMenuWrapperProps } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
|
|
54
|
+
export { hiddenMenuTheme } from './components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js';
|
|
55
|
+
export { createVibeControlStyles, defaultVibeControlClasses, vibeControlTheme, } from './utils/vibe-control-styles.js';
|
|
56
|
+
export type { VibeControlClasses } from './utils/vibe-control-styles.js';
|
|
45
57
|
export { VibesPanel } from './components/VibesPanel/VibesPanel.js';
|
|
46
58
|
export type { VibesPanelProps } from './components/VibesPanel/VibesPanel.js';
|
|
47
|
-
export { mountHiddenMenuWrapper, mountHiddenMenuWrapperToBody, autoMountHiddenMenuWrapper, } from './vibe-hidden-menu-mount.js';
|
|
48
|
-
export type { MountHiddenMenuWrapperOptions, MountHiddenMenuWrapperResult, } from './vibe-hidden-menu-mount.js';
|
|
49
59
|
export { AuthWall } from './components/AuthWall/AuthWall.js';
|
|
50
60
|
export type { AuthWallProps } from './components/AuthWall/AuthWall.js';
|
|
51
|
-
export {
|
|
52
|
-
export type {
|
|
53
|
-
export { vibeControlTheme, createVibeControlStyles, defaultVibeControlClasses, } from './utils/vibe-control-styles.js';
|
|
54
|
-
export type { VibeControlClasses } from './utils/vibe-control-styles.js';
|
|
55
|
-
export { hiddenMenuTheme } from './components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js';
|
|
61
|
+
export { mountVibesApp, mountVibesAppToBody } from './vibe-app-mount.js';
|
|
62
|
+
export type { MountVibesAppOptions, MountVibesAppResult } from './vibe-app-mount.js';
|
package/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
2
|
import { fireproof, ImgFile, toCloud as originalToCloud, useFireproof as originalUseFireproof, } from 'use-fireproof';
|
|
3
3
|
import { ManualRedirectStrategy } from './ManualRedirectStrategy.js';
|
|
4
4
|
const syncEnabledInstances = new Map();
|
|
5
|
+
let instanceCounter = 0;
|
|
5
6
|
function updateBodyClass() {
|
|
6
7
|
if (typeof window === 'undefined' || !document?.body)
|
|
7
8
|
return;
|
|
@@ -25,7 +26,10 @@ export function toCloud(opts) {
|
|
|
25
26
|
return attachable;
|
|
26
27
|
}
|
|
27
28
|
export function useFireproof(nameOrDatabase) {
|
|
28
|
-
|
|
29
|
+
console.log('[useFireproof] Enhanced hook called with:', nameOrDatabase);
|
|
30
|
+
console.log('[useFireproof] Import source detection - enhanced version is active');
|
|
31
|
+
const instanceId = `instance-${++instanceCounter}`;
|
|
32
|
+
console.log('[useFireproof] Hook instance ID:', instanceId);
|
|
29
33
|
const dbName = typeof nameOrDatabase === 'string' ? nameOrDatabase : nameOrDatabase?.name || 'default';
|
|
30
34
|
const syncKey = `fireproof-sync-${dbName}`;
|
|
31
35
|
const wasSyncEnabled = typeof window !== 'undefined' && localStorage.getItem(syncKey) === 'true';
|
|
@@ -62,18 +66,6 @@ export function useFireproof(nameOrDatabase) {
|
|
|
62
66
|
}
|
|
63
67
|
}, 100);
|
|
64
68
|
}, [wasSyncEnabled, manualAttach]);
|
|
65
|
-
useEffect(() => {
|
|
66
|
-
const button = document.getElementById('vibes-login-link');
|
|
67
|
-
if (!button)
|
|
68
|
-
return;
|
|
69
|
-
const handleClick = () => {
|
|
70
|
-
enableSync();
|
|
71
|
-
};
|
|
72
|
-
button.addEventListener('click', handleClick);
|
|
73
|
-
return () => {
|
|
74
|
-
button.removeEventListener('click', handleClick);
|
|
75
|
-
};
|
|
76
|
-
}, [enableSync]);
|
|
77
69
|
const disableSync = useCallback(() => {
|
|
78
70
|
localStorage.removeItem(syncKey);
|
|
79
71
|
if (result.attach?.ctx?.tokenAndClaims?.state === 'ready' &&
|
|
@@ -85,6 +77,121 @@ export function useFireproof(nameOrDatabase) {
|
|
|
85
77
|
const syncEnabled = (wasSyncEnabled &&
|
|
86
78
|
(result.attach?.state === 'attached' || result.attach?.state === 'attaching')) ||
|
|
87
79
|
(manualAttach && typeof manualAttach === 'object' && manualAttach.state === 'attached');
|
|
80
|
+
const share = useCallback(async (options) => {
|
|
81
|
+
console.log('[useFireproof] Share function called with:', options);
|
|
82
|
+
const attach = result.attach || manualAttach;
|
|
83
|
+
console.log('[useFireproof] Attachment context:', {
|
|
84
|
+
'result.attach': result.attach?.state,
|
|
85
|
+
manualAttach: typeof manualAttach === 'object' && manualAttach ? manualAttach.state : manualAttach,
|
|
86
|
+
'final attach': attach && typeof attach === 'object' && 'state' in attach ? attach.state : 'no-state',
|
|
87
|
+
});
|
|
88
|
+
if (!attach ||
|
|
89
|
+
typeof attach === 'string' ||
|
|
90
|
+
!('ctx' in attach) ||
|
|
91
|
+
!attach.ctx?.tokenAndClaims ||
|
|
92
|
+
attach.ctx.tokenAndClaims.state !== 'ready') {
|
|
93
|
+
throw new Error('Authentication required. Please enable sync first.');
|
|
94
|
+
}
|
|
95
|
+
const readyState = attach.ctx.tokenAndClaims;
|
|
96
|
+
const tokenData = readyState.tokenAndClaims;
|
|
97
|
+
const auth = {
|
|
98
|
+
type: 'clerk',
|
|
99
|
+
token: tokenData.token,
|
|
100
|
+
};
|
|
101
|
+
const apiUrl = 'https://connect.fireproof.direct/api';
|
|
102
|
+
const response = await fetch(apiUrl, {
|
|
103
|
+
method: 'PUT',
|
|
104
|
+
headers: {
|
|
105
|
+
'Content-Type': 'application/json',
|
|
106
|
+
Accept: 'application/json',
|
|
107
|
+
},
|
|
108
|
+
body: JSON.stringify({
|
|
109
|
+
type: 'reqShareWithUser',
|
|
110
|
+
auth: auth,
|
|
111
|
+
email: options.email,
|
|
112
|
+
role: options.role || 'member',
|
|
113
|
+
right: options.right || 'read',
|
|
114
|
+
}),
|
|
115
|
+
});
|
|
116
|
+
if (!response.ok) {
|
|
117
|
+
const errorText = await response.text();
|
|
118
|
+
throw new Error(`Share failed: HTTP ${response.status} ${response.statusText}: ${errorText}`);
|
|
119
|
+
}
|
|
120
|
+
const shareData = await response.json();
|
|
121
|
+
return {
|
|
122
|
+
success: shareData.success,
|
|
123
|
+
email: shareData.email,
|
|
124
|
+
role: shareData.role,
|
|
125
|
+
right: shareData.right,
|
|
126
|
+
message: shareData.message || 'User added to ledger successfully',
|
|
127
|
+
};
|
|
128
|
+
}, [dbName, result.attach, manualAttach]);
|
|
129
|
+
useEffect(() => {
|
|
130
|
+
if (typeof window === 'undefined')
|
|
131
|
+
return;
|
|
132
|
+
console.log('[useFireproof] Setting up vibes-share-request event listener');
|
|
133
|
+
const handleShareRequest = async (event) => {
|
|
134
|
+
console.log('[useFireproof] Received vibes-share-request event:', event);
|
|
135
|
+
const customEvent = event;
|
|
136
|
+
const { email, role = 'member', right = 'read' } = customEvent.detail || {};
|
|
137
|
+
console.log('[useFireproof] Share request details:', { email, role, right });
|
|
138
|
+
if (!email) {
|
|
139
|
+
const error = new Error('vibes-share-request requires email in event detail');
|
|
140
|
+
console.error(error.message);
|
|
141
|
+
document.dispatchEvent(new CustomEvent('vibes-share-error', {
|
|
142
|
+
detail: { error, originalEvent: event },
|
|
143
|
+
bubbles: true,
|
|
144
|
+
}));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
console.log('[useFireproof] Calling share function with:', { email, role, right });
|
|
149
|
+
const result = await share({ email, role, right });
|
|
150
|
+
console.log('[useFireproof] Share function completed successfully:', result);
|
|
151
|
+
document.dispatchEvent(new CustomEvent('vibes-share-success', {
|
|
152
|
+
detail: { ...result, originalEvent: event },
|
|
153
|
+
bubbles: true,
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
console.error('[useFireproof] Share function failed:', error);
|
|
158
|
+
document.dispatchEvent(new CustomEvent('vibes-share-error', {
|
|
159
|
+
detail: { error, originalEvent: event },
|
|
160
|
+
bubbles: true,
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
document.addEventListener('vibes-share-request', handleShareRequest);
|
|
165
|
+
return () => {
|
|
166
|
+
document.removeEventListener('vibes-share-request', handleShareRequest);
|
|
167
|
+
};
|
|
168
|
+
}, [share]);
|
|
169
|
+
useEffect(() => {
|
|
170
|
+
if (typeof window === 'undefined')
|
|
171
|
+
return;
|
|
172
|
+
console.log('[useFireproof] Setting up vibes-sync-enable event listener');
|
|
173
|
+
const handleSyncEnable = () => {
|
|
174
|
+
console.log('[useFireproof] Received vibes-sync-enable event');
|
|
175
|
+
enableSync();
|
|
176
|
+
};
|
|
177
|
+
document.addEventListener('vibes-sync-enable', handleSyncEnable);
|
|
178
|
+
return () => {
|
|
179
|
+
document.removeEventListener('vibes-sync-enable', handleSyncEnable);
|
|
180
|
+
};
|
|
181
|
+
}, [enableSync]);
|
|
182
|
+
useEffect(() => {
|
|
183
|
+
if (typeof window === 'undefined')
|
|
184
|
+
return;
|
|
185
|
+
console.log('[useFireproof] Setting up vibes-sync-disable event listener');
|
|
186
|
+
const handleSyncDisable = () => {
|
|
187
|
+
console.log('[useFireproof] Received vibes-sync-disable event');
|
|
188
|
+
disableSync();
|
|
189
|
+
};
|
|
190
|
+
document.addEventListener('vibes-sync-disable', handleSyncDisable);
|
|
191
|
+
return () => {
|
|
192
|
+
document.removeEventListener('vibes-sync-disable', handleSyncDisable);
|
|
193
|
+
};
|
|
194
|
+
}, [disableSync]);
|
|
88
195
|
useEffect(() => {
|
|
89
196
|
if (typeof window === 'undefined')
|
|
90
197
|
return;
|
|
@@ -118,6 +225,7 @@ export function useFireproof(nameOrDatabase) {
|
|
|
118
225
|
enableSync,
|
|
119
226
|
disableSync,
|
|
120
227
|
syncEnabled,
|
|
228
|
+
share,
|
|
121
229
|
};
|
|
122
230
|
}
|
|
123
231
|
import { callAI } from 'call-ai';
|
|
@@ -125,8 +233,8 @@ export { callAI, callAI as callAi };
|
|
|
125
233
|
export { default as ImgGen } from './components/ImgGen.js';
|
|
126
234
|
export { ControlsBar } from './components/ControlsBar.js';
|
|
127
235
|
export { PromptBar } from './components/PromptBar.js';
|
|
128
|
-
export { VibesSwitch } from './components/VibesSwitch/VibesSwitch.js';
|
|
129
236
|
export { VibesButton } from './components/VibesButton/VibesButton.js';
|
|
237
|
+
export { VibesSwitch } from './components/VibesSwitch/VibesSwitch.js';
|
|
130
238
|
export { hashInput, useImageGen } from './hooks/image-gen/index.js';
|
|
131
239
|
export { defaultClasses } from './utils/style-utils.js';
|
|
132
240
|
export { base64ToFile } from './utils/base64.js';
|
|
@@ -137,12 +245,10 @@ export { ImageOverlay } from './components/ImgGenUtils/overlays/ImageOverlay.js'
|
|
|
137
245
|
export { addNewVersion, MODULE_STATE } from './hooks/image-gen/utils.js';
|
|
138
246
|
export { useVibes } from './hooks/vibes-gen/index.js';
|
|
139
247
|
export { VibeControl } from './components/VibeControl.js';
|
|
140
|
-
export { mountVibeControl, mountVibeControlToBody, autoMountVibeControl, } from './vibe-control-mount.js';
|
|
141
248
|
export { HiddenMenuWrapper } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
|
|
249
|
+
export { hiddenMenuTheme } from './components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js';
|
|
250
|
+
export { createVibeControlStyles, defaultVibeControlClasses, vibeControlTheme, } from './utils/vibe-control-styles.js';
|
|
142
251
|
export { VibesPanel } from './components/VibesPanel/VibesPanel.js';
|
|
143
|
-
export { mountHiddenMenuWrapper, mountHiddenMenuWrapperToBody, autoMountHiddenMenuWrapper, } from './vibe-hidden-menu-mount.js';
|
|
144
252
|
export { AuthWall } from './components/AuthWall/AuthWall.js';
|
|
145
|
-
export {
|
|
146
|
-
export { vibeControlTheme, createVibeControlStyles, defaultVibeControlClasses, } from './utils/vibe-control-styles.js';
|
|
147
|
-
export { hiddenMenuTheme } from './components/HiddenMenuWrapper/HiddenMenuWrapper.styles.js';
|
|
253
|
+
export { mountVibesApp, mountVibesAppToBody } from './vibe-app-mount.js';
|
|
148
254
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/use-vibes-base",
|
|
3
|
-
"version": "0.12.15-
|
|
3
|
+
"version": "0.12.15-dev07",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core components and utilities for use-vibes (internal workspace package)",
|
|
6
6
|
"exports": {
|
|
@@ -15,9 +15,9 @@
|
|
|
15
15
|
"@fireproof/core-runtime": "^0.23.14",
|
|
16
16
|
"@fireproof/core-types-base": "^0.23.14",
|
|
17
17
|
"@fireproof/core-types-protocols-cloud": "^0.23.14",
|
|
18
|
-
"@vibes.diy/prompts": "^0.12.15-
|
|
19
|
-
"@vibes.diy/use-vibes-types": "^0.12.15-
|
|
20
|
-
"call-ai": "^0.12.15-
|
|
18
|
+
"@vibes.diy/prompts": "^0.12.15-dev07",
|
|
19
|
+
"@vibes.diy/use-vibes-types": "^0.12.15-dev07",
|
|
20
|
+
"call-ai": "^0.12.15-dev07",
|
|
21
21
|
"react-dom": "~19.1.0",
|
|
22
22
|
"use-fireproof": "^0.23.14",
|
|
23
23
|
"uuid": "^11.1.0"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface MountVibesAppOptions {
|
|
2
|
+
readonly container?: string | HTMLElement;
|
|
3
|
+
readonly database?: string;
|
|
4
|
+
readonly title?: string;
|
|
5
|
+
readonly imageUrl?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MountVibesAppResult {
|
|
8
|
+
unmount: () => void;
|
|
9
|
+
getContainer: () => HTMLElement;
|
|
10
|
+
}
|
|
11
|
+
export declare function mountVibesApp(options?: MountVibesAppOptions): MountVibesAppResult;
|
|
12
|
+
export declare function mountVibesAppToBody(): MountVibesAppResult;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as ReactDOM from 'react-dom/client';
|
|
3
|
+
import { AuthWall } from './components/AuthWall/AuthWall.js';
|
|
4
|
+
import { useFireproof } from './index.js';
|
|
5
|
+
import { HiddenMenuWrapper } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
|
|
6
|
+
import { VibesPanel } from './components/VibesPanel/VibesPanel.js';
|
|
7
|
+
function VibesApp({ database = 'vibes-app', title = 'Vibes App', imageUrl = 'https://images.unsplash.com/photo-1506744038136-46273834b3fb?auto=format&fit=crop&w=1470&q=80', children, }) {
|
|
8
|
+
const { enableSync, syncEnabled } = useFireproof(database);
|
|
9
|
+
const mockLogin = typeof window !== 'undefined' &&
|
|
10
|
+
new URLSearchParams(window.location.search).get('mock_login') === 'true';
|
|
11
|
+
const [showAuthWall, setShowAuthWall] = React.useState(!syncEnabled && !mockLogin);
|
|
12
|
+
React.useEffect(() => {
|
|
13
|
+
const observer = new MutationObserver(() => {
|
|
14
|
+
const isConnected = document.body.classList.contains('vibes-connect-true');
|
|
15
|
+
setShowAuthWall(!isConnected);
|
|
16
|
+
});
|
|
17
|
+
observer.observe(document.body, {
|
|
18
|
+
attributes: true,
|
|
19
|
+
attributeFilter: ['class'],
|
|
20
|
+
});
|
|
21
|
+
return () => observer.disconnect();
|
|
22
|
+
}, []);
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
setShowAuthWall(!syncEnabled && !mockLogin);
|
|
25
|
+
}, [syncEnabled, mockLogin]);
|
|
26
|
+
const handleLogin = () => {
|
|
27
|
+
enableSync();
|
|
28
|
+
};
|
|
29
|
+
if (showAuthWall) {
|
|
30
|
+
return React.createElement(AuthWall, {
|
|
31
|
+
onLogin: handleLogin,
|
|
32
|
+
imageUrl,
|
|
33
|
+
title,
|
|
34
|
+
open: true,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return React.createElement(HiddenMenuWrapper, {
|
|
38
|
+
menuContent: React.createElement(VibesPanel),
|
|
39
|
+
children,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
export function mountVibesApp(options = {}) {
|
|
43
|
+
const { container: containerOption, database, title, imageUrl } = options;
|
|
44
|
+
let containerElement;
|
|
45
|
+
if (typeof containerOption === 'string') {
|
|
46
|
+
const found = document.querySelector(containerOption);
|
|
47
|
+
if (!found) {
|
|
48
|
+
throw new Error(`VibesApp container not found: ${containerOption}`);
|
|
49
|
+
}
|
|
50
|
+
containerElement = found;
|
|
51
|
+
}
|
|
52
|
+
else if (containerOption instanceof HTMLElement) {
|
|
53
|
+
containerElement = containerOption;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
containerElement = document.body;
|
|
57
|
+
}
|
|
58
|
+
let contentWrapper = null;
|
|
59
|
+
let originalChildren = [];
|
|
60
|
+
if (containerElement === document.body) {
|
|
61
|
+
const existingWrapper = document.getElementById('vibes-original-content');
|
|
62
|
+
if (!existingWrapper) {
|
|
63
|
+
originalChildren = Array.from(document.body.childNodes);
|
|
64
|
+
contentWrapper = document.createElement('div');
|
|
65
|
+
contentWrapper.id = 'vibes-original-content';
|
|
66
|
+
contentWrapper.style.height = '100%';
|
|
67
|
+
contentWrapper.style.width = '100%';
|
|
68
|
+
contentWrapper.style.position = 'relative';
|
|
69
|
+
originalChildren.forEach((child) => {
|
|
70
|
+
if (contentWrapper) {
|
|
71
|
+
contentWrapper.appendChild(child);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
document.body.appendChild(contentWrapper);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
contentWrapper = existingWrapper;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const root = ReactDOM.createRoot(containerElement);
|
|
81
|
+
root.render(React.createElement(VibesApp, {
|
|
82
|
+
database,
|
|
83
|
+
title,
|
|
84
|
+
imageUrl,
|
|
85
|
+
}, React.createElement('div', {
|
|
86
|
+
id: 'vibes-original-content-react',
|
|
87
|
+
dangerouslySetInnerHTML: {
|
|
88
|
+
__html: (contentWrapper || containerElement).innerHTML,
|
|
89
|
+
},
|
|
90
|
+
})));
|
|
91
|
+
return {
|
|
92
|
+
unmount: () => {
|
|
93
|
+
setTimeout(() => {
|
|
94
|
+
root.unmount();
|
|
95
|
+
if (contentWrapper && containerElement === document.body) {
|
|
96
|
+
const children = Array.from(contentWrapper.childNodes);
|
|
97
|
+
children.forEach((child) => {
|
|
98
|
+
document.body.insertBefore(child, contentWrapper);
|
|
99
|
+
});
|
|
100
|
+
contentWrapper.remove();
|
|
101
|
+
}
|
|
102
|
+
const cleanupTarget = contentWrapper || containerElement;
|
|
103
|
+
cleanupTarget.style.filter = '';
|
|
104
|
+
cleanupTarget.style.pointerEvents = '';
|
|
105
|
+
cleanupTarget.style.transform = '';
|
|
106
|
+
cleanupTarget.style.transition = '';
|
|
107
|
+
cleanupTarget.style.backgroundColor = '';
|
|
108
|
+
}, 0);
|
|
109
|
+
},
|
|
110
|
+
getContainer: () => containerElement,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
export function mountVibesAppToBody() {
|
|
114
|
+
return mountVibesApp();
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=vibe-app-mount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vibe-app-mount.js","sourceRoot":"","sources":["../jsr/vibe-app-mount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import type { MountVibeControlOptions } from '../vibe-control-mount.js';
|
|
3
|
-
declare const meta: Meta<{
|
|
4
|
-
mountType: 'container' | 'body' | 'auto';
|
|
5
|
-
options?: Partial<MountVibeControlOptions>;
|
|
6
|
-
}>;
|
|
7
|
-
export default meta;
|
|
8
|
-
type Story = StoryObj<{
|
|
9
|
-
mountType: 'container' | 'body' | 'auto';
|
|
10
|
-
options?: Partial<MountVibeControlOptions>;
|
|
11
|
-
}>;
|
|
12
|
-
export declare const MountToContainer: Story;
|
|
13
|
-
export declare const MountToBody: Story;
|
|
14
|
-
export declare const AutoMount: Story;
|
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import React, { useEffect, useRef, useState } from 'react';
|
|
2
|
-
import { mountVibeControl, mountVibeControlToBody, autoMountVibeControl, } from '../vibe-control-mount.js';
|
|
3
|
-
function MountDemo({ mountType, options = {}, }) {
|
|
4
|
-
const containerRef = useRef(null);
|
|
5
|
-
const [mounted, setMounted] = useState(false);
|
|
6
|
-
const [instance, setInstance] = useState(null);
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
if (!mounted)
|
|
9
|
-
return;
|
|
10
|
-
let control = null;
|
|
11
|
-
try {
|
|
12
|
-
switch (mountType) {
|
|
13
|
-
case 'container':
|
|
14
|
-
if (containerRef.current) {
|
|
15
|
-
control = mountVibeControl({
|
|
16
|
-
container: containerRef.current,
|
|
17
|
-
label: 'Mounted Control',
|
|
18
|
-
position: 'bottom-right',
|
|
19
|
-
onOpen: () => console.log('Container-mounted control opened'),
|
|
20
|
-
onClose: () => console.log('Container-mounted control closed'),
|
|
21
|
-
children: React.createElement('div', {}, React.createElement('h3', {}, 'Container Mount Demo'), React.createElement('p', {}, 'This VibeControl was mounted using mountVibeControl() to a specific container element.'), React.createElement('div', {
|
|
22
|
-
style: {
|
|
23
|
-
marginTop: '16px',
|
|
24
|
-
padding: '12px',
|
|
25
|
-
backgroundColor: '#e3f2fd',
|
|
26
|
-
borderRadius: '4px',
|
|
27
|
-
},
|
|
28
|
-
}, React.createElement('strong', {}, 'Benefits:'), React.createElement('ul', { style: { marginTop: '8px' } }, React.createElement('li', {}, 'Scoped to specific DOM element'), React.createElement('li', {}, 'No React dependency required'), React.createElement('li', {}, 'Dynamic prop updates supported'), React.createElement('li', {}, 'Clean unmounting')))),
|
|
29
|
-
...options,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
break;
|
|
33
|
-
case 'body':
|
|
34
|
-
control = mountVibeControlToBody({
|
|
35
|
-
label: 'Body Mount',
|
|
36
|
-
position: 'bottom-left',
|
|
37
|
-
onOpen: () => console.log('Body-mounted control opened'),
|
|
38
|
-
onClose: () => console.log('Body-mounted control closed'),
|
|
39
|
-
children: React.createElement('div', {}, React.createElement('h3', {}, 'Body Mount Demo'), React.createElement('p', {}, 'This VibeControl was mounted using mountVibeControlToBody().'), React.createElement('div', {
|
|
40
|
-
style: {
|
|
41
|
-
marginTop: '16px',
|
|
42
|
-
padding: '12px',
|
|
43
|
-
backgroundColor: '#f3e5f5',
|
|
44
|
-
borderRadius: '4px',
|
|
45
|
-
},
|
|
46
|
-
}, React.createElement('strong', {}, 'Use Cases:'), React.createElement('ul', { style: { marginTop: '8px' } }, React.createElement('li', {}, 'Global application controls'), React.createElement('li', {}, 'Site-wide settings access'), React.createElement('li', {}, 'Help/support overlay'), React.createElement('li', {}, 'User account management')))),
|
|
47
|
-
...options,
|
|
48
|
-
});
|
|
49
|
-
break;
|
|
50
|
-
case 'auto':
|
|
51
|
-
window.VIBE_CONTROL_CONFIG = {
|
|
52
|
-
label: 'Auto Mount',
|
|
53
|
-
position: 'top-right',
|
|
54
|
-
children: React.createElement('div', {}, React.createElement('h3', {}, 'Auto Mount Demo'), React.createElement('p', {}, 'This VibeControl was auto-mounted using global configuration.'), React.createElement('div', {
|
|
55
|
-
style: {
|
|
56
|
-
marginTop: '16px',
|
|
57
|
-
padding: '12px',
|
|
58
|
-
backgroundColor: '#fff3e0',
|
|
59
|
-
borderRadius: '4px',
|
|
60
|
-
},
|
|
61
|
-
}, React.createElement('strong', {}, 'Perfect for:'), React.createElement('ul', { style: { marginTop: '8px' } }, React.createElement('li', {}, 'CDN-based integration'), React.createElement('li', {}, 'No-code implementations'), React.createElement('li', {}, 'Third-party embeds'), React.createElement('li', {}, 'Quick prototyping')))),
|
|
62
|
-
...options,
|
|
63
|
-
};
|
|
64
|
-
control = autoMountVibeControl();
|
|
65
|
-
break;
|
|
66
|
-
}
|
|
67
|
-
setInstance(control);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
console.error(`Failed to mount ${mountType}:`, error);
|
|
71
|
-
}
|
|
72
|
-
return () => {
|
|
73
|
-
if (control && typeof control.unmount === 'function') {
|
|
74
|
-
control.unmount();
|
|
75
|
-
}
|
|
76
|
-
if (mountType === 'auto') {
|
|
77
|
-
delete window.VIBE_CONTROL_CONFIG;
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}, [mounted, mountType, options]);
|
|
81
|
-
const handleMount = () => setMounted(true);
|
|
82
|
-
const handleUnmount = () => {
|
|
83
|
-
if (instance && typeof instance.unmount === 'function') {
|
|
84
|
-
instance.unmount();
|
|
85
|
-
}
|
|
86
|
-
setMounted(false);
|
|
87
|
-
setInstance(null);
|
|
88
|
-
};
|
|
89
|
-
const handleUpdate = () => {
|
|
90
|
-
if (instance && typeof instance.update === 'function') {
|
|
91
|
-
instance.update({
|
|
92
|
-
label: `Updated ${Date.now()}`,
|
|
93
|
-
position: 'top-left',
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
return (React.createElement("div", { style: { padding: '20px', maxWidth: '600px' } }, React.createElement("h3", null, mountType === 'container' ? 'Container' : mountType === 'body' ? 'Body' : 'Auto', " Mount Example"), React.createElement("div", { style: { marginBottom: '16px', display: 'flex', gap: '8px', flexWrap: 'wrap' } }, React.createElement("button", { onClick: handleMount, disabled: mounted, style: {
|
|
98
|
-
padding: '8px 16px',
|
|
99
|
-
backgroundColor: mounted ? '#ccc' : '#4caf50',
|
|
100
|
-
color: 'white',
|
|
101
|
-
border: 'none',
|
|
102
|
-
borderRadius: '4px',
|
|
103
|
-
cursor: mounted ? 'not-allowed' : 'pointer',
|
|
104
|
-
} }, "Mount Control"), React.createElement("button", { onClick: handleUpdate, disabled: !mounted || !instance, style: {
|
|
105
|
-
padding: '8px 16px',
|
|
106
|
-
backgroundColor: !mounted || !instance ? '#ccc' : '#ff9800',
|
|
107
|
-
color: 'white',
|
|
108
|
-
border: 'none',
|
|
109
|
-
borderRadius: '4px',
|
|
110
|
-
cursor: !mounted || !instance ? 'not-allowed' : 'pointer',
|
|
111
|
-
} }, "Update Props"), React.createElement("button", { onClick: handleUnmount, disabled: !mounted, style: {
|
|
112
|
-
padding: '8px 16px',
|
|
113
|
-
backgroundColor: !mounted ? '#ccc' : '#f44336',
|
|
114
|
-
color: 'white',
|
|
115
|
-
border: 'none',
|
|
116
|
-
borderRadius: '4px',
|
|
117
|
-
cursor: !mounted ? 'not-allowed' : 'pointer',
|
|
118
|
-
} }, "Unmount")), mountType === 'container' && (React.createElement("div", { ref: containerRef, style: {
|
|
119
|
-
position: 'relative',
|
|
120
|
-
height: '200px',
|
|
121
|
-
border: '2px dashed #ccc',
|
|
122
|
-
borderRadius: '4px',
|
|
123
|
-
display: 'flex',
|
|
124
|
-
alignItems: 'center',
|
|
125
|
-
justifyContent: 'center',
|
|
126
|
-
backgroundColor: mounted ? '#f0f8ff' : '#fafafa',
|
|
127
|
-
} }, mounted ? (React.createElement("div", { style: { textAlign: 'center', color: '#666' } }, React.createElement("p", null, React.createElement("strong", null, "VibeControl mounted!")), React.createElement("p", null, "Look for the button in the bottom-right of this container."))) : (React.createElement("p", { style: { color: '#999', margin: 0 } }, "Click \"Mount Control\" to see the VibeControl in this container")))), mounted && (React.createElement("div", { style: {
|
|
128
|
-
marginTop: '16px',
|
|
129
|
-
padding: '12px',
|
|
130
|
-
backgroundColor: '#f0f8ff',
|
|
131
|
-
borderRadius: '4px',
|
|
132
|
-
} }, React.createElement("strong", null, "Status:"), " VibeControl is mounted and active", mountType !== 'container' && (React.createElement("p", { style: { margin: '8px 0 0 0', fontSize: '0.9em', color: '#666' } }, "Look for the floating button positioned on the", ' ', mountType === 'body' ? 'page' : 'screen'))))));
|
|
133
|
-
}
|
|
134
|
-
const meta = {
|
|
135
|
-
title: 'Components/VibeControl Mount Functions',
|
|
136
|
-
component: MountDemo,
|
|
137
|
-
parameters: {
|
|
138
|
-
layout: 'fullscreen',
|
|
139
|
-
docs: {
|
|
140
|
-
description: {
|
|
141
|
-
component: `
|
|
142
|
-
Demonstrates the mount functions for using VibeControl in non-React environments.
|
|
143
|
-
|
|
144
|
-
### Mount Functions Available
|
|
145
|
-
- **\`mountVibeControl(options)\`** - Mount to a specific DOM element
|
|
146
|
-
- **\`mountVibeControlToBody(props)\`** - Convenience function for body mounting
|
|
147
|
-
- **\`autoMountVibeControl()\`** - Auto-mount from global config (perfect for CDN usage)
|
|
148
|
-
|
|
149
|
-
### Features
|
|
150
|
-
- **Dynamic updates** - Use \`instance.update(props)\` to change properties
|
|
151
|
-
- **Clean unmounting** - Use \`instance.unmount()\` for proper cleanup
|
|
152
|
-
- **Event callbacks** - Full support for onOpen/onClose handlers
|
|
153
|
-
- **No React required** - Works in any JavaScript environment
|
|
154
|
-
`,
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
},
|
|
158
|
-
argTypes: {
|
|
159
|
-
mountType: {
|
|
160
|
-
control: { type: 'select' },
|
|
161
|
-
options: ['container', 'body', 'auto'],
|
|
162
|
-
description: 'Type of mount function to demonstrate',
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
};
|
|
166
|
-
export default meta;
|
|
167
|
-
export const MountToContainer = {
|
|
168
|
-
args: {
|
|
169
|
-
mountType: 'container',
|
|
170
|
-
},
|
|
171
|
-
};
|
|
172
|
-
export const MountToBody = {
|
|
173
|
-
args: {
|
|
174
|
-
mountType: 'body',
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
export const AutoMount = {
|
|
178
|
-
args: {
|
|
179
|
-
mountType: 'auto',
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
//# sourceMappingURL=VibeControlMount.stories.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VibeControlMount.stories.js","sourceRoot":"","sources":["../../jsr/stories/VibeControlMount.stories.tsx"],"names":[],"mappings":"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"}
|
package/vibe-auth-wall.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { AuthWallProps } from './components/AuthWall/AuthWall.js';
|
|
2
|
-
export interface MountAuthWallOptions extends AuthWallProps {
|
|
3
|
-
readonly container?: string | HTMLElement;
|
|
4
|
-
}
|
|
5
|
-
export interface MountAuthWallResult {
|
|
6
|
-
unmount: () => void;
|
|
7
|
-
update: (newProps: Partial<AuthWallProps>) => void;
|
|
8
|
-
getProps: () => AuthWallProps;
|
|
9
|
-
getContainer: () => HTMLElement;
|
|
10
|
-
}
|
|
11
|
-
export declare function mountAuthWall(options?: MountAuthWallOptions): MountAuthWallResult;
|
|
12
|
-
export declare function mountAuthWallToBody(props: AuthWallProps): MountAuthWallResult;
|
|
13
|
-
export declare function autoMountAuthWall(): MountAuthWallResult | null;
|
|
14
|
-
export default mountAuthWall;
|
package/vibe-auth-wall.js
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import * as ReactDOM from 'react-dom/client';
|
|
3
|
-
import { AuthWall } from './components/AuthWall/AuthWall.js';
|
|
4
|
-
export function mountAuthWall(options = {
|
|
5
|
-
onLogin: function () {
|
|
6
|
-
throw new Error('Function not implemented.');
|
|
7
|
-
},
|
|
8
|
-
imageUrl: '',
|
|
9
|
-
title: '',
|
|
10
|
-
open: false,
|
|
11
|
-
}) {
|
|
12
|
-
const { container: containerOption, ...authWallProps } = options;
|
|
13
|
-
let containerElement;
|
|
14
|
-
if (typeof containerOption === 'string') {
|
|
15
|
-
const el = document.querySelector(containerOption);
|
|
16
|
-
if (!el)
|
|
17
|
-
throw new Error(`AuthWall mount container not found: ${containerOption}`);
|
|
18
|
-
containerElement = el;
|
|
19
|
-
}
|
|
20
|
-
else if (containerOption instanceof HTMLElement) {
|
|
21
|
-
containerElement = containerOption;
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
containerElement = document.body;
|
|
25
|
-
}
|
|
26
|
-
const mountDiv = document.createElement('div');
|
|
27
|
-
containerElement.appendChild(mountDiv);
|
|
28
|
-
const root = ReactDOM.createRoot(mountDiv);
|
|
29
|
-
let currentProps = { ...authWallProps };
|
|
30
|
-
const render = (props) => {
|
|
31
|
-
root.render(React.createElement(AuthWall, props));
|
|
32
|
-
};
|
|
33
|
-
render(currentProps);
|
|
34
|
-
return {
|
|
35
|
-
unmount: () => {
|
|
36
|
-
root.unmount();
|
|
37
|
-
if (mountDiv.parentNode) {
|
|
38
|
-
mountDiv.parentNode.removeChild(mountDiv);
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
update: (newProps) => {
|
|
42
|
-
currentProps = { ...currentProps, ...newProps };
|
|
43
|
-
render(currentProps);
|
|
44
|
-
},
|
|
45
|
-
getProps: () => ({ ...currentProps }),
|
|
46
|
-
getContainer: () => containerElement,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
export function mountAuthWallToBody(props) {
|
|
50
|
-
return mountAuthWall({ container: document.body, ...props });
|
|
51
|
-
}
|
|
52
|
-
export function autoMountAuthWall() {
|
|
53
|
-
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
54
|
-
console.warn('AuthWall: autoMountAuthWall called in non-browser environment');
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const tryMount = () => {
|
|
58
|
-
const globalConfig = window
|
|
59
|
-
.AUTH_WALL_CONFIG;
|
|
60
|
-
if (!globalConfig) {
|
|
61
|
-
console.warn('AuthWall: No global AUTH_WALL_CONFIG found');
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
try {
|
|
65
|
-
return mountAuthWallToBody(globalConfig);
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
console.error('AuthWall: Auto-mount failed:', error);
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
if (document.readyState === 'loading') {
|
|
73
|
-
window.addEventListener('DOMContentLoaded', tryMount, { once: true });
|
|
74
|
-
return null;
|
|
75
|
-
}
|
|
76
|
-
return tryMount();
|
|
77
|
-
}
|
|
78
|
-
export default mountAuthWall;
|
|
79
|
-
//# sourceMappingURL=vibe-auth-wall.js.map
|
package/vibe-auth-wall.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-auth-wall.js","sourceRoot":"","sources":["../jsr/vibe-auth-wall.ts"],"names":[],"mappings":"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"}
|
package/vibe-control-mount.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { VibeControlProps } from './components/VibeControl.js';
|
|
2
|
-
export interface MountVibeControlOptions extends VibeControlProps {
|
|
3
|
-
readonly container?: string | HTMLElement;
|
|
4
|
-
}
|
|
5
|
-
export interface MountVibeControlResult {
|
|
6
|
-
unmount: () => void;
|
|
7
|
-
update: (newProps: Partial<VibeControlProps>) => void;
|
|
8
|
-
getProps: () => VibeControlProps;
|
|
9
|
-
getContainer: () => HTMLElement;
|
|
10
|
-
}
|
|
11
|
-
export declare function mountVibeControl(options?: MountVibeControlOptions): MountVibeControlResult;
|
|
12
|
-
export declare function mountVibeControlToBody(props?: VibeControlProps): MountVibeControlResult;
|
|
13
|
-
export declare function autoMountVibeControl(): MountVibeControlResult | null;
|
|
14
|
-
export default mountVibeControl;
|
package/vibe-control-mount.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import * as ReactDOM from 'react-dom/client';
|
|
3
|
-
import { VibeControl } from './components/VibeControl.js';
|
|
4
|
-
export function mountVibeControl(options = {}) {
|
|
5
|
-
const { container: containerOption, ...vibeControlProps } = options;
|
|
6
|
-
let containerElement;
|
|
7
|
-
if (typeof containerOption === 'string') {
|
|
8
|
-
const el = document.querySelector(containerOption);
|
|
9
|
-
if (!el) {
|
|
10
|
-
throw new Error(`VibeControl mount container not found: ${containerOption}`);
|
|
11
|
-
}
|
|
12
|
-
containerElement = el;
|
|
13
|
-
}
|
|
14
|
-
else if (containerOption instanceof HTMLElement) {
|
|
15
|
-
containerElement = containerOption;
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
containerElement = document.body;
|
|
19
|
-
}
|
|
20
|
-
const mountDiv = document.createElement('div');
|
|
21
|
-
containerElement.appendChild(mountDiv);
|
|
22
|
-
const root = ReactDOM.createRoot(mountDiv);
|
|
23
|
-
let currentProps = { ...vibeControlProps };
|
|
24
|
-
const render = (props) => {
|
|
25
|
-
root.render(React.createElement(VibeControl, props));
|
|
26
|
-
};
|
|
27
|
-
render(currentProps);
|
|
28
|
-
return {
|
|
29
|
-
unmount: () => {
|
|
30
|
-
root.unmount();
|
|
31
|
-
if (mountDiv.parentNode) {
|
|
32
|
-
mountDiv.parentNode.removeChild(mountDiv);
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
update: (newProps) => {
|
|
36
|
-
currentProps = { ...currentProps, ...newProps };
|
|
37
|
-
render(currentProps);
|
|
38
|
-
},
|
|
39
|
-
getProps: () => ({ ...currentProps }),
|
|
40
|
-
getContainer: () => containerElement,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
export function mountVibeControlToBody(props = {}) {
|
|
44
|
-
return mountVibeControl({
|
|
45
|
-
container: document.body,
|
|
46
|
-
...props,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
export function autoMountVibeControl() {
|
|
50
|
-
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
51
|
-
console.warn('VibeControl: autoMountVibeControl called in non-browser environment');
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
const tryMount = () => {
|
|
55
|
-
const globalConfig = window.VIBE_CONTROL_CONFIG;
|
|
56
|
-
if (!globalConfig) {
|
|
57
|
-
console.warn('VibeControl: No global VIBE_CONTROL_CONFIG found for auto-mount');
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
try {
|
|
61
|
-
return mountVibeControlToBody(globalConfig);
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error('VibeControl: Auto-mount failed:', error);
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
if (document.readyState === 'loading') {
|
|
69
|
-
window.addEventListener('DOMContentLoaded', tryMount, { once: true });
|
|
70
|
-
return null;
|
|
71
|
-
}
|
|
72
|
-
return tryMount();
|
|
73
|
-
}
|
|
74
|
-
export default mountVibeControl;
|
|
75
|
-
//# sourceMappingURL=vibe-control-mount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-control-mount.js","sourceRoot":"","sources":["../jsr/vibe-control-mount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { HiddenMenuWrapperProps } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
|
|
2
|
-
declare global {
|
|
3
|
-
interface Window {
|
|
4
|
-
HIDDEN_MENU_WRAPPER_CONFIG?: HiddenMenuWrapperProps;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
export interface MountHiddenMenuWrapperOptions extends HiddenMenuWrapperProps {
|
|
8
|
-
readonly container?: string | HTMLElement;
|
|
9
|
-
}
|
|
10
|
-
export interface MountHiddenMenuWrapperResult {
|
|
11
|
-
unmount: () => void;
|
|
12
|
-
update: (newProps: Partial<HiddenMenuWrapperProps>) => void;
|
|
13
|
-
getProps: () => HiddenMenuWrapperProps;
|
|
14
|
-
getContainer: () => HTMLElement;
|
|
15
|
-
}
|
|
16
|
-
export declare function mountHiddenMenuWrapper(options?: MountHiddenMenuWrapperOptions): MountHiddenMenuWrapperResult;
|
|
17
|
-
export declare function mountHiddenMenuWrapperToBody(props?: HiddenMenuWrapperProps): MountHiddenMenuWrapperResult;
|
|
18
|
-
export declare function autoMountHiddenMenuWrapper(): MountHiddenMenuWrapperResult | null;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import * as ReactDOM from 'react-dom/client';
|
|
3
|
-
import { HiddenMenuWrapper, } from './components/HiddenMenuWrapper/HiddenMenuWrapper.js';
|
|
4
|
-
import { VibesPanel } from './components/VibesPanel/VibesPanel.js';
|
|
5
|
-
export function mountHiddenMenuWrapper(options = {
|
|
6
|
-
children: undefined,
|
|
7
|
-
menuContent: undefined,
|
|
8
|
-
}) {
|
|
9
|
-
const { container: containerOption, ...initialProps } = options;
|
|
10
|
-
let containerElement;
|
|
11
|
-
if (typeof containerOption === 'string') {
|
|
12
|
-
const found = document.querySelector(containerOption);
|
|
13
|
-
if (!found) {
|
|
14
|
-
throw new Error(`HiddenMenuWrapper container not found: ${containerOption}`);
|
|
15
|
-
}
|
|
16
|
-
containerElement = found;
|
|
17
|
-
}
|
|
18
|
-
else if (containerOption instanceof HTMLElement) {
|
|
19
|
-
containerElement = containerOption;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
containerElement = document.body;
|
|
23
|
-
}
|
|
24
|
-
const mountDiv = document.createElement('div');
|
|
25
|
-
containerElement.appendChild(mountDiv);
|
|
26
|
-
const root = ReactDOM.createRoot(mountDiv);
|
|
27
|
-
let currentProps = { ...initialProps };
|
|
28
|
-
const render = (props) => {
|
|
29
|
-
root.render(React.createElement(HiddenMenuWrapper, props));
|
|
30
|
-
};
|
|
31
|
-
render(currentProps);
|
|
32
|
-
return {
|
|
33
|
-
unmount: () => {
|
|
34
|
-
root.unmount();
|
|
35
|
-
if (mountDiv.parentNode) {
|
|
36
|
-
mountDiv.parentNode.removeChild(mountDiv);
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
update: (newProps) => {
|
|
40
|
-
currentProps = { ...currentProps, ...newProps };
|
|
41
|
-
render(currentProps);
|
|
42
|
-
},
|
|
43
|
-
getProps: () => ({ ...currentProps }),
|
|
44
|
-
getContainer: () => containerElement,
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
export function mountHiddenMenuWrapperToBody(props = {
|
|
48
|
-
children: undefined,
|
|
49
|
-
menuContent: undefined,
|
|
50
|
-
}) {
|
|
51
|
-
const { menuContent, ...restProps } = props;
|
|
52
|
-
return mountHiddenMenuWrapper({
|
|
53
|
-
container: document.body,
|
|
54
|
-
menuContent: menuContent || React.createElement(VibesPanel),
|
|
55
|
-
...restProps,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
export function autoMountHiddenMenuWrapper() {
|
|
59
|
-
if (typeof window === 'undefined' || typeof document === 'undefined') {
|
|
60
|
-
console.warn('HiddenMenuWrapper: autoMount called in non-browser environment');
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
const config = window.HIDDEN_MENU_WRAPPER_CONFIG;
|
|
64
|
-
if (!config) {
|
|
65
|
-
console.warn('HiddenMenuWrapper: No HIDDEN_MENU_WRAPPER_CONFIG found');
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
try {
|
|
69
|
-
return mountHiddenMenuWrapperToBody(config);
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
console.error('HiddenMenuWrapper: Auto-mount failed:', error);
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=vibe-hidden-menu-mount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vibe-hidden-menu-mount.js","sourceRoot":"","sources":["../jsr/vibe-hidden-menu-mount.ts"],"names":[],"mappings":"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"}
|