vue-datocms 8.1.5 → 8.1.7

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 CHANGED
@@ -1,14 +1,303 @@
1
1
  import * as vue from 'vue';
2
- import { PropType, h, VNode, Ref, UnwrapRef, CSSProperties } from 'vue';
2
+ import { Ref, PropType, h, VNode, UnwrapRef, CSSProperties } from 'vue';
3
+ import { Controller } from '@datocms/content-link';
4
+ export { Controller, decodeStega, stripStega } from '@datocms/content-link';
3
5
  import { TransformedMeta, RenderMarkRule, TransformMetaFn } from 'datocms-structured-text-generic-html-renderer';
4
6
  export { renderMarkRule, renderNodeRule, renderNodeRule as renderRule } from 'datocms-structured-text-generic-html-renderer';
5
- import { Record as Record$1, RenderResult, StructuredText as StructuredText$1, CdaStructuredTextRecord, Document, Node, RenderRule } from 'datocms-structured-text-utils';
7
+ import { Record as Record$1, RenderResult, StructuredText as StructuredText$1, Document, Node, RenderRule } from 'datocms-structured-text-utils';
6
8
  export { CdaStructuredTextRecord, CdaStructuredTextValue, RenderError, Document as StructuredTextDocument, StructuredText as StructuredTextGraphQlResponse, Record as StructuredTextGraphQlResponseRecord, TypesafeCdaStructuredTextValue } from 'datocms-structured-text-utils';
7
9
  import * as hls_js from 'hls.js';
8
- import { StreamTypes, MaxResolutionValue, MinResolutionValue, CmcdTypes, PlaybackTypes } from '@mux/playback-core/.';
10
+ import { StreamTypes, MaxResolutionValue, MinResolutionValue, CmcdTypes, PlaybackTypes, RenditionOrderValue } from '@mux/playback-core/.';
9
11
  import MuxPlayerElement, { Tokens } from '@mux/mux-player';
10
12
  import { Options, ConnectionStatus } from 'datocms-listen';
11
13
 
14
+ type UseContentLinkOptions = {
15
+ /**
16
+ * Whether the controller is enabled, or an options object.
17
+ * - Pass `true` (default): Enables the controller with stega encoding preserved (allows controller recreation)
18
+ * - Pass `false`: Disables the controller completely
19
+ * - Pass `{ stripStega: true }`: Enables the controller and strips stega encoding after stamping
20
+ *
21
+ * When stripStega is false (default): Stega encoding remains in the DOM, allowing controllers
22
+ * to be disposed and recreated on the same page. The invisible characters don't affect display
23
+ * but preserve the source of truth.
24
+ *
25
+ * When stripStega is true: Stega encoding is permanently removed from text nodes, providing
26
+ * clean textContent for programmatic access. However, recreating a controller on the same page
27
+ * won't detect elements since the encoding is lost.
28
+ */
29
+ enabled?: boolean | {
30
+ stripStega: boolean;
31
+ };
32
+ /** Callback when Web Previews plugin requests navigation */
33
+ onNavigateTo?: (path: string) => void;
34
+ /** Root element to limit scanning to (instead of document) */
35
+ root?: Ref<ParentNode | null | undefined>;
36
+ };
37
+ type UseContentLinkResult = {
38
+ /** The controller instance, or null if disabled */
39
+ controller: Ref<Controller | null>;
40
+ /** Enable click-to-edit overlays */
41
+ enableClickToEdit: (options?: {
42
+ scrollToNearestTarget: boolean;
43
+ }) => void;
44
+ /** Disable click-to-edit overlays */
45
+ disableClickToEdit: () => void;
46
+ /** Check if click-to-edit is enabled */
47
+ isClickToEditEnabled: () => boolean;
48
+ /** Highlight all editable elements */
49
+ flashAll: (scrollToNearestTarget?: boolean) => void;
50
+ /** Notify Web Previews plugin of current path */
51
+ setCurrentPath: (path: string) => void;
52
+ };
53
+ /**
54
+ * Composable for managing DatoCMS Content Link controller for Visual Editing.
55
+ *
56
+ * This composable provides low-level control over the @datocms/content-link controller,
57
+ * enabling click-to-edit overlays and integration with the DatoCMS Web Previews plugin.
58
+ *
59
+ * For most use cases, consider using the `<ContentLink />` component instead, which
60
+ * provides a simpler declarative API.
61
+ *
62
+ * @param options - Configuration options for the content link controller
63
+ * @returns Controller instance and methods for managing visual editing
64
+ *
65
+ * @example
66
+ * ```vue
67
+ * <script setup>
68
+ * import { useContentLink } from 'vue-datocms';
69
+ * import { useRouter, useRoute } from 'vue-router';
70
+ *
71
+ * const router = useRouter();
72
+ * const route = useRoute();
73
+ *
74
+ * const { controller, enableClickToEdit, setCurrentPath } = useContentLink({
75
+ * onNavigateTo: (path) => router.push(path),
76
+ * });
77
+ *
78
+ * // Enable click-to-edit on mount
79
+ * onMounted(() => {
80
+ * enableClickToEdit({ scrollToNearestTarget: true });
81
+ * });
82
+ *
83
+ * // Sync current path with Web Previews plugin
84
+ * watch(() => route.path, (newPath) => {
85
+ * setCurrentPath(newPath);
86
+ * });
87
+ * </script>
88
+ * ```
89
+ *
90
+ * @see https://www.npmjs.com/package/@datocms/content-link
91
+ */
92
+ declare function useContentLink(options?: UseContentLinkOptions): UseContentLinkResult;
93
+
94
+ type ContentLinkProps = Omit<UseContentLinkOptions, 'enabled'> & {
95
+ /** Current pathname to sync with Web Previews plugin */
96
+ currentPath?: string;
97
+ /** Enable click-to-edit on mount. Pass true for default behavior or an object with scrollToNearestTarget. If undefined, click-to-edit is disabled. */
98
+ enableClickToEdit?: true | {
99
+ scrollToNearestTarget: true;
100
+ };
101
+ /** Whether to strip stega encoding from text nodes after stamping. */
102
+ stripStega?: boolean;
103
+ };
104
+ /**
105
+ * ContentLink component enables Visual Editing for DatoCMS content.
106
+ *
107
+ * This component provides two powerful editing experiences:
108
+ *
109
+ * 1. **Standalone website editing**: When viewing your draft content on the website,
110
+ * editors can click on any content element to open the DatoCMS editor and modify
111
+ * that specific field. This works by detecting stega-encoded metadata in the content
112
+ * and creating interactive overlays.
113
+ *
114
+ * 2. **Web Previews plugin integration**: When your preview runs inside the Visual Editing
115
+ * mode of the DatoCMS Web Previews plugin, this component automatically establishes
116
+ * bidirectional communication with the plugin. This enables:
117
+ * - Clicking content to instantly open the correct field in the side panel
118
+ * - In-plugin navigation: users can navigate to different URLs within Visual mode
119
+ * (like a browser navigation bar), and the preview updates accordingly
120
+ * - Synchronized state between the preview and the DatoCMS interface
121
+ *
122
+ * The component handles client-side routing by:
123
+ * - Listening to navigation requests from the Web Previews plugin via `onNavigateTo`
124
+ * - Notifying the plugin when the URL changes via `currentPath` prop
125
+ *
126
+ * This integration is completely automatic when running inside the plugin's iframe,
127
+ * with graceful fallback to opening edit URLs in a new tab when running standalone.
128
+ *
129
+ * **Click-to-edit behavior**:
130
+ * - By default, editors can press and hold Alt/Option key to temporarily enable click-to-edit mode
131
+ * - Set `enableClickToEdit` prop to `true` to enable it programmatically on mount
132
+ * - Release the Alt/Option key to disable it again
133
+ *
134
+ * @example
135
+ * Basic usage (no routing):
136
+ * ```vue
137
+ * <script setup>
138
+ * import { ContentLink } from 'vue-datocms';
139
+ * </script>
140
+ *
141
+ * <template>
142
+ * <ContentLink />
143
+ * <!-- Your content here -->
144
+ * </template>
145
+ * ```
146
+ *
147
+ * @example
148
+ * With Vue Router:
149
+ * ```vue
150
+ * <script setup>
151
+ * import { ContentLink } from 'vue-datocms';
152
+ * import { useRouter, useRoute } from 'vue-router';
153
+ *
154
+ * const router = useRouter();
155
+ * const route = useRoute();
156
+ * </script>
157
+ *
158
+ * <template>
159
+ * <ContentLink
160
+ * :on-navigate-to="(path) => router.push(path)"
161
+ * :current-path="route.path"
162
+ * />
163
+ * </template>
164
+ * ```
165
+ *
166
+ * @example
167
+ * With Nuxt:
168
+ * ```vue
169
+ * <script setup>
170
+ * import { ContentLink } from 'vue-datocms';
171
+ * const router = useRouter();
172
+ * const route = useRoute();
173
+ * </script>
174
+ *
175
+ * <template>
176
+ * <ContentLink
177
+ * :on-navigate-to="(path) => router.push(path)"
178
+ * :current-path="route.path"
179
+ * />
180
+ * </template>
181
+ * ```
182
+ *
183
+ * @example
184
+ * Enable click-to-edit programmatically:
185
+ * ```vue
186
+ * <template>
187
+ * <ContentLink :enable-click-to-edit="true" />
188
+ * </template>
189
+ * ```
190
+ *
191
+ * @see https://www.npmjs.com/package/@datocms/content-link
192
+ * @see https://www.datocms.com/marketplace/plugins/i/datocms-plugin-web-previews
193
+ */
194
+ declare const ContentLink: vue.DefineComponent<{
195
+ /**
196
+ * Callback when Web Previews plugin requests navigation.
197
+ * Use this to integrate with your router.
198
+ *
199
+ * @example
200
+ * With Vue Router: `(path) => router.push(path)`
201
+ * With Nuxt: `(path) => navigateTo(path)`
202
+ */
203
+ onNavigateTo: {
204
+ type: PropType<(path: string) => void>;
205
+ required: false;
206
+ };
207
+ /**
208
+ * Root element to limit scanning to (instead of document).
209
+ * Pass a ref to a parent element to limit the scope of content link scanning.
210
+ */
211
+ root: {
212
+ type: PropType<UseContentLinkOptions["root"]>;
213
+ required: false;
214
+ };
215
+ /**
216
+ * Current pathname to sync with Web Previews plugin.
217
+ * This keeps the plugin in sync with the current page being previewed.
218
+ *
219
+ * @example
220
+ * With Vue Router: `route.path`
221
+ * With Nuxt: `route.path`
222
+ */
223
+ currentPath: {
224
+ type: StringConstructor;
225
+ required: false;
226
+ };
227
+ /**
228
+ * Enable click-to-edit on mount. Pass true for default behavior or an object with scrollToNearestTarget.
229
+ * If undefined, click-to-edit is disabled and editors can use Alt/Option key for temporary activation.
230
+ */
231
+ enableClickToEdit: {
232
+ type: PropType<true | {
233
+ scrollToNearestTarget: true;
234
+ }>;
235
+ required: false;
236
+ };
237
+ /**
238
+ * Whether to strip stega encoding from text nodes after stamping.
239
+ */
240
+ stripStega: {
241
+ type: BooleanConstructor;
242
+ required: false;
243
+ };
244
+ }, () => null, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
245
+ /**
246
+ * Callback when Web Previews plugin requests navigation.
247
+ * Use this to integrate with your router.
248
+ *
249
+ * @example
250
+ * With Vue Router: `(path) => router.push(path)`
251
+ * With Nuxt: `(path) => navigateTo(path)`
252
+ */
253
+ onNavigateTo: {
254
+ type: PropType<(path: string) => void>;
255
+ required: false;
256
+ };
257
+ /**
258
+ * Root element to limit scanning to (instead of document).
259
+ * Pass a ref to a parent element to limit the scope of content link scanning.
260
+ */
261
+ root: {
262
+ type: PropType<UseContentLinkOptions["root"]>;
263
+ required: false;
264
+ };
265
+ /**
266
+ * Current pathname to sync with Web Previews plugin.
267
+ * This keeps the plugin in sync with the current page being previewed.
268
+ *
269
+ * @example
270
+ * With Vue Router: `route.path`
271
+ * With Nuxt: `route.path`
272
+ */
273
+ currentPath: {
274
+ type: StringConstructor;
275
+ required: false;
276
+ };
277
+ /**
278
+ * Enable click-to-edit on mount. Pass true for default behavior or an object with scrollToNearestTarget.
279
+ * If undefined, click-to-edit is disabled and editors can use Alt/Option key for temporary activation.
280
+ */
281
+ enableClickToEdit: {
282
+ type: PropType<true | {
283
+ scrollToNearestTarget: true;
284
+ }>;
285
+ required: false;
286
+ };
287
+ /**
288
+ * Whether to strip stega encoding from text nodes after stamping.
289
+ */
290
+ stripStega: {
291
+ type: BooleanConstructor;
292
+ required: false;
293
+ };
294
+ }>>, {
295
+ stripStega: boolean;
296
+ }, {}>;
297
+ declare const DatocmsContentLinkPlugin: {
298
+ install: (Vue: any) => void;
299
+ };
300
+
12
301
  type Maybe$2<T> = T | null;
13
302
  type ResponsiveImageType = {
14
303
  /** A base64-encoded thumbnail to offer during image loading */
@@ -471,19 +760,19 @@ type RenderBlockContext<R extends Record$1 = Record$1> = {
471
760
  declare const StructuredText: vue.DefineComponent<{
472
761
  /** The actual field value you get from DatoCMS **/
473
762
  data: {
474
- type: PropType<StructuredText$1<CdaStructuredTextRecord, CdaStructuredTextRecord, CdaStructuredTextRecord> | Document<string, string> | Node<string, string> | null | undefined>;
763
+ type: PropType<StructuredText$1 | Document | Node | null | undefined>;
475
764
  };
476
765
  /** @deprecated use customNodeRules **/
477
766
  customRules: {
478
- type: PropType<RenderRule<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>[]>;
767
+ type: PropType<RenderRule<H, T, F>[]>;
479
768
  };
480
769
  /** A set of additional rules to convert the document to JSX **/
481
770
  customNodeRules: {
482
- type: PropType<RenderRule<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>[]>;
771
+ type: PropType<RenderRule<H, T, F>[]>;
483
772
  };
484
773
  /** A set of additional rules to convert the document to JSX **/
485
774
  customMarkRules: {
486
- type: PropType<RenderMarkRule<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>[]>;
775
+ type: PropType<RenderMarkRule<H, T, F>[]>;
487
776
  };
488
777
  /** Fuction that converts an 'inlineItem' node into a Vue component **/
489
778
  renderInlineRecord: {
@@ -507,32 +796,32 @@ declare const StructuredText: vue.DefineComponent<{
507
796
  };
508
797
  /** Fuction that converts a simple string text into a Vue component **/
509
798
  renderText: {
510
- type: PropType<(text: string, _key: string) => AdapterReturn>;
799
+ type: PropType<T>;
511
800
  };
512
801
  /** React.createElement-like function to use to convert a node into a Vue component **/
513
802
  renderNode: {
514
- type: PropType<typeof h>;
803
+ type: PropType<H>;
515
804
  };
516
805
  /** Function to use to generate a Vue.Fragment **/
517
806
  renderFragment: {
518
- type: PropType<(children: AdapterReturn[], _key: string) => AdapterReturn>;
807
+ type: PropType<F>;
519
808
  };
520
809
  }, () => RenderResult<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
521
810
  /** The actual field value you get from DatoCMS **/
522
811
  data: {
523
- type: PropType<StructuredText$1<CdaStructuredTextRecord, CdaStructuredTextRecord, CdaStructuredTextRecord> | Document<string, string> | Node<string, string> | null | undefined>;
812
+ type: PropType<StructuredText$1 | Document | Node | null | undefined>;
524
813
  };
525
814
  /** @deprecated use customNodeRules **/
526
815
  customRules: {
527
- type: PropType<RenderRule<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>[]>;
816
+ type: PropType<RenderRule<H, T, F>[]>;
528
817
  };
529
818
  /** A set of additional rules to convert the document to JSX **/
530
819
  customNodeRules: {
531
- type: PropType<RenderRule<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>[]>;
820
+ type: PropType<RenderRule<H, T, F>[]>;
532
821
  };
533
822
  /** A set of additional rules to convert the document to JSX **/
534
823
  customMarkRules: {
535
- type: PropType<RenderMarkRule<typeof h, (text: string, _key: string) => AdapterReturn, (children: AdapterReturn[], _key: string) => AdapterReturn>[]>;
824
+ type: PropType<RenderMarkRule<H, T, F>[]>;
536
825
  };
537
826
  /** Fuction that converts an 'inlineItem' node into a Vue component **/
538
827
  renderInlineRecord: {
@@ -556,15 +845,15 @@ declare const StructuredText: vue.DefineComponent<{
556
845
  };
557
846
  /** Fuction that converts a simple string text into a Vue component **/
558
847
  renderText: {
559
- type: PropType<(text: string, _key: string) => AdapterReturn>;
848
+ type: PropType<T>;
560
849
  };
561
850
  /** React.createElement-like function to use to convert a node into a Vue component **/
562
851
  renderNode: {
563
- type: PropType<typeof h>;
852
+ type: PropType<H>;
564
853
  };
565
854
  /** Function to use to generate a Vue.Fragment **/
566
855
  renderFragment: {
567
- type: PropType<(children: AdapterReturn[], _key: string) => AdapterReturn>;
856
+ type: PropType<F>;
568
857
  };
569
858
  }>>, {}, {}>;
570
859
  declare const DatocmsStructuredTextPlugin: {
@@ -577,6 +866,8 @@ type Possibly<T> = Maybe$1<T> | undefined;
577
866
  type Video = {
578
867
  /** Title attribute (`title`) for the video */
579
868
  title?: Possibly<string>;
869
+ /** Alt attribute used for content link integration (passed as data-datocms-content-link-source) */
870
+ alt?: Possibly<string>;
580
871
  /** The height of the video */
581
872
  height?: Possibly<number>;
582
873
  /** The width of the video */
@@ -597,7 +888,7 @@ declare const toNativeAttrName: (propName: string, propValue: any) => string | u
597
888
  declare const toNativeAttrValue: (propValue: any, propName: string) => any;
598
889
  declare const VideoPlayer: vue.DefineComponent<{
599
890
  _hlsConfig: {
600
- type: PropType<Readonly<Partial<hls_js.HlsConfig>> | undefined>;
891
+ type: PropType<MuxPlayerElement["_hlsConfig"]>;
601
892
  required: false;
602
893
  };
603
894
  accentColor: {
@@ -609,7 +900,7 @@ declare const VideoPlayer: vue.DefineComponent<{
609
900
  required: false;
610
901
  };
611
902
  autoPlay: {
612
- type: PropType<string | boolean>;
903
+ type: PropType<boolean | string>;
613
904
  required: false;
614
905
  };
615
906
  backwardSeekOffset: {
@@ -780,7 +1071,7 @@ declare const VideoPlayer: vue.DefineComponent<{
780
1071
  required: false;
781
1072
  };
782
1073
  renditionOrder: {
783
- type: PropType<"desc">;
1074
+ type: PropType<RenditionOrderValue>;
784
1075
  required: false;
785
1076
  };
786
1077
  secondaryColor: {
@@ -837,10 +1128,10 @@ declare const VideoPlayer: vue.DefineComponent<{
837
1128
  disableCookies: boolean;
838
1129
  disableTracking: boolean;
839
1130
  preload: string;
840
- style?: (vue.CSSProperties | null) | undefined;
841
- title?: (string | null) | undefined;
842
- playbackId?: (string | null) | undefined;
843
- placeholder?: (string | null) | undefined;
1131
+ style?: vue.CSSProperties | null;
1132
+ title?: string | null;
1133
+ playbackId?: string | null;
1134
+ placeholder?: string | null;
844
1135
  };
845
1136
  otherProps: {
846
1137
  disablePictureInPicture: boolean;
@@ -923,9 +1214,10 @@ declare const VideoPlayer: vue.DefineComponent<{
923
1214
  onCuePointChange: ((...args: any[]) => any) | undefined;
924
1215
  onCuePointsChange: ((...args: any[]) => any) | undefined;
925
1216
  };
1217
+ alt: Possibly<string>;
926
1218
  }, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, ("error" | "seeking" | "ended" | "pause" | "play" | "abort" | "canPlay" | "canPlayThrough" | "emptied" | "loadStart" | "loadedData" | "loadedMetadata" | "progress" | "durationChange" | "volumeChange" | "rateChange" | "resize" | "waiting" | "playing" | "timeUpdate" | "seeked" | "stalled" | "suspend" | "cuePointChange" | "cuePointsChange")[], "error" | "seeking" | "ended" | "pause" | "play" | "abort" | "canPlay" | "canPlayThrough" | "emptied" | "loadStart" | "loadedData" | "loadedMetadata" | "progress" | "durationChange" | "volumeChange" | "rateChange" | "resize" | "waiting" | "playing" | "timeUpdate" | "seeked" | "stalled" | "suspend" | "cuePointChange" | "cuePointsChange", vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
927
1219
  _hlsConfig: {
928
- type: PropType<Readonly<Partial<hls_js.HlsConfig>> | undefined>;
1220
+ type: PropType<MuxPlayerElement["_hlsConfig"]>;
929
1221
  required: false;
930
1222
  };
931
1223
  accentColor: {
@@ -937,7 +1229,7 @@ declare const VideoPlayer: vue.DefineComponent<{
937
1229
  required: false;
938
1230
  };
939
1231
  autoPlay: {
940
- type: PropType<string | boolean>;
1232
+ type: PropType<boolean | string>;
941
1233
  required: false;
942
1234
  };
943
1235
  backwardSeekOffset: {
@@ -1108,7 +1400,7 @@ declare const VideoPlayer: vue.DefineComponent<{
1108
1400
  required: false;
1109
1401
  };
1110
1402
  renditionOrder: {
1111
- type: PropType<"desc">;
1403
+ type: PropType<RenditionOrderValue>;
1112
1404
  required: false;
1113
1405
  };
1114
1406
  secondaryColor: {
@@ -1352,4 +1644,4 @@ declare const toHead: (...args: ToMetaTagsType[]) => {
1352
1644
  }[];
1353
1645
  };
1354
1646
 
1355
- export { DatocmsImagePlugin, DatocmsNakedImagePlugin, DatocmsStructuredTextPlugin, DatocmsVideoPlayerPlugin, DisabledQueryListenerOptions, EnabledQueryListenerOptions, GenericClient, Image, NakedImage, QueryListenerOptions, RawSearchResult, RenderBlockContext, RenderInlineRecordContext, RenderRecordLinkContext, ResponsiveImageType, SeoMetaTagType, StructuredText, SubscribeToQueryOptions, ToMetaTagsType, UseSiteSearchConfig, UseSiteSearchData, UseSiteSearchResult, Video, VideoPlayer, appendKeyToValidElement, defaultAdapter, isKeyOf, isNil, toHead, toNativeAttrName, toNativeAttrValue, useQuerySubscription, useSiteSearch, useVideoPlayer };
1647
+ export { ContentLink, ContentLinkProps, DatocmsContentLinkPlugin, DatocmsImagePlugin, DatocmsNakedImagePlugin, DatocmsStructuredTextPlugin, DatocmsVideoPlayerPlugin, DisabledQueryListenerOptions, EnabledQueryListenerOptions, GenericClient, Image, NakedImage, QueryListenerOptions, RawSearchResult, RenderBlockContext, RenderInlineRecordContext, RenderRecordLinkContext, ResponsiveImageType, SeoMetaTagType, StructuredText, SubscribeToQueryOptions, ToMetaTagsType, UseContentLinkOptions, UseContentLinkResult, UseSiteSearchConfig, UseSiteSearchData, UseSiteSearchResult, Video, VideoPlayer, appendKeyToValidElement, defaultAdapter, isKeyOf, isNil, toHead, toNativeAttrName, toNativeAttrValue, useContentLink, useQuerySubscription, useSiteSearch, useVideoPlayer };