Skip to content

Commit 2a31ad5

Browse files
authored
Merge pull request #761 from storyblok/bugfix/keyed-resolvers-richtext
fix: keyed resolvers and reactivity
2 parents e0621b4 + d131b1d commit 2a31ad5

File tree

5 files changed

+675
-786
lines changed

5 files changed

+675
-786
lines changed

lib/components/StoryblokRichText.vue

+20-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,32 @@
11
<script setup lang="ts">
2-
import type { VNode } from "vue";
3-
import type { StoryblokRichTextNode } from "@storyblok/js";
2+
import { ref, watch, type VNode } from "vue";
3+
import type {
4+
StoryblokRichTextNode,
5+
StoryblokRichTextResolvers,
6+
} from "@storyblok/js";
47
import { useStoryblokRichText } from "../composables/useStoryblokRichText";
58
import type { StoryblokRichTextProps } from "../types";
69
710
const props = defineProps<StoryblokRichTextProps>();
811
9-
const { render } = useStoryblokRichText({
10-
resolvers: props.resolvers ?? {},
11-
});
12+
const renderedDoc = ref();
13+
const root = () => renderedDoc.value;
1214
13-
const root = () => render(props.doc as StoryblokRichTextNode<VNode>);
15+
watch(
16+
[props.doc, props.resolvers],
17+
([doc, resolvers]) => {
18+
const { render } = useStoryblokRichText({
19+
resolvers: (resolvers as StoryblokRichTextResolvers<VNode>) ?? {},
20+
});
21+
renderedDoc.value = render(doc as StoryblokRichTextNode<VNode>);
22+
},
23+
{
24+
immediate: true,
25+
}
26+
);
1427
</script>
1528

1629
<template>
1730
<root />
1831
</template>
32+
ß

lib/composables/useStoryblokRichText.ts

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export function useStoryblokRichText(options: StoryblokRichTextOptions<VNode>) {
2525
const mergedOptions: StoryblokRichTextOptions<VNode> = {
2626
renderFn: h,
2727
textFn: createTextVNode,
28+
keyedResolvers: true,
2829
resolvers: {
2930
[BlockTypes.COMPONENT]: componentResolver,
3031
...options.resolvers,

lib/package.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,26 @@
2525
"prepublishOnly": "npm run build && cp ../README.md ./"
2626
},
2727
"dependencies": {
28-
"@storyblok/js": "^3.1.6"
28+
"@storyblok/js": "^3.1.7"
2929
},
3030
"devDependencies": {
31-
"@babel/core": "^7.25.7",
31+
"@babel/core": "^7.26.0",
3232
"@cypress/vite-dev-server": "^5.2.0",
3333
"@cypress/vue": "^6.0.1",
34-
"@vitejs/plugin-vue": "^5.0.5",
34+
"@vitejs/plugin-vue": "^5.1.4",
3535
"@vue/babel-preset-app": "^5.0.8",
3636
"@vue/test-utils": "2.4.6",
3737
"@vue/tsconfig": "^0.1.3",
3838
"@vue/vue3-jest": "^29.2.6",
39-
"babel-jest": "^29.4.3",
40-
"cypress": "^13.15.0",
41-
"eslint-plugin-cypress": "^2.15.1",
39+
"babel-jest": "^29.7.0",
40+
"cypress": "^13.15.1",
41+
"eslint-plugin-cypress": "^2.15.2",
4242
"eslint-plugin-jest": "^28.8.3",
43-
"jest": "^29.6.4",
43+
"jest": "^29.7.0",
4444
"typescript": "^4.9.5",
45-
"vite": "^5.4.8",
46-
"vue": "^3.5.10",
47-
"vue-tsc": "^1.8.0"
45+
"vite": "^5.4.10",
46+
"vue": "^3.5.12",
47+
"vue-tsc": "^1.8.27"
4848
},
4949
"babel": {
5050
"presets": [

0 commit comments

Comments
 (0)