@superblocksteam/library 2.0.59-next.0 → 2.0.59-next.10
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/{early-console-buffer-SSPd-jq2.js → early-console-buffer-oUqxIuRK.js} +31 -4
- package/dist/early-console-buffer-oUqxIuRK.js.map +1 -0
- package/dist/jsx-dev-runtime/index.d.ts.map +1 -1
- package/dist/jsx-dev-runtime/index.js +7 -282
- package/dist/jsx-dev-runtime/index.js.map +1 -1
- package/dist/{widget-wrapper-naming-DxFT8zmk.js → jsx-wrapper-BaEUS0A1.js} +411 -30
- package/dist/jsx-wrapper-BaEUS0A1.js.map +1 -0
- package/dist/lib/index.d.ts +516 -25
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +221 -92
- package/dist/lib/index.js.map +1 -1
- package/dist/{logs-CgCPS9qr.js → logs-CQnzO-hw.js} +2 -2
- package/dist/{logs-CgCPS9qr.js.map → logs-CQnzO-hw.js.map} +1 -1
- package/package.json +3 -3
- package/dist/early-console-buffer-SSPd-jq2.js.map +0 -1
- package/dist/widget-wrapper-naming-DxFT8zmk.js.map +0 -1
package/dist/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { A as
|
|
2
|
-
import "../utils-AzBGeVXo.js";
|
|
3
|
-
import { t as early_console_buffer_default } from "../early-console-buffer-
|
|
1
|
+
import { A as SuperblocksContextProvider, B as iframeMessageHandler, C as startEditorSync, E as getContextFromTraceHeaders, F as useSuperblocksUser, H as isEditMode, I as sendNotification, L as colors$1, M as useSuperblocksContext, N as useSuperblocksGroups, O as rejectById, P as useSuperblocksProfiles, R as editorBridge, S as createPropertiesPanelDefinition, T as createIframeSpan, V as isEmbeddedBySuperblocksFirstParty, _ as root_store_default, a as FixWithClarkButton, b as PropsCategory, c as ErrorContent, d as ErrorMessage, f as ErrorStack, g as StyledClarkIcon, h as SecondaryButton, i as getWidgetRectAnchorName, j as getAppMode, k as resolveById, l as ErrorDetails, m as ErrorTitle, n as useJSXContext, o as ActionsContainer, p as ErrorSummary, r as getWidgetAnchorName, s as ErrorContainer, u as ErrorIconContainer, v as createManagedPropsList, w as generateId, x as Section, y as Prop, z as getEditStore } from "../jsx-wrapper-BaEUS0A1.js";
|
|
2
|
+
import { n as initTracerProviderWithOrigin } from "../utils-AzBGeVXo.js";
|
|
3
|
+
import { n as consoleLogAttributes, t as early_console_buffer_default } from "../early-console-buffer-oUqxIuRK.js";
|
|
4
4
|
import { Dim, NATIVE_COMPONENT_TYPES, NO_SELECT_ATTRIBUTE, Property, Property as Property$1, SELECTOR_ID_ATTRIBUTE, SOURCE_ID_ATTRIBUTE, generateSourceId, getBindingIdentifier } from "@superblocksteam/library-shared";
|
|
5
5
|
import * as React$1 from "react";
|
|
6
6
|
import React, { Suspense, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -363,6 +363,7 @@ let cachedBorderPresets = null;
|
|
|
363
363
|
const borderWidth = defaultTheme.borderWidth;
|
|
364
364
|
const borderRadius = defaultTheme.borderRadius;
|
|
365
365
|
const boxShadow = defaultTheme.boxShadow;
|
|
366
|
+
const DEFAULT_KEY = "DEFAULT";
|
|
366
367
|
function isBoxShadowValue(value) {
|
|
367
368
|
const trimmedValue = value.trim().toLowerCase();
|
|
368
369
|
const isBoxShadow = /^(0|none|inset|outset|shadow-sm|shadow|shadow-md|shadow-lg|shadow-xl|shadow-2xl|shadow-inner|shadow-none)$/.test(trimmedValue);
|
|
@@ -402,24 +403,23 @@ function getBorderPresets() {
|
|
|
402
403
|
for (const [prop, value] of Object.entries(cssVariables.dark)) addCssSize(prop, value);
|
|
403
404
|
const borderWidthPresets = [...sizePresets];
|
|
404
405
|
const borderRadiusPresets = [...sizePresets];
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
});
|
|
406
|
+
function addTailwindProperty(presets, key, value, valueConverter) {
|
|
407
|
+
if (key === DEFAULT_KEY && typeof value === "string") presets.push({
|
|
408
|
+
label: "default",
|
|
409
|
+
value: "",
|
|
410
|
+
rawValue: valueConverter ? valueConverter(value) : convertRemToPixels(value),
|
|
411
|
+
type: "tailwind"
|
|
412
|
+
});
|
|
413
|
+
else if (typeof value === "string") presets.push({
|
|
414
|
+
label: formatLabel(key),
|
|
415
|
+
value: key,
|
|
416
|
+
rawValue: valueConverter ? valueConverter(value) : convertRemToPixels(value),
|
|
417
|
+
type: "tailwind"
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
for (const [key, value] of Object.entries(borderWidth)) addTailwindProperty(borderWidthPresets, key, value, convertRemToPixels);
|
|
421
|
+
for (const [key, value] of Object.entries(borderRadius)) addTailwindProperty(borderRadiusPresets, key, value, convertRemToPixels);
|
|
422
|
+
for (const [key, value] of Object.entries(boxShadow)) addTailwindProperty(boxShadowPresets, key, value);
|
|
423
423
|
const seen = /* @__PURE__ */ new Set();
|
|
424
424
|
const uniqueBorderWidthPresets = borderWidthPresets.filter((preset) => {
|
|
425
425
|
if (seen.has(preset.value)) return false;
|
|
@@ -825,14 +825,17 @@ const getApiPath = (name) => {
|
|
|
825
825
|
return apiPath;
|
|
826
826
|
};
|
|
827
827
|
function useApiStateful(name) {
|
|
828
|
+
const { sourceId } = useJSXContext();
|
|
828
829
|
return {
|
|
829
830
|
run: useCallback(async (inputs) => {
|
|
830
831
|
const apiPath = getApiPath(name);
|
|
832
|
+
const editMode = isEditMode();
|
|
831
833
|
return (await root_store_default.apis.runApiByPath({
|
|
832
834
|
path: apiPath,
|
|
833
|
-
inputs: inputs ?? {}
|
|
835
|
+
inputs: inputs ?? {},
|
|
836
|
+
...editMode ? { injectedCallerId: sourceId } : {}
|
|
834
837
|
})).data;
|
|
835
|
-
}, [name]),
|
|
838
|
+
}, [name, sourceId]),
|
|
836
839
|
cancel: useCallback(async () => {
|
|
837
840
|
await root_store_default.apis.cancelApi(name);
|
|
838
841
|
}, [name])
|
|
@@ -1345,13 +1348,16 @@ var OperationAPI = class {
|
|
|
1345
1348
|
/**
|
|
1346
1349
|
* @throws {Error} if the websocket connection can't be initiated after 3 attempts
|
|
1347
1350
|
*/
|
|
1348
|
-
async connect({ peerId, userId, authorization, applicationId }) {
|
|
1351
|
+
async connect({ peerId, userId, authorization, applicationId, traceContext, connectionType, connectionTarget }) {
|
|
1349
1352
|
try {
|
|
1350
1353
|
const socket = await connectSocket(this.serverUrl, {
|
|
1351
1354
|
peerId,
|
|
1352
1355
|
userId,
|
|
1353
1356
|
authorization,
|
|
1354
1357
|
applicationId,
|
|
1358
|
+
traceContext,
|
|
1359
|
+
connectionType,
|
|
1360
|
+
connectionTarget,
|
|
1355
1361
|
onClose: this.handleSocketClose({
|
|
1356
1362
|
peerId,
|
|
1357
1363
|
userId,
|
|
@@ -1440,13 +1446,29 @@ function startSocketHeartbeat(socket) {
|
|
|
1440
1446
|
clearTimeout(timeoutId);
|
|
1441
1447
|
};
|
|
1442
1448
|
}
|
|
1443
|
-
async function connectSocket(serverUrl, { peerId, userId, applicationId, authorization, onClose }) {
|
|
1449
|
+
async function connectSocket(serverUrl, { peerId, userId, applicationId, authorization, onClose, traceContext, connectionType, connectionTarget }) {
|
|
1444
1450
|
if (!serverUrl) return;
|
|
1445
1451
|
const wsUrl = new URL("/sb-updates", serverUrl);
|
|
1446
1452
|
wsUrl.searchParams.set("peerId", peerId);
|
|
1447
1453
|
if (userId) wsUrl.searchParams.set("userId", userId);
|
|
1448
1454
|
wsUrl.searchParams.set("applicationId", applicationId);
|
|
1449
1455
|
root_store_default.editStore?.connectionManager.initializeSocket();
|
|
1456
|
+
let parentContext;
|
|
1457
|
+
if (traceContext) parentContext = getContextFromTraceHeaders(traceContext);
|
|
1458
|
+
const appWebsocketSpan = createIframeSpan("devServerAppWebSocketConnection", {
|
|
1459
|
+
url: wsUrl.toString(),
|
|
1460
|
+
connection_source: "app",
|
|
1461
|
+
connection_type: connectionType || "initial",
|
|
1462
|
+
connection_target: connectionTarget || "default",
|
|
1463
|
+
application_id: applicationId
|
|
1464
|
+
}, parentContext);
|
|
1465
|
+
const wsStartTime = Date.now();
|
|
1466
|
+
console.log("Dev server connection app websocket starting", consoleLogAttributes({
|
|
1467
|
+
url: wsUrl.toString(),
|
|
1468
|
+
connectionSource: "app",
|
|
1469
|
+
connectionType: connectionType || "initial",
|
|
1470
|
+
connectionTarget: connectionTarget || "default"
|
|
1471
|
+
}));
|
|
1450
1472
|
try {
|
|
1451
1473
|
let stopSocketHeartbeat;
|
|
1452
1474
|
const socket = createISocketClient(new ISocketWithClientAuth(await connectWebSocket(wsUrl.toString()), authorization, {
|
|
@@ -1485,7 +1507,11 @@ async function connectSocket(serverUrl, { peerId, userId, applicationId, authori
|
|
|
1485
1507
|
stopSocketHeartbeat?.();
|
|
1486
1508
|
stopSocketHeartbeat = void 0;
|
|
1487
1509
|
onClose(event);
|
|
1488
|
-
console.log("
|
|
1510
|
+
console.log("Dev server connection app websocket closed", consoleLogAttributes({
|
|
1511
|
+
connectionSource: "app",
|
|
1512
|
+
connectionType: connectionType || "initial",
|
|
1513
|
+
connectionTarget: connectionTarget || "default"
|
|
1514
|
+
}));
|
|
1489
1515
|
root_store_default.editStore?.connectionManager.disconnect();
|
|
1490
1516
|
},
|
|
1491
1517
|
timeouts: {
|
|
@@ -1493,12 +1519,47 @@ async function connectSocket(serverUrl, { peerId, userId, applicationId, authori
|
|
|
1493
1519
|
noResponseTimeoutInSeconds: 60
|
|
1494
1520
|
}
|
|
1495
1521
|
}));
|
|
1496
|
-
|
|
1522
|
+
const wsDuration = Date.now() - wsStartTime;
|
|
1523
|
+
console.log("Dev server connection app websocket succeeded", consoleLogAttributes({
|
|
1524
|
+
connectionSource: "app",
|
|
1525
|
+
connectionType: connectionType || "initial",
|
|
1526
|
+
connectionTarget: connectionTarget || "default",
|
|
1527
|
+
durationMs: wsDuration
|
|
1528
|
+
}));
|
|
1529
|
+
window.parent.postMessage({
|
|
1530
|
+
type: "app-websocket-connected",
|
|
1531
|
+
payload: {
|
|
1532
|
+
success: true,
|
|
1533
|
+
durationMs: wsDuration
|
|
1534
|
+
}
|
|
1535
|
+
}, "*");
|
|
1536
|
+
appWebsocketSpan.end();
|
|
1497
1537
|
stopSocketHeartbeat = startSocketHeartbeat(socket);
|
|
1498
1538
|
root_store_default.editStore?.connectionManager.connect();
|
|
1499
1539
|
return socket;
|
|
1500
1540
|
} catch (error) {
|
|
1501
|
-
|
|
1541
|
+
const wsDuration = Date.now() - wsStartTime;
|
|
1542
|
+
console.error("Dev server connection app websocket failed", consoleLogAttributes({
|
|
1543
|
+
connectionSource: "app",
|
|
1544
|
+
connectionType: connectionType || "initial",
|
|
1545
|
+
connectionTarget: connectionTarget || "default",
|
|
1546
|
+
durationMs: wsDuration,
|
|
1547
|
+
error: error instanceof Error ? error.message : String(error)
|
|
1548
|
+
}));
|
|
1549
|
+
window.parent.postMessage({
|
|
1550
|
+
type: "app-websocket-connected",
|
|
1551
|
+
payload: {
|
|
1552
|
+
success: false,
|
|
1553
|
+
durationMs: wsDuration,
|
|
1554
|
+
error: {
|
|
1555
|
+
message: error instanceof Error ? error.message : String(error),
|
|
1556
|
+
type: error instanceof Error ? error.constructor.name : "Unknown",
|
|
1557
|
+
stack: error instanceof Error ? error.stack : void 0
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
}, "*");
|
|
1561
|
+
if (error instanceof Error) appWebsocketSpan.recordException(error);
|
|
1562
|
+
appWebsocketSpan.end();
|
|
1502
1563
|
root_store_default.editStore?.connectionManager.disconnect();
|
|
1503
1564
|
throw error;
|
|
1504
1565
|
}
|
|
@@ -1859,10 +1920,10 @@ var RuntimeComponentNode = class {
|
|
|
1859
1920
|
if (result) return result;
|
|
1860
1921
|
}
|
|
1861
1922
|
}
|
|
1862
|
-
get
|
|
1863
|
-
if (this.isSbComponent &&
|
|
1923
|
+
get nearestSelectableAncestor() {
|
|
1924
|
+
if (this.isSbComponent && !this.noSelect) return this.selectorId;
|
|
1864
1925
|
const componentParent = this.store.graph.parent(this.selectorId);
|
|
1865
|
-
if (componentParent) return this.store.jsxNodes[componentParent]?.
|
|
1926
|
+
if (componentParent) return this.store.jsxNodes[componentParent]?.nearestSelectableAncestor;
|
|
1866
1927
|
}
|
|
1867
1928
|
get displayName() {
|
|
1868
1929
|
if (this.isHtmlElement) return this.type;
|
|
@@ -1930,13 +1991,13 @@ var RuntimeTrackingStore = class {
|
|
|
1930
1991
|
getFirstAnchorableTag(selectorId) {
|
|
1931
1992
|
return this.jsxNodes[selectorId]?.firstRenderedTag;
|
|
1932
1993
|
}
|
|
1933
|
-
|
|
1994
|
+
getNearestSelectableAncestor(selectorId, skipSelf = false) {
|
|
1934
1995
|
if (skipSelf) {
|
|
1935
1996
|
const componentParent = this.graph.parent(selectorId);
|
|
1936
|
-
if (componentParent) return this.jsxNodes[componentParent]?.
|
|
1997
|
+
if (componentParent) return this.jsxNodes[componentParent]?.nearestSelectableAncestor;
|
|
1937
1998
|
return;
|
|
1938
1999
|
}
|
|
1939
|
-
return this.jsxNodes[selectorId]?.
|
|
2000
|
+
return this.jsxNodes[selectorId]?.nearestSelectableAncestor;
|
|
1940
2001
|
}
|
|
1941
2002
|
updatePropsForComponent(selectorId, props) {
|
|
1942
2003
|
const componentNode = this.jsxNodes[selectorId];
|
|
@@ -1971,9 +2032,6 @@ var RuntimeTrackingStore = class {
|
|
|
1971
2032
|
hasRenderedNodes() {
|
|
1972
2033
|
return Object.keys(this.jsxNodes).length > 0;
|
|
1973
2034
|
}
|
|
1974
|
-
get jsxNodeCount() {
|
|
1975
|
-
return Object.keys(this.jsxNodes).length;
|
|
1976
|
-
}
|
|
1977
2035
|
};
|
|
1978
2036
|
var runtime_tracking_store_default = RuntimeTrackingStore;
|
|
1979
2037
|
|
|
@@ -2360,9 +2418,6 @@ var RuntimeSubscriptionsStore = class {
|
|
|
2360
2418
|
});
|
|
2361
2419
|
return out;
|
|
2362
2420
|
}
|
|
2363
|
-
get jsxNodeCount() {
|
|
2364
|
-
return this.editStore.runtimeTrackingStore.jsxNodeCount;
|
|
2365
|
-
}
|
|
2366
2421
|
};
|
|
2367
2422
|
|
|
2368
2423
|
//#endregion
|
|
@@ -2404,10 +2459,7 @@ var EditStore = class {
|
|
|
2404
2459
|
if (isInitialized) startEditorSync({
|
|
2405
2460
|
store: this.runtimeSubscriptionsStore,
|
|
2406
2461
|
storeId: "runtimeSync",
|
|
2407
|
-
projection: (store) =>
|
|
2408
|
-
subscriptions: store.subscriptions,
|
|
2409
|
-
jsxNodeCount: store.jsxNodeCount
|
|
2410
|
-
})
|
|
2462
|
+
projection: (store) => store.subscriptions
|
|
2411
2463
|
});
|
|
2412
2464
|
}
|
|
2413
2465
|
setInteractionMode(mode, notifyEditor = false) {
|
|
@@ -2530,23 +2582,23 @@ const Layers = {
|
|
|
2530
2582
|
|
|
2531
2583
|
//#endregion
|
|
2532
2584
|
//#region src/edit-mode/assets/close.svg
|
|
2533
|
-
var _path$
|
|
2534
|
-
function _extends$
|
|
2535
|
-
return _extends$
|
|
2585
|
+
var _path$2;
|
|
2586
|
+
function _extends$7() {
|
|
2587
|
+
return _extends$7 = Object.assign ? Object.assign.bind() : function(n) {
|
|
2536
2588
|
for (var e = 1; e < arguments.length; e++) {
|
|
2537
2589
|
var t = arguments[e];
|
|
2538
2590
|
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
2539
2591
|
}
|
|
2540
2592
|
return n;
|
|
2541
|
-
}, _extends$
|
|
2593
|
+
}, _extends$7.apply(null, arguments);
|
|
2542
2594
|
}
|
|
2543
2595
|
var SvgClose = function SvgClose$1(props) {
|
|
2544
|
-
return /* @__PURE__ */ React$1.createElement("svg", _extends$
|
|
2596
|
+
return /* @__PURE__ */ React$1.createElement("svg", _extends$7({
|
|
2545
2597
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2546
2598
|
width: 16,
|
|
2547
2599
|
height: 16,
|
|
2548
2600
|
fill: "none"
|
|
2549
|
-
}, props), _path$
|
|
2601
|
+
}, props), _path$2 || (_path$2 = /* @__PURE__ */ React$1.createElement("path", {
|
|
2550
2602
|
stroke: "currentColor",
|
|
2551
2603
|
strokeLinecap: "round",
|
|
2552
2604
|
strokeLinejoin: "round",
|
|
@@ -2557,6 +2609,37 @@ var close_default = SvgClose;
|
|
|
2557
2609
|
|
|
2558
2610
|
//#endregion
|
|
2559
2611
|
//#region src/edit-mode/assets/pencil.svg
|
|
2612
|
+
var _path$1, _path2$1;
|
|
2613
|
+
function _extends$6() {
|
|
2614
|
+
return _extends$6 = Object.assign ? Object.assign.bind() : function(n) {
|
|
2615
|
+
for (var e = 1; e < arguments.length; e++) {
|
|
2616
|
+
var t = arguments[e];
|
|
2617
|
+
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
|
|
2618
|
+
}
|
|
2619
|
+
return n;
|
|
2620
|
+
}, _extends$6.apply(null, arguments);
|
|
2621
|
+
}
|
|
2622
|
+
var SvgPencil = function SvgPencil$1(props) {
|
|
2623
|
+
return /* @__PURE__ */ React$1.createElement("svg", _extends$6({
|
|
2624
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2625
|
+
width: 16,
|
|
2626
|
+
height: 16,
|
|
2627
|
+
fill: "none"
|
|
2628
|
+
}, props), _path$1 || (_path$1 = /* @__PURE__ */ React$1.createElement("path", {
|
|
2629
|
+
fill: "#fff",
|
|
2630
|
+
d: "m2.5 13.5 1.196-3.189a4 4 0 0 1 .917-1.424L10 3.5A2.5 2.5 0 0 0 12.5 6l-5.387 5.387a4 4 0 0 1-1.424.917z",
|
|
2631
|
+
opacity: .12
|
|
2632
|
+
})), _path2$1 || (_path2$1 = /* @__PURE__ */ React$1.createElement("path", {
|
|
2633
|
+
stroke: "#fff",
|
|
2634
|
+
strokeLinecap: "round",
|
|
2635
|
+
strokeLinejoin: "round",
|
|
2636
|
+
d: "M10 3.5 4.613 8.887a4 4 0 0 0-.917 1.424L2.5 13.5l3.189-1.196a4 4 0 0 0 1.424-.917L12.5 6M10 3.5l.75-.75a1.768 1.768 0 1 1 2.5 2.5L12.5 6M10 3.5A2.5 2.5 0 0 0 12.5 6"
|
|
2637
|
+
})));
|
|
2638
|
+
};
|
|
2639
|
+
var pencil_default = SvgPencil;
|
|
2640
|
+
|
|
2641
|
+
//#endregion
|
|
2642
|
+
//#region src/edit-mode/assets/target.svg
|
|
2560
2643
|
var _path, _path2;
|
|
2561
2644
|
function _extends$5() {
|
|
2562
2645
|
return _extends$5 = Object.assign ? Object.assign.bind() : function(n) {
|
|
@@ -2567,7 +2650,7 @@ function _extends$5() {
|
|
|
2567
2650
|
return n;
|
|
2568
2651
|
}, _extends$5.apply(null, arguments);
|
|
2569
2652
|
}
|
|
2570
|
-
var
|
|
2653
|
+
var SvgTarget = function SvgTarget$1(props) {
|
|
2571
2654
|
return /* @__PURE__ */ React$1.createElement("svg", _extends$5({
|
|
2572
2655
|
xmlns: "http://www.w3.org/2000/svg",
|
|
2573
2656
|
width: 16,
|
|
@@ -2575,16 +2658,18 @@ var SvgPencil = function SvgPencil$1(props) {
|
|
|
2575
2658
|
fill: "none"
|
|
2576
2659
|
}, props), _path || (_path = /* @__PURE__ */ React$1.createElement("path", {
|
|
2577
2660
|
fill: "#fff",
|
|
2578
|
-
|
|
2661
|
+
fillRule: "evenodd",
|
|
2662
|
+
d: "M14 8A6 6 0 1 1 2 8a6 6 0 0 1 12 0M8 9.263a1.263 1.263 0 1 0 0-2.526 1.263 1.263 0 0 0 0 2.526",
|
|
2663
|
+
clipRule: "evenodd",
|
|
2579
2664
|
opacity: .12
|
|
2580
2665
|
})), _path2 || (_path2 = /* @__PURE__ */ React$1.createElement("path", {
|
|
2581
2666
|
stroke: "#fff",
|
|
2582
2667
|
strokeLinecap: "round",
|
|
2583
2668
|
strokeLinejoin: "round",
|
|
2584
|
-
d: "
|
|
2669
|
+
d: "M14 8a6 6 0 0 1-6 6m6-6a6 6 0 0 0-6-6m6 6h-2m-4 6a6 6 0 0 1-6-6m6 6v-2M2 8a6 6 0 0 1 6-6M2 8h2m4-6v2m1.263 4a1.263 1.263 0 1 1-2.526 0 1.263 1.263 0 0 1 2.526 0"
|
|
2585
2670
|
})));
|
|
2586
2671
|
};
|
|
2587
|
-
var
|
|
2672
|
+
var target_default = SvgTarget;
|
|
2588
2673
|
|
|
2589
2674
|
//#endregion
|
|
2590
2675
|
//#region src/edit-mode/interaction-utils.ts
|
|
@@ -2702,12 +2787,11 @@ function InteractionRectActions(props) {
|
|
|
2702
2787
|
event.stopPropagation();
|
|
2703
2788
|
event.preventDefault();
|
|
2704
2789
|
const sourceId = getEditStore().runtimeTrackingStore.getComponent(selectorId)?.sourceId;
|
|
2705
|
-
if (sourceId) editorBridge.
|
|
2790
|
+
if (sourceId) editorBridge.toggleComponentInAiContext(sourceId, selectorId, displayName);
|
|
2706
2791
|
};
|
|
2707
2792
|
const aiContextMode = getEditStore().ai.getAiContextMode();
|
|
2708
2793
|
const isAiTaggingEnabled = getEditStore().ai.getIsTaggingEnabled();
|
|
2709
2794
|
const shouldHideActions = !isPrimarySelectorId;
|
|
2710
|
-
const shouldShowAddToChatButton = isAiTaggingEnabled && (aiContextMode === AiContextMode.SILENT || aiContextMode === AiContextMode.HIGHLIGHT && type !== "TARGETED");
|
|
2711
2795
|
const shouldShowAiPurplePill = isAiTaggingEnabled && (aiContextMode === AiContextMode.AUTO_SELECT || aiContextMode === AiContextMode.HIGHLIGHT && type === "TARGETED");
|
|
2712
2796
|
const renderedTagSelectorId = getEditStore().runtimeTrackingStore.getFirstAnchorableTag(selectorId);
|
|
2713
2797
|
const showDesignModeToggle = getEditStore().interactionMode === "interactive";
|
|
@@ -2750,15 +2834,15 @@ function InteractionRectActions(props) {
|
|
|
2750
2834
|
children: /* @__PURE__ */ jsx(close_default, {})
|
|
2751
2835
|
})
|
|
2752
2836
|
}), /* @__PURE__ */ jsx(TooltipPortal, { children: /* @__PURE__ */ jsx(TooltipContent$1, { children: "Exit design mode" }) })] }) }),
|
|
2753
|
-
|
|
2837
|
+
isAiTaggingEnabled && /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(Root, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
2754
2838
|
asChild: true,
|
|
2755
2839
|
children: /* @__PURE__ */ jsx("button", {
|
|
2756
|
-
"aria-label": "Add to chat",
|
|
2840
|
+
"aria-label": type === "TARGETED" ? "Remove from chat" : "Add to chat",
|
|
2757
2841
|
className: "sb-edit-add-to-chat-button",
|
|
2758
2842
|
onPointerDownCapture: handleAddToChat,
|
|
2759
|
-
children: /* @__PURE__ */ jsx(
|
|
2843
|
+
children: /* @__PURE__ */ jsx(target_default, {})
|
|
2760
2844
|
})
|
|
2761
|
-
}), /* @__PURE__ */ jsx(TooltipPortal, { children: /* @__PURE__ */ jsx(TooltipContent$1, { children: "Add to chat" }) })] }) }),
|
|
2845
|
+
}), /* @__PURE__ */ jsx(TooltipPortal, { children: /* @__PURE__ */ jsx(TooltipContent$1, { children: type === "TARGETED" ? "Remove from chat" : "Add to chat" }) })] }) }),
|
|
2762
2846
|
/* @__PURE__ */ jsx(interaction_rect_name_pill_default, {
|
|
2763
2847
|
selectorId,
|
|
2764
2848
|
displayName,
|
|
@@ -2920,7 +3004,7 @@ const InteractionRectTargetBorder = ({ selectorId }) => {
|
|
|
2920
3004
|
};
|
|
2921
3005
|
const InteractionRect = (props) => {
|
|
2922
3006
|
const { selectionType, selectorId } = props;
|
|
2923
|
-
const parentSelectorId = getEditStore().runtimeTrackingStore.
|
|
3007
|
+
const parentSelectorId = getEditStore().runtimeTrackingStore.getNearestSelectableAncestor(selectorId);
|
|
2924
3008
|
const renderedParentTagSelectorId = parentSelectorId ? getEditStore().runtimeTrackingStore.getFirstAnchorableTag(parentSelectorId) : void 0;
|
|
2925
3009
|
const renderedTagSelectorId = getEditStore().runtimeTrackingStore.getFirstAnchorableTag(selectorId);
|
|
2926
3010
|
const aiContextMode = getEditStore().ai.getAiContextMode();
|
|
@@ -3036,6 +3120,7 @@ const IframeConnected = observer(function IframeConnected$1(props) {
|
|
|
3036
3120
|
useEffect(() => {
|
|
3037
3121
|
if (!isEmbeddedBySuperblocksFirstParty()) return;
|
|
3038
3122
|
const handleInit = async ({ data }) => {
|
|
3123
|
+
if (data.payload.windowOriginUrl) initTracerProviderWithOrigin(data.payload.windowOriginUrl);
|
|
3039
3124
|
initializeEditStore();
|
|
3040
3125
|
const editStore = getEditStore();
|
|
3041
3126
|
editorBridge.connected();
|
|
@@ -3056,7 +3141,10 @@ const IframeConnected = observer(function IframeConnected$1(props) {
|
|
|
3056
3141
|
peerId: data.payload.peerId,
|
|
3057
3142
|
userId: data.payload.userId,
|
|
3058
3143
|
authorization: data.payload.devServerAuthorization,
|
|
3059
|
-
applicationId: data.payload.appId
|
|
3144
|
+
applicationId: data.payload.appId,
|
|
3145
|
+
traceContext: data.payload.traceContext,
|
|
3146
|
+
connectionType: data.payload.connectionType,
|
|
3147
|
+
connectionTarget: data.payload.connectionTarget
|
|
3060
3148
|
});
|
|
3061
3149
|
} catch (error) {
|
|
3062
3150
|
console.error("Error connecting to internal socket from library", error);
|
|
@@ -3125,9 +3213,9 @@ const EmbedWrapper = (props) => {
|
|
|
3125
3213
|
root_store_default.apis.agentUrls = event.data.payload.agentUrls ?? (event.data.payload.agentUrl ? [event.data.payload.agentUrl] : []);
|
|
3126
3214
|
root_store_default.apis.setTokens(event.data.payload.token, event.data.payload.accessToken);
|
|
3127
3215
|
root_store_default.windowOriginUrl = event.data.payload.logContext.superblocks_window_origin_url;
|
|
3128
|
-
if (root_store_default.windowOriginUrl) import("../utils-DR35eYvX.js").then(({ initTracerProviderWithOrigin }) => {
|
|
3129
|
-
initTracerProviderWithOrigin(root_store_default.windowOriginUrl);
|
|
3130
|
-
import("../logs-
|
|
3216
|
+
if (root_store_default.windowOriginUrl) import("../utils-DR35eYvX.js").then(({ initTracerProviderWithOrigin: initTracerProviderWithOrigin$1 }) => {
|
|
3217
|
+
initTracerProviderWithOrigin$1(root_store_default.windowOriginUrl);
|
|
3218
|
+
import("../logs-CQnzO-hw.js").then(({ initLibraryLoggerProvider }) => {
|
|
3131
3219
|
initLibraryLoggerProvider({
|
|
3132
3220
|
windowOriginUrl: root_store_default.windowOriginUrl,
|
|
3133
3221
|
appId: event.data.payload.appId,
|
|
@@ -3248,10 +3336,6 @@ const EmbedWrapper = (props) => {
|
|
|
3248
3336
|
}
|
|
3249
3337
|
};
|
|
3250
3338
|
iframeMessageHandler.addEventListener("ai-updates", aiUpdatesListener);
|
|
3251
|
-
const reloadAppListener = () => {
|
|
3252
|
-
window.location.reload();
|
|
3253
|
-
};
|
|
3254
|
-
iframeMessageHandler.addEventListener("sb-reload-app", reloadAppListener);
|
|
3255
3339
|
return () => {
|
|
3256
3340
|
iframeMessageHandler.removeEventListener("sb-bootstrap-response", bootstrapResponseListener);
|
|
3257
3341
|
iframeMessageHandler.removeEventListener("sb-update-active-agents", updateActiveAgentsListener);
|
|
@@ -3262,7 +3346,6 @@ const EmbedWrapper = (props) => {
|
|
|
3262
3346
|
iframeMessageHandler.removeEventListener("sb-global-sync", globalSyncListener);
|
|
3263
3347
|
iframeMessageHandler.removeEventListener("route-change", navigateToListener);
|
|
3264
3348
|
iframeMessageHandler.removeEventListener("ai-updates", aiUpdatesListener);
|
|
3265
|
-
iframeMessageHandler.removeEventListener("sb-reload-app", reloadAppListener);
|
|
3266
3349
|
try {
|
|
3267
3350
|
getEditStore().runtimeSubscriptionsStore.clearAll();
|
|
3268
3351
|
} catch {}
|
|
@@ -3288,19 +3371,45 @@ const EmbedWrapper = (props) => {
|
|
|
3288
3371
|
}
|
|
3289
3372
|
case "RUN_API": {
|
|
3290
3373
|
const { apiName, traceHeaders, callId, isTestRun, inputs } = action$1.payload;
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3295
|
-
|
|
3296
|
-
|
|
3297
|
-
|
|
3298
|
-
}).catch((error$1) => {
|
|
3299
|
-
console.error(`Failed to test API ${apiName}:`, error$1);
|
|
3300
|
-
});
|
|
3301
|
-
else if (callId) root_store_default.apis.rerunApiByCallId(callId).catch((error$1) => {
|
|
3302
|
-
console.error(`Failed to re-run API with callId ${callId}:`, error$1);
|
|
3374
|
+
console.log("[iframe-wrappers] Received RUN_API:", {
|
|
3375
|
+
apiName,
|
|
3376
|
+
callId,
|
|
3377
|
+
isTestRun,
|
|
3378
|
+
hasInputs: !!inputs,
|
|
3379
|
+
inputs,
|
|
3380
|
+
traceHeaders
|
|
3303
3381
|
});
|
|
3382
|
+
if (isTestRun) {
|
|
3383
|
+
console.log("[iframe-wrappers] Running as test run");
|
|
3384
|
+
root_store_default.apis.runApiByPath({
|
|
3385
|
+
path: getApiPath(apiName),
|
|
3386
|
+
inputs: {
|
|
3387
|
+
...traceHeaders,
|
|
3388
|
+
...inputs
|
|
3389
|
+
},
|
|
3390
|
+
isTestRun: true
|
|
3391
|
+
}).catch((error$1) => {
|
|
3392
|
+
console.error(`Failed to test API ${apiName}:`, error$1);
|
|
3393
|
+
});
|
|
3394
|
+
} else if (callId) {
|
|
3395
|
+
console.log("[iframe-wrappers] Re-running with callId:", callId);
|
|
3396
|
+
root_store_default.apis.rerunApiByCallId(callId).catch((error$1) => {
|
|
3397
|
+
console.error(`Failed to re-run API with callId ${callId}:`, error$1);
|
|
3398
|
+
});
|
|
3399
|
+
} else {
|
|
3400
|
+
console.log("[iframe-wrappers] This might be a Clark request - executing API normally");
|
|
3401
|
+
root_store_default.apis.runApiByPath({
|
|
3402
|
+
path: getApiPath(apiName),
|
|
3403
|
+
inputs: {
|
|
3404
|
+
...traceHeaders,
|
|
3405
|
+
...inputs
|
|
3406
|
+
},
|
|
3407
|
+
callId,
|
|
3408
|
+
isTestRun: false
|
|
3409
|
+
}).catch((error$1) => {
|
|
3410
|
+
console.error(`Failed to run API ${apiName}:`, error$1);
|
|
3411
|
+
});
|
|
3412
|
+
}
|
|
3304
3413
|
break;
|
|
3305
3414
|
}
|
|
3306
3415
|
}
|
|
@@ -3442,7 +3551,7 @@ const getWidgetFromPointHelper = (params) => {
|
|
|
3442
3551
|
const extendedWidget = widgetsWithBuffer.hoveredActual.find((item) => {
|
|
3443
3552
|
let actualSelectorId = item.selectorId;
|
|
3444
3553
|
if (item.noSelect) {
|
|
3445
|
-
actualSelectorId = editStore.runtimeTrackingStore.
|
|
3554
|
+
actualSelectorId = editStore.runtimeTrackingStore.getNearestSelectableAncestor(item.selectorId, false);
|
|
3446
3555
|
if (!actualSelectorId) return false;
|
|
3447
3556
|
}
|
|
3448
3557
|
const componentType = editStore.runtimeTrackingStore.getComponent(actualSelectorId)?.type;
|
|
@@ -3456,7 +3565,7 @@ const getWidgetFromPointHelper = (params) => {
|
|
|
3456
3565
|
});
|
|
3457
3566
|
return getFirstItemWithFocusedSelectorPrioritized(atPointWidgets.hoveredPills) ?? atPointWidgets.hoveredActual[0];
|
|
3458
3567
|
};
|
|
3459
|
-
const
|
|
3568
|
+
const shouldBubbleUpForNearestSelectableAncestor = (selectorId) => {
|
|
3460
3569
|
const editStore = getEditStore();
|
|
3461
3570
|
if (editStore.runtimeTrackingStore.getComponent(selectorId)?.noSelect) return true;
|
|
3462
3571
|
const parentSelectorId = editStore.runtimeTrackingStore.getComponentParent(selectorId);
|
|
@@ -3492,8 +3601,8 @@ function getMostRelevantWidgetAtPoint(params) {
|
|
|
3492
3601
|
const relevantParent = getRelevantParentIfItReducesRepetition(widget.selectorId);
|
|
3493
3602
|
if (relevantParent) return relevantParent;
|
|
3494
3603
|
}
|
|
3495
|
-
if (
|
|
3496
|
-
const registeredAncestor = editStore.runtimeTrackingStore.
|
|
3604
|
+
if (shouldBubbleUpForNearestSelectableAncestor(widget.selectorId)) {
|
|
3605
|
+
const registeredAncestor = editStore.runtimeTrackingStore.getNearestSelectableAncestor(widget.selectorId, false);
|
|
3497
3606
|
if (registeredAncestor) return registeredAncestor;
|
|
3498
3607
|
}
|
|
3499
3608
|
return widget.selectorId;
|
|
@@ -3586,16 +3695,29 @@ function useWidgetClick() {
|
|
|
3586
3695
|
event.preventDefault();
|
|
3587
3696
|
event.stopPropagation();
|
|
3588
3697
|
}
|
|
3589
|
-
if (event.altKey || editStore.ai.
|
|
3698
|
+
if (event.altKey || editStore.ai.shouldToggleComponentInAiContext()) {
|
|
3590
3699
|
console.log("[useWidgetClick] Toggling component in AI context");
|
|
3591
3700
|
editorBridge.toggleComponentInAiContext(sourceId, selectorId, displayName);
|
|
3592
3701
|
return;
|
|
3593
3702
|
}
|
|
3594
3703
|
editStore.ui.selectWidget(selectorId, event.shiftKey === true);
|
|
3595
3704
|
};
|
|
3705
|
+
const isInsideInteractionLayer = (element) => {
|
|
3706
|
+
if (!(element instanceof Element)) return false;
|
|
3707
|
+
return element.closest(`[${INTERACTION_LAYER_ATTRIBUTE}="true"]`) !== null;
|
|
3708
|
+
};
|
|
3709
|
+
const handlePointerDown = (event) => {
|
|
3710
|
+
const isTargetMode = editStore.ai.shouldToggleComponentInAiContext();
|
|
3711
|
+
if ((editStore.interactionMode === "design" || isTargetMode) && !isInsideInteractionLayer(event.target)) {
|
|
3712
|
+
event.preventDefault();
|
|
3713
|
+
event.stopPropagation();
|
|
3714
|
+
}
|
|
3715
|
+
};
|
|
3596
3716
|
rootElement?.addEventListener("click", handleClick, { capture: true });
|
|
3717
|
+
rootElement?.addEventListener("pointerdown", handlePointerDown, { capture: true });
|
|
3597
3718
|
return () => {
|
|
3598
3719
|
rootElement?.removeEventListener("click", handleClick, { capture: true });
|
|
3720
|
+
rootElement?.removeEventListener("pointerdown", handlePointerDown, { capture: true });
|
|
3599
3721
|
};
|
|
3600
3722
|
}, []);
|
|
3601
3723
|
}
|
|
@@ -3692,7 +3814,14 @@ const ExternalInteractionLayer = observer(() => {
|
|
|
3692
3814
|
const isEditStoreInitialized = Boolean(root_store_default.editStore?.isInitialized);
|
|
3693
3815
|
const interactionLayerVisible = root_store_default.editStore?.interactionMode === "design" || root_store_default.editStore?.interactionMode === "interactive";
|
|
3694
3816
|
if (!(isEditStoreInitialized && interactionLayerVisible)) return null;
|
|
3695
|
-
|
|
3817
|
+
const isDesignMode = root_store_default.editStore?.interactionMode === "design";
|
|
3818
|
+
const isTargetMode = root_store_default.editStore?.ai.shouldToggleComponentInAiContext();
|
|
3819
|
+
const pencilCursor = `url('data:image/svg+xml;utf8,<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.12" d="M2.5 13.5L3.69577 10.3113C3.89627 9.77662 4.2089 9.2911 4.61266 8.88734L10 3.5C10 4.88071 11.1193 6 12.5 6L7.11266 11.3873C6.7089 11.7911 6.22338 12.1037 5.68873 12.3042L2.5 13.5Z" fill="black"/><path d="M10 3.5L4.61266 8.88734C4.2089 9.2911 3.89627 9.77662 3.69577 10.3113L2.5 13.5L5.68873 12.3042C6.22338 12.1037 6.7089 11.7911 7.11266 11.3873L12.5 6M10 3.5L10.75 2.75C11.4404 2.05964 12.5596 2.05964 13.25 2.75C13.9404 3.44036 13.9404 4.55964 13.25 5.25L12.5 6M10 3.5C10 4.88071 11.1193 6 12.5 6" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/><path d="M10 3.5L4.61266 8.88734C4.2089 9.2911 3.89627 9.77662 3.69577 10.3113L2.5 13.5L5.68873 12.3042C6.22338 12.1037 6.7089 11.7911 7.11266 11.3873L12.5 6M10 3.5L10.75 2.75C11.4404 2.05964 12.5596 2.05964 13.25 2.75C13.9404 3.44036 13.9404 4.55964 13.25 5.25L12.5 6M10 3.5C10 4.88071 11.1193 6 12.5 6" stroke="black" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>') 2 14, auto`;
|
|
3820
|
+
const targetCursor = `url('data:image/svg+xml;utf8,<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.12" fill-rule="evenodd" clip-rule="evenodd" d="M14 8C14 11.3137 11.3137 14 8 14C4.68629 14 2 11.3137 2 8C2 4.68629 4.68629 2 8 2C11.3137 2 14 4.68629 14 8ZM8 9.26316C8.69762 9.26316 9.26316 8.69762 9.26316 8C9.26316 7.30238 8.69762 6.73684 8 6.73684C7.30238 6.73684 6.73684 7.30238 6.73684 8C6.73684 8.69762 7.30238 9.26316 8 9.26316Z" fill="black"/><path d="M14 8C14 11.3137 11.3137 14 8 14M14 8C14 4.68629 11.3137 2 8 2M14 8H12M8 14C4.68629 14 2 11.3137 2 8M8 14V12M2 8C2 4.68629 4.68629 2 8 2M2 8H4M8 2V4M9.26316 8C9.26316 8.69762 8.69762 9.26316 8 9.26316C7.30238 9.26316 6.73684 8.69762 6.73684 8C6.73684 7.30238 7.30238 6.73684 8 6.73684C8.69762 6.73684 9.26316 7.30238 9.26316 8Z" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/><path d="M14 8C14 11.3137 11.3137 14 8 14M14 8C14 4.68629 11.3137 2 8 2M14 8H12M8 14C4.68629 14 2 11.3137 2 8M8 14V12M2 8C2 4.68629 4.68629 2 8 2M2 8H4M8 2V4M9.26316 8C9.26316 8.69762 8.69762 9.26316 8 9.26316C7.30238 9.26316 6.73684 8.69762 6.73684 8C6.73684 7.30238 7.30238 6.73684 8 6.73684C8.69762 6.73684 9.26316 7.30238 9.26316 8Z" stroke="black" stroke-linecap="round" stroke-linejoin="round"/></svg>') 8 8, auto`;
|
|
3821
|
+
let cursorStyle = "";
|
|
3822
|
+
if (isTargetMode) cursorStyle = `* { cursor: ${targetCursor} !important; }`;
|
|
3823
|
+
else if (isDesignMode) cursorStyle = `* { cursor: ${pencilCursor} !important; }`;
|
|
3824
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(InteractionLayerManager, {}), cursorStyle && /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: cursorStyle } })] });
|
|
3696
3825
|
});
|
|
3697
3826
|
var interaction_layer_default = ExternalInteractionLayer;
|
|
3698
3827
|
|
|
@@ -3735,9 +3864,9 @@ const EmbedWrapper$1 = (props) => {
|
|
|
3735
3864
|
root_store_default.apis.agentUrls = event.data.payload.agentUrls ?? (event.data.payload.agentUrl ? [event.data.payload.agentUrl] : []);
|
|
3736
3865
|
root_store_default.apis.setTokens(event.data.payload.token, event.data.payload.accessToken);
|
|
3737
3866
|
root_store_default.windowOriginUrl = event.data.payload.logContext.superblocks_window_origin_url;
|
|
3738
|
-
if (root_store_default.windowOriginUrl) import("../utils-DR35eYvX.js").then(({ initTracerProviderWithOrigin }) => {
|
|
3739
|
-
initTracerProviderWithOrigin(root_store_default.windowOriginUrl);
|
|
3740
|
-
import("../logs-
|
|
3867
|
+
if (root_store_default.windowOriginUrl) import("../utils-DR35eYvX.js").then(({ initTracerProviderWithOrigin: initTracerProviderWithOrigin$1 }) => {
|
|
3868
|
+
initTracerProviderWithOrigin$1(root_store_default.windowOriginUrl);
|
|
3869
|
+
import("../logs-CQnzO-hw.js").then(({ initLibraryLoggerProvider }) => {
|
|
3741
3870
|
initLibraryLoggerProvider({
|
|
3742
3871
|
windowOriginUrl: root_store_default.windowOriginUrl,
|
|
3743
3872
|
appId: event.data.payload.appId,
|
|
@@ -5003,5 +5132,5 @@ early_console_buffer_default.getInstance().patchEarly();
|
|
|
5003
5132
|
registerHtmlElements();
|
|
5004
5133
|
|
|
5005
5134
|
//#endregion
|
|
5006
|
-
export { App, PageNotFound, Prop, Property, PropsCategory, RouteLoadError, Section, sb_provider_default as SuperblocksProvider, registerComponent, tailwindStylesCategory, useApiStateful as useApi, useSuperblocksGroups, useSuperblocksProfiles, useSuperblocksUser };
|
|
5135
|
+
export { App, PageNotFound, Prop, Property, PropsCategory, RouteLoadError, Section, sb_provider_default as SuperblocksProvider, getAppMode, registerComponent, tailwindStylesCategory, useApiStateful as useApi, useSuperblocksGroups, useSuperblocksProfiles, useSuperblocksUser };
|
|
5007
5136
|
//# sourceMappingURL=index.js.map
|