react-datocms 8.0.0-0 → 8.0.0
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/README.md +35 -15
- package/dist/cjs/ContentLink/index.js +104 -0
- package/dist/cjs/ContentLink/index.js.map +1 -0
- package/dist/cjs/Image/index.js +3 -3
- package/dist/cjs/Image/index.js.map +1 -1
- package/dist/cjs/Image/utils.js +3 -3
- package/dist/cjs/Image/utils.js.map +1 -1
- package/dist/cjs/SRCImage/index.js +3 -4
- package/dist/cjs/SRCImage/index.js.map +1 -1
- package/dist/cjs/SRCImage/utils.js +4 -4
- package/dist/cjs/SRCImage/utils.js.map +1 -1
- package/dist/cjs/Seo/nextUtils.js +1 -2
- package/dist/cjs/Seo/nextUtils.js.map +1 -1
- package/dist/cjs/Seo/remixUtils.js +2 -3
- package/dist/cjs/Seo/remixUtils.js.map +1 -1
- package/dist/cjs/Seo/renderMetaTags.js +1 -2
- package/dist/cjs/Seo/renderMetaTags.js.map +1 -1
- package/dist/cjs/Seo/renderMetaTagsToString.js +1 -2
- package/dist/cjs/Seo/renderMetaTagsToString.js.map +1 -1
- package/dist/cjs/StructuredText/index.js +34 -11
- package/dist/cjs/StructuredText/index.js.map +1 -1
- package/dist/cjs/VideoPlayer/index.js +45 -14
- package/dist/cjs/VideoPlayer/index.js.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/useContentLink/index.js +111 -0
- package/dist/cjs/useContentLink/index.js.map +1 -0
- package/dist/cjs/useQuerySubscription/index.js +1 -2
- package/dist/cjs/useQuerySubscription/index.js.map +1 -1
- package/dist/cjs/useSiteSearch/index.js +3 -10
- package/dist/cjs/useSiteSearch/index.js.map +1 -1
- package/dist/esm/ContentLink/index.js +101 -0
- package/dist/esm/ContentLink/index.js.map +1 -0
- package/dist/esm/Image/index.js +3 -3
- package/dist/esm/Image/index.js.map +1 -1
- package/dist/esm/SRCImage/index.js +2 -2
- package/dist/esm/SRCImage/index.js.map +1 -1
- package/dist/esm/StructuredText/index.js +22 -4
- package/dist/esm/StructuredText/index.js.map +1 -1
- package/dist/esm/VideoPlayer/index.js +30 -9
- package/dist/esm/VideoPlayer/index.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/useContentLink/index.js +105 -0
- package/dist/esm/useContentLink/index.js.map +1 -0
- package/dist/esm/useSiteSearch/index.js +2 -8
- package/dist/esm/useSiteSearch/index.js.map +1 -1
- package/dist/types/ContentLink/index.d.ts +88 -0
- package/dist/types/Image/index.d.ts +8 -1
- package/dist/types/Image/utils.d.ts +0 -1
- package/dist/types/SRCImage/index.d.ts +10 -3
- package/dist/types/SRCImage/utils.d.ts +1 -2
- package/dist/types/Seo/renderMetaTags.d.ts +0 -1
- package/dist/types/StructuredText/index.d.ts +20 -9
- package/dist/types/VideoPlayer/index.d.ts +6 -6
- package/dist/types/index.d.ts +2 -0
- package/dist/types/useContentLink/index.d.ts +91 -0
- package/dist/types/useSiteSearch/index.d.ts +3 -1
- package/dist/types/useVideoPlayer/index.d.ts +2 -2
- package/package.json +32 -17
- package/src/ContentLink/index.tsx +134 -0
- package/src/Image/__tests__/__snapshots__/index.test.tsx.snap +20 -0
- package/src/Image/index.tsx +11 -1
- package/src/SRCImage/__tests__/__snapshots__/index.test.tsx.snap +7 -0
- package/src/SRCImage/index.tsx +11 -2
- package/src/SRCImage/utils.tsx +1 -1
- package/src/StructuredText/__tests__/__snapshots__/index.test.tsx.snap +17 -0
- package/src/StructuredText/__tests__/index.test.tsx +27 -1
- package/src/StructuredText/index.tsx +80 -15
- package/src/VideoPlayer/index.tsx +43 -17
- package/src/index.ts +3 -0
- package/src/useContentLink/index.ts +187 -0
- package/src/useSiteSearch/index.tsx +6 -5
- package/src/useVideoPlayer/index.ts +2 -2
- package/dist/cjs/VideoPlayer/lazy.js +0 -35
- package/dist/cjs/VideoPlayer/lazy.js.map +0 -1
- package/dist/esm/VideoPlayer/lazy.js +0 -9
- package/dist/esm/VideoPlayer/lazy.js.map +0 -1
- package/dist/types/VideoPlayer/lazy.d.ts +0 -6
- package/src/VideoPlayer/lazy.tsx +0 -26
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
'use client';
|
|
3
3
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
4
|
if (k2 === undefined) k2 = k;
|
|
5
5
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -16,13 +16,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
16
16
|
}) : function(o, v) {
|
|
17
17
|
o["default"] = v;
|
|
18
18
|
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || function (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
};
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
26
36
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
27
37
|
var t = {};
|
|
28
38
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -48,20 +58,41 @@ exports.VideoPlayer = void 0;
|
|
|
48
58
|
// [1]: https://www.mux.com/player
|
|
49
59
|
const react_1 = __importStar(require("react"));
|
|
50
60
|
// React MUX player is made available in two flavours: eager and lazy loaded. We
|
|
51
|
-
// choose to use the
|
|
52
|
-
//
|
|
53
|
-
|
|
61
|
+
// choose to use the lazy version to avoid loading the web component uselessly.
|
|
62
|
+
// MUX player lazy version loads internally the eager version using
|
|
63
|
+
// `React.lazy()`.
|
|
64
|
+
const lazy_1 = __importDefault(require("@mux/mux-player-react/lazy"));
|
|
54
65
|
// The core of this component is the `useVideoPlayer` hook: it takes
|
|
55
66
|
// data from DatoCMS GraphQL API and returns props as expected by the
|
|
56
67
|
// `<MuxPlayer />` component.
|
|
68
|
+
const content_link_1 = require("@datocms/content-link");
|
|
57
69
|
const index_js_1 = require("../useVideoPlayer/index.js");
|
|
58
70
|
exports.VideoPlayer = (0, react_1.forwardRef)((props, ref) => {
|
|
59
|
-
const { data = {}, disableCookies = true, preload =
|
|
71
|
+
const { data = {}, disableCookies = true, disableTracking = true, preload = 'metadata', style: styleFromProps } = props, rest = __rest(props, ["data", "disableCookies", "disableTracking", "preload", "style"]);
|
|
60
72
|
const { title, playbackId, style: styleFromHook, placeholder, } = (0, index_js_1.useVideoPlayer)({
|
|
61
73
|
data,
|
|
62
74
|
});
|
|
63
75
|
const style = Object.assign(Object.assign({}, styleFromHook), styleFromProps);
|
|
64
|
-
|
|
76
|
+
// Extract alt for DatoCMS Content Link integration
|
|
77
|
+
// See: https://github.com/datocms/content-link
|
|
78
|
+
const { alt } = data;
|
|
79
|
+
// Only include data-datocms-content-link-source if alt contains stega encoding
|
|
80
|
+
const contentLinkSource = alt && (0, content_link_1.decodeStega)(alt) ? alt : undefined;
|
|
81
|
+
// Note: Custom data-* attributes can be passed to the underlying <mux-player> web component
|
|
82
|
+
// in two ways:
|
|
83
|
+
//
|
|
84
|
+
// 1. Kebab-case (passes through as-is):
|
|
85
|
+
// <VideoPlayer data-player-id="my-player" />
|
|
86
|
+
//
|
|
87
|
+
// 2. CamelCase (auto-converts to kebab-case):
|
|
88
|
+
// <VideoPlayer dataPlayerId="my-player" />
|
|
89
|
+
//
|
|
90
|
+
// Both result in: <mux-player data-player-id="my-player">
|
|
91
|
+
//
|
|
92
|
+
// The MuxPlayer React component transforms camelCase props to kebab-case to match
|
|
93
|
+
// web component attribute conventions. Any props not explicitly handled by VideoPlayer
|
|
94
|
+
// are spread via {...rest} and forwarded to MuxPlayer, which then applies them to
|
|
95
|
+
// the underlying <mux-player> element.
|
|
96
|
+
return (react_1.default.createElement(lazy_1.default, Object.assign({ ref: ref, streamType: "on-demand", preload: preload, title: title, disableCookies: disableCookies, disableTracking: disableTracking, playbackId: playbackId, style: style, placeholder: placeholder, "data-datocms-content-link-source": contentLinkSource }, rest)));
|
|
65
97
|
});
|
|
66
|
-
exports.default = exports.VideoPlayer;
|
|
67
98
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/VideoPlayer/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/VideoPlayer/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEb,gFAAgF;AAChF,8EAA8E;AAC9E,2EAA2E;AAC3E,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,kCAAkC;AAElC,+CAA0C;AAO1C,gFAAgF;AAChF,+EAA+E;AAC/E,mEAAmE;AACnE,kBAAkB;AAElB,sEAAmD;AAEnD,oEAAoE;AACpE,qEAAqE;AACrE,6BAA6B;AAE7B,wDAAoD;AACpD,yDAA4D;AAuC/C,QAAA,WAAW,GAEY,IAAA,kBAAU,EAG5C,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,EACJ,IAAI,GAAG,EAAE,EACT,cAAc,GAAG,IAAI,EACrB,eAAe,GAAG,IAAI,EACtB,OAAO,GAAG,UAAU,EACpB,KAAK,EAAE,cAAc,KAEnB,KAAK,EADJ,IAAI,UACL,KAAK,EAPH,iEAOL,CAAQ,CAAC;IAEV,MAAM,EACJ,KAAK,EACL,UAAU,EACV,KAAK,EAAE,aAAa,EACpB,WAAW,GACZ,GAAG,IAAA,yBAAc,EAAC;QACjB,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,KAAK,mCACN,aAAa,GACb,cAAc,CAClB,CAAC;IAEF,mDAAmD;IACnD,+CAA+C;IAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAErB,+EAA+E;IAC/E,MAAM,iBAAiB,GAAG,GAAG,IAAI,IAAA,0BAAW,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpE,4FAA4F;IAC5F,eAAe;IACf,EAAE;IACF,wCAAwC;IACxC,gDAAgD;IAChD,EAAE;IACF,8CAA8C;IAC9C,8CAA8C;IAC9C,EAAE;IACF,0DAA0D;IAC1D,EAAE;IACF,kFAAkF;IAClF,uFAAuF;IACvF,kFAAkF;IAClF,uCAAuC;IAEvC,OAAO,CACL,8BAAC,cAAS,kBACR,GAAG,EAAE,GAAG,EACR,UAAU,EAAC,WAAW,EACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,sCACU,iBAAiB,IAC/C,IAAI,EACR,CACH,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -22,4 +22,6 @@ __exportStar(require("./VideoPlayer/index.js"), exports);
|
|
|
22
22
|
__exportStar(require("./useQuerySubscription/index.js"), exports);
|
|
23
23
|
__exportStar(require("./useSiteSearch/index.js"), exports);
|
|
24
24
|
__exportStar(require("./useVideoPlayer/index.js"), exports);
|
|
25
|
+
__exportStar(require("./ContentLink/index.js"), exports);
|
|
26
|
+
__exportStar(require("./useContentLink/index.js"), exports);
|
|
25
27
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,iDAA+B;AAC/B,4DAA0C;AAC1C,yDAAuC;AAEvC,kEAAgD;AAChD,2DAAyC;AACzC,4DAA0C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,iDAA+B;AAC/B,4DAA0C;AAC1C,yDAAuC;AAEvC,kEAAgD;AAChD,2DAAyC;AACzC,4DAA0C;AAE1C,yDAAuC;AACvC,4DAA0C"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
'use client';
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.stripStega = exports.decodeStega = void 0;
|
|
5
|
+
exports.useContentLink = useContentLink;
|
|
6
|
+
const content_link_1 = require("@datocms/content-link");
|
|
7
|
+
const react_1 = require("react");
|
|
8
|
+
// Re-export types and utilities from @datocms/content-link for convenience
|
|
9
|
+
var content_link_2 = require("@datocms/content-link");
|
|
10
|
+
Object.defineProperty(exports, "decodeStega", { enumerable: true, get: function () { return content_link_2.decodeStega; } });
|
|
11
|
+
Object.defineProperty(exports, "stripStega", { enumerable: true, get: function () { return content_link_2.stripStega; } });
|
|
12
|
+
/**
|
|
13
|
+
* Hook to control the ContentLink controller for Visual Editing.
|
|
14
|
+
*
|
|
15
|
+
* This hook provides low-level access to the @datocms/content-link controller,
|
|
16
|
+
* allowing you to programmatically control click-to-edit overlays and
|
|
17
|
+
* communicate with the DatoCMS Web Previews plugin.
|
|
18
|
+
*
|
|
19
|
+
* @param options - Configuration options for the controller
|
|
20
|
+
* @returns An object containing the controller instance and its methods
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* import { useContentLink } from 'react-datocms';
|
|
25
|
+
*
|
|
26
|
+
* function MyComponent() {
|
|
27
|
+
* const { enableClickToEdit, flashAll } = useContentLink({
|
|
28
|
+
* onNavigateTo: (path) => router.push(path),
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* return (
|
|
32
|
+
* <button onClick={() => enableClickToEdit({ scrollToNearestTarget: true })}>
|
|
33
|
+
* Enable Editing
|
|
34
|
+
* </button>
|
|
35
|
+
* );
|
|
36
|
+
* }
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
function useContentLink(options = {}) {
|
|
40
|
+
const { enabled = true, onNavigateTo, root } = options;
|
|
41
|
+
const controllerRef = (0, react_1.useRef)(null);
|
|
42
|
+
// Store the callback in a ref to avoid recreating the controller when it changes
|
|
43
|
+
const onNavigateToRef = (0, react_1.useRef)(onNavigateTo);
|
|
44
|
+
// Keep the callback ref up to date
|
|
45
|
+
(0, react_1.useEffect)(() => {
|
|
46
|
+
onNavigateToRef.current = onNavigateTo;
|
|
47
|
+
}, [onNavigateTo]);
|
|
48
|
+
// Create/dispose controller based on enabled flag and root only
|
|
49
|
+
// The onNavigateTo callback is accessed via ref, so changes don't trigger recreation
|
|
50
|
+
(0, react_1.useEffect)(() => {
|
|
51
|
+
// Check if controller is disabled
|
|
52
|
+
const isEnabled = enabled === true || (typeof enabled === 'object' && enabled !== null);
|
|
53
|
+
if (!isEnabled) {
|
|
54
|
+
if (controllerRef.current) {
|
|
55
|
+
controllerRef.current.dispose();
|
|
56
|
+
controllerRef.current = null;
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Extract stripStega option if enabled is an object
|
|
61
|
+
const stripStega = typeof enabled === 'object' ? enabled.stripStega : false;
|
|
62
|
+
const controller = (0, content_link_1.createController)({
|
|
63
|
+
onNavigateTo: (path) => { var _a; return (_a = onNavigateToRef.current) === null || _a === void 0 ? void 0 : _a.call(onNavigateToRef, path); },
|
|
64
|
+
root: (root === null || root === void 0 ? void 0 : root.current) || undefined,
|
|
65
|
+
stripStega,
|
|
66
|
+
});
|
|
67
|
+
controllerRef.current = controller;
|
|
68
|
+
return () => {
|
|
69
|
+
controller.dispose();
|
|
70
|
+
controllerRef.current = null;
|
|
71
|
+
};
|
|
72
|
+
}, [enabled, root]);
|
|
73
|
+
// Stable method references that call through to the controller
|
|
74
|
+
const enableClickToEdit = (0, react_1.useCallback)((opts) => {
|
|
75
|
+
var _a;
|
|
76
|
+
// If hoverOnly is true, check if the device supports hover
|
|
77
|
+
if ((opts === null || opts === void 0 ? void 0 : opts.hoverOnly) &&
|
|
78
|
+
(typeof window === 'undefined' ||
|
|
79
|
+
!window.matchMedia('(hover: hover)').matches)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
(_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.enableClickToEdit((opts === null || opts === void 0 ? void 0 : opts.scrollToNearestTarget)
|
|
83
|
+
? { scrollToNearestTarget: opts.scrollToNearestTarget }
|
|
84
|
+
: undefined);
|
|
85
|
+
}, []);
|
|
86
|
+
const disableClickToEdit = (0, react_1.useCallback)(() => {
|
|
87
|
+
var _a;
|
|
88
|
+
(_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.disableClickToEdit();
|
|
89
|
+
}, []);
|
|
90
|
+
const isClickToEditEnabled = (0, react_1.useCallback)(() => {
|
|
91
|
+
var _a, _b;
|
|
92
|
+
return (_b = (_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.isClickToEditEnabled()) !== null && _b !== void 0 ? _b : false;
|
|
93
|
+
}, []);
|
|
94
|
+
const flashAll = (0, react_1.useCallback)((scrollToNearestTarget) => {
|
|
95
|
+
var _a;
|
|
96
|
+
(_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.flashAll(scrollToNearestTarget);
|
|
97
|
+
}, []);
|
|
98
|
+
const setCurrentPath = (0, react_1.useCallback)((path) => {
|
|
99
|
+
var _a;
|
|
100
|
+
(_a = controllerRef.current) === null || _a === void 0 ? void 0 : _a.setCurrentPath(path);
|
|
101
|
+
}, []);
|
|
102
|
+
return {
|
|
103
|
+
controller: controllerRef.current,
|
|
104
|
+
enableClickToEdit,
|
|
105
|
+
disableClickToEdit,
|
|
106
|
+
isClickToEditEnabled,
|
|
107
|
+
flashAll,
|
|
108
|
+
setCurrentPath,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useContentLink/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
21
21
|
return t;
|
|
22
22
|
};
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.useQuerySubscription =
|
|
24
|
+
exports.useQuerySubscription = useQuerySubscription;
|
|
25
25
|
const datocms_listen_1 = require("datocms-listen");
|
|
26
26
|
const react_1 = require("react");
|
|
27
27
|
const use_deep_compare_effect_1 = require("use-deep-compare-effect");
|
|
@@ -61,5 +61,4 @@ function useQuerySubscription(options) {
|
|
|
61
61
|
}, [subscribeToQueryOptions]);
|
|
62
62
|
return { error, status, data: data || initialData };
|
|
63
63
|
}
|
|
64
|
-
exports.useQuerySubscription = useQuerySubscription;
|
|
65
64
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useQuerySubscription/index.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useQuerySubscription/index.ts"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;AAmCb,oDAyDC;AA1FD,mDAMwB;AACxB,iCAAiC;AACjC,qEAA8F;AAyB9F,SAAgB,oBAAoB,CAKlC,OAA0D;IAC1D,MAAM,EAAE,OAAO,EAAE,WAAW,KAAe,OAAO,EAAjB,KAAK,UAAK,OAAO,EAA5C,0BAAkC,CAAU,CAAC;IAEnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAA0B,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAqB,IAAI,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAClC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAClC,CAAC;IAEF,MAAM,uBAAuB,GAAG,KAG/B,CAAC;IAEF,IAAA,qDAAoB,EAAC,GAAG,EAAE;QACxB,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEpB,OAAO,GAAG,EAAE;gBACV,yCAAyC;YAC3C,CAAC,CAAC;QACJ,CAAC;QAED,IAAI,WAAiC,CAAC;QAEtC,SAAe,SAAS;;gBACtB,WAAW,GAAG,MAAM,IAAA,iCAAgB,kCAC/B,uBAAuB,KAC1B,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;wBACzB,SAAS,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC,EACD,QAAQ,EAAE,CAAC,UAAU,EAAE,EAAE;wBACvB,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACf,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACpC,CAAC,EACD,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE;wBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACtB,CAAC,IACD,CAAC;YACL,CAAC;SAAA;QAED,SAAS,EAAE,CAAC;QAEZ,OAAO,GAAG,EAAE;YACV,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -13,7 +13,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
13
13
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.useSiteSearch =
|
|
16
|
+
exports.useSiteSearch = useSiteSearch;
|
|
17
17
|
// biome-ignore lint/style/useImportType: This is needed!
|
|
18
18
|
const react_1 = __importDefault(require("react"));
|
|
19
19
|
const react_2 = require("react");
|
|
@@ -43,19 +43,12 @@ function useSiteSearch(config) {
|
|
|
43
43
|
}
|
|
44
44
|
setResponse(undefined);
|
|
45
45
|
const request = {
|
|
46
|
-
filter: {
|
|
47
|
-
query: state.query,
|
|
48
|
-
locale: state.locale,
|
|
49
|
-
build_trigger_id: config.buildTriggerId,
|
|
50
|
-
},
|
|
46
|
+
filter: Object.assign({ query: state.query, locale: state.locale, build_trigger_id: config.buildTriggerId, search_index_id: config.searchIndexId }, (config.fuzzySearch === true ? { fuzzy: true } : {})),
|
|
51
47
|
page: {
|
|
52
48
|
limit: resultsPerPage,
|
|
53
49
|
offset: resultsPerPage * state.page,
|
|
54
50
|
},
|
|
55
51
|
};
|
|
56
|
-
if (config.fuzzySearch) {
|
|
57
|
-
request.fuzzy = 'true';
|
|
58
|
-
}
|
|
59
52
|
const response = yield config.client.searchResults.rawList(request);
|
|
60
53
|
if (!isCancelled) {
|
|
61
54
|
setResponse(response);
|
|
@@ -81,6 +74,7 @@ function useSiteSearch(config) {
|
|
|
81
74
|
resultsPerPage,
|
|
82
75
|
state,
|
|
83
76
|
config.buildTriggerId,
|
|
77
|
+
config.searchIndexId,
|
|
84
78
|
config.fuzzySearch,
|
|
85
79
|
config.client.config.apiToken,
|
|
86
80
|
]);
|
|
@@ -125,5 +119,4 @@ function useSiteSearch(config) {
|
|
|
125
119
|
: undefined,
|
|
126
120
|
};
|
|
127
121
|
}
|
|
128
|
-
exports.useSiteSearch = useSiteSearch;
|
|
129
122
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useSiteSearch/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/useSiteSearch/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
import { useEffect } from 'react';
|
|
14
|
+
import { useContentLink, } from '../useContentLink/index.js';
|
|
15
|
+
/**
|
|
16
|
+
* ContentLink component for Visual Editing with DatoCMS.
|
|
17
|
+
*
|
|
18
|
+
* This component enables Visual Editing by:
|
|
19
|
+
* - Detecting stega-encoded metadata in content and creating click-to-edit overlays
|
|
20
|
+
* - Integrating with DatoCMS Web Previews plugin for in-editor editing
|
|
21
|
+
* - Supporting Alt/Option key for temporary click-to-edit mode
|
|
22
|
+
* - Providing bidirectional communication between preview and DatoCMS editor
|
|
23
|
+
*
|
|
24
|
+
* ## Basic Usage (Standalone Website with Click-to-Edit)
|
|
25
|
+
*
|
|
26
|
+
* For standalone websites with click-to-edit overlays:
|
|
27
|
+
*
|
|
28
|
+
* ```tsx
|
|
29
|
+
* import { ContentLink } from 'react-datocms';
|
|
30
|
+
*
|
|
31
|
+
* function App() {
|
|
32
|
+
* return (
|
|
33
|
+
* <>
|
|
34
|
+
* <ContentLink enableClickToEdit={true} />
|
|
35
|
+
* {/* Your content with stega-encoded data *\/}
|
|
36
|
+
* </>
|
|
37
|
+
* );
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ## Web Previews Plugin Integration (Next.js Example)
|
|
42
|
+
*
|
|
43
|
+
* For integration with DatoCMS Web Previews plugin, provide navigation callbacks:
|
|
44
|
+
*
|
|
45
|
+
* ```tsx
|
|
46
|
+
* 'use client';
|
|
47
|
+
* import { ContentLink } from 'react-datocms';
|
|
48
|
+
* import { useRouter, usePathname } from 'next/navigation';
|
|
49
|
+
*
|
|
50
|
+
* export function VisualEditing() {
|
|
51
|
+
* const router = useRouter();
|
|
52
|
+
* const pathname = usePathname();
|
|
53
|
+
*
|
|
54
|
+
* return (
|
|
55
|
+
* <ContentLink
|
|
56
|
+
* onNavigateTo={(path) => router.push(path)}
|
|
57
|
+
* currentPath={pathname}
|
|
58
|
+
* />
|
|
59
|
+
* );
|
|
60
|
+
* }
|
|
61
|
+
* ```
|
|
62
|
+
*
|
|
63
|
+
* ## How Visual Editing Works
|
|
64
|
+
*
|
|
65
|
+
* 1. **Fetch content with stega encoding**: Use the `contentLink` and `baseEditingUrl` options
|
|
66
|
+
* when fetching content from DatoCMS to embed editing metadata.
|
|
67
|
+
*
|
|
68
|
+
* 2. **Add ContentLink component**: Place this component in your app to scan for encoded
|
|
69
|
+
* content and create overlays.
|
|
70
|
+
*
|
|
71
|
+
* 3. **Enable editing**: Either set `enableClickToEdit={true}` prop or hold Alt/Option key
|
|
72
|
+
* for temporary editing mode.
|
|
73
|
+
*
|
|
74
|
+
* 4. **Click to edit**: Click on any content to open the DatoCMS editor at that field.
|
|
75
|
+
*
|
|
76
|
+
* @param props - Configuration props for ContentLink
|
|
77
|
+
* @returns null - This component has no visual output
|
|
78
|
+
*/
|
|
79
|
+
export function ContentLink(props) {
|
|
80
|
+
const { currentPath, enableClickToEdit: enableClickToEditOptions, stripStega } = props, useContentLinkOptions = __rest(props, ["currentPath", "enableClickToEdit", "stripStega"]);
|
|
81
|
+
const { enableClickToEdit, setCurrentPath } = useContentLink(Object.assign(Object.assign({}, useContentLinkOptions), { enabled: stripStega !== undefined ? { stripStega } : true }));
|
|
82
|
+
// Sync current path when it changes
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
if (currentPath !== undefined) {
|
|
85
|
+
setCurrentPath(currentPath);
|
|
86
|
+
}
|
|
87
|
+
}, [currentPath, setCurrentPath]);
|
|
88
|
+
// Enable click-to-edit on mount if requested
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (!enableClickToEditOptions) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Never enable click-to-edit inside an iframe
|
|
94
|
+
if (typeof window === 'undefined' || window.parent !== window) {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
enableClickToEdit(enableClickToEditOptions === true ? undefined : enableClickToEditOptions);
|
|
98
|
+
}, [enableClickToEditOptions, enableClickToEdit]);
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ContentLink/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;AAEb,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAGL,cAAc,GACf,MAAM,4BAA4B,CAAC;AAyBpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EACJ,WAAW,EACX,iBAAiB,EAAE,wBAAwB,EAC3C,UAAU,KAER,KAAK,EADJ,qBAAqB,UACtB,KAAK,EALH,kDAKL,CAAQ,CAAC;IAEV,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,cAAc,iCACvD,qBAAqB,KACxB,OAAO,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,IACzD,CAAC;IAEH,oCAAoC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,cAAc,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAElC,6CAA6C;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QAED,8CAA8C;QAC9C,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,iBAAiB,CACf,wBAAwB,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,wBAAwB,CACzE,CAAC;IACJ,CAAC,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAElD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/esm/Image/index.js
CHANGED
|
@@ -29,7 +29,7 @@ const imageShowStrategy = ({ priority, loaded }) => {
|
|
|
29
29
|
}
|
|
30
30
|
return true;
|
|
31
31
|
};
|
|
32
|
-
export const Image = forwardRef(({ className, fadeInDuration = 500, intersectionTreshold, intersectionThreshold, intersectionMargin, pictureClassName, imgClassName, style, pictureStyle, imgStyle, layout = 'intrinsic', objectFit, objectPosition, data, onLoad, usePlaceholder = true, priority = false, sizes, srcSetCandidates = [0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4], placeholderClassName, placeholderStyle, }, ref) => {
|
|
32
|
+
export const Image = forwardRef(({ className, fadeInDuration = 500, intersectionTreshold, intersectionThreshold, intersectionMargin, pictureClassName, imgClassName, style, pictureStyle, imgStyle, layout = 'intrinsic', objectFit, objectPosition, data, onLoad, usePlaceholder = true, priority = false, sizes, srcSetCandidates = [0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4], placeholderClassName, placeholderStyle, referrerPolicy = 'no-referrer-when-downgrade', }, ref) => {
|
|
33
33
|
var _a, _b, _c, _d, _e;
|
|
34
34
|
const imageRef = useRef(null);
|
|
35
35
|
const [loaded, handleLoad] = useImageLoad(imageRef, onLoad);
|
|
@@ -72,7 +72,7 @@ export const Image = forwardRef(({ className, fadeInDuration = 500, intersection
|
|
|
72
72
|
data.src && (
|
|
73
73
|
// biome-ignore lint/a11y/useAltText: We do support the `alt` attribute
|
|
74
74
|
React.createElement("img", Object.assign({ ref: imageRef, src: data.src, alt: (_b = data.alt) !== null && _b !== void 0 ? _b : '', title: (_c = data.title) !== null && _c !== void 0 ? _c : undefined, onLoad: handleLoad }, priorityProp(priority ? 'high' : undefined), { className: imgClassName, style: Object.assign(Object.assign(Object.assign({ opacity: showImage ? 1 : 0, transition }, absolutePositioning), { objectFit,
|
|
75
|
-
objectPosition }), imgStyle) }))))),
|
|
75
|
+
objectPosition }), imgStyle), referrerPolicy: referrerPolicy }))))),
|
|
76
76
|
React.createElement("noscript", null,
|
|
77
77
|
React.createElement("picture", { className: pictureClassName, style: pictureStyle },
|
|
78
78
|
webpSource,
|
|
@@ -80,6 +80,6 @@ export const Image = forwardRef(({ className, fadeInDuration = 500, intersection
|
|
|
80
80
|
data.src && (
|
|
81
81
|
// biome-ignore lint/a11y/useAltText: We do support the `alt` attribute
|
|
82
82
|
React.createElement("img", Object.assign({ src: data.src, alt: (_d = data.alt) !== null && _d !== void 0 ? _d : '', title: (_e = data.title) !== null && _e !== void 0 ? _e : undefined, className: imgClassName, style: Object.assign(Object.assign(Object.assign({}, absolutePositioning), { objectFit,
|
|
83
|
-
objectPosition }), imgStyle), loading: priority ? undefined : 'lazy' }, priorityProp(priority ? 'high' : undefined))))))));
|
|
83
|
+
objectPosition }), imgStyle), loading: priority ? undefined : 'lazy' }, priorityProp(priority ? 'high' : undefined), { referrerPolicy: referrerPolicy })))))));
|
|
84
84
|
});
|
|
85
85
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,uDAAuD;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,uDAAuD;AACvD,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAsB,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,KAAK,EACL,aAAa,EACb,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AA8GpB,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAS,EAAE,EAAE;IAC/D,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,+BAA+B,EAAE,CAAC;QACpC,OAAO,MAAM,IAAI,MAAM,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAS,EAAE,EAAE;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,+BAA+B,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAC7B,CACE,EACE,SAAS,EACT,cAAc,GAAG,GAAG,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,MAAM,GAAG,WAAW,EACpB,SAAS,EACT,cAAc,EACd,IAAI,EACJ,MAAM,EACN,cAAc,GAAG,IAAI,EACrB,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrD,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,GAAG,4BAA4B,GAC9C,EACD,GAAG,EACH,EAAE;;IACF,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEhD,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;QAClC,SAAS,EAAE,qBAAqB,IAAI,oBAAoB,IAAI,CAAC;QAC7D,UAAU,EAAE,kBAAkB,IAAI,iBAAiB;QACnD,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAExE,MAAM,UAAU,GACd,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,cAAc,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAEjE,MAAM,oBAAoB,mBACxB,UAAU,EACV,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,8EAA8E;QAC9E,uFAAuF;QACvF,oFAAoF;QACpF,sCAAsC;QACtC,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,KAAK,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACrC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,IACd,gBAAgB,CACpB,CAAC;IAEF,MAAM,WAAW,GACf,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAC9B,4CACc,MAAM,EAClB,GAAG,EAAC,EAAE,EACN,GAAG,EAAE,IAAI,CAAC,MAAM,EAChB,SAAS,EAAE,oBAAoB,EAC/B,KAAK,kBACH,SAAS;YACT,cAAc,IACX,oBAAoB,IAEzB,CACH,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACnC,6BACE,SAAS,EAAE,oBAAoB,EAC/B,KAAK,kBACH,eAAe,EAAE,IAAI,CAAC,OAAO,IAC1B,oBAAoB,IAEzB,CACH,CAAC,CAAC,CAAC,IAAI,CAAC;IAEX,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACpC,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEtE,MAAM,GAAG,GAAG,kDAAkD,KAAK,aAAa,MAAM,UAAU,CAAC;IAEjG,MAAM,KAAK,GACT,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAClB,6BACE,SAAS,EAAE,YAAY,EACvB,KAAK,kBACH,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,IACV,QAAQ,GAEb,GAAG,EAAE,6BAA6B,aAAa,CAAC,GAAG,CAAC,EAAE,iBAC1C,MAAM,EAClB,GAAG,EAAC,EAAE,GACN,CACH,CAAC,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO,CACL,6BACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,SAAS,EACpB,KAAK,gCACH,QAAQ,EAAE,QAAQ,IACf,CAAC,MAAM,KAAK,MAAM;YACnB,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,MAAM,KAAK,WAAW;gBACtB,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAC1D,CAAC,CAAC,MAAM,KAAK,OAAO;oBAClB,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE;oBACjC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAC7C,KAAK;QAGT,KAAK;QACL,WAAW;QACX,QAAQ,IAAI,CACX,iCAAS,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY;YACtD,UAAU;YACV,aAAa;YACb,IAAI,CAAC,GAAG,IAAI;YACX,uEAAuE;YACvE,2CACE,GAAG,EAAE,QAAQ,EACb,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,EAAE,EACnB,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,SAAS,EAC9B,MAAM,EAAE,UAAU,IACd,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAC/C,SAAS,EAAE,YAAY,EACvB,KAAK,8CACH,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1B,UAAU,IACP,mBAAmB,KACtB,SAAS;oBACT,cAAc,KACX,QAAQ,GAEb,cAAc,EAAE,cAAc,IAC9B,CACH,CACO,CACX;QACD;YACE,iCAAS,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY;gBACtD,UAAU;gBACV,aAAa;gBACb,IAAI,CAAC,GAAG,IAAI;gBACX,uEAAuE;gBACvE,2CACE,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,EAAE,EACnB,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,SAAS,EAC9B,SAAS,EAAE,YAAY,EACvB,KAAK,gDACA,mBAAmB,KACtB,SAAS;wBACT,cAAc,KACX,QAAQ,GAEb,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,IAClC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAC/C,cAAc,EAAE,cAAc,IAC9B,CACH,CACO,CACD,CACP,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// biome-ignore lint/style/useImportType: wrong warning
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { buildRegularSource, buildWebpSource, priorityProp } from './utils.js';
|
|
4
|
-
export function SRCImage({ pictureClassName, pictureStyle, imgClassName, imgStyle, data, usePlaceholder = true, priority = false, sizes, srcSetCandidates = [0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4], }) {
|
|
4
|
+
export function SRCImage({ pictureClassName, pictureStyle, imgClassName, imgStyle, data, usePlaceholder = true, priority = false, sizes, srcSetCandidates = [0.25, 0.5, 0.75, 1, 1.5, 2, 3, 4], referrerPolicy = 'no-referrer-when-downgrade', }) {
|
|
5
5
|
var _a, _b, _c, _d;
|
|
6
6
|
const webpSource = buildWebpSource(data, sizes);
|
|
7
7
|
const regularSource = buildRegularSource(data, sizes, srcSetCandidates);
|
|
@@ -32,6 +32,6 @@ export function SRCImage({ pictureClassName, pictureStyle, imgClassName, imgStyl
|
|
|
32
32
|
regularSource,
|
|
33
33
|
data.src && (
|
|
34
34
|
// biome-ignore lint/a11y/useAltText: We do with alt the best we can
|
|
35
|
-
React.createElement("img", Object.assign({ src: data.src, alt: (_c = data.alt) !== null && _c !== void 0 ? _c : '', title: (_d = data.title) !== null && _d !== void 0 ? _d : undefined }, loadingBehaviourProps, { className: imgClassName, style: Object.assign(Object.assign(Object.assign({}, placeholderStyle), sizingStyle), imgStyle) })))));
|
|
35
|
+
React.createElement("img", Object.assign({ src: data.src, alt: (_c = data.alt) !== null && _c !== void 0 ? _c : '', title: (_d = data.title) !== null && _d !== void 0 ? _d : undefined }, loadingBehaviourProps, { className: imgClassName, style: Object.assign(Object.assign(Object.assign({}, placeholderStyle), sizingStyle), imgStyle), referrerPolicy: referrerPolicy })))));
|
|
36
36
|
}
|
|
37
37
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/SRCImage/index.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/SRCImage/index.tsx"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4C/E,MAAM,UAAU,QAAQ,CAAC,EACvB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,cAAc,GAAG,IAAI,EACrB,QAAQ,GAAG,KAAK,EAChB,KAAK,EACL,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACrD,cAAc,GAAG,4BAA4B,GAC3B;;IAClB,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,MAAM,aAAa,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAExE,MAAM,gBAAgB,GACpB,cAAc,IAAI,IAAI,CAAC,MAAM;QAC3B,CAAC,CAAC;YACE,eAAe,EAAE,QAAQ,IAAI,CAAC,MAAM,IAAI;YACxC,cAAc,EAAE,OAAO;YACvB,gBAAgB,EAAE,WAAW;YAC7B,kBAAkB,EAAE,SAAS;YAC7B,KAAK,EAAE,aAAa;SACrB;QACH,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO;YAC9B,CAAC,CAAC,EAAE,eAAe,EAAE,MAAA,IAAI,CAAC,OAAO,mCAAI,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE;YACtE,CAAC,CAAC,SAAS,CAAC;IAElB,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvB,MAAM,MAAM,GACV,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,MAAM,WAAW,GAAG;QAClB,WAAW,EAAE,GAAG,KAAK,MAAM,MAAM,EAAE;QACnC,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,GAAG,KAAK,IAAI;QACtB,MAAM,EAAE,MAAM;KACf,CAAC;IAEF,MAAM,qBAAqB,GAAG,QAAQ;QACpC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAExB,OAAO,CACL,iCAAS,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,YAAY;QACtD,UAAU;QACV,aAAa;QACb,IAAI,CAAC,GAAG,IAAI;QACX,oEAAoE;QACpE,2CACE,GAAG,EAAE,IAAI,CAAC,GAAG,EACb,GAAG,EAAE,MAAA,IAAI,CAAC,GAAG,mCAAI,EAAE,EACnB,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,mCAAI,SAAS,IAC1B,qBAAqB,IACzB,SAAS,EAAE,YAAY,EACvB,KAAK,gDACA,gBAAgB,GAChB,WAAW,GACX,QAAQ,GAEb,cAAc,EAAE,cAAc,IAC9B,CACH,CACO,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { defaultMetaTransformer, render, renderMarkRule, renderNodeRule, } from 'datocms-structured-text-generic-html-renderer';
|
|
2
|
-
import { RenderError, isBlock, isInlineItem, isItemLink, isStructuredText, } from 'datocms-structured-text-utils';
|
|
2
|
+
import { RenderError, isBlock, isInlineBlock, isInlineItem, isItemLink, isStructuredText, } from 'datocms-structured-text-utils';
|
|
3
3
|
import React, { cloneElement, isValidElement } from 'react';
|
|
4
4
|
export { renderNodeRule, renderMarkRule, RenderError };
|
|
5
|
-
// deprecated
|
|
6
|
-
export { renderNodeRule as renderRule };
|
|
7
5
|
export const defaultAdapter = {
|
|
8
6
|
renderNode: React.createElement,
|
|
9
7
|
renderFragment: (children, key) => React.createElement(React.Fragment, { key: key }, children),
|
|
@@ -15,7 +13,7 @@ export function appendKeyToValidElement(element, key) {
|
|
|
15
13
|
}
|
|
16
14
|
return element;
|
|
17
15
|
}
|
|
18
|
-
export function StructuredText({ data, renderInlineRecord, renderLinkToRecord, renderBlock, renderText, renderNode, renderFragment, customMarkRules, customRules, customNodeRules, metaTransformer, }) {
|
|
16
|
+
export function StructuredText({ data, renderInlineRecord, renderLinkToRecord, renderBlock, renderInlineBlock, renderText, renderNode, renderFragment, customMarkRules, customRules, customNodeRules, metaTransformer, }) {
|
|
19
17
|
const result = render(data, {
|
|
20
18
|
adapter: {
|
|
21
19
|
renderText: renderText || defaultAdapter.renderText,
|
|
@@ -73,6 +71,19 @@ export function StructuredText({ data, renderInlineRecord, renderLinkToRecord, r
|
|
|
73
71
|
}
|
|
74
72
|
return appendKeyToValidElement(renderBlock({ record: item }), key);
|
|
75
73
|
}),
|
|
74
|
+
renderNodeRule(isInlineBlock, ({ node, key }) => {
|
|
75
|
+
if (!renderInlineBlock) {
|
|
76
|
+
throw new RenderError(`The Structured Text document contains an 'inlineBlock' node, but no 'renderInlineBlock' prop is specified!`, node);
|
|
77
|
+
}
|
|
78
|
+
if (!(isStructuredText(data) && data.inlineBlocks)) {
|
|
79
|
+
throw new RenderError(`The document contains an 'inlineBlock' node, but the passed data prop is not a Structured Text GraphQL response, or data.inlineBlocks is not present!`, node);
|
|
80
|
+
}
|
|
81
|
+
const item = data.inlineBlocks.find((item) => item.id === node.item);
|
|
82
|
+
if (!item) {
|
|
83
|
+
throw new RenderError(`The Structured Text document contains an 'inlineBlock' node, but cannot find a record with ID ${node.item} inside data.inlineBlocks!`, node);
|
|
84
|
+
}
|
|
85
|
+
return appendKeyToValidElement(renderInlineBlock({ record: item }), key);
|
|
86
|
+
}),
|
|
76
87
|
...(customNodeRules || customRules || []),
|
|
77
88
|
],
|
|
78
89
|
});
|
|
@@ -81,4 +92,11 @@ export function StructuredText({ data, renderInlineRecord, renderLinkToRecord, r
|
|
|
81
92
|
}
|
|
82
93
|
return result || null;
|
|
83
94
|
}
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// DEPRECATED EXPORTS - kept for backward compatibility
|
|
97
|
+
// ============================================================================
|
|
98
|
+
/**
|
|
99
|
+
* @deprecated Use renderNodeRule instead
|
|
100
|
+
*/
|
|
101
|
+
export { renderNodeRule as renderRule };
|
|
84
102
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/StructuredText/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,sBAAsB,EACtB,MAAM,EACN,cAAc,EACd,cAAc,GACf,MAAM,+CAA+C,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/StructuredText/index.tsx"],"names":[],"mappings":"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"}
|