@weaverse/react 0.7.53 → 0.7.54
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/index.d.ts +14 -1
- package/dist/index.js +168 -37
- package/dist/index.mjs +161 -30
- package/package.json +4 -3
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import * as React$1 from 'react';
|
|
|
4
4
|
import React__default, { HTMLAttributes, ReactElement, ReactNode, CSSProperties } from 'react';
|
|
5
5
|
import * as _radix_ui_react_dialog from '@radix-ui/react-dialog';
|
|
6
6
|
import { DialogContentProps, DialogProps, DialogTitleProps, DialogCloseProps } from '@radix-ui/react-dialog';
|
|
7
|
+
import { KeenSliderInstance } from 'keen-slider';
|
|
7
8
|
|
|
8
9
|
declare let createRootContext: (configs: WeaverseType) => Weaverse;
|
|
9
10
|
declare let WeaverseContext: React$1.Context<Weaverse>;
|
|
@@ -54,6 +55,15 @@ interface WeaverseIconProps extends HTMLAttributes<SVGElement> {
|
|
|
54
55
|
interface TooltipProps {
|
|
55
56
|
children: React.ReactNode;
|
|
56
57
|
}
|
|
58
|
+
interface SliderProps {
|
|
59
|
+
children: React.ReactNode;
|
|
60
|
+
className?: string;
|
|
61
|
+
}
|
|
62
|
+
interface SliderArrowsProps {
|
|
63
|
+
currentSlide: number;
|
|
64
|
+
instanceRef: React.MutableRefObject<KeenSliderInstance | null>;
|
|
65
|
+
className?: string;
|
|
66
|
+
}
|
|
57
67
|
|
|
58
68
|
interface WeaverseElementProps extends Partial<ReactElement> {
|
|
59
69
|
css?: ElementCSS;
|
|
@@ -201,11 +211,14 @@ declare function Icon({ name, className, ...props }: WeaverseIconProps): JSX.Ele
|
|
|
201
211
|
|
|
202
212
|
declare function Tooltip({ children }: TooltipProps): JSX.Element;
|
|
203
213
|
|
|
214
|
+
declare function Slider({ children, className }: SliderProps): JSX.Element;
|
|
215
|
+
|
|
204
216
|
declare let Components: {
|
|
205
217
|
Placeholder: React$1.ForwardRefExoticComponent<PlaceholderProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
206
218
|
Spinner: typeof Spinner;
|
|
207
219
|
ModalComponents: typeof ModalComponents;
|
|
208
220
|
Icon: typeof Icon;
|
|
221
|
+
Slider: typeof Slider;
|
|
209
222
|
Tooltip: typeof Tooltip;
|
|
210
223
|
};
|
|
211
224
|
|
|
@@ -213,4 +226,4 @@ declare const Elements: Record<string, WeaverseElement>;
|
|
|
213
226
|
|
|
214
227
|
declare let WeaverseRoot: ({ context }: WeaverseRootPropsType) => JSX.Element | null;
|
|
215
228
|
|
|
216
|
-
export { ButtonElementProps, Components, ContainerElementProps, CountdownElementProps, CountdownTimeKey, CountdownTimerType, Elements, GridContentElementProps, ImageElementProps, InstagramElementProps, InstagramMedia, ItemComponentProps, LayoutBackgroundProps, LayoutElementProps, MapElementProps, ModalContentProps, PlaceholderProps, TextElementProps, TimerBlockProps, TooltipProps, VideoCommonProps, VideoElementProps, VimeoElementProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseIcon, WeaverseIconProps, WeaverseRoot, WeaverseRootPropsType, YoutubeElementProps, createRootContext };
|
|
229
|
+
export { ButtonElementProps, Components, ContainerElementProps, CountdownElementProps, CountdownTimeKey, CountdownTimerType, Elements, GridContentElementProps, ImageElementProps, InstagramElementProps, InstagramMedia, ItemComponentProps, LayoutBackgroundProps, LayoutElementProps, MapElementProps, ModalContentProps, PlaceholderProps, SliderArrowsProps, SliderProps, TextElementProps, TimerBlockProps, TooltipProps, VideoCommonProps, VideoElementProps, VimeoElementProps, WeaverseContext, WeaverseContextConsumer, WeaverseContextProvider, WeaverseElementProps, WeaverseIcon, WeaverseIconProps, WeaverseRoot, WeaverseRootPropsType, YoutubeElementProps, createRootContext };
|
package/dist/index.js
CHANGED
|
@@ -40,7 +40,7 @@ __reExport(src_exports, require("@weaverse/core"), module.exports);
|
|
|
40
40
|
|
|
41
41
|
// src/context.ts
|
|
42
42
|
var import_core = require("@weaverse/core");
|
|
43
|
-
var
|
|
43
|
+
var import_react26 = require("react");
|
|
44
44
|
|
|
45
45
|
// src/elements/Button.tsx
|
|
46
46
|
var React = __toESM(require("react"));
|
|
@@ -122,15 +122,15 @@ var INSTAGRAM_API = "https://graph.instagram.com";
|
|
|
122
122
|
|
|
123
123
|
// src/utils/css.ts
|
|
124
124
|
var import_clsx = __toESM(require("clsx"));
|
|
125
|
-
function formatCSS(
|
|
125
|
+
function formatCSS(css10) {
|
|
126
126
|
return {
|
|
127
|
-
"@desktop":
|
|
128
|
-
"@mobile":
|
|
127
|
+
"@desktop": css10["@desktop"],
|
|
128
|
+
"@mobile": css10["@mobile"]
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
var permanentClasses = {};
|
|
132
132
|
function generateItemClassName(instance, stitchesInstance) {
|
|
133
|
-
let { css:
|
|
133
|
+
let { css: css10, type, className: cls = "" } = instance.data;
|
|
134
134
|
let className = "";
|
|
135
135
|
let permanentClass = "";
|
|
136
136
|
let perCss = instance.Element?.permanentCss;
|
|
@@ -144,8 +144,8 @@ function generateItemClassName(instance, stitchesInstance) {
|
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
className = permanentClass;
|
|
147
|
-
if (
|
|
148
|
-
let formattedCss = formatCSS(
|
|
147
|
+
if (css10) {
|
|
148
|
+
let formattedCss = formatCSS(css10);
|
|
149
149
|
let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
|
|
150
150
|
let { stitchesClass } = instance;
|
|
151
151
|
let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
|
|
@@ -690,7 +690,7 @@ Video.defaultProps = {
|
|
|
690
690
|
var Video_default = Video;
|
|
691
691
|
|
|
692
692
|
// src/elements/Instagram.tsx
|
|
693
|
-
var
|
|
693
|
+
var import_react25 = __toESM(require("react"));
|
|
694
694
|
|
|
695
695
|
// src/components/Placeholder.tsx
|
|
696
696
|
var import_react14 = __toESM(require("react"));
|
|
@@ -1160,22 +1160,153 @@ function Tooltip({ children }) {
|
|
|
1160
1160
|
}, children);
|
|
1161
1161
|
}
|
|
1162
1162
|
|
|
1163
|
+
// src/components/Slider/index.tsx
|
|
1164
|
+
var import_clsx4 = __toESM(require("clsx"));
|
|
1165
|
+
var import_react23 = require("keen-slider/react");
|
|
1166
|
+
var import_react24 = __toESM(require("react"));
|
|
1167
|
+
|
|
1168
|
+
// src/components/Slider/Arrows.tsx
|
|
1169
|
+
var import_clsx3 = __toESM(require("clsx"));
|
|
1170
|
+
var import_react22 = __toESM(require("react"));
|
|
1171
|
+
function Arrows(props) {
|
|
1172
|
+
let { currentSlide, instanceRef, className } = props;
|
|
1173
|
+
let { stitchesInstance } = (0, import_react22.useContext)(WeaverseContext);
|
|
1174
|
+
let { className: cssClass } = stitchesInstance.css(css9)();
|
|
1175
|
+
let isFirstSlide = currentSlide === 0;
|
|
1176
|
+
let isLastSlide = false;
|
|
1177
|
+
if (instanceRef.current) {
|
|
1178
|
+
isLastSlide = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
|
|
1179
|
+
}
|
|
1180
|
+
let _className = (0, import_clsx3.default)(className, cssClass);
|
|
1181
|
+
let arrowLeftClass = (0, import_clsx3.default)(
|
|
1182
|
+
"wv-slider-arrow arrow--left",
|
|
1183
|
+
isFirstSlide && "arrow--disabled"
|
|
1184
|
+
);
|
|
1185
|
+
let arrowRightClass = (0, import_clsx3.default)(
|
|
1186
|
+
"wv-slider-arrow arrow--right",
|
|
1187
|
+
isLastSlide && "arrow--disabled"
|
|
1188
|
+
);
|
|
1189
|
+
return /* @__PURE__ */ import_react22.default.createElement("div", {
|
|
1190
|
+
className: _className
|
|
1191
|
+
}, /* @__PURE__ */ import_react22.default.createElement("button", {
|
|
1192
|
+
type: "button",
|
|
1193
|
+
className: arrowLeftClass,
|
|
1194
|
+
onClick: (e) => {
|
|
1195
|
+
e.stopPropagation();
|
|
1196
|
+
instanceRef?.current?.prev();
|
|
1197
|
+
}
|
|
1198
|
+
}, /* @__PURE__ */ import_react22.default.createElement(Icon, {
|
|
1199
|
+
name: "ArrowLeft"
|
|
1200
|
+
})), /* @__PURE__ */ import_react22.default.createElement("button", {
|
|
1201
|
+
type: "button",
|
|
1202
|
+
className: arrowRightClass,
|
|
1203
|
+
onClick: (e) => {
|
|
1204
|
+
e.stopPropagation();
|
|
1205
|
+
instanceRef?.current?.next();
|
|
1206
|
+
}
|
|
1207
|
+
}, /* @__PURE__ */ import_react22.default.createElement(Icon, {
|
|
1208
|
+
name: "ArrowRight"
|
|
1209
|
+
})));
|
|
1210
|
+
}
|
|
1211
|
+
var css9 = {
|
|
1212
|
+
"@desktop": {
|
|
1213
|
+
".wv-slider-arrow": {
|
|
1214
|
+
position: "absolute",
|
|
1215
|
+
top: "50%",
|
|
1216
|
+
transform: "translateY(-50%)",
|
|
1217
|
+
width: "44px",
|
|
1218
|
+
height: "44px",
|
|
1219
|
+
padding: "8px",
|
|
1220
|
+
color: "#191919",
|
|
1221
|
+
backgroundColor: "#f2f2f2",
|
|
1222
|
+
textAlign: "center",
|
|
1223
|
+
transition: "all 0.2s ease-in-out",
|
|
1224
|
+
borderRadius: "4px",
|
|
1225
|
+
border: "none",
|
|
1226
|
+
cursor: "pointer",
|
|
1227
|
+
"&:hover": {
|
|
1228
|
+
backgroundColor: "#191919",
|
|
1229
|
+
color: "#f2f2f2"
|
|
1230
|
+
},
|
|
1231
|
+
svg: {
|
|
1232
|
+
verticalAlign: "middle",
|
|
1233
|
+
width: "22px",
|
|
1234
|
+
height: "22px"
|
|
1235
|
+
},
|
|
1236
|
+
"&.arrow--left": {
|
|
1237
|
+
left: "-80px"
|
|
1238
|
+
},
|
|
1239
|
+
"&.arrow--right": {
|
|
1240
|
+
right: "-80px"
|
|
1241
|
+
},
|
|
1242
|
+
"&.arrow--disabled": {
|
|
1243
|
+
opacity: 0.5
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
},
|
|
1247
|
+
"@mobile": {
|
|
1248
|
+
".wv-slider-arrow": {
|
|
1249
|
+
display: "none"
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
};
|
|
1253
|
+
|
|
1254
|
+
// src/components/Slider/index.tsx
|
|
1255
|
+
function Slider({ children, className }) {
|
|
1256
|
+
let [currentSlide, setCurrentSlide] = (0, import_react24.useState)(0);
|
|
1257
|
+
let [created, setCreated] = (0, import_react24.useState)(false);
|
|
1258
|
+
let [ref, instanceRef] = (0, import_react23.useKeenSlider)({
|
|
1259
|
+
slides: { perView: 4, spacing: 16 },
|
|
1260
|
+
breakpoints: {
|
|
1261
|
+
"(max-width: 1024px)": {
|
|
1262
|
+
slides: { perView: 3, spacing: 16 }
|
|
1263
|
+
},
|
|
1264
|
+
"(max-width: 768px)": {
|
|
1265
|
+
slides: {
|
|
1266
|
+
perView: 1,
|
|
1267
|
+
spacing: 32
|
|
1268
|
+
}
|
|
1269
|
+
}
|
|
1270
|
+
},
|
|
1271
|
+
created: () => {
|
|
1272
|
+
setCreated(true);
|
|
1273
|
+
},
|
|
1274
|
+
slideChanged: (slider) => {
|
|
1275
|
+
setCurrentSlide(slider.track.details.rel);
|
|
1276
|
+
}
|
|
1277
|
+
});
|
|
1278
|
+
let _className = (0, import_clsx4.default)("keen-slider", className);
|
|
1279
|
+
let arrowsClass = (0, import_clsx4.default)(className && `${className}-arrows`);
|
|
1280
|
+
return /* @__PURE__ */ import_react24.default.createElement(import_react24.default.Fragment, null, /* @__PURE__ */ import_react24.default.createElement("div", {
|
|
1281
|
+
ref,
|
|
1282
|
+
className: _className
|
|
1283
|
+
}, /* @__PURE__ */ import_react24.default.createElement("link", {
|
|
1284
|
+
rel: "stylesheet",
|
|
1285
|
+
href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
|
|
1286
|
+
}), children), created && instanceRef?.current && /* @__PURE__ */ import_react24.default.createElement(Arrows, {
|
|
1287
|
+
currentSlide,
|
|
1288
|
+
instanceRef,
|
|
1289
|
+
className: arrowsClass
|
|
1290
|
+
}));
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1163
1293
|
// src/components/index.ts
|
|
1164
1294
|
var Components = {
|
|
1165
1295
|
Placeholder: Placeholder_default,
|
|
1166
1296
|
Spinner,
|
|
1167
1297
|
ModalComponents: Modal_exports,
|
|
1168
1298
|
Icon,
|
|
1299
|
+
Slider,
|
|
1169
1300
|
Tooltip
|
|
1170
1301
|
};
|
|
1171
1302
|
|
|
1172
1303
|
// src/elements/Instagram.tsx
|
|
1173
|
-
var Instagram = (0,
|
|
1304
|
+
var Instagram = (0, import_react25.forwardRef)(
|
|
1174
1305
|
(props, ref) => {
|
|
1175
1306
|
let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
|
|
1176
|
-
let [media, setMedia] = (0,
|
|
1177
|
-
let [error, setError] = (0,
|
|
1178
|
-
(0,
|
|
1307
|
+
let [media, setMedia] = (0, import_react25.useState)([]);
|
|
1308
|
+
let [error, setError] = (0, import_react25.useState)(null);
|
|
1309
|
+
(0, import_react25.useEffect)(() => {
|
|
1179
1310
|
if (token) {
|
|
1180
1311
|
let params = new URLSearchParams({
|
|
1181
1312
|
access_token: token,
|
|
@@ -1192,10 +1323,10 @@ var Instagram = (0, import_react22.forwardRef)(
|
|
|
1192
1323
|
}
|
|
1193
1324
|
}, [token]);
|
|
1194
1325
|
if (!token || error) {
|
|
1195
|
-
return /* @__PURE__ */
|
|
1326
|
+
return /* @__PURE__ */ import_react25.default.createElement("div", {
|
|
1196
1327
|
ref,
|
|
1197
1328
|
...rest
|
|
1198
|
-
}, /* @__PURE__ */
|
|
1329
|
+
}, /* @__PURE__ */ import_react25.default.createElement(Components.Placeholder, {
|
|
1199
1330
|
element: "Instagram"
|
|
1200
1331
|
}, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
|
|
1201
1332
|
}
|
|
@@ -1203,11 +1334,11 @@ var Instagram = (0, import_react22.forwardRef)(
|
|
|
1203
1334
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
1204
1335
|
"--wv-ig-images-gap": gap + "px"
|
|
1205
1336
|
};
|
|
1206
|
-
return /* @__PURE__ */
|
|
1337
|
+
return /* @__PURE__ */ import_react25.default.createElement("div", {
|
|
1207
1338
|
ref,
|
|
1208
1339
|
...rest,
|
|
1209
1340
|
style
|
|
1210
|
-
}, /* @__PURE__ */
|
|
1341
|
+
}, /* @__PURE__ */ import_react25.default.createElement("div", {
|
|
1211
1342
|
className: "wv-ig-media-container"
|
|
1212
1343
|
}, media.slice(0, numberOfImages).map((item) => {
|
|
1213
1344
|
let {
|
|
@@ -1219,21 +1350,21 @@ var Instagram = (0, import_react22.forwardRef)(
|
|
|
1219
1350
|
thumbnail_url
|
|
1220
1351
|
} = item;
|
|
1221
1352
|
if (media_type === "VIDEO") {
|
|
1222
|
-
return /* @__PURE__ */
|
|
1353
|
+
return /* @__PURE__ */ import_react25.default.createElement("video", {
|
|
1223
1354
|
key: id,
|
|
1224
1355
|
controls: true,
|
|
1225
1356
|
poster: thumbnail_url
|
|
1226
|
-
}, /* @__PURE__ */
|
|
1357
|
+
}, /* @__PURE__ */ import_react25.default.createElement("source", {
|
|
1227
1358
|
src: media_url,
|
|
1228
1359
|
type: "video/mp4"
|
|
1229
1360
|
}));
|
|
1230
1361
|
}
|
|
1231
|
-
return /* @__PURE__ */
|
|
1362
|
+
return /* @__PURE__ */ import_react25.default.createElement("a", {
|
|
1232
1363
|
key: id,
|
|
1233
1364
|
href: permalink,
|
|
1234
1365
|
target: "_blank",
|
|
1235
1366
|
rel: "noreferrer"
|
|
1236
|
-
}, /* @__PURE__ */
|
|
1367
|
+
}, /* @__PURE__ */ import_react25.default.createElement("img", {
|
|
1237
1368
|
alt: caption,
|
|
1238
1369
|
src: media_url
|
|
1239
1370
|
}));
|
|
@@ -1300,18 +1431,18 @@ var createRootContext = (configs) => {
|
|
|
1300
1431
|
});
|
|
1301
1432
|
return rootContext;
|
|
1302
1433
|
};
|
|
1303
|
-
var WeaverseContext = (0,
|
|
1434
|
+
var WeaverseContext = (0, import_react26.createContext)({});
|
|
1304
1435
|
var WeaverseContextProvider = WeaverseContext.Provider;
|
|
1305
1436
|
var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
1306
1437
|
|
|
1307
1438
|
// src/renderer.tsx
|
|
1308
1439
|
var import_core2 = require("@weaverse/core");
|
|
1309
|
-
var
|
|
1440
|
+
var import_react27 = __toESM(require("react"));
|
|
1310
1441
|
var WeaverseRoot = ({ context }) => {
|
|
1311
|
-
let [, setData] = (0,
|
|
1312
|
-
let rootRef = (0,
|
|
1442
|
+
let [, setData] = (0, import_react27.useState)(context.projectData);
|
|
1443
|
+
let rootRef = (0, import_react27.useRef)();
|
|
1313
1444
|
let renderRoot = () => setData({});
|
|
1314
|
-
(0,
|
|
1445
|
+
(0, import_react27.useEffect)(() => {
|
|
1315
1446
|
context.subscribe(renderRoot);
|
|
1316
1447
|
context.contentRootElement = rootRef.current;
|
|
1317
1448
|
return () => {
|
|
@@ -1321,23 +1452,23 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1321
1452
|
let eventHandlers = context?.studioBridge?.eventHandlers || {};
|
|
1322
1453
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1323
1454
|
if (context.projectData?.rootId) {
|
|
1324
|
-
return /* @__PURE__ */
|
|
1455
|
+
return /* @__PURE__ */ import_react27.default.createElement("div", {
|
|
1325
1456
|
className: `weaverse-content-root ${themeClass}`,
|
|
1326
1457
|
...eventHandlers,
|
|
1327
1458
|
ref: rootRef
|
|
1328
|
-
}, /* @__PURE__ */
|
|
1459
|
+
}, /* @__PURE__ */ import_react27.default.createElement(WeaverseContextProvider, {
|
|
1329
1460
|
value: context
|
|
1330
|
-
}, /* @__PURE__ */
|
|
1461
|
+
}, /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
|
|
1331
1462
|
id: context.projectData.rootId
|
|
1332
1463
|
})));
|
|
1333
1464
|
}
|
|
1334
1465
|
return null;
|
|
1335
1466
|
};
|
|
1336
1467
|
var ItemComponent = ({ instance }) => {
|
|
1337
|
-
let { stitchesInstance, elementInstances } = (0,
|
|
1338
|
-
let [data, setData] = (0,
|
|
1339
|
-
let { id, type, childIds = [], css:
|
|
1340
|
-
(0,
|
|
1468
|
+
let { stitchesInstance, elementInstances } = (0, import_react27.useContext)(WeaverseContext);
|
|
1469
|
+
let [data, setData] = (0, import_react27.useState)(instance.data);
|
|
1470
|
+
let { id, type, childIds = [], css: css10, className, ...rest } = data;
|
|
1471
|
+
(0, import_react27.useEffect)(() => {
|
|
1341
1472
|
let render = (data2) => setData({ ...data2 });
|
|
1342
1473
|
instance.subscribe(render);
|
|
1343
1474
|
if (import_core2.isBrowser && !instance.ref.current) {
|
|
@@ -1353,13 +1484,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1353
1484
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1354
1485
|
rest.ref = instance.ref;
|
|
1355
1486
|
}
|
|
1356
|
-
return /* @__PURE__ */
|
|
1487
|
+
return /* @__PURE__ */ import_react27.default.createElement(Component, {
|
|
1357
1488
|
key: id,
|
|
1358
1489
|
"data-wv-type": type,
|
|
1359
1490
|
"data-wv-id": id,
|
|
1360
1491
|
className: generateItemClassName(instance, stitchesInstance),
|
|
1361
1492
|
...rest
|
|
1362
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1493
|
+
}, childIds.map((id2) => /* @__PURE__ */ import_react27.default.createElement(ItemInstance, {
|
|
1363
1494
|
key: id2,
|
|
1364
1495
|
id: id2
|
|
1365
1496
|
})));
|
|
@@ -1369,15 +1500,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1369
1500
|
}
|
|
1370
1501
|
};
|
|
1371
1502
|
var ItemInstance = ({ id }) => {
|
|
1372
|
-
let context = (0,
|
|
1503
|
+
let context = (0, import_react27.useContext)(WeaverseContext);
|
|
1373
1504
|
let { itemInstances } = context;
|
|
1374
1505
|
let instance = itemInstances.get(id);
|
|
1375
1506
|
if (!instance) {
|
|
1376
|
-
return /* @__PURE__ */
|
|
1507
|
+
return /* @__PURE__ */ import_react27.default.createElement("div", {
|
|
1377
1508
|
style: { display: "none" }
|
|
1378
1509
|
}, "Item instance ", id, " not found");
|
|
1379
1510
|
}
|
|
1380
|
-
return /* @__PURE__ */
|
|
1511
|
+
return /* @__PURE__ */ import_react27.default.createElement(ItemComponent, {
|
|
1381
1512
|
key: id,
|
|
1382
1513
|
instance
|
|
1383
1514
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -91,15 +91,15 @@ var INSTAGRAM_API = "https://graph.instagram.com";
|
|
|
91
91
|
|
|
92
92
|
// src/utils/css.ts
|
|
93
93
|
import clsx from "clsx";
|
|
94
|
-
function formatCSS(
|
|
94
|
+
function formatCSS(css10) {
|
|
95
95
|
return {
|
|
96
|
-
"@desktop":
|
|
97
|
-
"@mobile":
|
|
96
|
+
"@desktop": css10["@desktop"],
|
|
97
|
+
"@mobile": css10["@mobile"]
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
100
|
var permanentClasses = {};
|
|
101
101
|
function generateItemClassName(instance, stitchesInstance) {
|
|
102
|
-
let { css:
|
|
102
|
+
let { css: css10, type, className: cls = "" } = instance.data;
|
|
103
103
|
let className = "";
|
|
104
104
|
let permanentClass = "";
|
|
105
105
|
let perCss = instance.Element?.permanentCss;
|
|
@@ -113,8 +113,8 @@ function generateItemClassName(instance, stitchesInstance) {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
className = permanentClass;
|
|
116
|
-
if (
|
|
117
|
-
let formattedCss = formatCSS(
|
|
116
|
+
if (css10) {
|
|
117
|
+
let formattedCss = formatCSS(css10);
|
|
118
118
|
let newStitchesClass = stitchesInstance.css(formattedCss)().className || "";
|
|
119
119
|
let { stitchesClass } = instance;
|
|
120
120
|
let otherClass = (instance.ref.current?.className || "").replace(stitchesClass, "").replace(cls, "").replace(permanentClass, "").trim();
|
|
@@ -659,7 +659,7 @@ Video.defaultProps = {
|
|
|
659
659
|
var Video_default = Video;
|
|
660
660
|
|
|
661
661
|
// src/elements/Instagram.tsx
|
|
662
|
-
import
|
|
662
|
+
import React23, { forwardRef as forwardRef10, useEffect as useEffect4, useState as useState2 } from "react";
|
|
663
663
|
|
|
664
664
|
// src/components/Placeholder.tsx
|
|
665
665
|
import React15, { forwardRef as forwardRef8 } from "react";
|
|
@@ -1129,12 +1129,143 @@ function Tooltip({ children }) {
|
|
|
1129
1129
|
}, children);
|
|
1130
1130
|
}
|
|
1131
1131
|
|
|
1132
|
+
// src/components/Slider/index.tsx
|
|
1133
|
+
import clsx4 from "clsx";
|
|
1134
|
+
import { useKeenSlider } from "keen-slider/react";
|
|
1135
|
+
import React22, { useState } from "react";
|
|
1136
|
+
|
|
1137
|
+
// src/components/Slider/Arrows.tsx
|
|
1138
|
+
import clsx3 from "clsx";
|
|
1139
|
+
import React21, { useContext as useContext4 } from "react";
|
|
1140
|
+
function Arrows(props) {
|
|
1141
|
+
let { currentSlide, instanceRef, className } = props;
|
|
1142
|
+
let { stitchesInstance } = useContext4(WeaverseContext);
|
|
1143
|
+
let { className: cssClass } = stitchesInstance.css(css9)();
|
|
1144
|
+
let isFirstSlide = currentSlide === 0;
|
|
1145
|
+
let isLastSlide = false;
|
|
1146
|
+
if (instanceRef.current) {
|
|
1147
|
+
isLastSlide = currentSlide === instanceRef?.current?.track?.details?.maxIdx;
|
|
1148
|
+
}
|
|
1149
|
+
let _className = clsx3(className, cssClass);
|
|
1150
|
+
let arrowLeftClass = clsx3(
|
|
1151
|
+
"wv-slider-arrow arrow--left",
|
|
1152
|
+
isFirstSlide && "arrow--disabled"
|
|
1153
|
+
);
|
|
1154
|
+
let arrowRightClass = clsx3(
|
|
1155
|
+
"wv-slider-arrow arrow--right",
|
|
1156
|
+
isLastSlide && "arrow--disabled"
|
|
1157
|
+
);
|
|
1158
|
+
return /* @__PURE__ */ React21.createElement("div", {
|
|
1159
|
+
className: _className
|
|
1160
|
+
}, /* @__PURE__ */ React21.createElement("button", {
|
|
1161
|
+
type: "button",
|
|
1162
|
+
className: arrowLeftClass,
|
|
1163
|
+
onClick: (e) => {
|
|
1164
|
+
e.stopPropagation();
|
|
1165
|
+
instanceRef?.current?.prev();
|
|
1166
|
+
}
|
|
1167
|
+
}, /* @__PURE__ */ React21.createElement(Icon, {
|
|
1168
|
+
name: "ArrowLeft"
|
|
1169
|
+
})), /* @__PURE__ */ React21.createElement("button", {
|
|
1170
|
+
type: "button",
|
|
1171
|
+
className: arrowRightClass,
|
|
1172
|
+
onClick: (e) => {
|
|
1173
|
+
e.stopPropagation();
|
|
1174
|
+
instanceRef?.current?.next();
|
|
1175
|
+
}
|
|
1176
|
+
}, /* @__PURE__ */ React21.createElement(Icon, {
|
|
1177
|
+
name: "ArrowRight"
|
|
1178
|
+
})));
|
|
1179
|
+
}
|
|
1180
|
+
var css9 = {
|
|
1181
|
+
"@desktop": {
|
|
1182
|
+
".wv-slider-arrow": {
|
|
1183
|
+
position: "absolute",
|
|
1184
|
+
top: "50%",
|
|
1185
|
+
transform: "translateY(-50%)",
|
|
1186
|
+
width: "44px",
|
|
1187
|
+
height: "44px",
|
|
1188
|
+
padding: "8px",
|
|
1189
|
+
color: "#191919",
|
|
1190
|
+
backgroundColor: "#f2f2f2",
|
|
1191
|
+
textAlign: "center",
|
|
1192
|
+
transition: "all 0.2s ease-in-out",
|
|
1193
|
+
borderRadius: "4px",
|
|
1194
|
+
border: "none",
|
|
1195
|
+
cursor: "pointer",
|
|
1196
|
+
"&:hover": {
|
|
1197
|
+
backgroundColor: "#191919",
|
|
1198
|
+
color: "#f2f2f2"
|
|
1199
|
+
},
|
|
1200
|
+
svg: {
|
|
1201
|
+
verticalAlign: "middle",
|
|
1202
|
+
width: "22px",
|
|
1203
|
+
height: "22px"
|
|
1204
|
+
},
|
|
1205
|
+
"&.arrow--left": {
|
|
1206
|
+
left: "-80px"
|
|
1207
|
+
},
|
|
1208
|
+
"&.arrow--right": {
|
|
1209
|
+
right: "-80px"
|
|
1210
|
+
},
|
|
1211
|
+
"&.arrow--disabled": {
|
|
1212
|
+
opacity: 0.5
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
},
|
|
1216
|
+
"@mobile": {
|
|
1217
|
+
".wv-slider-arrow": {
|
|
1218
|
+
display: "none"
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
};
|
|
1222
|
+
|
|
1223
|
+
// src/components/Slider/index.tsx
|
|
1224
|
+
function Slider({ children, className }) {
|
|
1225
|
+
let [currentSlide, setCurrentSlide] = useState(0);
|
|
1226
|
+
let [created, setCreated] = useState(false);
|
|
1227
|
+
let [ref, instanceRef] = useKeenSlider({
|
|
1228
|
+
slides: { perView: 4, spacing: 16 },
|
|
1229
|
+
breakpoints: {
|
|
1230
|
+
"(max-width: 1024px)": {
|
|
1231
|
+
slides: { perView: 3, spacing: 16 }
|
|
1232
|
+
},
|
|
1233
|
+
"(max-width: 768px)": {
|
|
1234
|
+
slides: {
|
|
1235
|
+
perView: 1,
|
|
1236
|
+
spacing: 32
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
},
|
|
1240
|
+
created: () => {
|
|
1241
|
+
setCreated(true);
|
|
1242
|
+
},
|
|
1243
|
+
slideChanged: (slider) => {
|
|
1244
|
+
setCurrentSlide(slider.track.details.rel);
|
|
1245
|
+
}
|
|
1246
|
+
});
|
|
1247
|
+
let _className = clsx4("keen-slider", className);
|
|
1248
|
+
let arrowsClass = clsx4(className && `${className}-arrows`);
|
|
1249
|
+
return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement("div", {
|
|
1250
|
+
ref,
|
|
1251
|
+
className: _className
|
|
1252
|
+
}, /* @__PURE__ */ React22.createElement("link", {
|
|
1253
|
+
rel: "stylesheet",
|
|
1254
|
+
href: "https://cdn.jsdelivr.net/npm/keen-slider@latest/keen-slider.min.css"
|
|
1255
|
+
}), children), created && instanceRef?.current && /* @__PURE__ */ React22.createElement(Arrows, {
|
|
1256
|
+
currentSlide,
|
|
1257
|
+
instanceRef,
|
|
1258
|
+
className: arrowsClass
|
|
1259
|
+
}));
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1132
1262
|
// src/components/index.ts
|
|
1133
1263
|
var Components = {
|
|
1134
1264
|
Placeholder: Placeholder_default,
|
|
1135
1265
|
Spinner,
|
|
1136
1266
|
ModalComponents: Modal_exports,
|
|
1137
1267
|
Icon,
|
|
1268
|
+
Slider,
|
|
1138
1269
|
Tooltip
|
|
1139
1270
|
};
|
|
1140
1271
|
|
|
@@ -1142,8 +1273,8 @@ var Components = {
|
|
|
1142
1273
|
var Instagram = forwardRef10(
|
|
1143
1274
|
(props, ref) => {
|
|
1144
1275
|
let { token, username, numberOfImages, imagesPerRow, gap, ...rest } = props;
|
|
1145
|
-
let [media, setMedia] =
|
|
1146
|
-
let [error, setError] =
|
|
1276
|
+
let [media, setMedia] = useState2([]);
|
|
1277
|
+
let [error, setError] = useState2(null);
|
|
1147
1278
|
useEffect4(() => {
|
|
1148
1279
|
if (token) {
|
|
1149
1280
|
let params = new URLSearchParams({
|
|
@@ -1161,10 +1292,10 @@ var Instagram = forwardRef10(
|
|
|
1161
1292
|
}
|
|
1162
1293
|
}, [token]);
|
|
1163
1294
|
if (!token || error) {
|
|
1164
|
-
return /* @__PURE__ */
|
|
1295
|
+
return /* @__PURE__ */ React23.createElement("div", {
|
|
1165
1296
|
ref,
|
|
1166
1297
|
...rest
|
|
1167
|
-
}, /* @__PURE__ */
|
|
1298
|
+
}, /* @__PURE__ */ React23.createElement(Components.Placeholder, {
|
|
1168
1299
|
element: "Instagram"
|
|
1169
1300
|
}, !token ? "Connect to Instagram to display photos on your site." : "Invalid or expired token!"));
|
|
1170
1301
|
}
|
|
@@ -1172,11 +1303,11 @@ var Instagram = forwardRef10(
|
|
|
1172
1303
|
"--wv-ig-images-per-row": imagesPerRow,
|
|
1173
1304
|
"--wv-ig-images-gap": gap + "px"
|
|
1174
1305
|
};
|
|
1175
|
-
return /* @__PURE__ */
|
|
1306
|
+
return /* @__PURE__ */ React23.createElement("div", {
|
|
1176
1307
|
ref,
|
|
1177
1308
|
...rest,
|
|
1178
1309
|
style
|
|
1179
|
-
}, /* @__PURE__ */
|
|
1310
|
+
}, /* @__PURE__ */ React23.createElement("div", {
|
|
1180
1311
|
className: "wv-ig-media-container"
|
|
1181
1312
|
}, media.slice(0, numberOfImages).map((item) => {
|
|
1182
1313
|
let {
|
|
@@ -1188,21 +1319,21 @@ var Instagram = forwardRef10(
|
|
|
1188
1319
|
thumbnail_url
|
|
1189
1320
|
} = item;
|
|
1190
1321
|
if (media_type === "VIDEO") {
|
|
1191
|
-
return /* @__PURE__ */
|
|
1322
|
+
return /* @__PURE__ */ React23.createElement("video", {
|
|
1192
1323
|
key: id,
|
|
1193
1324
|
controls: true,
|
|
1194
1325
|
poster: thumbnail_url
|
|
1195
|
-
}, /* @__PURE__ */
|
|
1326
|
+
}, /* @__PURE__ */ React23.createElement("source", {
|
|
1196
1327
|
src: media_url,
|
|
1197
1328
|
type: "video/mp4"
|
|
1198
1329
|
}));
|
|
1199
1330
|
}
|
|
1200
|
-
return /* @__PURE__ */
|
|
1331
|
+
return /* @__PURE__ */ React23.createElement("a", {
|
|
1201
1332
|
key: id,
|
|
1202
1333
|
href: permalink,
|
|
1203
1334
|
target: "_blank",
|
|
1204
1335
|
rel: "noreferrer"
|
|
1205
|
-
}, /* @__PURE__ */
|
|
1336
|
+
}, /* @__PURE__ */ React23.createElement("img", {
|
|
1206
1337
|
alt: caption,
|
|
1207
1338
|
src: media_url
|
|
1208
1339
|
}));
|
|
@@ -1275,9 +1406,9 @@ var WeaverseContextConsumer = WeaverseContext.Consumer;
|
|
|
1275
1406
|
|
|
1276
1407
|
// src/renderer.tsx
|
|
1277
1408
|
import { isBrowser } from "@weaverse/core";
|
|
1278
|
-
import
|
|
1409
|
+
import React24, { useContext as useContext5, useEffect as useEffect5, useRef, useState as useState3 } from "react";
|
|
1279
1410
|
var WeaverseRoot = ({ context }) => {
|
|
1280
|
-
let [, setData] =
|
|
1411
|
+
let [, setData] = useState3(context.projectData);
|
|
1281
1412
|
let rootRef = useRef();
|
|
1282
1413
|
let renderRoot = () => setData({});
|
|
1283
1414
|
useEffect5(() => {
|
|
@@ -1290,22 +1421,22 @@ var WeaverseRoot = ({ context }) => {
|
|
|
1290
1421
|
let eventHandlers = context?.studioBridge?.eventHandlers || {};
|
|
1291
1422
|
let themeClass = context.stitchesInstance.theme.className;
|
|
1292
1423
|
if (context.projectData?.rootId) {
|
|
1293
|
-
return /* @__PURE__ */
|
|
1424
|
+
return /* @__PURE__ */ React24.createElement("div", {
|
|
1294
1425
|
className: `weaverse-content-root ${themeClass}`,
|
|
1295
1426
|
...eventHandlers,
|
|
1296
1427
|
ref: rootRef
|
|
1297
|
-
}, /* @__PURE__ */
|
|
1428
|
+
}, /* @__PURE__ */ React24.createElement(WeaverseContextProvider, {
|
|
1298
1429
|
value: context
|
|
1299
|
-
}, /* @__PURE__ */
|
|
1430
|
+
}, /* @__PURE__ */ React24.createElement(ItemInstance, {
|
|
1300
1431
|
id: context.projectData.rootId
|
|
1301
1432
|
})));
|
|
1302
1433
|
}
|
|
1303
1434
|
return null;
|
|
1304
1435
|
};
|
|
1305
1436
|
var ItemComponent = ({ instance }) => {
|
|
1306
|
-
let { stitchesInstance, elementInstances } =
|
|
1307
|
-
let [data, setData] =
|
|
1308
|
-
let { id, type, childIds = [], css:
|
|
1437
|
+
let { stitchesInstance, elementInstances } = useContext5(WeaverseContext);
|
|
1438
|
+
let [data, setData] = useState3(instance.data);
|
|
1439
|
+
let { id, type, childIds = [], css: css10, className, ...rest } = data;
|
|
1309
1440
|
useEffect5(() => {
|
|
1310
1441
|
let render = (data2) => setData({ ...data2 });
|
|
1311
1442
|
instance.subscribe(render);
|
|
@@ -1322,13 +1453,13 @@ var ItemComponent = ({ instance }) => {
|
|
|
1322
1453
|
if (Component.$$typeof === Symbol.for("react.forward_ref")) {
|
|
1323
1454
|
rest.ref = instance.ref;
|
|
1324
1455
|
}
|
|
1325
|
-
return /* @__PURE__ */
|
|
1456
|
+
return /* @__PURE__ */ React24.createElement(Component, {
|
|
1326
1457
|
key: id,
|
|
1327
1458
|
"data-wv-type": type,
|
|
1328
1459
|
"data-wv-id": id,
|
|
1329
1460
|
className: generateItemClassName(instance, stitchesInstance),
|
|
1330
1461
|
...rest
|
|
1331
|
-
}, childIds.map((id2) => /* @__PURE__ */
|
|
1462
|
+
}, childIds.map((id2) => /* @__PURE__ */ React24.createElement(ItemInstance, {
|
|
1332
1463
|
key: id2,
|
|
1333
1464
|
id: id2
|
|
1334
1465
|
})));
|
|
@@ -1338,15 +1469,15 @@ var ItemComponent = ({ instance }) => {
|
|
|
1338
1469
|
}
|
|
1339
1470
|
};
|
|
1340
1471
|
var ItemInstance = ({ id }) => {
|
|
1341
|
-
let context =
|
|
1472
|
+
let context = useContext5(WeaverseContext);
|
|
1342
1473
|
let { itemInstances } = context;
|
|
1343
1474
|
let instance = itemInstances.get(id);
|
|
1344
1475
|
if (!instance) {
|
|
1345
|
-
return /* @__PURE__ */
|
|
1476
|
+
return /* @__PURE__ */ React24.createElement("div", {
|
|
1346
1477
|
style: { display: "none" }
|
|
1347
1478
|
}, "Item instance ", id, " not found");
|
|
1348
1479
|
}
|
|
1349
|
-
return /* @__PURE__ */
|
|
1480
|
+
return /* @__PURE__ */ React24.createElement(ItemComponent, {
|
|
1350
1481
|
key: id,
|
|
1351
1482
|
instance
|
|
1352
1483
|
});
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.7.
|
|
2
|
+
"version": "0.7.54",
|
|
3
3
|
"license": "MIT",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"typings": "dist/index.d.ts",
|
|
@@ -34,7 +34,8 @@
|
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@radix-ui/react-dialog": "^1.0.2",
|
|
36
36
|
"@stitches/react": "^1.2.8",
|
|
37
|
-
"@weaverse/core": "0.7.
|
|
38
|
-
"clsx": "^1.2.1"
|
|
37
|
+
"@weaverse/core": "0.7.54",
|
|
38
|
+
"clsx": "^1.2.1",
|
|
39
|
+
"keen-slider": "^6.8.5"
|
|
39
40
|
}
|
|
40
41
|
}
|