@storyblok/react 5.3.0 → 5.4.1

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.
Files changed (84) hide show
  1. package/README.md +192 -64
  2. package/dist/core/init.js +1 -0
  3. package/dist/core/init.mjs +17 -0
  4. package/dist/core/richtext-hoc.js +1 -0
  5. package/dist/core/richtext-hoc.mjs +38 -0
  6. package/dist/core/state.js +1 -0
  7. package/dist/core/state.mjs +23 -0
  8. package/dist/core/storyblok-component.js +1 -0
  9. package/dist/{storyblok-component.mjs → core/storyblok-component.mjs} +4 -3
  10. package/dist/core/use-storyblok-api.js +1 -0
  11. package/dist/core/use-storyblok-api.mjs +11 -0
  12. package/dist/core/use-storyblok-state.js +2 -0
  13. package/dist/{client.mjs → core/use-storyblok-state.mjs} +6 -6
  14. package/dist/index.d.ts +209 -13
  15. package/dist/index.js +1 -1
  16. package/dist/index.mjs +33 -32
  17. package/dist/richtext.js +1 -1
  18. package/dist/richtext.mjs +6 -27
  19. package/dist/rsc/live-editing.js +2 -0
  20. package/dist/rsc/live-editing.mjs +30 -0
  21. package/dist/rsc/story.js +1 -0
  22. package/dist/{story.mjs → rsc/story.mjs} +6 -7
  23. package/dist/rsc.d.ts +194 -0
  24. package/dist/rsc.js +1 -1
  25. package/dist/rsc.mjs +32 -29
  26. package/dist/server/richtext.js +1 -0
  27. package/dist/server/richtext.mjs +8 -0
  28. package/dist/server/server-component.js +1 -0
  29. package/dist/{server-component.mjs → server/server-component.mjs} +3 -5
  30. package/dist/server/server-story.js +1 -0
  31. package/dist/server/server-story.mjs +25 -0
  32. package/dist/{server-storyblok-richtext-component.js → server/server-storyblok-richtext-component.js} +1 -1
  33. package/dist/{server-storyblok-richtext-component.mjs → server/server-storyblok-richtext-component.mjs} +2 -2
  34. package/dist/ssr.d.ts +192 -0
  35. package/dist/ssr.js +1 -0
  36. package/dist/ssr.mjs +35 -0
  37. package/package.json +8 -3
  38. package/dist/client.js +0 -2
  39. package/dist/common/client.d.ts +0 -3
  40. package/dist/common/client.d.ts.map +0 -1
  41. package/dist/common/index.d.ts +0 -12
  42. package/dist/common/index.d.ts.map +0 -1
  43. package/dist/common/storyblok-component.d.ts +0 -7
  44. package/dist/common/storyblok-component.d.ts.map +0 -1
  45. package/dist/common.js +0 -1
  46. package/dist/common.mjs +0 -33
  47. package/dist/index.d.ts.map +0 -1
  48. package/dist/index2.js +0 -1
  49. package/dist/index2.mjs +0 -30
  50. package/dist/live-editing.js +0 -2
  51. package/dist/live-editing.mjs +0 -24
  52. package/dist/richtext.d.ts +0 -7
  53. package/dist/richtext.d.ts.map +0 -1
  54. package/dist/richtext2.js +0 -1
  55. package/dist/richtext2.mjs +0 -32
  56. package/dist/rsc/common.d.ts +0 -15
  57. package/dist/rsc/common.d.ts.map +0 -1
  58. package/dist/rsc/index.d.ts +0 -7
  59. package/dist/rsc/index.d.ts.map +0 -1
  60. package/dist/rsc/live-edit-update-action.d.ts +0 -6
  61. package/dist/rsc/live-edit-update-action.d.ts.map +0 -1
  62. package/dist/rsc/live-editing.d.ts +0 -7
  63. package/dist/rsc/live-editing.d.ts.map +0 -1
  64. package/dist/rsc/richtext.d.ts +0 -11
  65. package/dist/rsc/richtext.d.ts.map +0 -1
  66. package/dist/rsc/server-component.d.ts +0 -7
  67. package/dist/rsc/server-component.d.ts.map +0 -1
  68. package/dist/rsc/server-storyblok-richtext-component.d.ts +0 -5
  69. package/dist/rsc/server-storyblok-richtext-component.d.ts.map +0 -1
  70. package/dist/rsc/story.d.ts +0 -8
  71. package/dist/rsc/story.d.ts.map +0 -1
  72. package/dist/server-component.js +0 -1
  73. package/dist/story.js +0 -1
  74. package/dist/storyblok-component.js +0 -1
  75. package/dist/storyblok-js.js +0 -1
  76. package/dist/storyblok-js.mjs +0 -898
  77. package/dist/storyblok-rich-text.d.ts +0 -5
  78. package/dist/storyblok-rich-text.d.ts.map +0 -1
  79. package/dist/types.d.ts +0 -17
  80. package/dist/types.d.ts.map +0 -1
  81. package/dist/utils.d.ts +0 -19
  82. package/dist/utils.d.ts.map +0 -1
  83. /package/dist/{live-edit-update-action.js → rsc/live-edit-update-action.js} +0 -0
  84. /package/dist/{live-edit-update-action.mjs → rsc/live-edit-update-action.mjs} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,13 +1,209 @@
1
- import { ISbStoriesParams, ISbStoryData, StoryblokBridgeConfigV2 } from './types';
2
- import { useStoryblokRichText } from './richtext';
3
- export declare const useStoryblok: (slug: string, apiOptions?: ISbStoriesParams, bridgeOptions?: StoryblokBridgeConfigV2) => ISbStoryData<import('storyblok-js-client').ISbComponentType<string> & {
4
- [index: string]: any;
5
- }>;
6
- export * from './common/client';
7
- export * from './common/index';
8
- export { useStoryblokRichText };
9
- /** @deprecated Use useStoryblokRichText instead */
10
- export declare const useStoryblokRichTextResolver: typeof useStoryblokRichText;
11
- export { default as StoryblokRichText } from './storyblok-rich-text';
12
- export * from './utils';
13
- //# sourceMappingURL=index.d.ts.map
1
+ import { apiPlugin } from '@storyblok/js';
2
+ import { ArrayFn } from '@storyblok/js';
3
+ import { AsyncFn } from '@storyblok/js';
4
+ import { BlockTypes } from '@storyblok/js';
5
+ import { default as default_2 } from 'react';
6
+ import { ForwardRefExoticComponent } from 'react';
7
+ import { ISbAlternateObject } from '@storyblok/js';
8
+ import { ISbCache } from '@storyblok/js';
9
+ import { ISbComponentType } from 'storyblok-js-client';
10
+ import { ISbConfig } from '@storyblok/js';
11
+ import { ISbContentMangmntAPI } from '@storyblok/js';
12
+ import { ISbDimensions } from '@storyblok/js';
13
+ import { ISbError } from '@storyblok/js';
14
+ import { ISbManagmentApiResult } from '@storyblok/js';
15
+ import { ISbResponse } from '@storyblok/js';
16
+ import { ISbResult } from '@storyblok/js';
17
+ import { ISbSchema } from '@storyblok/js';
18
+ import { ISbStories } from '@storyblok/js';
19
+ import { ISbStoriesParams } from '@storyblok/js';
20
+ import { ISbStory } from '@storyblok/js';
21
+ import { ISbStoryData } from '@storyblok/js';
22
+ import { ISbStoryParams } from '@storyblok/js';
23
+ import { ISbThrottle } from '@storyblok/js';
24
+ import { loadStoryblokBridge } from '@storyblok/js';
25
+ import { MarkTypes } from '@storyblok/js';
26
+ import { ReactNode } from 'react';
27
+ import { RefAttributes } from 'react';
28
+ import { registerStoryblokBridge } from '@storyblok/js';
29
+ import { renderRichText } from '@storyblok/js';
30
+ import { richTextResolver } from '@storyblok/js';
31
+ import { SbBlokData } from '@storyblok/js';
32
+ import { SbBlokKeyDataTypes } from '@storyblok/js';
33
+ import { SbSDKOptions } from '@storyblok/js';
34
+ import { StoryblokBridgeConfigV2 } from '@storyblok/js';
35
+ import { StoryblokBridgeV2 } from '@storyblok/js';
36
+ import { StoryblokClient } from '@storyblok/js';
37
+ import { StoryblokComponentType } from '@storyblok/js';
38
+ import { storyblokEditable } from '@storyblok/js';
39
+ import { StoryblokRichTextImageOptimizationOptions } from '@storyblok/js';
40
+ import { StoryblokRichTextNode } from '@storyblok/js';
41
+ import { StoryblokRichTextNode as StoryblokRichTextNode_2 } from '@storyblok/richtext';
42
+ import { StoryblokRichTextNodeResolver } from '@storyblok/js';
43
+ import { StoryblokRichTextNodeTypes } from '@storyblok/js';
44
+ import { StoryblokRichTextOptions } from '@storyblok/js';
45
+ import { StoryblokRichTextOptions as StoryblokRichTextOptions_2 } from '@storyblok/richtext';
46
+ import { StoryblokRichTextResolvers } from '@storyblok/js';
47
+ import { TextTypes } from '@storyblok/js';
48
+ import { useStoryblokBridge } from '@storyblok/js';
49
+
50
+ export { apiPlugin }
51
+
52
+ export { ArrayFn }
53
+
54
+ export { AsyncFn }
55
+
56
+ export { BlockTypes }
57
+
58
+ /**
59
+ * Recursively converts HTML attributes in a React element tree to their JSX property names.
60
+ *
61
+ * @param {React.ReactElement} element The React element to process.
62
+ * @return {React.ReactElement} A new React element with converted attributes.
63
+ */
64
+ export declare function convertAttributesInElement(element: default_2.ReactElement | default_2.ReactElement[]): default_2.ReactElement | default_2.ReactElement[];
65
+
66
+ export declare const getComponent: (componentKey: string) => React.ElementType | false;
67
+
68
+ export declare const getCustomFallbackComponent: () => React.ElementType;
69
+
70
+ export declare const getEnableFallbackComponent: () => boolean;
71
+
72
+ export { ISbAlternateObject }
73
+
74
+ export { ISbCache }
75
+
76
+ export { ISbConfig }
77
+
78
+ export { ISbContentMangmntAPI }
79
+
80
+ export { ISbDimensions }
81
+
82
+ export { ISbError }
83
+
84
+ export { ISbManagmentApiResult }
85
+
86
+ export { ISbResponse }
87
+
88
+ export { ISbResult }
89
+
90
+ export declare const isBridgeLoaded: () => boolean;
91
+
92
+ export declare const isBrowser: () => boolean;
93
+
94
+ export { ISbSchema }
95
+
96
+ export { ISbStories }
97
+
98
+ export { ISbStoriesParams }
99
+
100
+ export { ISbStory }
101
+
102
+ export { ISbStoryData }
103
+
104
+ export { ISbStoryParams }
105
+
106
+ export { ISbThrottle }
107
+
108
+ export declare const isIframe: () => boolean;
109
+
110
+ export declare const isServer: () => boolean;
111
+
112
+ /**
113
+ * Detects if the current page is running inside Storyblok's Visual Editor.
114
+ * Requires the page to be in an iframe context with the _storyblok URL parameter.
115
+ * This is more reliable than just checking for the URL parameter alone.
116
+ */
117
+ export declare const isVisualEditor: () => boolean;
118
+
119
+ export { loadStoryblokBridge }
120
+
121
+ export { MarkTypes }
122
+
123
+ export { registerStoryblokBridge }
124
+
125
+ export { renderRichText }
126
+
127
+ export { richTextResolver }
128
+
129
+ export { SbBlokData }
130
+
131
+ export { SbBlokKeyDataTypes }
132
+
133
+ export declare interface SbReactComponentsMap {
134
+ [key: string]: default_2.ElementType;
135
+ }
136
+
137
+ export declare interface SbReactSDKOptions extends SbSDKOptions {
138
+ components?: SbReactComponentsMap;
139
+ enableFallbackComponent?: boolean;
140
+ customFallbackComponent?: default_2.ElementType;
141
+ }
142
+
143
+ export { SbSDKOptions }
144
+
145
+ export declare const setComponents: (newComponentsMap: SbReactComponentsMap) => Map<string, React.ElementType>;
146
+
147
+ export { StoryblokBridgeConfigV2 }
148
+
149
+ export { StoryblokBridgeV2 }
150
+
151
+ export { StoryblokClient }
152
+
153
+ export declare const StoryblokComponent: ForwardRefExoticComponent<Omit<StoryblokComponentProps, "ref"> & RefAttributes<HTMLElement>>;
154
+
155
+ declare interface StoryblokComponentProps extends Omit<Record<string, unknown>, 'blok'> {
156
+ blok: SbBlokData;
157
+ }
158
+
159
+ export { StoryblokComponentType }
160
+
161
+ export { storyblokEditable }
162
+
163
+ export declare const storyblokInit: (pluginOptions?: SbReactSDKOptions) => (() => StoryblokClient);
164
+
165
+ export declare const StoryblokRichText: default_2.ForwardRefExoticComponent<StoryblokRichTextProps & default_2.RefAttributes<HTMLDivElement>>;
166
+
167
+ export { StoryblokRichTextImageOptimizationOptions }
168
+
169
+ export { StoryblokRichTextNode }
170
+
171
+ export { StoryblokRichTextNodeResolver }
172
+
173
+ export { StoryblokRichTextNodeTypes }
174
+
175
+ export { StoryblokRichTextOptions }
176
+
177
+ export declare interface StoryblokRichTextProps {
178
+ doc: StoryblokRichTextNode<default_2.ReactElement>;
179
+ resolvers?: StoryblokRichTextResolvers<default_2.ReactElement>;
180
+ }
181
+
182
+ export { StoryblokRichTextResolvers }
183
+
184
+ export { TextTypes }
185
+
186
+ export declare type TUseStoryblokState = <T = void>(initialStory: ISbStoryData<T> | null, bridgeOptions?: StoryblokBridgeConfigV2) => ISbStoryData<T> | null;
187
+
188
+ export declare const useStoryblok: (slug: string, apiOptions?: ISbStoriesParams, bridgeOptions?: StoryblokBridgeConfigV2) => ISbStoryData<ISbComponentType<string> & {
189
+ [index: string]: any;
190
+ }>;
191
+
192
+ declare const useStoryblokApi: () => StoryblokClient;
193
+ export { useStoryblokApi as getStoryblokApi }
194
+ export { useStoryblokApi }
195
+
196
+ export { useStoryblokBridge }
197
+
198
+ export declare const useStoryblokRichText: (options: StoryblokRichTextOptions_2<React.ReactElement>) => {
199
+ render: (node: StoryblokRichTextNode_2<ReactNode>) => ReactNode;
200
+ };
201
+
202
+ /** @deprecated Use useStoryblokRichText instead */
203
+ export declare const useStoryblokRichTextResolver: (options: StoryblokRichTextOptions_2<React.ReactElement>) => {
204
+ render: (node: StoryblokRichTextNode_2<ReactNode>) => ReactNode;
205
+ };
206
+
207
+ export declare const useStoryblokState: TUseStoryblokState;
208
+
209
+ export { }
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),e=require("./storyblok-js.js"),o=require("./index2.js"),c=require("./richtext.js"),d=require("./client.js"),g=require("./storyblok-rich-text.js"),t=require("./utils.js"),T=require("./storyblok-component.js"),p=(n,s={},r={})=>{const[k,y]=u.useState({}),b=typeof window<"u"&&typeof window.storyblokRegisterEvent<"u",i=o.useStoryblokApi();return u.useEffect(()=>{if(!i){console.error("You can't use useStoryblok if you're not loading apiPlugin.");return}async function a(){const{data:l}=await i.get(`cdn/stories/${n}`,s);y(l.story),b&&l.story.id&&e.registerStoryblokBridge(l.story.id,S=>y(S),r)}a()},[n,JSON.stringify(s),i]),i?(r.resolveRelations=r.resolveRelations??s.resolve_relations,r.resolveLinks=r.resolveLinks??s.resolve_links,k):null},m=c.useStoryblokRichText;exports.BlockTypes=e.BlockTypes;exports.MarkTypes=e.MarkTypes;exports.TextTypes=e.TextTypes;exports.apiPlugin=e.apiPlugin;exports.loadStoryblokBridge=e.loadStoryblokBridge;exports.registerStoryblokBridge=e.registerStoryblokBridge;exports.renderRichText=e.renderRichText;exports.richTextResolver=e.richTextResolver;exports.storyblokEditable=e.storyblokEditable;exports.useStoryblokBridge=e.registerStoryblokBridge;exports.getComponent=o.getComponent;exports.getCustomFallbackComponent=o.getCustomFallbackComponent;exports.getEnableFallbackComponent=o.getEnableFallbackComponent;exports.getStoryblokApi=o.useStoryblokApi;exports.setComponents=o.setComponents;exports.storyblokInit=o.storyblokInit;exports.useStoryblokApi=o.useStoryblokApi;exports.useStoryblokRichText=c.useStoryblokRichText;exports.useStoryblokState=d.useStoryblokState;exports.StoryblokRichText=g;exports.convertAttributesInElement=t.convertAttributesInElement;exports.isBridgeLoaded=t.isBridgeLoaded;exports.isBrowser=t.isBrowser;exports.isIframe=t.isIframe;exports.isServer=t.isServer;exports.isVisualEditor=t.isVisualEditor;exports.StoryblokComponent=T;exports.useStoryblok=p;exports.useStoryblokRichTextResolver=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const y=require("react"),e=require("@storyblok/js"),g=require("./core/init.js"),l=require("./core/use-storyblok-api.js"),p=require("./core/storyblok-component.js"),m=require("./core/use-storyblok-state.js"),c=require("./richtext.js"),f=require("./storyblok-rich-text.js"),t=require("./utils.js"),n=require("./core/state.js"),T=(u,o={},r={})=>{const[a,b]=y.useState({}),k=typeof window<"u"&&typeof window.storyblokRegisterEvent<"u",s=l.useStoryblokApi();return y.useEffect(()=>{if(!s){console.error("You can't use useStoryblok if you're not loading apiPlugin.");return}async function d(){const{data:i}=await s.get(`cdn/stories/${u}`,o);b(i.story),k&&i.story.id&&e.registerStoryblokBridge(i.story.id,S=>b(S),r)}d()},[u,JSON.stringify(o),s]),s?(r.resolveRelations=r.resolveRelations??o.resolve_relations,r.resolveLinks=r.resolveLinks??o.resolve_links,a):null},R=c.useStoryblokRichText;Object.defineProperty(exports,"BlockTypes",{enumerable:!0,get:()=>e.BlockTypes});Object.defineProperty(exports,"MarkTypes",{enumerable:!0,get:()=>e.MarkTypes});Object.defineProperty(exports,"TextTypes",{enumerable:!0,get:()=>e.TextTypes});Object.defineProperty(exports,"apiPlugin",{enumerable:!0,get:()=>e.apiPlugin});Object.defineProperty(exports,"loadStoryblokBridge",{enumerable:!0,get:()=>e.loadStoryblokBridge});Object.defineProperty(exports,"registerStoryblokBridge",{enumerable:!0,get:()=>e.registerStoryblokBridge});Object.defineProperty(exports,"renderRichText",{enumerable:!0,get:()=>e.renderRichText});Object.defineProperty(exports,"richTextResolver",{enumerable:!0,get:()=>e.richTextResolver});Object.defineProperty(exports,"storyblokEditable",{enumerable:!0,get:()=>e.storyblokEditable});Object.defineProperty(exports,"useStoryblokBridge",{enumerable:!0,get:()=>e.useStoryblokBridge});exports.storyblokInit=g.storyblokInit;exports.getStoryblokApi=l.useStoryblokApi;exports.useStoryblokApi=l.useStoryblokApi;exports.StoryblokComponent=p;exports.useStoryblokState=m.useStoryblokState;exports.useStoryblokRichText=c.useStoryblokRichText;exports.StoryblokRichText=f;exports.convertAttributesInElement=t.convertAttributesInElement;exports.isBridgeLoaded=t.isBridgeLoaded;exports.isBrowser=t.isBrowser;exports.isIframe=t.isIframe;exports.isServer=t.isServer;exports.isVisualEditor=t.isVisualEditor;exports.getComponent=n.getComponent;exports.getCustomFallbackComponent=n.getCustomFallbackComponent;exports.getEnableFallbackComponent=n.getEnableFallbackComponent;exports.setComponents=n.setComponents;exports.useStoryblok=T;exports.useStoryblokRichTextResolver=R;
package/dist/index.mjs CHANGED
@@ -1,15 +1,16 @@
1
1
  import { useState as f, useEffect as u } from "react";
2
- import { registerStoryblokBridge as k } from "./storyblok-js.mjs";
3
- import { BlockTypes as T, MarkTypes as B, TextTypes as E, apiPlugin as w, loadStoryblokBridge as C, renderRichText as h, richTextResolver as A, storyblokEditable as I } from "./storyblok-js.mjs";
4
- import { useStoryblokApi as c } from "./index2.mjs";
5
- import { getComponent as F, getCustomFallbackComponent as P, getEnableFallbackComponent as _, setComponents as $, storyblokInit as J } from "./index2.mjs";
6
- import { useStoryblokRichText as m } from "./richtext.mjs";
7
- import { useStoryblokState as N } from "./client.mjs";
8
- import { default as Y } from "./storyblok-rich-text.mjs";
2
+ import { registerStoryblokBridge as k } from "@storyblok/js";
3
+ import { BlockTypes as T, MarkTypes as B, TextTypes as E, apiPlugin as w, loadStoryblokBridge as C, registerStoryblokBridge as h, renderRichText as A, richTextResolver as I, storyblokEditable as L, useStoryblokBridge as F } from "@storyblok/js";
4
+ import { storyblokInit as _ } from "./core/init.mjs";
5
+ import { useStoryblokApi as m } from "./core/use-storyblok-api.mjs";
6
+ import { default as M } from "./core/storyblok-component.mjs";
7
+ import { useStoryblokState as V } from "./core/use-storyblok-state.mjs";
8
+ import { useStoryblokRichText as c } from "./richtext.mjs";
9
+ import { default as $ } from "./storyblok-rich-text.mjs";
9
10
  import { convertAttributesInElement as q, isBridgeLoaded as z, isBrowser as D, isIframe as G, isServer as H, isVisualEditor as K } from "./utils.mjs";
10
- import { default as U } from "./storyblok-component.mjs";
11
- const g = (s, e = {}, o = {}) => {
12
- const [n, l] = f({}), i = typeof window < "u" && typeof window.storyblokRegisterEvent < "u", t = c();
11
+ import { getComponent as U, getCustomFallbackComponent as W, getEnableFallbackComponent as X, setComponents as Z } from "./core/state.mjs";
12
+ const x = (s, e = {}, o = {}) => {
13
+ const [n, l] = f({}), i = typeof window < "u" && typeof window.storyblokRegisterEvent < "u", t = m();
13
14
  return u(() => {
14
15
  if (!t) {
15
16
  console.error(
@@ -17,48 +18,48 @@ const g = (s, e = {}, o = {}) => {
17
18
  );
18
19
  return;
19
20
  }
20
- async function a() {
21
+ async function y() {
21
22
  const { data: r } = await t.get(
22
23
  `cdn/stories/${s}`,
23
24
  e
24
25
  );
25
26
  l(r.story), i && r.story.id && k(
26
27
  r.story.id,
27
- (y) => l(y),
28
+ (a) => l(a),
28
29
  o
29
30
  );
30
31
  }
31
- a();
32
+ y();
32
33
  }, [s, JSON.stringify(e), t]), t ? (o.resolveRelations = o.resolveRelations ?? e.resolve_relations, o.resolveLinks = o.resolveLinks ?? e.resolve_links, n) : null;
33
- }, x = m;
34
+ }, g = c;
34
35
  export {
35
36
  T as BlockTypes,
36
37
  B as MarkTypes,
37
- U as StoryblokComponent,
38
- Y as StoryblokRichText,
38
+ M as StoryblokComponent,
39
+ $ as StoryblokRichText,
39
40
  E as TextTypes,
40
41
  w as apiPlugin,
41
42
  q as convertAttributesInElement,
42
- F as getComponent,
43
- P as getCustomFallbackComponent,
44
- _ as getEnableFallbackComponent,
45
- c as getStoryblokApi,
43
+ U as getComponent,
44
+ W as getCustomFallbackComponent,
45
+ X as getEnableFallbackComponent,
46
+ m as getStoryblokApi,
46
47
  z as isBridgeLoaded,
47
48
  D as isBrowser,
48
49
  G as isIframe,
49
50
  H as isServer,
50
51
  K as isVisualEditor,
51
52
  C as loadStoryblokBridge,
52
- k as registerStoryblokBridge,
53
- h as renderRichText,
54
- A as richTextResolver,
55
- $ as setComponents,
56
- I as storyblokEditable,
57
- J as storyblokInit,
58
- g as useStoryblok,
59
- c as useStoryblokApi,
60
- k as useStoryblokBridge,
61
- m as useStoryblokRichText,
62
- x as useStoryblokRichTextResolver,
63
- N as useStoryblokState
53
+ h as registerStoryblokBridge,
54
+ A as renderRichText,
55
+ I as richTextResolver,
56
+ Z as setComponents,
57
+ L as storyblokEditable,
58
+ _ as storyblokInit,
59
+ x as useStoryblok,
60
+ m as useStoryblokApi,
61
+ F as useStoryblokBridge,
62
+ c as useStoryblokRichText,
63
+ g as useStoryblokRichTextResolver,
64
+ V as useStoryblokState
64
65
  };
package/dist/richtext.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),l=require("./storyblok-component.js"),n=require("./storyblok-js.js");function c(e){var r,s;const t=(r=e==null?void 0:e.attrs)==null?void 0:r.body;return o.createElement(l,{blok:Array.isArray(t)?t[0]:void 0,key:(s=e.attrs)==null?void 0:s.id})}function i(e){const t={renderFn:o.createElement,textFn:r=>o.createElement(o.Fragment,{key:Math.random().toString(36).substring(2,15)},r),resolvers:{[n.BlockTypes.COMPONENT]:c,...e.resolvers},keyedResolvers:!0};return n.richTextResolver(t)}exports.componentResolver=c;exports.useStoryblokRichText=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./core/storyblok-component.js"),t=require("./core/richtext-hoc.js"),o=t.createRichTextHook(e,{isServerContext:!1});exports.useStoryblokRichText=o;
package/dist/richtext.mjs CHANGED
@@ -1,29 +1,8 @@
1
- import o from "react";
2
- import n from "./storyblok-component.mjs";
3
- import { BlockTypes as m, richTextResolver as a } from "./storyblok-js.mjs";
4
- function i(e) {
5
- var t, s;
6
- const r = (t = e == null ? void 0 : e.attrs) == null ? void 0 : t.body;
7
- return o.createElement(n, {
8
- blok: Array.isArray(r) ? r[0] : void 0,
9
- key: (s = e.attrs) == null ? void 0 : s.id
10
- });
11
- }
12
- function p(e) {
13
- const r = {
14
- renderFn: o.createElement,
15
- textFn: (t) => o.createElement(o.Fragment, {
16
- key: Math.random().toString(36).substring(2, 15)
17
- }, t),
18
- resolvers: {
19
- [m.COMPONENT]: i,
20
- ...e.resolvers
21
- },
22
- keyedResolvers: !0
23
- };
24
- return a(r);
25
- }
1
+ import o from "./core/storyblok-component.mjs";
2
+ import { createRichTextHook as t } from "./core/richtext-hoc.mjs";
3
+ const i = t(o, {
4
+ isServerContext: !1
5
+ });
26
6
  export {
27
- i as componentResolver,
28
- p as useStoryblokRichText
7
+ i as useStoryblokRichText
29
8
  };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ "use strict";const o=require("@storyblok/js"),l=require("react"),s=require("../utils.js"),u=({story:t=null,bridgeOptions:r={}})=>{if(!s.isVisualEditor())return null;const n=(t==null?void 0:t.id)??0;return l.useEffect(()=>{(async()=>{s.isBridgeLoaded()||await o.loadStoryblokBridge();const c=async i=>{var a;if(i)try{const{liveEditUpdateAction:e}=await Promise.resolve().then(()=>require("./live-edit-update-action.js"));l.startTransition(()=>{e({story:i,pathToRevalidate:window.location.pathname})})}catch(e){console.warn("Server action not available, caching story locally:",e),i.uuid&&((a=globalThis.storyCache)==null||a.set(i.uuid,i))}};o.registerStoryblokBridge(n,i=>c(i),r)})()},[n,JSON.stringify(r)]),null};module.exports=u;
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { loadStoryblokBridge as l, registerStoryblokBridge as d } from "@storyblok/js";
3
+ import { useEffect as c, startTransition as s } from "react";
4
+ import { isVisualEditor as u, isBridgeLoaded as f } from "../utils.mjs";
5
+ const E = ({ story: t = null, bridgeOptions: o = {} }) => {
6
+ if (!u())
7
+ return null;
8
+ const r = (t == null ? void 0 : t.id) ?? 0;
9
+ return c(() => {
10
+ (async () => {
11
+ f() || await l();
12
+ const e = async (i) => {
13
+ var n;
14
+ if (i)
15
+ try {
16
+ const { liveEditUpdateAction: a } = await import("./live-edit-update-action.mjs");
17
+ s(() => {
18
+ a({ story: i, pathToRevalidate: window.location.pathname });
19
+ });
20
+ } catch (a) {
21
+ console.warn("Server action not available, caching story locally:", a), i.uuid && ((n = globalThis.storyCache) == null || n.set(i.uuid, i));
22
+ }
23
+ };
24
+ d(r, (i) => e(i), o);
25
+ })();
26
+ }, [r, JSON.stringify(o)]), null;
27
+ };
28
+ export {
29
+ E as default
30
+ };
@@ -0,0 +1 @@
1
+ "use strict";const r=require("react/jsx-runtime"),i=require("react"),s=require("../server/server-component.js"),l=require("./live-editing.js"),u=i.forwardRef(({story:e,bridgeOptions:t,...o},n)=>{if(!e)return console.error("Please provide a 'story' property to the StoryblokServerComponent"),null;if(globalThis.storyCache.has(e.uuid)&&(e=globalThis.storyCache.get(e.uuid),globalThis.storyCache.delete(e.uuid)),typeof e.content=="string")try{e.content=JSON.parse(e.content)}catch(c){console.error("An error occurred while trying to parse the story content",c),e.content={}}return r.jsxs(r.Fragment,{children:[r.jsx(s,{ref:n,blok:e.content,...o}),r.jsx(l,{story:e,bridgeOptions:t})]})});module.exports=u;
@@ -1,9 +1,8 @@
1
1
  import { jsxs as l, Fragment as c, jsx as o } from "react/jsx-runtime";
2
2
  import { forwardRef as a } from "react";
3
- import "./common.mjs";
4
- import p from "./live-editing.mjs";
5
- import h from "./server-component.mjs";
6
- const b = a(
3
+ import p from "../server/server-component.mjs";
4
+ import h from "./live-editing.mjs";
5
+ const s = a(
7
6
  ({ story: e, bridgeOptions: r, ...t }, n) => {
8
7
  if (!e)
9
8
  return console.error(
@@ -19,11 +18,11 @@ const b = a(
19
18
  ), e.content = {};
20
19
  }
21
20
  return /* @__PURE__ */ l(c, { children: [
22
- /* @__PURE__ */ o(h, { ref: n, blok: e.content, ...t }),
23
- /* @__PURE__ */ o(p, { story: e, bridgeOptions: r })
21
+ /* @__PURE__ */ o(p, { ref: n, blok: e.content, ...t }),
22
+ /* @__PURE__ */ o(h, { story: e, bridgeOptions: r })
24
23
  ] });
25
24
  }
26
25
  );
27
26
  export {
28
- b as default
27
+ s as default
29
28
  };
package/dist/rsc.d.ts ADDED
@@ -0,0 +1,194 @@
1
+ import { apiPlugin } from '@storyblok/js';
2
+ import { ArrayFn } from '@storyblok/js';
3
+ import { AsyncFn } from '@storyblok/js';
4
+ import { BlockTypes } from '@storyblok/js';
5
+ import { default as default_2 } from 'react';
6
+ import { ForwardRefExoticComponent } from 'react';
7
+ import { ISbAlternateObject } from '@storyblok/js';
8
+ import { ISbCache } from '@storyblok/js';
9
+ import { ISbConfig } from '@storyblok/js';
10
+ import { ISbContentMangmntAPI } from '@storyblok/js';
11
+ import { ISbDimensions } from '@storyblok/js';
12
+ import { ISbError } from '@storyblok/js';
13
+ import { ISbManagmentApiResult } from '@storyblok/js';
14
+ import { ISbResponse } from '@storyblok/js';
15
+ import { ISbResult } from '@storyblok/js';
16
+ import { ISbSchema } from '@storyblok/js';
17
+ import { ISbStories } from '@storyblok/js';
18
+ import { ISbStoriesParams } from '@storyblok/js';
19
+ import { ISbStory } from '@storyblok/js';
20
+ import { ISbStoryData } from '@storyblok/js';
21
+ import { ISbStoryParams } from '@storyblok/js';
22
+ import { ISbThrottle } from '@storyblok/js';
23
+ import { loadStoryblokBridge } from '@storyblok/js';
24
+ import { MarkTypes } from '@storyblok/js';
25
+ import { ReactNode } from 'react';
26
+ import { RefAttributes } from 'react';
27
+ import { registerStoryblokBridge } from '@storyblok/js';
28
+ import { renderRichText } from '@storyblok/js';
29
+ import { richTextResolver } from '@storyblok/js';
30
+ import { SbBlokData } from '@storyblok/js';
31
+ import { SbBlokKeyDataTypes } from '@storyblok/js';
32
+ import { SbSDKOptions } from '@storyblok/js';
33
+ import { StoryblokBridgeConfigV2 } from '@storyblok/js';
34
+ import { StoryblokBridgeV2 } from '@storyblok/js';
35
+ import { StoryblokClient } from '@storyblok/js';
36
+ import { StoryblokComponentType } from '@storyblok/js';
37
+ import { storyblokEditable } from '@storyblok/js';
38
+ import { StoryblokRichTextImageOptimizationOptions } from '@storyblok/js';
39
+ import { StoryblokRichTextNode } from '@storyblok/js';
40
+ import { StoryblokRichTextNode as StoryblokRichTextNode_2 } from '@storyblok/richtext';
41
+ import { StoryblokRichTextNodeResolver } from '@storyblok/js';
42
+ import { StoryblokRichTextNodeTypes } from '@storyblok/js';
43
+ import { StoryblokRichTextOptions } from '@storyblok/js';
44
+ import { StoryblokRichTextOptions as StoryblokRichTextOptions_2 } from '@storyblok/richtext';
45
+ import { StoryblokRichTextResolvers } from '@storyblok/js';
46
+ import { TextTypes } from '@storyblok/js';
47
+ import { useStoryblokBridge } from '@storyblok/js';
48
+
49
+ export { apiPlugin }
50
+
51
+ export { ArrayFn }
52
+
53
+ export { AsyncFn }
54
+
55
+ export { BlockTypes }
56
+
57
+ export declare const getComponent: (componentKey: string) => React.ElementType | false;
58
+
59
+ export declare const getCustomFallbackComponent: () => React.ElementType;
60
+
61
+ export declare const getEnableFallbackComponent: () => boolean;
62
+
63
+ export declare const getStoryblokApi: () => StoryblokClient;
64
+
65
+ export { ISbAlternateObject }
66
+
67
+ export { ISbCache }
68
+
69
+ export { ISbConfig }
70
+
71
+ export { ISbContentMangmntAPI }
72
+
73
+ export { ISbDimensions }
74
+
75
+ export { ISbError }
76
+
77
+ export { ISbManagmentApiResult }
78
+
79
+ export { ISbResponse }
80
+
81
+ export { ISbResult }
82
+
83
+ export { ISbSchema }
84
+
85
+ export { ISbStories }
86
+
87
+ export { ISbStoriesParams }
88
+
89
+ export { ISbStory }
90
+
91
+ export { ISbStoryData }
92
+
93
+ export { ISbStoryParams }
94
+
95
+ export { ISbThrottle }
96
+
97
+ export { loadStoryblokBridge }
98
+
99
+ export { MarkTypes }
100
+
101
+ export { registerStoryblokBridge }
102
+
103
+ export { renderRichText }
104
+
105
+ export { richTextResolver }
106
+
107
+ export { SbBlokData }
108
+
109
+ export { SbBlokKeyDataTypes }
110
+
111
+ export declare interface SbReactComponentsMap {
112
+ [key: string]: default_2.ElementType;
113
+ }
114
+
115
+ export declare interface SbReactSDKOptions extends SbSDKOptions {
116
+ components?: SbReactComponentsMap;
117
+ enableFallbackComponent?: boolean;
118
+ customFallbackComponent?: default_2.ElementType;
119
+ }
120
+
121
+ export { SbSDKOptions }
122
+
123
+ declare interface SbServerComponentProps extends Omit<Record<string, unknown>, 'blok'> {
124
+ blok: SbBlokData;
125
+ }
126
+
127
+ export declare const setComponents: (newComponentsMap: SbReactComponentsMap) => Map<string, React.ElementType>;
128
+
129
+ export { StoryblokBridgeConfigV2 }
130
+
131
+ export { StoryblokBridgeV2 }
132
+
133
+ export { StoryblokClient }
134
+
135
+ export { StoryblokComponentType }
136
+
137
+ export { storyblokEditable }
138
+
139
+ export declare const storyblokInit: (pluginOptions?: SbReactSDKOptions) => (() => StoryblokClient);
140
+
141
+ export declare const StoryblokLiveEditing: ({ story, bridgeOptions }: {
142
+ story: ISbStoryData;
143
+ bridgeOptions?: StoryblokBridgeConfigV2;
144
+ }) => any;
145
+
146
+ export { StoryblokRichTextImageOptimizationOptions }
147
+
148
+ export { StoryblokRichTextNode }
149
+
150
+ export { StoryblokRichTextNodeResolver }
151
+
152
+ export { StoryblokRichTextNodeTypes }
153
+
154
+ export { StoryblokRichTextOptions }
155
+
156
+ export declare interface StoryblokRichTextProps {
157
+ doc: StoryblokRichTextNode<default_2.ReactElement>;
158
+ resolvers?: StoryblokRichTextResolvers<default_2.ReactElement>;
159
+ }
160
+
161
+ export { StoryblokRichTextResolvers }
162
+
163
+ export declare const StoryblokServerComponent: ForwardRefExoticComponent<Omit<SbServerComponentProps, "ref"> & RefAttributes<HTMLElement>>;
164
+
165
+ export declare const StoryblokServerRichText: default_2.ForwardRefExoticComponent<StoryblokRichTextProps & default_2.RefAttributes<HTMLDivElement>>;
166
+
167
+ /**
168
+ * Shared server component for rendering Storyblok stories.
169
+ * Works in both SSR and RSC contexts without server actions.
170
+ */
171
+ export declare const StoryblokServerStory: ForwardRefExoticComponent<Omit<StoryblokServerStoryProps, "ref"> & RefAttributes<HTMLElement>>;
172
+
173
+ declare interface StoryblokServerStoryProps extends Omit<Record<string, unknown>, 'story'> {
174
+ story: ISbStoryData;
175
+ }
176
+
177
+ export declare const StoryblokStory: ForwardRefExoticComponent<Omit<StoryblokStoryProps, "ref"> & RefAttributes<HTMLElement>>;
178
+
179
+ declare interface StoryblokStoryProps extends Omit<Record<string, unknown>, 'story' | 'bridgeOptions'> {
180
+ story: ISbStoryData;
181
+ bridgeOptions?: StoryblokBridgeConfigV2;
182
+ }
183
+
184
+ export { TextTypes }
185
+
186
+ export declare type TUseStoryblokState = <T = void>(initialStory: ISbStoryData<T> | null, bridgeOptions?: StoryblokBridgeConfigV2) => ISbStoryData<T> | null;
187
+
188
+ export { useStoryblokBridge }
189
+
190
+ export declare const useStoryblokServerRichText: (options: StoryblokRichTextOptions_2<React.ReactElement>) => {
191
+ render: (node: StoryblokRichTextNode_2<ReactNode>) => ReactNode;
192
+ };
193
+
194
+ export { }
package/dist/rsc.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("./common.js"),t=require("./live-editing.js"),r=require("./richtext2.js"),i=require("./server-storyblok-richtext-component.js"),l=require("./story.js"),e=require("./storyblok-js.js"),n=require("./server-component.js");exports.getComponent=o.getComponent;exports.getCustomFallbackComponent=o.getCustomFallbackComponent;exports.getEnableFallbackComponent=o.getEnableFallbackComponent;exports.getStoryblokApi=o.useStoryblokApi;exports.setComponents=o.setComponents;exports.storyblokInit=o.storyblokInit;exports.useStoryblokApi=o.useStoryblokApi;exports.StoryblokLiveEditing=t;exports.useStoryblokServerRichText=r.useStoryblokServerRichText;exports.StoryblokServerRichText=i;exports.StoryblokStory=l;exports.BlockTypes=e.BlockTypes;exports.MarkTypes=e.MarkTypes;exports.TextTypes=e.TextTypes;exports.apiPlugin=e.apiPlugin;exports.loadStoryblokBridge=e.loadStoryblokBridge;exports.registerStoryblokBridge=e.registerStoryblokBridge;exports.renderRichText=e.renderRichText;exports.richTextResolver=e.richTextResolver;exports.storyblokEditable=e.storyblokEditable;exports.useStoryblokBridge=e.registerStoryblokBridge;exports.StoryblokServerComponent=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./core/init.js"),o=require("./server/richtext.js"),n=require("./server/server-component.js"),i=require("./server/server-story.js"),l=require("./server/server-storyblok-richtext-component.js"),b=require("./rsc/live-editing.js"),s=require("./rsc/story.js"),e=require("@storyblok/js"),t=require("./core/state.js"),u=require("./core/use-storyblok-api.js");exports.storyblokInit=r.storyblokInit;exports.useStoryblokServerRichText=o.useStoryblokServerRichText;exports.StoryblokServerComponent=n;exports.StoryblokServerStory=i;exports.StoryblokServerRichText=l;exports.StoryblokLiveEditing=b;exports.StoryblokStory=s;Object.defineProperty(exports,"BlockTypes",{enumerable:!0,get:()=>e.BlockTypes});Object.defineProperty(exports,"MarkTypes",{enumerable:!0,get:()=>e.MarkTypes});Object.defineProperty(exports,"TextTypes",{enumerable:!0,get:()=>e.TextTypes});Object.defineProperty(exports,"apiPlugin",{enumerable:!0,get:()=>e.apiPlugin});Object.defineProperty(exports,"loadStoryblokBridge",{enumerable:!0,get:()=>e.loadStoryblokBridge});Object.defineProperty(exports,"registerStoryblokBridge",{enumerable:!0,get:()=>e.registerStoryblokBridge});Object.defineProperty(exports,"renderRichText",{enumerable:!0,get:()=>e.renderRichText});Object.defineProperty(exports,"richTextResolver",{enumerable:!0,get:()=>e.richTextResolver});Object.defineProperty(exports,"storyblokEditable",{enumerable:!0,get:()=>e.storyblokEditable});Object.defineProperty(exports,"useStoryblokBridge",{enumerable:!0,get:()=>e.useStoryblokBridge});exports.getComponent=t.getComponent;exports.getCustomFallbackComponent=t.getCustomFallbackComponent;exports.getEnableFallbackComponent=t.getEnableFallbackComponent;exports.setComponents=t.setComponents;exports.getStoryblokApi=u.useStoryblokApi;