@wix/patterns-fields-utils 1.47.0 → 1.48.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/@wix/patterns-fields-bundled-cm-media-utils/dist/cjs/index.js +1 -1
- package/@wix/patterns-fields-bundled-cm-media-utils/dist/cjs/index.js.map +1 -1
- package/@wix/patterns-fields-bundled-cm-media-utils/dist/esm/index.mjs +1 -1
- package/@wix/patterns-fields-bundled-cm-media-utils/dist/esm/index.mjs.map +1 -1
- package/@wix/patterns-fields-bundled-cm-media-utils/package.json +12 -3
- package/@wix/patterns-fields-bundled-organize-media/dist/cjs/index.css.map +1 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/cjs/index.global.css +690 -1204
- package/@wix/patterns-fields-bundled-organize-media/dist/cjs/index.js +43492 -71284
- package/@wix/patterns-fields-bundled-organize-media/dist/cjs/index.js.map +1 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/{chunk-FOPGQED5.mjs → chunk-S4CFQTVU.mjs} +5 -8
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-S4CFQTVU.mjs.map +1 -0
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/{hls-X7Z2O2CI.mjs → hls-TUPL6AWR.mjs} +87 -15
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/hls-TUPL6AWR.mjs.map +1 -0
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/index.css.map +1 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/index.global.css +690 -1205
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/index.mjs +12706 -20224
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/index.mjs.map +1 -1
- package/@wix/patterns-fields-bundled-organize-media/package.json +12 -3
- package/@wix/patterns-fields-bundled-ricos/dist/cjs/index.d.ts +2 -0
- package/@wix/patterns-fields-bundled-ricos/dist/cjs/index.js +2 -0
- package/@wix/patterns-fields-bundled-ricos/dist/cjs/index.js.map +1 -0
- package/@wix/patterns-fields-bundled-ricos/dist/esm/index.d.mts +2 -0
- package/@wix/patterns-fields-bundled-ricos/dist/esm/index.mjs +3 -0
- package/@wix/patterns-fields-bundled-ricos/dist/esm/index.mjs.map +1 -0
- package/@wix/patterns-fields-bundled-ricos/package.json +54 -0
- package/@wix/patterns-fields-ricos-statics/dist/cjs/index.js +60 -0
- package/@wix/patterns-fields-ricos-statics/dist/cjs/index.js.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/cjs/legacy.js +7 -0
- package/@wix/patterns-fields-ricos-statics/dist/cjs/legacy.js.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/cjs/statics.js +25 -0
- package/@wix/patterns-fields-ricos-statics/dist/cjs/statics.js.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/esm/index.js +13 -0
- package/@wix/patterns-fields-ricos-statics/dist/esm/index.js.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/esm/legacy.js +9 -0
- package/@wix/patterns-fields-ricos-statics/dist/esm/legacy.js.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/esm/statics.js +41 -0
- package/@wix/patterns-fields-ricos-statics/dist/esm/statics.js.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/types/index.d.ts +19 -0
- package/@wix/patterns-fields-ricos-statics/dist/types/index.d.ts.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/types/legacy.d.ts +9 -0
- package/@wix/patterns-fields-ricos-statics/dist/types/legacy.d.ts.map +1 -0
- package/@wix/patterns-fields-ricos-statics/dist/types/statics.d.ts +41 -0
- package/@wix/patterns-fields-ricos-statics/dist/types/statics.d.ts.map +1 -0
- package/@wix/patterns-fields-ricos-statics/legacy/package.json +5 -0
- package/@wix/patterns-fields-ricos-statics/package.json +101 -0
- package/package.json +7 -4
- package/@wix/patterns-fields-bundled-cm-media-utils/CHANGELOG.md +0 -190
- package/@wix/patterns-fields-bundled-organize-media/CHANGELOG.md +0 -194
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-ANOFRNLZ.mjs +0 -302
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-ANOFRNLZ.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-D3Y2XBAR.mjs +0 -9573
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-D3Y2XBAR.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-FOPGQED5.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-KK6IAXDC.mjs +0 -61
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-KK6IAXDC.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-LSMTMMMM.mjs +0 -999
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/chunk-LSMTMMMM.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/hls-X7Z2O2CI.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/html2canvas.esm-26SHFSHQ.mjs +0 -7813
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/html2canvas.esm-26SHFSHQ.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/lib-INOZ3X5B.mjs +0 -6427
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/lib-INOZ3X5B.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/player.es-EHCCDTX6.mjs +0 -1600
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/player.es-EHCCDTX6.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/validateTypes-OWSYRJSG.mjs +0 -85
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/validateTypes-OWSYRJSG.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/videoItem-QVVYW7GT.mjs +0 -311
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/videoItem-QVVYW7GT.mjs.map +0 -1
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/videoScrollHelper-HX35Z6JI.mjs +0 -307
- package/@wix/patterns-fields-bundled-organize-media/dist/esm/videoScrollHelper-HX35Z6JI.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["<define:process.env>","../../src/index.ts","../../../../node_modules/@wix/ricos/src/next/content.ts","../../../../node_modules/fp-ts-esm/es6/function.js","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/index.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/animation.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/animation.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/common.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/common.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_anchor.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_color.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_fontfamily.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_fontsize.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_fontsize.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_link.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_mention.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_sketch.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_sketch.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/decoration_spoiler.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_blockquote.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_caption.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_card.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_card.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_code_block.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_heading.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_layout.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_layout.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_layout_cell.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_list.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/node_paragraph.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_app_embed.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_app_embed.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_audio.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_button.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_button.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_collapsible_list.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_collapsible_list.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_divider.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_divider.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_embed.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_file.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_file.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gallery.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gallery.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gif.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_gif.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_html.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_html.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_image.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_link_preview.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_link_preview.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_map.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_map.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_poll.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_poll.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_shape.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_smart_block.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_smart_block.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_table.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_table_cell.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_table_cell.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_toc.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_toc.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/plugin_video.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/rich_content.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/rich_content.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/google/protobuf/timestamp.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/struct.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/legacy/wix/rich_content/v1/struct.enums.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/index.ts","../../../../node_modules/@wix/ricos/src/ricos-schema/next-schema/generated/ricos_document.ts","../../../../node_modules/@wix/ricos/src/_shared/omit-keys.ts","../../../../node_modules/@wix/ricos/src/ricos-content/utils.ts","../../../../node_modules/@wix/ricos/src/ricos-content/consts.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/generate-random-id.ts","../../../../node_modules/fp-ts-esm/es6/Apply.js","../../../../node_modules/fp-ts-esm/es6/internal.js","../../../../node_modules/fp-ts-esm/es6/Chain.js","../../../../node_modules/fp-ts-esm/es6/Functor.js","../../../../node_modules/fp-ts-esm/es6/Ord.js","../../../../node_modules/fp-ts-esm/es6/Eq.js","../../../../node_modules/fp-ts-esm/es6/ReadonlyNonEmptyArray.js","../../../../node_modules/fp-ts-esm/es6/Semigroup.js","../../../../node_modules/fp-ts-esm/es6/Magma.js","../../../../node_modules/@wix/ricos/src/wix-rich-content-common/Utils/uuid.ts","../../../../node_modules/fp-ts-esm/es6/string.js","../../../../node_modules/@wix/ricos/src/ricos-content/converters/node-utils.ts","../../../../node_modules/@wix/ricos/src/ricos-content/lib/converters.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/draft/consts.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/draft/toDraft/decoration-parsers.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/index.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/fromPlainText/from-plain-text.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/toPlainText/to-plain-text.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/toPlainText/convert-nodes.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/toPlainText/to-plain-text-base.ts","../../../../node_modules/@wix/ricos/src/ricos-content/RicosContentAPI/create-empty-content.ts","../../../../node_modules/@wix/ricos/src/ricos-content/lib/metadata-utils.ts","../../../../node_modules/@wix/ricos/src/ricos-content/RicosContentAPI/metadata-utils.ts","../../../../node_modules/@wix/ricos/src/ricos-content/lib/to-plain-text-sync.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/toPlainText/index.ts","../../../../node_modules/@wix/ricos/src/ricos-content/converters/plainText/toPlainText/to-plain-text-sync.ts"],"sourcesContent":["","/**\n * Content helpers and shared types.\n *\n * This is the light entry: it must stay free of anything that reaches the\n * editor or the viewer, because it is imported from eagerly-loaded field\n * code (cell rendering, validation, form fields). The editor and viewer live\n * in their own entries so they stay in separate chunks.\n *\n * Re-export only what a consumer actually imports — adding a symbol here on\n * spec can widen the entry's graph for no one's benefit.\n */\nexport {\n ensureContentId,\n fromPlainText,\n RichContent,\n toPlainText,\n toPlainTextSync,\n} from '@wix/ricos/content';\n\nexport type { RicosDocument } from '@wix/ricos/content';\n\nexport type { BISettings, RicosTheme } from '@wix/ricos';\n","/**\n * @wix/ricos/next/content — forward-looking content utilities with RicosDocument (JTD) types.\n *\n * Same runtime as @wix/ricos/content, but Draft-free and typed with the JTD schema\n * (RicosDocument, RicosDocumentNode) instead of the proto schema (RichContent, Node).\n */\nimport { getAnchorableNodesQuery as _getAnchorableNodesQuery } from './../ricos-content-query/get-anchorable-nodes-query.js';\nimport type { Extractor } from './../ricos-content/extractor-infra.js';\nimport {\n isRichContent as _isRichContent,\n isRichContentEmpty as _isRichContentEmpty,\n} from './../ricos-content/index.js';\nimport {\n getPluginData as _getPluginData,\n getText as _getText,\n} from './../ricos-content/lib/content-application.js';\nimport { setupContentBuilder as _setupContentBuilder } from './../ricos-content/lib/content.js';\nimport {\n fromPlainText as _fromPlainText,\n toPlainText as _toPlainText,\n} from './../ricos-content/lib/converters.js';\nimport { createEmptyContent as _createEmptyContent } from './../ricos-content/lib/create-empty-content.js';\nimport { extract as _extract } from './../ricos-content/lib/extract.js';\nimport { getContentLength as _getContentLength } from './../ricos-content/lib/get-content-length.js';\nimport { isRichContentEqual as _isRichContentEqual } from './../ricos-content/lib/is-rich-content-equal.js';\nimport { ensureContentId as _ensureContentId } from './../ricos-content/lib/metadata-utils.js';\nimport { modify as _modify } from './../ricos-content/lib/modify.js';\nimport {\n createParagraphNode as _createParagraphNode,\n createTextNode as _createTextNode,\n initializeMetadata as _initializeMetadata,\n} from './../ricos-content/lib/node-utils.js';\nimport {\n fromCKEditorHtml as _fromCKEditorHtml,\n fromRichTextHtml as _fromRichTextHtml,\n toHtml as _toHtml,\n} from './../ricos-content/lib/server-side-converters.js';\nimport { toPlainTextSync as _toPlainTextSync } from './../ricos-content/lib/to-plain-text-sync.js';\nimport {\n translateContent as _translateContent,\n toTranslatables as _toTranslatables,\n} from './../ricos-content/lib/translate.js';\nimport {\n getCountableNodes as _getCountableNodes,\n truncateContent as _truncateContent,\n} from './../ricos-content/lib/truncate-content.js';\nimport { truncateRichContent as _truncateRichContent } from './../ricos-content/lib/truncate-rich-content.js';\nimport type { ImageMedia, VideoMedia } from './../ricos-content/RicosContentAPI/get-media-data.js';\nimport { getMediaData as _getMediaData } from './../ricos-content/RicosContentAPI/get-media-data.js';\nimport type { Translatable } from './../ricos-content/TranslatableAPI/types.js';\nimport type { TruncateOptions } from './../ricos-content/truncateContent/ricos-truncate.js';\nimport type { ContentBuilder as _ContentBuilder } from './../ricos-content/types/index.js';\nimport type {\n RicosDocument,\n RicosDocumentNode,\n Decoration,\n Node_Type as RicosDocumentNodeType_Type,\n TextData as _TextData,\n ParagraphData as _ParagraphData,\n NodeStyle as _NodeStyle,\n Metadata as _Metadata,\n GalleryData_Item as _GalleryData_Item,\n} from './../ricos-schema/next-schema/index.js';\nimport { convertItemData as _convertItemData } from './../plugin-gallery/convert-item-data-compat.js';\n\n// ━━━ Schema types (JTD) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nexport type {\n RicosDocument,\n RicosDocumentNode,\n Decoration,\n AppEmbedData,\n AudioData,\n BulletedListData,\n ButtonData,\n CheckboxListData,\n CollapsibleListData,\n FileData,\n GalleryData,\n GalleryData_Item,\n GIF,\n GIFData,\n HeadingData,\n HTMLData,\n ImageData,\n LayoutCellData,\n LayoutData,\n Link,\n Link_Rel,\n LinkPreviewData,\n ListItemNodeData,\n Media,\n MentionData,\n Node,\n OrderedListData,\n ParagraphData,\n PluginContainerData_Spoiler,\n PollData,\n ShapeData,\n TextData,\n VideoData,\n} from './../ricos-schema/next-schema/index.js';\nexport {\n AppEmbedData_AppType,\n ButtonData_Type,\n CollapsibleListData_Direction,\n Decoration_Type,\n DividerData_Alignment,\n DividerData_LineStyle,\n DividerData_Width,\n FontSizeData_fontType,\n GalleryOptions_ItemStyle_Crop,\n GalleryOptions_Layout_Orientation,\n GalleryOptions_Layout_Type,\n GalleryOptions_Thumbnails_Alignment,\n GIFData_GIFType,\n HTMLData_Source,\n Link_Target,\n Node_Type,\n PluginContainerData_Alignment,\n PluginContainerData_Width_Type,\n PollData_Design_PollDesign_Background_Type,\n PollData_Layout_PollLayout_Direction,\n PollData_Layout_PollLayout_Type,\n PollData_Poll_Settings_Permissions_ViewRole,\n PollData_Poll_Settings_Permissions_VoteRole,\n RichContent,\n TextStyle_TextAlignment,\n} from './../ricos-schema/next-schema/index.js';\n\n// ━━━ Content functions (override with RicosDocument) ━━━━━━━━━━━━━━━━━━━━━━━━\n\ntype ContentLimits = { nodeCount: number } | { wordCount: number } | { maxPlugins: number };\ntype MediaUrlResolvers = {\n image?: (fileId: string) => string;\n video?: (fileId: string) => string;\n thumbnail?: (fileId: string) => string;\n};\n\nexport const createEmptyContent: (metadata?: {\n version?: number;\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n}) => RicosDocument = _createEmptyContent as any;\nexport const ensureContentId: (content?: RicosDocument) => RicosDocument = _ensureContentId as any;\nexport const fromPlainText: (text: string) => RicosDocument = _fromPlainText as any;\nexport const fromCKEditorHtml: (s: string, interceptorFn?: any) => RicosDocument =\n _fromCKEditorHtml as any;\nexport const fromRichTextHtml: (s: string, interceptor?: any) => RicosDocument =\n _fromRichTextHtml as any;\nexport const translateContent: (\n content: RicosDocument,\n translatables: Translatable[]\n) => RicosDocument = _translateContent as any;\nexport const truncateRichContent: (\n content: RicosDocument,\n limits: ContentLimits,\n options?: TruncateOptions\n) => RicosDocument = _truncateRichContent as any;\nexport const truncateContent: (\n content: RicosDocument,\n limits: { blocksCount?: number; wordsCount?: number; maxPlugins?: number },\n options?: TruncateOptions\n) => { content: RicosDocument; isTruncated: boolean } = _truncateContent as any;\nexport const getContentLength: (content: RicosDocument) => number = _getContentLength as any;\nexport const getMediaData: (\n content: RicosDocument,\n mediaUrlResolvers?: MediaUrlResolvers\n) => (ImageMedia | VideoMedia)[] = _getMediaData as any;\nexport const getPluginData: <T>(content: RicosDocument, type: RicosDocumentNodeType_Type) => T[] =\n _getPluginData as any;\nexport const getText: (content: RicosDocument) => string[] = _getText as any;\nexport const toHtml: (\n content: RicosDocumentNode[] | RicosDocument,\n interceptorFn?: any,\n separator?: string\n) => string = _toHtml as any;\nexport type InterceptorToHtml = (context: {\n node: RicosDocumentNode;\n result: string | string[];\n}) => string | string[];\nexport const toPlainText: (\n content: RicosDocument,\n options?: {\n urlShortener?: (url: string) => Promise<string>;\n getVideoUrl?: (fileId: string) => Promise<string>;\n getVideoEmbeddedUrl?: (url: string) => Promise<string>;\n getAudioUrl?: (fileId: string) => Promise<string>;\n getGifUrl?: (url: string) => Promise<string>;\n delimiter?: string;\n addLinksToText?: boolean;\n }\n) => Promise<string> = _toPlainText as any;\nexport const toPlainTextSync: (\n content: RicosDocument,\n options?: {\n urlShortener?: (url: string) => string;\n getVideoUrl?: (fileId: string) => string;\n getVideoEmbeddedUrl?: (url: string) => string;\n getAudioUrl?: (fileId: string) => string;\n getGifUrl?: (url: string) => string;\n delimiter?: string;\n addLinksToText?: boolean;\n }\n) => string = _toPlainTextSync as any;\nexport const toTranslatables: (content: Pick<RicosDocument, 'nodes'>) => Translatable[] =\n _toTranslatables as any;\n\n// oxlint-disable-next-line @typescript-oxlint/no-explicit-any\nexport function isRichContent(content: any): content is RicosDocument {\n return _isRichContent(content);\n}\nexport const isRichContentEmpty: (contentState: RicosDocument) => boolean =\n _isRichContentEmpty as any;\nexport const isRichContentEqual: (\n a: RicosDocument | undefined,\n b: RicosDocument | undefined\n) => boolean = _isRichContentEqual as any;\n\nexport const modify: (content: RicosDocument) => {\n filter: (predicate: (node: RicosDocumentNode) => boolean) => {\n filter: (predicate: (node: RicosDocumentNode) => boolean) => any;\n set: (\n setter: (node: RicosDocumentNode) => RicosDocumentNode | RicosDocumentNode[]\n ) => RicosDocument;\n };\n set: (\n setter: (node: RicosDocumentNode) => RicosDocumentNode | RicosDocumentNode[]\n ) => RicosDocument;\n} = _modify as any;\n\n// ━━━ Content utilities (no RichContent in signatures) ━━━━━━━━━━━━━━━━━━━━━━━\n\nexport {\n ACTION_BUTTON_TYPE,\n AUDIO_TYPE,\n CODE_BLOCK_TYPE,\n COLLAPSIBLE_LIST_TYPE,\n compare,\n createContent,\n DIVIDER_TYPE,\n EMBED_TYPE,\n EMOJI_TYPE,\n EXTERNAL_MENTIONS_TYPE,\n FILE_UPLOAD_TYPE,\n GALLERY_TYPE,\n getTextDirection,\n GIPHY_TYPE,\n HASHTAG_TYPE,\n HEADINGS_DROPDOWN_TYPE,\n HTML_TYPE,\n IMAGE_TYPE,\n type ImageMedia,\n isContentStateEmpty,\n LINE_SPACING_TYPE,\n LINK_BUTTON_TYPE,\n LINK_PREVIEW_TYPE,\n LINK_TYPE,\n MENTION_TYPE,\n POLL_TYPE,\n RICOS_ANCHOR_TYPE,\n RICOS_DIVIDER_TYPE,\n RICOS_FILE_TYPE,\n RICOS_GALLERY_TYPE,\n RICOS_GIPHY_TYPE,\n RICOS_IMAGE_TYPE,\n RICOS_LAYOUT_TYPE,\n RICOS_LINK_BUTTON_TYPE,\n RICOS_LINK_PREVIEW_TYPE,\n RICOS_LINK_TYPE,\n RICOS_MENTION_TYPE,\n RICOS_POLL_TYPE,\n RICOS_SHAPE_TYPE,\n RICOS_VERTICAL_EMBED_TYPE,\n RICOS_VIDEO_TYPE,\n SHAPE_TYPE,\n SPOILER_TYPE,\n TABLE_TYPE,\n TOC_TYPE,\n TEXT_COLOR_TYPE,\n TEXT_HIGHLIGHT_TYPE,\n TIPTAP_SHAPE_TYPE,\n Version,\n VERTICAL_EMBED_TYPE,\n VIDEO_TYPE,\n type VideoMedia,\n} from './../ricos-content/index.js';\n\nexport type ListItemData = {\n text: _TextData[];\n data: _ParagraphData;\n};\n\nexport { extractMedia } from './../ricos-content/lib/extract-media.js';\n\nexport type { Extractor } from './../ricos-content/extractor-infra.js';\nexport const extract: (\n nodes: RicosDocumentNode | RicosDocumentNode[]\n) => Extractor<RicosDocumentNode> = _extract as any;\nexport const createParagraphNode: (\n nodes?: RicosDocumentNode[],\n data?: _ParagraphData,\n style?: _NodeStyle\n) => RicosDocumentNode = _createParagraphNode as any;\nexport const createTextNode: (text: string, decorations?: Decoration[]) => RicosDocumentNode =\n _createTextNode as any;\nexport const initializeMetadata: (metadata?: {\n version?: number;\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n}) => _Metadata = _initializeMetadata as any;\n\n/**\n * Imperative content builder. Each `add*` method returns a `RicosDocument` whose `nodes`\n * include the newly-added node(s). Pass a `generateId` callback to produce unique node IDs.\n */\nexport type RicosContentBuilder = {\n [K in keyof _ContentBuilder]: _ContentBuilder[K] extends (arg: infer A) => unknown\n ? (arg: A) => RicosDocument\n : _ContentBuilder[K];\n};\nexport const setupContentBuilder: (generateId: () => string) => RicosContentBuilder =\n _setupContentBuilder as any;\n/** Context passed to `getCountableNodes` filter fn — the node's ancestors and previous sibling at visit time. */\nexport type NodeFilterContext = {\n parents: RicosDocumentNode[];\n previousSibling: RicosDocumentNode | undefined;\n};\nexport const getCountableNodes: (\n filterFn: (node: RicosDocumentNode, context: NodeFilterContext) => boolean\n) => (container: RicosDocumentNode | RicosDocument) => RicosDocumentNode[] =\n _getCountableNodes as any;\n\nexport const getAnchorableNodesQuery: (\n contentExtractor: Extractor<RicosDocumentNode>,\n selectedNodeId: any\n) => RicosDocumentNode[] = _getAnchorableNodesQuery as any;\n/** @deprecated Legacy ProGallery-shaped item converter. Kept for existing consumers; avoid in new code. */\nexport const convertItemData: (args: {\n items: _GalleryData_Item[];\n nodeId?: string;\n relValue?: string;\n anchorTarget?: string;\n baseUrl?: string;\n}) => any[] = _convertItemData as any;\n\nexport { resolveFileUrl } from './../ricos-media/index.js';\n","// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getBooleanAlgebra = (B) => () => ({\n meet: (x, y) => (a) => B.meet(x(a), y(a)),\n join: (x, y) => (a) => B.join(x(a), y(a)),\n zero: () => B.zero,\n one: () => B.one,\n implies: (x, y) => (a) => B.implies(x(a), y(a)),\n not: (x) => (a) => B.not(x(a))\n});\n/**\n * Unary functions form a semigroup as long as you can provide a semigroup for the codomain.\n *\n * @example\n * import { Predicate, getSemigroup } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate<number> = (n) => n <= 2\n * const g: Predicate<number> = (n) => n >= 0\n *\n * const S1 = getSemigroup(B.SemigroupAll)<number>()\n *\n * assert.deepStrictEqual(S1.concat(f, g)(1), true)\n * assert.deepStrictEqual(S1.concat(f, g)(3), false)\n *\n * const S2 = getSemigroup(B.SemigroupAny)<number>()\n *\n * assert.deepStrictEqual(S2.concat(f, g)(1), true)\n * assert.deepStrictEqual(S2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const getSemigroup = (S) => () => ({\n concat: (f, g) => (a) => S.concat(f(a), g(a))\n});\n/**\n * Unary functions form a monoid as long as you can provide a monoid for the codomain.\n *\n * @example\n * import { Predicate } from 'fp-ts/Predicate'\n * import { getMonoid } from 'fp-ts/function'\n * import * as B from 'fp-ts/boolean'\n *\n * const f: Predicate<number> = (n) => n <= 2\n * const g: Predicate<number> = (n) => n >= 0\n *\n * const M1 = getMonoid(B.MonoidAll)<number>()\n *\n * assert.deepStrictEqual(M1.concat(f, g)(1), true)\n * assert.deepStrictEqual(M1.concat(f, g)(3), false)\n *\n * const M2 = getMonoid(B.MonoidAny)<number>()\n *\n * assert.deepStrictEqual(M2.concat(f, g)(1), true)\n * assert.deepStrictEqual(M2.concat(f, g)(3), true)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const getMonoid = (M) => {\n const getSemigroupM = getSemigroup(M);\n return () => ({\n concat: getSemigroupM().concat,\n empty: () => M.empty\n });\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getSemiring = (S) => ({\n add: (f, g) => (x) => S.add(f(x), g(x)),\n zero: () => S.zero,\n mul: (f, g) => (x) => S.mul(f(x), g(x)),\n one: () => S.one\n});\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getRing = (R) => {\n const S = getSemiring(R);\n return {\n add: S.add,\n mul: S.mul,\n one: S.one,\n zero: S.zero,\n sub: (f, g) => (x) => R.sub(f(x), g(x))\n };\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport const apply = (a) => (f) => f(a);\n/**\n * @since 2.0.0\n */\nexport function identity(a) {\n return a;\n}\n/**\n * @since 2.0.0\n */\nexport const unsafeCoerce = identity;\n/**\n * @since 2.0.0\n */\nexport function constant(a) {\n return () => a;\n}\n/**\n * A thunk that returns always `true`.\n *\n * @since 2.0.0\n */\nexport const constTrue = /*#__PURE__*/ constant(true);\n/**\n * A thunk that returns always `false`.\n *\n * @since 2.0.0\n */\nexport const constFalse = /*#__PURE__*/ constant(false);\n/**\n * A thunk that returns always `null`.\n *\n * @since 2.0.0\n */\nexport const constNull = /*#__PURE__*/ constant(null);\n/**\n * A thunk that returns always `undefined`.\n *\n * @since 2.0.0\n */\nexport const constUndefined = /*#__PURE__*/ constant(undefined);\n/**\n * A thunk that returns always `void`.\n *\n * @since 2.0.0\n */\nexport const constVoid = constUndefined;\nexport function flip(f) {\n return (...args) => {\n if (args.length > 1) {\n return f(args[1], args[0]);\n }\n return (a) => f(a)(args[0]);\n };\n}\nexport function flow(ab, bc, cd, de, ef, fg, gh, hi, ij) {\n switch (arguments.length) {\n case 1:\n return ab;\n case 2:\n return function () {\n return bc(ab.apply(this, arguments));\n };\n case 3:\n return function () {\n return cd(bc(ab.apply(this, arguments)));\n };\n case 4:\n return function () {\n return de(cd(bc(ab.apply(this, arguments))));\n };\n case 5:\n return function () {\n return ef(de(cd(bc(ab.apply(this, arguments)))));\n };\n case 6:\n return function () {\n return fg(ef(de(cd(bc(ab.apply(this, arguments))))));\n };\n case 7:\n return function () {\n return gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))));\n };\n case 8:\n return function () {\n return hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments))))))));\n };\n case 9:\n return function () {\n return ij(hi(gh(fg(ef(de(cd(bc(ab.apply(this, arguments)))))))));\n };\n }\n return;\n}\n/**\n * @since 2.0.0\n */\nexport function tuple(...t) {\n return t;\n}\n/**\n * @since 2.0.0\n */\nexport function increment(n) {\n return n + 1;\n}\n/**\n * @since 2.0.0\n */\nexport function decrement(n) {\n return n - 1;\n}\n/**\n * @since 2.0.0\n */\nexport function absurd(_) {\n throw new Error('Called `absurd` function which should be uncallable');\n}\n/**\n * Creates a tupled version of this function: instead of `n` arguments, it accepts a single tuple argument.\n *\n * @example\n * import { tupled } from 'fp-ts/function'\n *\n * const add = tupled((x: number, y: number): number => x + y)\n *\n * assert.strictEqual(add([1, 2]), 3)\n *\n * @since 2.4.0\n */\nexport function tupled(f) {\n return (a) => f(...a);\n}\n/**\n * Inverse function of `tupled`\n *\n * @since 2.4.0\n */\nexport function untupled(f) {\n return (...a) => f(a);\n}\nexport function pipe(a, ab, bc, cd, de, ef, fg, gh, hi) {\n switch (arguments.length) {\n case 1:\n return a;\n case 2:\n return ab(a);\n case 3:\n return bc(ab(a));\n case 4:\n return cd(bc(ab(a)));\n case 5:\n return de(cd(bc(ab(a))));\n case 6:\n return ef(de(cd(bc(ab(a)))));\n case 7:\n return fg(ef(de(cd(bc(ab(a))))));\n case 8:\n return gh(fg(ef(de(cd(bc(ab(a)))))));\n case 9:\n return hi(gh(fg(ef(de(cd(bc(ab(a))))))));\n default: {\n let ret = arguments[0];\n for (let i = 1; i < arguments.length; i++) {\n ret = arguments[i](ret);\n }\n return ret;\n }\n }\n}\n/**\n * Type hole simulation\n *\n * @since 2.7.0\n */\nexport const hole = absurd;\n/**\n * @since 2.11.0\n */\nexport const SK = (_, b) => b;\n/**\n * Use `Predicate` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport function not(predicate) {\n return (a) => !predicate(a);\n}\n/**\n * Use `Endomorphism` module instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport const getEndomorphismMonoid = () => ({\n concat: (first, second) => flow(first, second),\n empty: identity\n});\n/** @internal */\nexport const dual = (arity, body) => {\n const isDataFirst = typeof arity === 'number' ? (args) => args.length >= arity : arity;\n return function () {\n const args = Array.from(arguments);\n if (isDataFirst(arguments)) {\n return body.apply(this, args);\n }\n return (self) => body(self, ...args);\n };\n};\n","export const LATEST_VERSION = 1;\nexport * from './animation.enums.js';\nexport * from './animation.js';\nexport * from './common.enums.js';\nexport * from './common.js';\nexport * from './decoration_anchor.js';\nexport * from './decoration_color.js';\nexport * from './decoration_fontfamily.js';\nexport * from './decoration_fontsize.enums.js';\nexport * from './decoration_fontsize.js';\nexport * from './decoration_link.js';\nexport * from './decoration_mention.js';\nexport * from './decoration_sketch.enums.js';\nexport * from './decoration_sketch.js';\nexport * from './decoration_spoiler.js';\nexport * from './node_blockquote.js';\nexport * from './node_caption.js';\nexport * from './node_card.enums.js';\nexport * from './node_card.js';\nexport * from './node_code_block.js';\nexport * from './node_heading.js';\nexport * from './node_layout.enums.js';\nexport * from './node_layout.js';\nexport * from './node_layout_cell.js';\nexport * from './node_list.js';\nexport * from './node_paragraph.js';\nexport * from './plugin_app_embed.enums.js';\nexport * from './plugin_app_embed.js';\nexport * from './plugin_audio.js';\nexport * from './plugin_button.enums.js';\nexport * from './plugin_button.js';\nexport * from './plugin_collapsible_list.enums.js';\nexport * from './plugin_collapsible_list.js';\nexport * from './plugin_divider.enums.js';\nexport * from './plugin_divider.js';\nexport * from './plugin_embed.js';\nexport * from './plugin_file.enums.js';\nexport * from './plugin_file.js';\nexport * from './plugin_gallery.enums.js';\nexport * from './plugin_gallery.js';\nexport * from './plugin_gif.enums.js';\nexport * from './plugin_gif.js';\nexport * from './plugin_html.enums.js';\nexport * from './plugin_html.js';\nexport * from './plugin_image.js';\nexport * from './plugin_link_preview.enums.js';\nexport * from './plugin_link_preview.js';\nexport * from './plugin_map.enums.js';\nexport * from './plugin_map.js';\nexport * from './plugin_poll.enums.js';\nexport * from './plugin_poll.js';\nexport * from './plugin_shape.js';\nexport * from './plugin_smart_block.enums.js';\nexport * from './plugin_smart_block.js';\nexport * from './plugin_table.js';\nexport * from './plugin_table_cell.enums.js';\nexport * from './plugin_table_cell.js';\nexport * from './plugin_toc.enums.js';\nexport * from './plugin_toc.js';\nexport * from './plugin_video.js';\nexport * from './rich_content.enums.js';\nexport * from './rich_content.js';\nexport * from './struct.enums.js';\nexport * from './struct.js';\n","export enum Animation_Type {\n /** VIEW - Animations that play while the node is in view. */\n VIEW = \"VIEW\",\n /** POINTER - Animations driven by the visitor's mouse position. */\n POINTER = \"POINTER\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum EntranceEffect_Type {\n /** FADE - Fades in from fully transparent to fully opaque. */\n FADE = \"FADE\",\n /** ARC - Enters along a 3D arc path. */\n ARC = \"ARC\",\n /** BLUR - Transitions from blurred to sharp. */\n BLUR = \"BLUR\",\n /** BOUNCE - Bounces into place with an elastic curve. */\n BOUNCE = \"BOUNCE\",\n /** DROP - Shrinks down from a larger size. */\n DROP = \"DROP\",\n /** EXPAND - Expands from a point, scaling to full size. */\n EXPAND = \"EXPAND\",\n /** FLIP - Flips into view with a 3D rotation. */\n FLIP = \"FLIP\",\n /** FLOAT - Drifts gently into place. */\n FLOAT = \"FLOAT\",\n /** FOLD - Unfolds from an edge as if hinged. */\n FOLD = \"FOLD\",\n /** GLIDE - Glides in smoothly from off-screen. */\n GLIDE = \"GLIDE\",\n /** REVEAL - Progressively revealed by an expanding clip-path. */\n REVEAL = \"REVEAL\",\n /** SHAPE - Appears through an expanding geometric clip-path shape. */\n SHAPE = \"SHAPE\",\n /** SHUTTERS - Revealed through shutter-like strips. */\n SHUTTERS = \"SHUTTERS\",\n /** SLIDE - Slides in from one side. */\n SLIDE = \"SLIDE\",\n /** SPIN - Spins into view while scaling up. */\n SPIN = \"SPIN\",\n /** TILT - Tilts in from the side with 3D rotation. */\n TILT = \"TILT\",\n /** TURN - Rotates into view around a corner pivot. */\n TURN = \"TURN\",\n /** WINK - Expands from its horizontal or vertical center. */\n WINK = \"WINK\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LoopEffect_Type {\n /** BOUNCE - Bounces up and down in place. */\n BOUNCE = \"BOUNCE\",\n /** BREATHE - Scales gently in and out along an axis. */\n BREATHE = \"BREATHE\",\n /** CROSS - Drifts toward one side, then re-enters from the opposite side. */\n CROSS = \"CROSS\",\n /** FLASH - Fades out to fully transparent and back in. */\n FLASH = \"FLASH\",\n /** FLIP - Rotates a full turn around its horizontal or vertical axis. */\n FLIP = \"FLIP\",\n /** FOLD - Folds back and forth around a hinged edge. */\n FOLD = \"FOLD\",\n /** JELLO - Wobbles with a jelly-like skew. */\n JELLO = \"JELLO\",\n /** POKE - Nudges repeatedly toward a direction. */\n POKE = \"POKE\",\n /** PULSE - Scales up and back down rhythmically. */\n PULSE = \"PULSE\",\n /** RUBBER - Stretches and squashes like a rubber band. */\n RUBBER = \"RUBBER\",\n /** SPIN - Rotates continuously around its center. */\n SPIN = \"SPIN\",\n /** SWING - Swings back and forth around an edge pivot. */\n SWING = \"SWING\",\n /** WIGGLE - Rocks side to side with an accumulating rotation. */\n WIGGLE = \"WIGGLE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PointerEffect_Type {\n /** AIRY - Drifts loosely after the pointer with a light rotation. */\n AIRY = \"AIRY\",\n /** BLOB - Squashes and stretches toward the pointer. */\n BLOB = \"BLOB\",\n /** BLUR - Shifts after the pointer while blurring. */\n BLUR = \"BLUR\",\n /** SCALE - Scales as the pointer approaches. */\n SCALE = \"SCALE\",\n /** SKEW - Skews toward the pointer. */\n SKEW = \"SKEW\",\n /** SWIVEL - Rotates around a pivot edge or axis, following the pointer. */\n SWIVEL = \"SWIVEL\",\n /** TILT_3D - Tilts in 3D perspective toward the pointer. */\n TILT_3D = \"TILT_3D\",\n /** TRACK - Follows the pointer's position. */\n TRACK = \"TRACK\",\n /** TRACK_3D - Follows the pointer with a 3D depth motion. */\n TRACK_3D = \"TRACK_3D\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { Animation_Type, EntranceEffect_Type, LoopEffect_Type, PointerEffect_Type } from './animation.enums.js';\n/* eslint-disable */\nexport interface Animation {\n /** Animation kind. */\n type: Animation_Type;\n /** Entrance animation, played once when the node first enters the viewport (VIEW). */\n entrance?: EntranceAnimation;\n /** Looping animation, repeated indefinitely while the node is on the page. When combined with entrance, the loop starts after the entrance finishes (VIEW). */\n loop?: LoopAnimation;\n /**\n * POINTER carries its fields directly on the union member in the JTD wall, hence\n * flat fields here (ts-proto camelCase must equal the JTD property names). A future\n * kind that also needs an `effect` field would contend for this JSON name.\n */\n effect?: PointerEffect;\n /** How quickly the node settles toward the pointer, in milliseconds (POINTER). */\n transitionDuration?: number;\n}\n\nexport function animation_TypeFromJSON(object: any): Animation_Type {\n switch (object) {\n case 0:\n case \"VIEW\":\n return Animation_Type.VIEW;\n case 1:\n case \"POINTER\":\n return Animation_Type.POINTER;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Animation_Type.UNRECOGNIZED;\n }\n}\n\nexport function animation_TypeToJSON(object: Animation_Type): string {\n switch (object) {\n case Animation_Type.VIEW:\n return \"VIEW\";\n case Animation_Type.POINTER:\n return \"POINTER\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface EntranceAnimation {\n /** The entrance effect to play. */\n effect?: EntranceEffect;\n /** Effect duration in milliseconds. Each effect has its own default. */\n duration?: number;\n /** Delay before the effect starts, in milliseconds. */\n delay?: number;\n}\n\nexport interface EntranceEffect {\n /** The entrance effect type. */\n type: EntranceEffect_Type;\n /** Direction the effect enters from. Allowed values depend on the effect type (e.g. TOP/RIGHT/BOTTOM/LEFT, the diagonals with or without CENTER, corners, HORIZONTAL/VERTICAL, CLOCKWISE/COUNTER_CLOCKWISE). */\n direction?: string;\n /** Clip-path shape: ELLIPSE, CIRCLE, RECTANGLE, or DIAMOND (SHAPE). */\n shape?: string;\n /** Motion style: GENTLE, MODERATE, or INTENSE. Only the effects that expose one accept it. */\n easing?: string;\n}\n\nexport function entranceEffect_TypeFromJSON(object: any): EntranceEffect_Type {\n switch (object) {\n case 0:\n case \"FADE\":\n return EntranceEffect_Type.FADE;\n case 1:\n case \"ARC\":\n return EntranceEffect_Type.ARC;\n case 2:\n case \"BLUR\":\n return EntranceEffect_Type.BLUR;\n case 3:\n case \"BOUNCE\":\n return EntranceEffect_Type.BOUNCE;\n case 4:\n case \"DROP\":\n return EntranceEffect_Type.DROP;\n case 5:\n case \"EXPAND\":\n return EntranceEffect_Type.EXPAND;\n case 6:\n case \"FLIP\":\n return EntranceEffect_Type.FLIP;\n case 7:\n case \"FLOAT\":\n return EntranceEffect_Type.FLOAT;\n case 8:\n case \"FOLD\":\n return EntranceEffect_Type.FOLD;\n case 9:\n case \"GLIDE\":\n return EntranceEffect_Type.GLIDE;\n case 10:\n case \"REVEAL\":\n return EntranceEffect_Type.REVEAL;\n case 11:\n case \"SHAPE\":\n return EntranceEffect_Type.SHAPE;\n case 12:\n case \"SHUTTERS\":\n return EntranceEffect_Type.SHUTTERS;\n case 13:\n case \"SLIDE\":\n return EntranceEffect_Type.SLIDE;\n case 14:\n case \"SPIN\":\n return EntranceEffect_Type.SPIN;\n case 15:\n case \"TILT\":\n return EntranceEffect_Type.TILT;\n case 16:\n case \"TURN\":\n return EntranceEffect_Type.TURN;\n case 17:\n case \"WINK\":\n return EntranceEffect_Type.WINK;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return EntranceEffect_Type.UNRECOGNIZED;\n }\n}\n\nexport function entranceEffect_TypeToJSON(object: EntranceEffect_Type): string {\n switch (object) {\n case EntranceEffect_Type.FADE:\n return \"FADE\";\n case EntranceEffect_Type.ARC:\n return \"ARC\";\n case EntranceEffect_Type.BLUR:\n return \"BLUR\";\n case EntranceEffect_Type.BOUNCE:\n return \"BOUNCE\";\n case EntranceEffect_Type.DROP:\n return \"DROP\";\n case EntranceEffect_Type.EXPAND:\n return \"EXPAND\";\n case EntranceEffect_Type.FLIP:\n return \"FLIP\";\n case EntranceEffect_Type.FLOAT:\n return \"FLOAT\";\n case EntranceEffect_Type.FOLD:\n return \"FOLD\";\n case EntranceEffect_Type.GLIDE:\n return \"GLIDE\";\n case EntranceEffect_Type.REVEAL:\n return \"REVEAL\";\n case EntranceEffect_Type.SHAPE:\n return \"SHAPE\";\n case EntranceEffect_Type.SHUTTERS:\n return \"SHUTTERS\";\n case EntranceEffect_Type.SLIDE:\n return \"SLIDE\";\n case EntranceEffect_Type.SPIN:\n return \"SPIN\";\n case EntranceEffect_Type.TILT:\n return \"TILT\";\n case EntranceEffect_Type.TURN:\n return \"TURN\";\n case EntranceEffect_Type.WINK:\n return \"WINK\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface LoopAnimation {\n /** The looping effect to repeat. */\n effect?: LoopEffect;\n /** Duration of a single iteration in milliseconds. Each effect has its own default. */\n duration?: number;\n /** Pause between iterations in milliseconds. */\n iterationDelay?: number;\n}\n\nexport interface LoopEffect {\n /** The looping effect type. */\n type: LoopEffect_Type;\n /** Direction of the effect. Allowed values depend on the effect type (e.g. TOP/RIGHT/BOTTOM/LEFT, LEFT/RIGHT, HORIZONTAL/VERTICAL with or without CENTER, CLOCKWISE/COUNTER_CLOCKWISE). */\n direction?: string;\n /** Motion style: GENTLE, MODERATE, or INTENSE. Only the effects that expose one accept it. */\n easing?: string;\n}\n\nexport function loopEffect_TypeFromJSON(object: any): LoopEffect_Type {\n switch (object) {\n case 0:\n case \"BOUNCE\":\n return LoopEffect_Type.BOUNCE;\n case 1:\n case \"BREATHE\":\n return LoopEffect_Type.BREATHE;\n case 2:\n case \"CROSS\":\n return LoopEffect_Type.CROSS;\n case 3:\n case \"FLASH\":\n return LoopEffect_Type.FLASH;\n case 4:\n case \"FLIP\":\n return LoopEffect_Type.FLIP;\n case 5:\n case \"FOLD\":\n return LoopEffect_Type.FOLD;\n case 6:\n case \"JELLO\":\n return LoopEffect_Type.JELLO;\n case 7:\n case \"POKE\":\n return LoopEffect_Type.POKE;\n case 8:\n case \"PULSE\":\n return LoopEffect_Type.PULSE;\n case 9:\n case \"RUBBER\":\n return LoopEffect_Type.RUBBER;\n case 10:\n case \"SPIN\":\n return LoopEffect_Type.SPIN;\n case 11:\n case \"SWING\":\n return LoopEffect_Type.SWING;\n case 12:\n case \"WIGGLE\":\n return LoopEffect_Type.WIGGLE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LoopEffect_Type.UNRECOGNIZED;\n }\n}\n\nexport function loopEffect_TypeToJSON(object: LoopEffect_Type): string {\n switch (object) {\n case LoopEffect_Type.BOUNCE:\n return \"BOUNCE\";\n case LoopEffect_Type.BREATHE:\n return \"BREATHE\";\n case LoopEffect_Type.CROSS:\n return \"CROSS\";\n case LoopEffect_Type.FLASH:\n return \"FLASH\";\n case LoopEffect_Type.FLIP:\n return \"FLIP\";\n case LoopEffect_Type.FOLD:\n return \"FOLD\";\n case LoopEffect_Type.JELLO:\n return \"JELLO\";\n case LoopEffect_Type.POKE:\n return \"POKE\";\n case LoopEffect_Type.PULSE:\n return \"PULSE\";\n case LoopEffect_Type.RUBBER:\n return \"RUBBER\";\n case LoopEffect_Type.SPIN:\n return \"SPIN\";\n case LoopEffect_Type.SWING:\n return \"SWING\";\n case LoopEffect_Type.WIGGLE:\n return \"WIGGLE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface PointerEffect {\n /** The mouse effect type. */\n type: PointerEffect_Type;\n /** Reacts away from the pointer instead of toward it. */\n inverted?: boolean;\n /** One field, two value spaces (the effect type says which): the axis the movement is constrained to — HORIZONTAL, VERTICAL, or BOTH (AIRY, SCALE, SKEW, TRACK, TRACK_3D) — or the edge/center axis the node swivels around — TOP, BOTTOM, LEFT, RIGHT, CENTER_HORIZONTAL, or CENTER_VERTICAL (SWIVEL). Only the effects that expose one accept it. */\n axis?: string;\n /** Whether the node grows or shrinks as the pointer nears: UP or DOWN (SCALE). */\n direction?: string;\n /** Motion style: GENTLE, MODERATE, or INTENSE. */\n easing?: string;\n}\n\nexport function pointerEffect_TypeFromJSON(object: any): PointerEffect_Type {\n switch (object) {\n case 0:\n case \"AIRY\":\n return PointerEffect_Type.AIRY;\n case 1:\n case \"BLOB\":\n return PointerEffect_Type.BLOB;\n case 2:\n case \"BLUR\":\n return PointerEffect_Type.BLUR;\n case 3:\n case \"SCALE\":\n return PointerEffect_Type.SCALE;\n case 4:\n case \"SKEW\":\n return PointerEffect_Type.SKEW;\n case 5:\n case \"SWIVEL\":\n return PointerEffect_Type.SWIVEL;\n case 6:\n case \"TILT_3D\":\n return PointerEffect_Type.TILT_3D;\n case 7:\n case \"TRACK\":\n return PointerEffect_Type.TRACK;\n case 8:\n case \"TRACK_3D\":\n return PointerEffect_Type.TRACK_3D;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PointerEffect_Type.UNRECOGNIZED;\n }\n}\n\nexport function pointerEffect_TypeToJSON(object: PointerEffect_Type): string {\n switch (object) {\n case PointerEffect_Type.AIRY:\n return \"AIRY\";\n case PointerEffect_Type.BLOB:\n return \"BLOB\";\n case PointerEffect_Type.BLUR:\n return \"BLUR\";\n case PointerEffect_Type.SCALE:\n return \"SCALE\";\n case PointerEffect_Type.SKEW:\n return \"SKEW\";\n case PointerEffect_Type.SWIVEL:\n return \"SWIVEL\";\n case PointerEffect_Type.TILT_3D:\n return \"TILT_3D\";\n case PointerEffect_Type.TRACK:\n return \"TRACK\";\n case PointerEffect_Type.TRACK_3D:\n return \"TRACK_3D\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseAnimation: object = { type: Animation_Type.VIEW };\n\nexport const Animation = {\n fromJSON(object: any): Animation {\n const message = { ...baseAnimation } as Animation;\n message.type =\n object.type !== undefined && object.type !== null\n ? animation_TypeFromJSON(object.type)\n : Animation_Type.VIEW;\n message.entrance =\n object.entrance !== undefined && object.entrance !== null\n ? EntranceAnimation.fromJSON(object.entrance)\n : undefined;\n message.loop =\n object.loop !== undefined && object.loop !== null\n ? LoopAnimation.fromJSON(object.loop)\n : undefined;\n message.effect =\n object.effect !== undefined && object.effect !== null\n ? PointerEffect.fromJSON(object.effect)\n : undefined;\n message.transitionDuration =\n object.transitionDuration !== undefined &&\n object.transitionDuration !== null\n ? Number(object.transitionDuration)\n : undefined;\n return message;\n },\n\n toJSON(message: Animation): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = animation_TypeToJSON(message.type));\n message.entrance !== undefined &&\n (obj.entrance = message.entrance\n ? EntranceAnimation.toJSON(message.entrance)\n : undefined);\n message.loop !== undefined &&\n (obj.loop = message.loop\n ? LoopAnimation.toJSON(message.loop)\n : undefined);\n message.effect !== undefined &&\n (obj.effect = message.effect\n ? PointerEffect.toJSON(message.effect)\n : undefined);\n message.transitionDuration !== undefined &&\n (obj.transitionDuration = message.transitionDuration);\n return obj;\n },\n};\n\nconst baseEntranceAnimation: object = {};\n\nexport const EntranceAnimation = {\n fromJSON(object: any): EntranceAnimation {\n const message = { ...baseEntranceAnimation } as EntranceAnimation;\n message.effect =\n object.effect !== undefined && object.effect !== null\n ? EntranceEffect.fromJSON(object.effect)\n : undefined;\n message.duration =\n object.duration !== undefined && object.duration !== null\n ? Number(object.duration)\n : undefined;\n message.delay =\n object.delay !== undefined && object.delay !== null\n ? Number(object.delay)\n : undefined;\n return message;\n },\n\n toJSON(message: EntranceAnimation): unknown {\n const obj: any = {};\n message.effect !== undefined &&\n (obj.effect = message.effect\n ? EntranceEffect.toJSON(message.effect)\n : undefined);\n message.duration !== undefined && (obj.duration = message.duration);\n message.delay !== undefined && (obj.delay = message.delay);\n return obj;\n },\n};\n\nconst baseEntranceEffect: object = { type: EntranceEffect_Type.FADE };\n\nexport const EntranceEffect = {\n fromJSON(object: any): EntranceEffect {\n const message = { ...baseEntranceEffect } as EntranceEffect;\n message.type =\n object.type !== undefined && object.type !== null\n ? entranceEffect_TypeFromJSON(object.type)\n : EntranceEffect_Type.FADE;\n message.direction =\n object.direction !== undefined && object.direction !== null\n ? String(object.direction)\n : undefined;\n message.shape =\n object.shape !== undefined && object.shape !== null\n ? String(object.shape)\n : undefined;\n message.easing =\n object.easing !== undefined && object.easing !== null\n ? String(object.easing)\n : undefined;\n return message;\n },\n\n toJSON(message: EntranceEffect): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = entranceEffect_TypeToJSON(message.type));\n message.direction !== undefined && (obj.direction = message.direction);\n message.shape !== undefined && (obj.shape = message.shape);\n message.easing !== undefined && (obj.easing = message.easing);\n return obj;\n },\n};\n\nconst baseLoopAnimation: object = {};\n\nexport const LoopAnimation = {\n fromJSON(object: any): LoopAnimation {\n const message = { ...baseLoopAnimation } as LoopAnimation;\n message.effect =\n object.effect !== undefined && object.effect !== null\n ? LoopEffect.fromJSON(object.effect)\n : undefined;\n message.duration =\n object.duration !== undefined && object.duration !== null\n ? Number(object.duration)\n : undefined;\n message.iterationDelay =\n object.iterationDelay !== undefined && object.iterationDelay !== null\n ? Number(object.iterationDelay)\n : undefined;\n return message;\n },\n\n toJSON(message: LoopAnimation): unknown {\n const obj: any = {};\n message.effect !== undefined &&\n (obj.effect = message.effect\n ? LoopEffect.toJSON(message.effect)\n : undefined);\n message.duration !== undefined && (obj.duration = message.duration);\n message.iterationDelay !== undefined &&\n (obj.iterationDelay = message.iterationDelay);\n return obj;\n },\n};\n\nconst baseLoopEffect: object = { type: LoopEffect_Type.BOUNCE };\n\nexport const LoopEffect = {\n fromJSON(object: any): LoopEffect {\n const message = { ...baseLoopEffect } as LoopEffect;\n message.type =\n object.type !== undefined && object.type !== null\n ? loopEffect_TypeFromJSON(object.type)\n : LoopEffect_Type.BOUNCE;\n message.direction =\n object.direction !== undefined && object.direction !== null\n ? String(object.direction)\n : undefined;\n message.easing =\n object.easing !== undefined && object.easing !== null\n ? String(object.easing)\n : undefined;\n return message;\n },\n\n toJSON(message: LoopEffect): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = loopEffect_TypeToJSON(message.type));\n message.direction !== undefined && (obj.direction = message.direction);\n message.easing !== undefined && (obj.easing = message.easing);\n return obj;\n },\n};\n\nconst basePointerEffect: object = { type: PointerEffect_Type.AIRY };\n\nexport const PointerEffect = {\n fromJSON(object: any): PointerEffect {\n const message = { ...basePointerEffect } as PointerEffect;\n message.type =\n object.type !== undefined && object.type !== null\n ? pointerEffect_TypeFromJSON(object.type)\n : PointerEffect_Type.AIRY;\n message.inverted =\n object.inverted !== undefined && object.inverted !== null\n ? Boolean(object.inverted)\n : undefined;\n message.axis =\n object.axis !== undefined && object.axis !== null\n ? String(object.axis)\n : undefined;\n message.direction =\n object.direction !== undefined && object.direction !== null\n ? String(object.direction)\n : undefined;\n message.easing =\n object.easing !== undefined && object.easing !== null\n ? String(object.easing)\n : undefined;\n return message;\n },\n\n toJSON(message: PointerEffect): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = pointerEffect_TypeToJSON(message.type));\n message.inverted !== undefined && (obj.inverted = message.inverted);\n message.axis !== undefined && (obj.axis = message.axis);\n message.direction !== undefined && (obj.direction = message.direction);\n message.easing !== undefined && (obj.easing = message.easing);\n return obj;\n },\n};\n","export enum TextStyle_TextAlignment {\n /** AUTO - browser default, eqivalent to `initial` */\n AUTO = \"AUTO\",\n /** LEFT - Left align */\n LEFT = \"LEFT\",\n /** RIGHT - Right align */\n RIGHT = \"RIGHT\",\n /** CENTER - Center align */\n CENTER = \"CENTER\",\n /** JUSTIFY - Text is spaced to line up its left and right edges to the left and right edges of the line box, except for the last line */\n JUSTIFY = \"JUSTIFY\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum Link_Target {\n /** SELF - Opens the linked document in the same frame as it was clicked (this is default) */\n SELF = \"SELF\",\n /** BLANK - Opens the linked document in a new window or tab */\n BLANK = \"BLANK\",\n /** PARENT - Opens the linked document in the parent frame */\n PARENT = \"PARENT\",\n /** TOP - Opens the linked document in the full body of the window */\n TOP = \"TOP\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PluginContainerData_Alignment {\n /** CENTER - Center Alignment */\n CENTER = \"CENTER\",\n /** LEFT - Left Alignment */\n LEFT = \"LEFT\",\n /** RIGHT - Right Alignment */\n RIGHT = \"RIGHT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PluginContainerData_Width_Type {\n /** CONTENT - Width matches the content width */\n CONTENT = \"CONTENT\",\n /** SMALL - Small Width */\n SMALL = \"SMALL\",\n /** ORIGINAL - Width will match the original asset width */\n ORIGINAL = \"ORIGINAL\",\n /** FULL_WIDTH - coast-to-coast display */\n FULL_WIDTH = \"FULL_WIDTH\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Gradient type. */\nexport enum Gradient_Type {\n /** LINEAR - Linear gradient. */\n LINEAR = \"LINEAR\",\n /** RADIAL - Radial gradient. */\n RADIAL = \"RADIAL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import {\n TextStyle_TextAlignment,\n Link_Target,\n PluginContainerData_Alignment,\n PluginContainerData_Width_Type,\n Gradient_Type,\n} from './common.enums.js';\n\n/* eslint-disable */\nexport interface TextStyle {\n /** Text alignment. Defaults to `AUTO`. */\n textAlignment: TextStyle_TextAlignment;\n /** A CSS `line-height` value for the text expressed as a ratio relative to the font size. For example, if the font size is 20px, a `lineHeight` value of `'1.5'`` results in a line height of 30px. */\n lineHeight?: string;\n}\n\nexport function textStyle_TextAlignmentFromJSON(\n object: any\n): TextStyle_TextAlignment {\n switch (object) {\n case 0:\n case \"AUTO\":\n return TextStyle_TextAlignment.AUTO;\n case 1:\n case \"LEFT\":\n return TextStyle_TextAlignment.LEFT;\n case 2:\n case \"RIGHT\":\n return TextStyle_TextAlignment.RIGHT;\n case 3:\n case \"CENTER\":\n return TextStyle_TextAlignment.CENTER;\n case 4:\n case \"JUSTIFY\":\n return TextStyle_TextAlignment.JUSTIFY;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return TextStyle_TextAlignment.UNRECOGNIZED;\n }\n}\n\nexport function textStyle_TextAlignmentToJSON(\n object: TextStyle_TextAlignment\n): string {\n switch (object) {\n case TextStyle_TextAlignment.AUTO:\n return \"AUTO\";\n case TextStyle_TextAlignment.LEFT:\n return \"LEFT\";\n case TextStyle_TextAlignment.RIGHT:\n return \"RIGHT\";\n case TextStyle_TextAlignment.CENTER:\n return \"CENTER\";\n case TextStyle_TextAlignment.JUSTIFY:\n return \"JUSTIFY\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface Link {\n /** The absolute URL for the linked document. */\n url: string | undefined;\n /** The target node's ID. Used for linking to another node in this object. */\n anchor: string | undefined;\n /**\n * The HTML `target` attribute value for the link. This property defines where the linked document opens as follows:\n * `SELF` - Default. Opens the linked document in the same frame as the link.\n * `BLANK` - Opens the linked document in a new browser tab or window.\n * `PARENT` - Opens the linked document in the link's parent frame.\n * `TOP` - Opens the linked document in the full body of the link's browser tab or window.\n */\n target: Link_Target;\n /** The HTML `rel` attribute value for the link. This object specifies the relationship between the current document and the linked document. */\n rel?: Link_Rel;\n /** A serialized object used for a custom or external link panel. */\n customData?: string;\n}\n\nexport function link_TargetFromJSON(object: any): Link_Target {\n switch (object) {\n case 0:\n case \"SELF\":\n return Link_Target.SELF;\n case 1:\n case \"BLANK\":\n return Link_Target.BLANK;\n case 2:\n case \"PARENT\":\n return Link_Target.PARENT;\n case 3:\n case \"TOP\":\n return Link_Target.TOP;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Link_Target.UNRECOGNIZED;\n }\n}\n\nexport function link_TargetToJSON(object: Link_Target): string {\n switch (object) {\n case Link_Target.SELF:\n return \"SELF\";\n case Link_Target.BLANK:\n return \"BLANK\";\n case Link_Target.PARENT:\n return \"PARENT\";\n case Link_Target.TOP:\n return \"TOP\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface Link_Rel {\n /** Indicates to search engine crawlers not to follow the link. Defaults to `false`. */\n nofollow?: boolean;\n /** Indicates to search engine crawlers that the link is a paid placement such as sponsored content or an advertisement. Defaults to `false`. */\n sponsored?: boolean;\n /** Indicates that this link is user-generated content and isn't necessarily trusted or endorsed by the page’s author. For example, a link in a fourm post. Defaults to `false`. */\n ugc?: boolean;\n /** Indicates that this link protect referral information from being passed to the target website. */\n noreferrer?: boolean;\n}\n\nexport interface PluginContainerData {\n /** The width of the node when it's displayed. */\n width?: PluginContainerData_Width;\n /** The node's alignment within its container. */\n alignment: PluginContainerData_Alignment;\n /** Spoiler cover settings for the node. */\n spoiler?: PluginContainerData_Spoiler;\n /** The height of the node when it's displayed. */\n height?: PluginContainerData_Height;\n /** Sets whether text should wrap around this node when it's displayed. If `textWrap` is `false`, the node takes up the width of its container. Defaults to `true` for all node types except 'DIVIVDER' where it defaults to `false`. */\n textWrap?: boolean;\n}\n\nexport function pluginContainerData_AlignmentFromJSON(\n object: any\n): PluginContainerData_Alignment {\n switch (object) {\n case 0:\n case \"CENTER\":\n return PluginContainerData_Alignment.CENTER;\n case 1:\n case \"LEFT\":\n return PluginContainerData_Alignment.LEFT;\n case 2:\n case \"RIGHT\":\n return PluginContainerData_Alignment.RIGHT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PluginContainerData_Alignment.UNRECOGNIZED;\n }\n}\n\nexport function pluginContainerData_AlignmentToJSON(\n object: PluginContainerData_Alignment\n): string {\n switch (object) {\n case PluginContainerData_Alignment.CENTER:\n return \"CENTER\";\n case PluginContainerData_Alignment.LEFT:\n return \"LEFT\";\n case PluginContainerData_Alignment.RIGHT:\n return \"RIGHT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface PluginContainerData_Spoiler {\n /** Sets whether the spoiler cover is enabled for this node. Defaults to `false`. */\n enabled?: boolean;\n /** The description displayed on top of the spoiler cover. */\n description?: string;\n /** The text for the button used to remove the spoiler cover. */\n buttonText?: string;\n}\n\nexport interface PluginContainerData_Width {\n /**\n * One of the following predefined width options:\n * `CONTENT`: The width of the container matches the content width.\n * `SMALL`: A small width.\n * `ORIGINAL`: For `imageData` containers only. The width of the container matches the original image width.\n * `FULL_WIDTH`: For `imageData` containers only. The image container takes up the full width of the screen.\n */\n size: PluginContainerData_Width_Type | undefined;\n /** A custom width value in pixels. */\n custom?: string;\n}\n\nexport function pluginContainerData_Width_TypeFromJSON(\n object: any\n): PluginContainerData_Width_Type {\n switch (object) {\n case 0:\n case \"CONTENT\":\n return PluginContainerData_Width_Type.CONTENT;\n case 1:\n case \"SMALL\":\n return PluginContainerData_Width_Type.SMALL;\n case 2:\n case \"ORIGINAL\":\n return PluginContainerData_Width_Type.ORIGINAL;\n case 3:\n case \"FULL_WIDTH\":\n return PluginContainerData_Width_Type.FULL_WIDTH;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PluginContainerData_Width_Type.UNRECOGNIZED;\n }\n}\n\nexport function pluginContainerData_Width_TypeToJSON(\n object: PluginContainerData_Width_Type\n): string {\n switch (object) {\n case PluginContainerData_Width_Type.CONTENT:\n return \"CONTENT\";\n case PluginContainerData_Width_Type.SMALL:\n return \"SMALL\";\n case PluginContainerData_Width_Type.ORIGINAL:\n return \"ORIGINAL\";\n case PluginContainerData_Width_Type.FULL_WIDTH:\n return \"FULL_WIDTH\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface PluginContainerData_Height {\n /** A custom height value in pixels. */\n custom?: string;\n}\n\nexport interface FileSource {\n /** The absolute URL for the file's source. */\n url?: string;\n /**\n * Custom ID. Use `id` instead.\n *\n * @deprecated\n */\n custom?: string;\n /** An ID that's resolved to a URL by a resolver function. */\n id?: string;\n /** Indicates whether the file's source is private. Defaults to `false`. */\n private?: boolean;\n}\n\nexport interface Media {\n /** The source for the media's data. */\n src?: FileSource;\n /** Media width in pixels. */\n width?: number;\n /** Media height in pixels. */\n height?: number;\n /** Media duration in seconds. Only relevant for audio and video files. */\n duration?: number;\n}\n\nexport interface PlaybackOptions {\n /** Sets whether the media will automatically start playing. */\n autoPlay?: boolean;\n /** Sets whether media's will be looped. */\n playInLoop?: boolean;\n /** Sets whether media's controls will be shown. */\n showControls?: boolean;\n}\n\nexport interface Oembed {\n /** The resource type. */\n type?: string;\n /** The width of the resource specified in the `url` property in pixels. */\n width?: number;\n /** The height of the resource specified in the `url` property in pixels. */\n height?: number;\n /** Resource title. */\n title?: string;\n /** The source URL for the resource. */\n url?: string;\n /** HTML for embedding a video player. The HTML should have no padding or margins. */\n html?: string;\n /** The name of the author or owner of the resource. */\n authorName?: string;\n /** The URL for the author or owner of the resource. */\n authorUrl?: string;\n /** The name of the resource provider. */\n providerName?: string;\n /** The URL for the resource provider. */\n providerUrl?: string;\n /** The URL for a thumbnail image for the resource. If this property is defined, `thumbnailWidth` and `thumbnailHeight` must also be defined. */\n thumbnailUrl?: string;\n /** The width of the resource's thumbnail image. If this property is defined, `thumbnailUrl` and `thumbnailHeight` must also be defined. */\n thumbnailWidth?: string;\n /** The height of the resource's thumbnail image. If this property is defined, `thumbnailUrl` and `thumbnailWidth`must also be defined. */\n thumbnailHeight?: string;\n /** The URL for an embedded viedo. */\n videoUrl?: string;\n /** The oEmbed version number. This value must be `1.0`. */\n version?: string;\n}\n\nexport interface Gradient {\n /** Gradient type. */\n type: Gradient_Type;\n /** Color stops for the gradient. */\n stops: Gradient_Stop[];\n /** Angle in degrees for linear gradient (0-360). */\n angle?: number;\n /** Horizontal center position for radial gradient (0-100). */\n centerX?: number;\n /** Vertical center position for radial gradient (0-100). */\n centerY?: number;\n}\n\nexport function gradient_TypeFromJSON(object: any): Gradient_Type {\n switch (object) {\n case 0:\n case \"LINEAR\":\n return Gradient_Type.LINEAR;\n case 1:\n case \"RADIAL\":\n return Gradient_Type.RADIAL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Gradient_Type.UNRECOGNIZED;\n }\n}\n\nexport function gradient_TypeToJSON(object: Gradient_Type): string {\n switch (object) {\n case Gradient_Type.LINEAR:\n return \"LINEAR\";\n case Gradient_Type.RADIAL:\n return \"RADIAL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\n/** A single color stop in the gradient. */\nexport interface Gradient_Stop {\n /** Stop color as hex value. */\n color?: string;\n /** Stop position (0-1). */\n position?: number;\n}\n\nconst baseTextStyle: object = { textAlignment: TextStyle_TextAlignment.AUTO };\n\nexport const TextStyle = {\n fromJSON(object: any): TextStyle {\n const message = { ...baseTextStyle } as TextStyle;\n message.textAlignment =\n object.textAlignment !== undefined && object.textAlignment !== null\n ? textStyle_TextAlignmentFromJSON(object.textAlignment)\n : TextStyle_TextAlignment.AUTO;\n message.lineHeight =\n object.lineHeight !== undefined && object.lineHeight !== null\n ? String(object.lineHeight)\n : undefined;\n return message;\n },\n\n toJSON(message: TextStyle): unknown {\n const obj: any = {};\n message.textAlignment !== undefined &&\n (obj.textAlignment = textStyle_TextAlignmentToJSON(\n message.textAlignment\n ));\n message.lineHeight !== undefined && (obj.lineHeight = message.lineHeight);\n return obj;\n },\n};\n\nconst baseLink: object = { target: Link_Target.SELF };\n\nexport const Link = {\n fromJSON(object: any): Link {\n const message = { ...baseLink } as Link;\n message.url =\n object.url !== undefined && object.url !== null\n ? String(object.url)\n : undefined;\n message.anchor =\n object.anchor !== undefined && object.anchor !== null\n ? String(object.anchor)\n : undefined;\n message.target =\n object.target !== undefined && object.target !== null\n ? link_TargetFromJSON(object.target)\n : Link_Target.SELF;\n message.rel =\n object.rel !== undefined && object.rel !== null\n ? Link_Rel.fromJSON(object.rel)\n : undefined;\n message.customData =\n object.customData !== undefined && object.customData !== null\n ? String(object.customData)\n : undefined;\n return message;\n },\n\n toJSON(message: Link): unknown {\n const obj: any = {};\n message.url !== undefined && (obj.url = message.url);\n message.anchor !== undefined && (obj.anchor = message.anchor);\n message.target !== undefined &&\n (obj.target = link_TargetToJSON(message.target));\n message.rel !== undefined &&\n (obj.rel = message.rel ? Link_Rel.toJSON(message.rel) : undefined);\n message.customData !== undefined && (obj.customData = message.customData);\n return obj;\n },\n};\n\nconst baseLink_Rel: object = {};\n\nexport const Link_Rel = {\n fromJSON(object: any): Link_Rel {\n const message = { ...baseLink_Rel } as Link_Rel;\n message.nofollow =\n object.nofollow !== undefined && object.nofollow !== null\n ? Boolean(object.nofollow)\n : undefined;\n message.sponsored =\n object.sponsored !== undefined && object.sponsored !== null\n ? Boolean(object.sponsored)\n : undefined;\n message.ugc =\n object.ugc !== undefined && object.ugc !== null\n ? Boolean(object.ugc)\n : undefined;\n message.noreferrer =\n object.noreferrer !== undefined && object.noreferrer !== null\n ? Boolean(object.noreferrer)\n : undefined;\n return message;\n },\n\n toJSON(message: Link_Rel): unknown {\n const obj: any = {};\n message.nofollow !== undefined && (obj.nofollow = message.nofollow);\n message.sponsored !== undefined && (obj.sponsored = message.sponsored);\n message.ugc !== undefined && (obj.ugc = message.ugc);\n message.noreferrer !== undefined && (obj.noreferrer = message.noreferrer);\n return obj;\n },\n};\n\nconst basePluginContainerData: object = {\n alignment: PluginContainerData_Alignment.CENTER,\n};\n\nexport const PluginContainerData = {\n fromJSON(object: any): PluginContainerData {\n const message = { ...basePluginContainerData } as PluginContainerData;\n message.width =\n object.width !== undefined && object.width !== null\n ? PluginContainerData_Width.fromJSON(object.width)\n : undefined;\n message.alignment =\n object.alignment !== undefined && object.alignment !== null\n ? pluginContainerData_AlignmentFromJSON(object.alignment)\n : PluginContainerData_Alignment.CENTER;\n message.spoiler =\n object.spoiler !== undefined && object.spoiler !== null\n ? PluginContainerData_Spoiler.fromJSON(object.spoiler)\n : undefined;\n message.height =\n object.height !== undefined && object.height !== null\n ? PluginContainerData_Height.fromJSON(object.height)\n : undefined;\n message.textWrap =\n object.textWrap !== undefined && object.textWrap !== null\n ? Boolean(object.textWrap)\n : undefined;\n return message;\n },\n\n toJSON(message: PluginContainerData): unknown {\n const obj: any = {};\n message.width !== undefined &&\n (obj.width = message.width\n ? PluginContainerData_Width.toJSON(message.width)\n : undefined);\n message.alignment !== undefined &&\n (obj.alignment = pluginContainerData_AlignmentToJSON(message.alignment));\n message.spoiler !== undefined &&\n (obj.spoiler = message.spoiler\n ? PluginContainerData_Spoiler.toJSON(message.spoiler)\n : undefined);\n message.height !== undefined &&\n (obj.height = message.height\n ? PluginContainerData_Height.toJSON(message.height)\n : undefined);\n message.textWrap !== undefined && (obj.textWrap = message.textWrap);\n return obj;\n },\n};\n\nconst basePluginContainerData_Spoiler: object = {};\n\nexport const PluginContainerData_Spoiler = {\n fromJSON(object: any): PluginContainerData_Spoiler {\n const message = {\n ...basePluginContainerData_Spoiler,\n } as PluginContainerData_Spoiler;\n message.enabled =\n object.enabled !== undefined && object.enabled !== null\n ? Boolean(object.enabled)\n : undefined;\n message.description =\n object.description !== undefined && object.description !== null\n ? String(object.description)\n : undefined;\n message.buttonText =\n object.buttonText !== undefined && object.buttonText !== null\n ? String(object.buttonText)\n : undefined;\n return message;\n },\n\n toJSON(message: PluginContainerData_Spoiler): unknown {\n const obj: any = {};\n message.enabled !== undefined && (obj.enabled = message.enabled);\n message.description !== undefined &&\n (obj.description = message.description);\n message.buttonText !== undefined && (obj.buttonText = message.buttonText);\n return obj;\n },\n};\n\nconst basePluginContainerData_Width: object = {};\n\nexport const PluginContainerData_Width = {\n fromJSON(object: any): PluginContainerData_Width {\n const message = {\n ...basePluginContainerData_Width,\n } as PluginContainerData_Width;\n message.size =\n object.size !== undefined && object.size !== null\n ? pluginContainerData_Width_TypeFromJSON(object.size)\n : undefined;\n message.custom =\n object.custom !== undefined && object.custom !== null\n ? String(object.custom)\n : undefined;\n return message;\n },\n\n toJSON(message: PluginContainerData_Width): unknown {\n const obj: any = {};\n message.size !== undefined &&\n (obj.size =\n message.size !== undefined\n ? pluginContainerData_Width_TypeToJSON(message.size)\n : undefined);\n message.custom !== undefined && (obj.custom = message.custom);\n return obj;\n },\n};\n\nconst basePluginContainerData_Height: object = {};\n\nexport const PluginContainerData_Height = {\n fromJSON(object: any): PluginContainerData_Height {\n const message = {\n ...basePluginContainerData_Height,\n } as PluginContainerData_Height;\n message.custom =\n object.custom !== undefined && object.custom !== null\n ? String(object.custom)\n : undefined;\n return message;\n },\n\n toJSON(message: PluginContainerData_Height): unknown {\n const obj: any = {};\n message.custom !== undefined && (obj.custom = message.custom);\n return obj;\n },\n};\n\nconst baseFileSource: object = {};\n\nexport const FileSource = {\n fromJSON(object: any): FileSource {\n const message = { ...baseFileSource } as FileSource;\n message.url =\n object.url !== undefined && object.url !== null\n ? String(object.url)\n : undefined;\n message.custom =\n object.custom !== undefined && object.custom !== null\n ? String(object.custom)\n : undefined;\n message.id =\n object.id !== undefined && object.id !== null\n ? String(object.id)\n : undefined;\n message.private =\n object.private !== undefined && object.private !== null\n ? Boolean(object.private)\n : undefined;\n return message;\n },\n\n toJSON(message: FileSource): unknown {\n const obj: any = {};\n message.url !== undefined && (obj.url = message.url);\n message.custom !== undefined && (obj.custom = message.custom);\n message.id !== undefined && (obj.id = message.id);\n message.private !== undefined && (obj.private = message.private);\n return obj;\n },\n};\n\nconst baseMedia: object = {};\n\nexport const Media = {\n fromJSON(object: any): Media {\n const message = { ...baseMedia } as Media;\n message.src =\n object.src !== undefined && object.src !== null\n ? FileSource.fromJSON(object.src)\n : undefined;\n message.width =\n object.width !== undefined && object.width !== null\n ? Number(object.width)\n : undefined;\n message.height =\n object.height !== undefined && object.height !== null\n ? Number(object.height)\n : undefined;\n message.duration =\n object.duration !== undefined && object.duration !== null\n ? Number(object.duration)\n : undefined;\n return message;\n },\n\n toJSON(message: Media): unknown {\n const obj: any = {};\n message.src !== undefined &&\n (obj.src = message.src ? FileSource.toJSON(message.src) : undefined);\n message.width !== undefined && (obj.width = message.width);\n message.height !== undefined && (obj.height = message.height);\n message.duration !== undefined && (obj.duration = message.duration);\n return obj;\n },\n};\n\nconst basePlaybackOptions: object = {};\n\nexport const PlaybackOptions = {\n fromJSON(object: any): PlaybackOptions {\n const message = { ...basePlaybackOptions } as PlaybackOptions;\n message.autoPlay =\n object.autoPlay !== undefined && object.autoPlay !== null\n ? Boolean(object.autoPlay)\n : undefined;\n message.playInLoop =\n object.playInLoop !== undefined && object.playInLoop !== null\n ? Boolean(object.playInLoop)\n : undefined;\n message.showControls =\n object.showControls !== undefined && object.showControls !== null\n ? Boolean(object.showControls)\n : undefined;\n return message;\n },\n\n toJSON(message: PlaybackOptions): unknown {\n const obj: any = {};\n message.autoPlay !== undefined && (obj.autoPlay = message.autoPlay);\n message.playInLoop !== undefined && (obj.playInLoop = message.playInLoop);\n message.showControls !== undefined &&\n (obj.showControls = message.showControls);\n return obj;\n },\n};\n\nconst baseOembed: object = {};\n\nexport const Oembed = {\n fromJSON(object: any): Oembed {\n const message = { ...baseOembed } as Oembed;\n message.type =\n object.type !== undefined && object.type !== null\n ? String(object.type)\n : undefined;\n message.width =\n object.width !== undefined && object.width !== null\n ? Number(object.width)\n : undefined;\n message.height =\n object.height !== undefined && object.height !== null\n ? Number(object.height)\n : undefined;\n message.title =\n object.title !== undefined && object.title !== null\n ? String(object.title)\n : undefined;\n message.url =\n object.url !== undefined && object.url !== null\n ? String(object.url)\n : undefined;\n message.html =\n object.html !== undefined && object.html !== null\n ? String(object.html)\n : undefined;\n message.authorName =\n object.authorName !== undefined && object.authorName !== null\n ? String(object.authorName)\n : undefined;\n message.authorUrl =\n object.authorUrl !== undefined && object.authorUrl !== null\n ? String(object.authorUrl)\n : undefined;\n message.providerName =\n object.providerName !== undefined && object.providerName !== null\n ? String(object.providerName)\n : undefined;\n message.providerUrl =\n object.providerUrl !== undefined && object.providerUrl !== null\n ? String(object.providerUrl)\n : undefined;\n message.thumbnailUrl =\n object.thumbnailUrl !== undefined && object.thumbnailUrl !== null\n ? String(object.thumbnailUrl)\n : undefined;\n message.thumbnailWidth =\n object.thumbnailWidth !== undefined && object.thumbnailWidth !== null\n ? String(object.thumbnailWidth)\n : undefined;\n message.thumbnailHeight =\n object.thumbnailHeight !== undefined && object.thumbnailHeight !== null\n ? String(object.thumbnailHeight)\n : undefined;\n message.videoUrl =\n object.videoUrl !== undefined && object.videoUrl !== null\n ? String(object.videoUrl)\n : undefined;\n message.version =\n object.version !== undefined && object.version !== null\n ? String(object.version)\n : undefined;\n return message;\n },\n\n toJSON(message: Oembed): unknown {\n const obj: any = {};\n message.type !== undefined && (obj.type = message.type);\n message.width !== undefined && (obj.width = message.width);\n message.height !== undefined && (obj.height = message.height);\n message.title !== undefined && (obj.title = message.title);\n message.url !== undefined && (obj.url = message.url);\n message.html !== undefined && (obj.html = message.html);\n message.authorName !== undefined && (obj.authorName = message.authorName);\n message.authorUrl !== undefined && (obj.authorUrl = message.authorUrl);\n message.providerName !== undefined &&\n (obj.providerName = message.providerName);\n message.providerUrl !== undefined &&\n (obj.providerUrl = message.providerUrl);\n message.thumbnailUrl !== undefined &&\n (obj.thumbnailUrl = message.thumbnailUrl);\n message.thumbnailWidth !== undefined &&\n (obj.thumbnailWidth = message.thumbnailWidth);\n message.thumbnailHeight !== undefined &&\n (obj.thumbnailHeight = message.thumbnailHeight);\n message.videoUrl !== undefined && (obj.videoUrl = message.videoUrl);\n message.version !== undefined && (obj.version = message.version);\n return obj;\n },\n};\n\nconst baseGradient: object = { type: Gradient_Type.LINEAR };\n\nexport const Gradient = {\n fromJSON(object: any): Gradient {\n const message = { ...baseGradient } as Gradient;\n message.type =\n object.type !== undefined && object.type !== null\n ? gradient_TypeFromJSON(object.type)\n : Gradient_Type.LINEAR;\n message.stops = (object.stops ?? []).map((e: any) =>\n Gradient_Stop.fromJSON(e)\n );\n message.angle =\n object.angle !== undefined && object.angle !== null\n ? Number(object.angle)\n : undefined;\n message.centerX =\n object.centerX !== undefined && object.centerX !== null\n ? Number(object.centerX)\n : undefined;\n message.centerY =\n object.centerY !== undefined && object.centerY !== null\n ? Number(object.centerY)\n : undefined;\n return message;\n },\n\n toJSON(message: Gradient): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = gradient_TypeToJSON(message.type));\n if (message.stops) {\n obj.stops = message.stops.map((e) =>\n e ? Gradient_Stop.toJSON(e) : undefined\n );\n } else {\n obj.stops = [];\n }\n message.angle !== undefined && (obj.angle = message.angle);\n message.centerX !== undefined && (obj.centerX = message.centerX);\n message.centerY !== undefined && (obj.centerY = message.centerY);\n return obj;\n },\n};\n\nconst baseGradient_Stop: object = {};\n\nexport const Gradient_Stop = {\n fromJSON(object: any): Gradient_Stop {\n const message = { ...baseGradient_Stop } as Gradient_Stop;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.position =\n object.position !== undefined && object.position !== null\n ? Number(object.position)\n : undefined;\n return message;\n },\n\n toJSON(message: Gradient_Stop): unknown {\n const obj: any = {};\n message.color !== undefined && (obj.color = message.color);\n message.position !== undefined && (obj.position = message.position);\n return obj;\n },\n};\n","/* eslint-disable */\nexport interface AnchorData {\n /** The target node's ID. */\n anchor: string;\n}\n\nconst baseAnchorData: object = { anchor: \"\" };\n\nexport const AnchorData = {\n fromJSON(object: any): AnchorData {\n const message = { ...baseAnchorData } as AnchorData;\n message.anchor =\n object.anchor !== undefined && object.anchor !== null\n ? String(object.anchor)\n : \"\";\n return message;\n },\n\n toJSON(message: AnchorData): unknown {\n const obj: any = {};\n message.anchor !== undefined && (obj.anchor = message.anchor);\n return obj;\n },\n};\n","/* eslint-disable */\nexport interface ColorData {\n /** The text's background color as a hexadecimal value. */\n background?: string;\n /** The text's foreground color as a hexadecimal value. */\n foreground?: string;\n}\n\nconst baseColorData: object = {};\n\nexport const ColorData = {\n fromJSON(object: any): ColorData {\n const message = { ...baseColorData } as ColorData;\n message.background =\n object.background !== undefined && object.background !== null\n ? String(object.background)\n : undefined;\n message.foreground =\n object.foreground !== undefined && object.foreground !== null\n ? String(object.foreground)\n : undefined;\n return message;\n },\n\n toJSON(message: ColorData): unknown {\n const obj: any = {};\n message.background !== undefined && (obj.background = message.background);\n message.foreground !== undefined && (obj.foreground = message.foreground);\n return obj;\n },\n};\n","/* eslint-disable */\nexport interface FontFamilyData {\n value?: string;\n}\n\nconst baseFontFamilyData: object = {};\n\nexport const FontFamilyData = {\n fromJSON(object: any): FontFamilyData {\n const message = { ...baseFontFamilyData } as FontFamilyData;\n message.value =\n object.value !== undefined && object.value !== null\n ? String(object.value)\n : undefined;\n return message;\n },\n\n toJSON(message: FontFamilyData): unknown {\n const obj: any = {};\n message.value !== undefined && (obj.value = message.value);\n return obj;\n },\n};\n","export enum FontSizeData_fontType {\n PX = \"PX\",\n EM = \"EM\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { FontSizeData_fontType } from './decoration_fontsize.enums.js';\n/* eslint-disable */\nexport interface FontSizeData {\n /** The units used for the font size. */\n unit: FontSizeData_fontType;\n /** Font size value. */\n value?: number;\n}\n\nexport function fontSizeData_fontTypeFromJSON(\n object: any\n): FontSizeData_fontType {\n switch (object) {\n case 0:\n case \"PX\":\n return FontSizeData_fontType.PX;\n case 1:\n case \"EM\":\n return FontSizeData_fontType.EM;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return FontSizeData_fontType.UNRECOGNIZED;\n }\n}\n\nexport function fontSizeData_fontTypeToJSON(\n object: FontSizeData_fontType\n): string {\n switch (object) {\n case FontSizeData_fontType.PX:\n return \"PX\";\n case FontSizeData_fontType.EM:\n return \"EM\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseFontSizeData: object = { unit: FontSizeData_fontType.PX };\n\nexport const FontSizeData = {\n fromJSON(object: any): FontSizeData {\n const message = { ...baseFontSizeData } as FontSizeData;\n message.unit =\n object.unit !== undefined && object.unit !== null\n ? fontSizeData_fontTypeFromJSON(object.unit)\n : FontSizeData_fontType.PX;\n message.value =\n object.value !== undefined && object.value !== null\n ? Number(object.value)\n : undefined;\n return message;\n },\n\n toJSON(message: FontSizeData): unknown {\n const obj: any = {};\n message.unit !== undefined &&\n (obj.unit = fontSizeData_fontTypeToJSON(message.unit));\n message.value !== undefined && (obj.value = message.value);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { Link } from './common.js';\n\nexport interface LinkData {\n /** Link details. */\n link?: Link;\n}\n\nconst baseLinkData: object = {};\n\nexport const LinkData = {\n fromJSON(object: any): LinkData {\n const message = { ...baseLinkData } as LinkData;\n message.link =\n object.link !== undefined && object.link !== null\n ? Link.fromJSON(object.link)\n : undefined;\n return message;\n },\n\n toJSON(message: LinkData): unknown {\n const obj: any = {};\n message.link !== undefined &&\n (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nexport interface MentionData {\n /** The mentioned user's name. */\n name: string;\n /** The version of the user's name that appears after the `@` character in the mention. */\n slug: string;\n /** Mentioned user's ID. */\n id?: string;\n /** The kind of entity the mention refers to. Any value is accepted, and it's usually used to mark a mention as a group mention (for example, `group`). When empty, the mention refers to a member. */\n type?: string;\n}\n\nconst baseMentionData: object = { name: \"\", slug: \"\" };\n\nexport const MentionData = {\n fromJSON(object: any): MentionData {\n const message = { ...baseMentionData } as MentionData;\n message.name =\n object.name !== undefined && object.name !== null\n ? String(object.name)\n : \"\";\n message.slug =\n object.slug !== undefined && object.slug !== null\n ? String(object.slug)\n : \"\";\n message.id =\n object.id !== undefined && object.id !== null\n ? String(object.id)\n : undefined;\n message.type =\n object.type !== undefined && object.type !== null\n ? String(object.type)\n : undefined;\n return message;\n },\n\n toJSON(message: MentionData): unknown {\n const obj: any = {};\n message.name !== undefined && (obj.name = message.name);\n message.slug !== undefined && (obj.slug = message.slug);\n message.id !== undefined && (obj.id = message.id);\n message.type !== undefined && (obj.type = message.type);\n return obj;\n },\n};\n","export enum SketchData_Variant {\n UNDERLINE = \"UNDERLINE\",\n BOX = \"BOX\",\n CIRCLE = \"CIRCLE\",\n HIGHLIGHT = \"HIGHLIGHT\",\n STRIKETHROUGH = \"STRIKETHROUGH\",\n CROSSED_OFF = \"CROSSED_OFF\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { SketchData_Variant } from './decoration_sketch.enums.js';\n/* eslint-disable */\nexport interface SketchData {\n /** The sketch annotation variant to draw over the text. */\n variant: SketchData_Variant;\n /** Annotation color. Defaults to the theme action color. */\n color?: string;\n /** Whether the annotation animates on first paint. Defaults to `true`. */\n animate?: boolean;\n}\n\nexport function sketchData_VariantFromJSON(object: any): SketchData_Variant {\n switch (object) {\n case 0:\n case \"UNDERLINE\":\n return SketchData_Variant.UNDERLINE;\n case 1:\n case \"BOX\":\n return SketchData_Variant.BOX;\n case 2:\n case \"CIRCLE\":\n return SketchData_Variant.CIRCLE;\n case 3:\n case \"HIGHLIGHT\":\n return SketchData_Variant.HIGHLIGHT;\n case 4:\n case \"STRIKETHROUGH\":\n return SketchData_Variant.STRIKETHROUGH;\n case 5:\n case \"CROSSED_OFF\":\n return SketchData_Variant.CROSSED_OFF;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return SketchData_Variant.UNRECOGNIZED;\n }\n}\n\nexport function sketchData_VariantToJSON(object: SketchData_Variant): string {\n switch (object) {\n case SketchData_Variant.UNDERLINE:\n return \"UNDERLINE\";\n case SketchData_Variant.BOX:\n return \"BOX\";\n case SketchData_Variant.CIRCLE:\n return \"CIRCLE\";\n case SketchData_Variant.HIGHLIGHT:\n return \"HIGHLIGHT\";\n case SketchData_Variant.STRIKETHROUGH:\n return \"STRIKETHROUGH\";\n case SketchData_Variant.CROSSED_OFF:\n return \"CROSSED_OFF\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseSketchData: object = { variant: SketchData_Variant.UNDERLINE };\n\nexport const SketchData = {\n fromJSON(object: any): SketchData {\n const message = { ...baseSketchData } as SketchData;\n message.variant =\n object.variant !== undefined && object.variant !== null\n ? sketchData_VariantFromJSON(object.variant)\n : SketchData_Variant.UNDERLINE;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.animate =\n object.animate !== undefined && object.animate !== null\n ? Boolean(object.animate)\n : undefined;\n return message;\n },\n\n toJSON(message: SketchData): unknown {\n const obj: any = {};\n message.variant !== undefined &&\n (obj.variant = sketchData_VariantToJSON(message.variant));\n message.color !== undefined && (obj.color = message.color);\n message.animate !== undefined && (obj.animate = message.animate);\n return obj;\n },\n};\n","/* eslint-disable */\nexport interface SpoilerData {\n /** Spoiler ID. */\n id?: string;\n}\n\nconst baseSpoilerData: object = {};\n\nexport const SpoilerData = {\n fromJSON(object: any): SpoilerData {\n const message = { ...baseSpoilerData } as SpoilerData;\n message.id =\n object.id !== undefined && object.id !== null\n ? String(object.id)\n : undefined;\n return message;\n },\n\n toJSON(message: SpoilerData): unknown {\n const obj: any = {};\n message.id !== undefined && (obj.id = message.id);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { Animation } from './animation.js';\n\nexport interface BlockquoteData {\n /** Indentation level from 1-4. */\n indentation: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseBlockquoteData: object = { indentation: 0 };\n\nexport const BlockquoteData = {\n fromJSON(object: any): BlockquoteData {\n const message = { ...baseBlockquoteData } as BlockquoteData;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? Number(object.indentation)\n : 0;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: BlockquoteData): unknown {\n const obj: any = {};\n message.indentation !== undefined &&\n (obj.indentation = Math.round(message.indentation));\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\n\nexport interface CaptionData {\n textStyle?: TextStyle;\n}\n\nconst baseCaptionData: object = {};\n\nexport const CaptionData = {\n fromJSON(object: any): CaptionData {\n const message = { ...baseCaptionData } as CaptionData;\n message.textStyle =\n object.textStyle !== undefined && object.textStyle !== null\n ? TextStyle.fromJSON(object.textStyle)\n : undefined;\n return message;\n },\n\n toJSON(message: CaptionData): unknown {\n const obj: any = {};\n message.textStyle !== undefined &&\n (obj.textStyle = message.textStyle\n ? TextStyle.toJSON(message.textStyle)\n : undefined);\n return obj;\n },\n};\n","export enum CardData_ImageScaling_Scaling {\n /** AUTO - Auto image scaling */\n AUTO = \"AUTO\",\n /** CONTAIN - Contain image scaling */\n CONTAIN = \"CONTAIN\",\n /** COVER - Cover image scaling */\n COVER = \"COVER\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum CardData_ImagePosition_Position {\n /** CENTER - Image positioned at the center */\n CENTER = \"CENTER\",\n /** CENTER_LEFT - Image positioned on the left */\n CENTER_LEFT = \"CENTER_LEFT\",\n /** CENTER_RIGHT - Image positioned on the right */\n CENTER_RIGHT = \"CENTER_RIGHT\",\n /** TOP - Image positioned at the center top */\n TOP = \"TOP\",\n /** TOP_LEFT - Image positioned at the top left */\n TOP_LEFT = \"TOP_LEFT\",\n /** TOP_RIGHT - Image positioned at the top right */\n TOP_RIGHT = \"TOP_RIGHT\",\n /** BOTTOM - Image positioned at the center bottom */\n BOTTOM = \"BOTTOM\",\n /** BOTTOM_LEFT - Image positioned at the bottom left */\n BOTTOM_LEFT = \"BOTTOM_LEFT\",\n /** BOTTOM_RIGHT - Image positioned at the bottom right */\n BOTTOM_RIGHT = \"BOTTOM_RIGHT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Background type */\nexport enum CardData_Background_Type {\n /** COLOR - Solid color background */\n COLOR = \"COLOR\",\n /** GRADIENT - Gradient background */\n GRADIENT = \"GRADIENT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Media, Gradient } from './common.js';\n\nimport {\n CardData_ImageScaling_Scaling,\n CardData_ImagePosition_Position,\n CardData_Background_Type,\n} from './node_card.enums.js';\n\n/**\n * flynt-disable missing-string-validations\n * flynt-disable missing-deprecated-field-annotation\n */\n\nexport interface CardData {\n /** Background styling (color or gradient). */\n background?: CardData_Background;\n /** Background image. */\n backgroundImage?: CardData_BackgroundImage;\n}\n\nexport interface CardData_ImageScaling {}\n\nexport function cardData_ImageScaling_ScalingFromJSON(\n object: any\n): CardData_ImageScaling_Scaling {\n switch (object) {\n case 0:\n case \"AUTO\":\n return CardData_ImageScaling_Scaling.AUTO;\n case 1:\n case \"CONTAIN\":\n return CardData_ImageScaling_Scaling.CONTAIN;\n case 2:\n case \"COVER\":\n return CardData_ImageScaling_Scaling.COVER;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return CardData_ImageScaling_Scaling.UNRECOGNIZED;\n }\n}\n\nexport function cardData_ImageScaling_ScalingToJSON(\n object: CardData_ImageScaling_Scaling\n): string {\n switch (object) {\n case CardData_ImageScaling_Scaling.AUTO:\n return \"AUTO\";\n case CardData_ImageScaling_Scaling.CONTAIN:\n return \"CONTAIN\";\n case CardData_ImageScaling_Scaling.COVER:\n return \"COVER\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface CardData_ImagePosition {}\n\nexport function cardData_ImagePosition_PositionFromJSON(\n object: any\n): CardData_ImagePosition_Position {\n switch (object) {\n case 0:\n case \"CENTER\":\n return CardData_ImagePosition_Position.CENTER;\n case 1:\n case \"CENTER_LEFT\":\n return CardData_ImagePosition_Position.CENTER_LEFT;\n case 2:\n case \"CENTER_RIGHT\":\n return CardData_ImagePosition_Position.CENTER_RIGHT;\n case 3:\n case \"TOP\":\n return CardData_ImagePosition_Position.TOP;\n case 4:\n case \"TOP_LEFT\":\n return CardData_ImagePosition_Position.TOP_LEFT;\n case 5:\n case \"TOP_RIGHT\":\n return CardData_ImagePosition_Position.TOP_RIGHT;\n case 6:\n case \"BOTTOM\":\n return CardData_ImagePosition_Position.BOTTOM;\n case 7:\n case \"BOTTOM_LEFT\":\n return CardData_ImagePosition_Position.BOTTOM_LEFT;\n case 8:\n case \"BOTTOM_RIGHT\":\n return CardData_ImagePosition_Position.BOTTOM_RIGHT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return CardData_ImagePosition_Position.UNRECOGNIZED;\n }\n}\n\nexport function cardData_ImagePosition_PositionToJSON(\n object: CardData_ImagePosition_Position\n): string {\n switch (object) {\n case CardData_ImagePosition_Position.CENTER:\n return \"CENTER\";\n case CardData_ImagePosition_Position.CENTER_LEFT:\n return \"CENTER_LEFT\";\n case CardData_ImagePosition_Position.CENTER_RIGHT:\n return \"CENTER_RIGHT\";\n case CardData_ImagePosition_Position.TOP:\n return \"TOP\";\n case CardData_ImagePosition_Position.TOP_LEFT:\n return \"TOP_LEFT\";\n case CardData_ImagePosition_Position.TOP_RIGHT:\n return \"TOP_RIGHT\";\n case CardData_ImagePosition_Position.BOTTOM:\n return \"BOTTOM\";\n case CardData_ImagePosition_Position.BOTTOM_LEFT:\n return \"BOTTOM_LEFT\";\n case CardData_ImagePosition_Position.BOTTOM_RIGHT:\n return \"BOTTOM_RIGHT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface CardData_BackgroundImage {\n /** Background image. */\n media?: Media;\n /**\n * Deprecated: use `overlay` instead. Legacy image opacity (0–100) that dimmed the image to reveal the `background` color behind it.\n *\n * @deprecated\n */\n opacity?: number;\n /** Background image scaling. */\n scaling: CardData_ImageScaling_Scaling;\n /** Position of background. Defaults to `CENTER`. */\n position: CardData_ImagePosition_Position;\n /** Color or gradient drawn on top of the image. When present, this is the authoritative overlay and `opacity` is ignored. Its presence also marks content as authored under the new overlay model (vs. the legacy `opacity`-based dimming on `background`). */\n overlay?: CardData_Background;\n /** Blur radius in pixels applied to the image layer. `0` (default) leaves the image unblurred; blur is independent of any color overlay and the two stack. */\n blur?: number;\n}\n\n/** Background styling (color or gradient) */\nexport interface CardData_Background {\n /** Background type. */\n type: CardData_Background_Type;\n /** Background color as a hexadecimal value. */\n color?: string;\n /** Gradient configuration. */\n gradient?: Gradient;\n}\n\nexport function cardData_Background_TypeFromJSON(\n object: any\n): CardData_Background_Type {\n switch (object) {\n case 0:\n case \"COLOR\":\n return CardData_Background_Type.COLOR;\n case 1:\n case \"GRADIENT\":\n return CardData_Background_Type.GRADIENT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return CardData_Background_Type.UNRECOGNIZED;\n }\n}\n\nexport function cardData_Background_TypeToJSON(\n object: CardData_Background_Type\n): string {\n switch (object) {\n case CardData_Background_Type.COLOR:\n return \"COLOR\";\n case CardData_Background_Type.GRADIENT:\n return \"GRADIENT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseCardData: object = {};\n\nexport const CardData = {\n fromJSON(object: any): CardData {\n const message = { ...baseCardData } as CardData;\n message.background =\n object.background !== undefined && object.background !== null\n ? CardData_Background.fromJSON(object.background)\n : undefined;\n message.backgroundImage =\n object.backgroundImage !== undefined && object.backgroundImage !== null\n ? CardData_BackgroundImage.fromJSON(object.backgroundImage)\n : undefined;\n return message;\n },\n\n toJSON(message: CardData): unknown {\n const obj: any = {};\n message.background !== undefined &&\n (obj.background = message.background\n ? CardData_Background.toJSON(message.background)\n : undefined);\n message.backgroundImage !== undefined &&\n (obj.backgroundImage = message.backgroundImage\n ? CardData_BackgroundImage.toJSON(message.backgroundImage)\n : undefined);\n return obj;\n },\n};\n\nconst baseCardData_ImageScaling: object = {};\n\nexport const CardData_ImageScaling = {\n fromJSON(_: any): CardData_ImageScaling {\n const message = { ...baseCardData_ImageScaling } as CardData_ImageScaling;\n return message;\n },\n\n toJSON(_: CardData_ImageScaling): unknown {\n const obj: any = {};\n return obj;\n },\n};\n\nconst baseCardData_ImagePosition: object = {};\n\nexport const CardData_ImagePosition = {\n fromJSON(_: any): CardData_ImagePosition {\n const message = { ...baseCardData_ImagePosition } as CardData_ImagePosition;\n return message;\n },\n\n toJSON(_: CardData_ImagePosition): unknown {\n const obj: any = {};\n return obj;\n },\n};\n\nconst baseCardData_BackgroundImage: object = {\n scaling: CardData_ImageScaling_Scaling.AUTO,\n position: CardData_ImagePosition_Position.CENTER,\n};\n\nexport const CardData_BackgroundImage = {\n fromJSON(object: any): CardData_BackgroundImage {\n const message = {\n ...baseCardData_BackgroundImage,\n } as CardData_BackgroundImage;\n message.media =\n object.media !== undefined && object.media !== null\n ? Media.fromJSON(object.media)\n : undefined;\n message.opacity =\n object.opacity !== undefined && object.opacity !== null\n ? Number(object.opacity)\n : undefined;\n message.scaling =\n object.scaling !== undefined && object.scaling !== null\n ? cardData_ImageScaling_ScalingFromJSON(object.scaling)\n : CardData_ImageScaling_Scaling.AUTO;\n message.position =\n object.position !== undefined && object.position !== null\n ? cardData_ImagePosition_PositionFromJSON(object.position)\n : CardData_ImagePosition_Position.CENTER;\n message.overlay =\n object.overlay !== undefined && object.overlay !== null\n ? CardData_Background.fromJSON(object.overlay)\n : undefined;\n message.blur =\n object.blur !== undefined && object.blur !== null\n ? Number(object.blur)\n : undefined;\n return message;\n },\n\n toJSON(message: CardData_BackgroundImage): unknown {\n const obj: any = {};\n message.media !== undefined &&\n (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n message.opacity !== undefined && (obj.opacity = message.opacity);\n message.scaling !== undefined &&\n (obj.scaling = cardData_ImageScaling_ScalingToJSON(message.scaling));\n message.position !== undefined &&\n (obj.position = cardData_ImagePosition_PositionToJSON(message.position));\n message.overlay !== undefined &&\n (obj.overlay = message.overlay\n ? CardData_Background.toJSON(message.overlay)\n : undefined);\n message.blur !== undefined && (obj.blur = message.blur);\n return obj;\n },\n};\n\nconst baseCardData_Background: object = {\n type: CardData_Background_Type.COLOR,\n};\n\nexport const CardData_Background = {\n fromJSON(object: any): CardData_Background {\n const message = { ...baseCardData_Background } as CardData_Background;\n message.type =\n object.type !== undefined && object.type !== null\n ? cardData_Background_TypeFromJSON(object.type)\n : CardData_Background_Type.COLOR;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.gradient =\n object.gradient !== undefined && object.gradient !== null\n ? Gradient.fromJSON(object.gradient)\n : undefined;\n return message;\n },\n\n toJSON(message: CardData_Background): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = cardData_Background_TypeToJSON(message.type));\n message.color !== undefined && (obj.color = message.color);\n message.gradient !== undefined &&\n (obj.gradient = message.gradient\n ? Gradient.toJSON(message.gradient)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface CodeBlockData {\n /** Styling for the code block's text. */\n textStyle?: TextStyle;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseCodeBlockData: object = {};\n\nexport const CodeBlockData = {\n fromJSON(object: any): CodeBlockData {\n const message = { ...baseCodeBlockData } as CodeBlockData;\n message.textStyle =\n object.textStyle !== undefined && object.textStyle !== null\n ? TextStyle.fromJSON(object.textStyle)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: CodeBlockData): unknown {\n const obj: any = {};\n message.textStyle !== undefined &&\n (obj.textStyle = message.textStyle\n ? TextStyle.toJSON(message.textStyle)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface HeadingData {\n /** Heading level from 1-6. */\n level: number;\n /** Styling for the heading text. */\n textStyle?: TextStyle;\n /** Indentation level from 1-4. */\n indentation?: number;\n /** Rendered heading level for SEO/accessibility, overrides the HTML tag when set. */\n renderedLevel?: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseHeadingData: object = { level: 0 };\n\nexport const HeadingData = {\n fromJSON(object: any): HeadingData {\n const message = { ...baseHeadingData } as HeadingData;\n message.level =\n object.level !== undefined && object.level !== null\n ? Number(object.level)\n : 0;\n message.textStyle =\n object.textStyle !== undefined && object.textStyle !== null\n ? TextStyle.fromJSON(object.textStyle)\n : undefined;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? Number(object.indentation)\n : undefined;\n message.renderedLevel =\n object.renderedLevel !== undefined && object.renderedLevel !== null\n ? Number(object.renderedLevel)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: HeadingData): unknown {\n const obj: any = {};\n message.level !== undefined && (obj.level = Math.round(message.level));\n message.textStyle !== undefined &&\n (obj.textStyle = message.textStyle\n ? TextStyle.toJSON(message.textStyle)\n : undefined);\n message.indentation !== undefined &&\n (obj.indentation = message.indentation);\n message.renderedLevel !== undefined &&\n (obj.renderedLevel = message.renderedLevel);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","export enum LayoutData_ImagePosition {\n /** CENTER - Image positioned at the center */\n CENTER = \"CENTER\",\n /** CENTER_LEFT - Image positioned on the left */\n CENTER_LEFT = \"CENTER_LEFT\",\n /** CENTER_RIGHT - Image positioned on the right */\n CENTER_RIGHT = \"CENTER_RIGHT\",\n /** TOP - Image positioned at the center top */\n TOP = \"TOP\",\n /** TOP_LEFT - Image positioned at the top left */\n TOP_LEFT = \"TOP_LEFT\",\n /** TOP_RIGHT - Image positioned at the top right */\n TOP_RIGHT = \"TOP_RIGHT\",\n /** BOTTOM - Image positioned at the center bottom */\n BOTTOM = \"BOTTOM\",\n /** BOTTOM_LEFT - Image positioned at the bottom left */\n BOTTOM_LEFT = \"BOTTOM_LEFT\",\n /** BOTTOM_RIGHT - Image positioned at the bottom right */\n BOTTOM_RIGHT = \"BOTTOM_RIGHT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_ResponsivenessBehaviour {\n /** STACK - Stacking of columns */\n STACK = \"STACK\",\n /** WRAP - Wrapping of columns */\n WRAP = \"WRAP\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_DesignTarget {\n /** LAYOUT - Design applied to layout */\n LAYOUT = \"LAYOUT\",\n /** CELL - Design applied to cells */\n CELL = \"CELL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_VerticalAlignment_Alignment {\n /** TOP - Top alignment */\n TOP = \"TOP\",\n /** MIDDLE - Middle alignment */\n MIDDLE = \"MIDDLE\",\n /** BOTTOM - Bottom alignment */\n BOTTOM = \"BOTTOM\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_ImageScaling_Scaling {\n /** AUTO - Auto image scaling */\n AUTO = \"AUTO\",\n /** CONTAIN - Contain image scaling */\n CONTAIN = \"CONTAIN\",\n /** COVER - Cover image scaling */\n COVER = \"COVER\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_Banner_Position {\n /** TOP - Attached to the top edge (banner) */\n TOP = \"TOP\",\n /** BOTTOM - Attached to the bottom edge (footer) */\n BOTTOM = \"BOTTOM\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum LayoutData_Banner_Origin {\n /** IMAGE - Banner originated from an image */\n IMAGE = \"IMAGE\",\n /** LAYOUT - Banner originated from a layout */\n LAYOUT = \"LAYOUT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Background type */\nexport enum LayoutData_Background_Type {\n /** COLOR - Solid color background */\n COLOR = \"COLOR\",\n /** GRADIENT - Gradient background */\n GRADIENT = \"GRADIENT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Backdrop type */\nexport enum LayoutData_Backdrop_Type {\n /** COLOR - Solid color backdrop */\n COLOR = \"COLOR\",\n /** GRADIENT - Gradient backdrop */\n GRADIENT = \"GRADIENT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Media, Gradient } from './common.js';\nimport { Animation } from './animation.js';\n\nimport {\n LayoutData_ImagePosition,\n LayoutData_ResponsivenessBehaviour,\n LayoutData_DesignTarget,\n LayoutData_VerticalAlignment_Alignment,\n LayoutData_ImageScaling_Scaling,\n LayoutData_Banner_Position,\n LayoutData_Banner_Origin,\n LayoutData_Background_Type,\n LayoutData_Backdrop_Type,\n} from './node_layout.enums.js';\n\n/**\n * flynt-disable missing-string-validations\n * flynt-disable missing-deprecated-field-annotation\n */\n\nexport interface LayoutData {\n /**\n * Deprecated: Use `background` instead.\n *\n * @deprecated\n */\n backgroundColor?: string;\n /** Background image. */\n backgroundImage?: LayoutData_BackgroundImage;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /**\n * Deprecated: Use `backdrop` instead.\n *\n * @deprecated\n */\n backdropColor?: string;\n /** Backdrop image. */\n backdropImage?: LayoutData_BackgroundImage;\n /** Backdrop top padding. */\n backdropPaddingTop?: number;\n /** Backdrop bottom padding */\n backdropPaddingBottom?: number;\n /** Horizontal and vertical gap between columns */\n gap?: number;\n /** Padding in pixels for cells. Follows CSS order: top, right, bottom, left */\n cellPadding: number[];\n /** Vertical alignment for the cell's items. */\n cellVerticalAlignment: LayoutData_VerticalAlignment_Alignment;\n /** Responsiveness behaviour of columns when responsiveness applies. Either stacks or wrappers. */\n responsivenessBehaviour: LayoutData_ResponsivenessBehaviour;\n /** Size in pixels when responsiveness_behaviour applies */\n responsivenessBreakpoint?: number;\n /** Styling for the layout's container. */\n containerData?: PluginContainerData;\n /** Defines where selected design propertied applies to */\n designTarget: LayoutData_DesignTarget;\n /** Banner configuration. When present, this layout is attached to a document edge (top or bottom). */\n banner?: LayoutData_Banner;\n /** Background styling (color or gradient). */\n background?: LayoutData_Background;\n /** Backdrop styling (color or gradient). */\n backdrop?: LayoutData_Backdrop;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function layoutData_ImagePositionFromJSON(\n object: any\n): LayoutData_ImagePosition {\n switch (object) {\n case 0:\n case \"CENTER\":\n return LayoutData_ImagePosition.CENTER;\n case 1:\n case \"CENTER_LEFT\":\n return LayoutData_ImagePosition.CENTER_LEFT;\n case 2:\n case \"CENTER_RIGHT\":\n return LayoutData_ImagePosition.CENTER_RIGHT;\n case 3:\n case \"TOP\":\n return LayoutData_ImagePosition.TOP;\n case 4:\n case \"TOP_LEFT\":\n return LayoutData_ImagePosition.TOP_LEFT;\n case 5:\n case \"TOP_RIGHT\":\n return LayoutData_ImagePosition.TOP_RIGHT;\n case 6:\n case \"BOTTOM\":\n return LayoutData_ImagePosition.BOTTOM;\n case 7:\n case \"BOTTOM_LEFT\":\n return LayoutData_ImagePosition.BOTTOM_LEFT;\n case 8:\n case \"BOTTOM_RIGHT\":\n return LayoutData_ImagePosition.BOTTOM_RIGHT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_ImagePosition.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_ImagePositionToJSON(\n object: LayoutData_ImagePosition\n): string {\n switch (object) {\n case LayoutData_ImagePosition.CENTER:\n return \"CENTER\";\n case LayoutData_ImagePosition.CENTER_LEFT:\n return \"CENTER_LEFT\";\n case LayoutData_ImagePosition.CENTER_RIGHT:\n return \"CENTER_RIGHT\";\n case LayoutData_ImagePosition.TOP:\n return \"TOP\";\n case LayoutData_ImagePosition.TOP_LEFT:\n return \"TOP_LEFT\";\n case LayoutData_ImagePosition.TOP_RIGHT:\n return \"TOP_RIGHT\";\n case LayoutData_ImagePosition.BOTTOM:\n return \"BOTTOM\";\n case LayoutData_ImagePosition.BOTTOM_LEFT:\n return \"BOTTOM_LEFT\";\n case LayoutData_ImagePosition.BOTTOM_RIGHT:\n return \"BOTTOM_RIGHT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function layoutData_ResponsivenessBehaviourFromJSON(\n object: any\n): LayoutData_ResponsivenessBehaviour {\n switch (object) {\n case 0:\n case \"STACK\":\n return LayoutData_ResponsivenessBehaviour.STACK;\n case 1:\n case \"WRAP\":\n return LayoutData_ResponsivenessBehaviour.WRAP;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_ResponsivenessBehaviour.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_ResponsivenessBehaviourToJSON(\n object: LayoutData_ResponsivenessBehaviour\n): string {\n switch (object) {\n case LayoutData_ResponsivenessBehaviour.STACK:\n return \"STACK\";\n case LayoutData_ResponsivenessBehaviour.WRAP:\n return \"WRAP\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function layoutData_DesignTargetFromJSON(\n object: any\n): LayoutData_DesignTarget {\n switch (object) {\n case 0:\n case \"LAYOUT\":\n return LayoutData_DesignTarget.LAYOUT;\n case 1:\n case \"CELL\":\n return LayoutData_DesignTarget.CELL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_DesignTarget.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_DesignTargetToJSON(\n object: LayoutData_DesignTarget\n): string {\n switch (object) {\n case LayoutData_DesignTarget.LAYOUT:\n return \"LAYOUT\";\n case LayoutData_DesignTarget.CELL:\n return \"CELL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface LayoutData_VerticalAlignment {}\n\nexport function layoutData_VerticalAlignment_AlignmentFromJSON(\n object: any\n): LayoutData_VerticalAlignment_Alignment {\n switch (object) {\n case 0:\n case \"TOP\":\n return LayoutData_VerticalAlignment_Alignment.TOP;\n case 1:\n case \"MIDDLE\":\n return LayoutData_VerticalAlignment_Alignment.MIDDLE;\n case 2:\n case \"BOTTOM\":\n return LayoutData_VerticalAlignment_Alignment.BOTTOM;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_VerticalAlignment_Alignment.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_VerticalAlignment_AlignmentToJSON(\n object: LayoutData_VerticalAlignment_Alignment\n): string {\n switch (object) {\n case LayoutData_VerticalAlignment_Alignment.TOP:\n return \"TOP\";\n case LayoutData_VerticalAlignment_Alignment.MIDDLE:\n return \"MIDDLE\";\n case LayoutData_VerticalAlignment_Alignment.BOTTOM:\n return \"BOTTOM\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface LayoutData_ImageScaling {}\n\nexport function layoutData_ImageScaling_ScalingFromJSON(\n object: any\n): LayoutData_ImageScaling_Scaling {\n switch (object) {\n case 0:\n case \"AUTO\":\n return LayoutData_ImageScaling_Scaling.AUTO;\n case 1:\n case \"CONTAIN\":\n return LayoutData_ImageScaling_Scaling.CONTAIN;\n case 2:\n case \"COVER\":\n return LayoutData_ImageScaling_Scaling.COVER;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_ImageScaling_Scaling.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_ImageScaling_ScalingToJSON(\n object: LayoutData_ImageScaling_Scaling\n): string {\n switch (object) {\n case LayoutData_ImageScaling_Scaling.AUTO:\n return \"AUTO\";\n case LayoutData_ImageScaling_Scaling.CONTAIN:\n return \"CONTAIN\";\n case LayoutData_ImageScaling_Scaling.COVER:\n return \"COVER\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface LayoutData_BackgroundImage {\n /** Background image. */\n media?: Media;\n /**\n * Deprecated: use `overlay` instead. Legacy image opacity (0–100) that dimmed the image to reveal the `background`/`backdrop` color behind it.\n *\n * @deprecated\n */\n opacity?: number;\n /** Background image scaling. */\n scaling: LayoutData_ImageScaling_Scaling;\n /** Position of background. Defaults to `CENTER`. */\n position: LayoutData_ImagePosition;\n /** Blur radius in pixels applied to the image layer. `0` (default) leaves the image unblurred; blur is independent of any color overlay and the two stack. */\n blur?: number;\n /** Color or gradient drawn on top of the image. When present, this is the authoritative overlay and `opacity` is ignored. Its presence also marks content as authored under the new overlay model (vs. the legacy `opacity`-based dimming on `background`/`backdrop`). */\n overlay?: LayoutData_Background;\n}\n\nexport interface LayoutData_Banner {\n /** Origin of the banner */\n origin: LayoutData_Banner_Origin;\n /** Position of the banner */\n position: LayoutData_Banner_Position;\n}\n\nexport function layoutData_Banner_PositionFromJSON(\n object: any\n): LayoutData_Banner_Position {\n switch (object) {\n case 0:\n case \"TOP\":\n return LayoutData_Banner_Position.TOP;\n case 1:\n case \"BOTTOM\":\n return LayoutData_Banner_Position.BOTTOM;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_Banner_Position.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_Banner_PositionToJSON(\n object: LayoutData_Banner_Position\n): string {\n switch (object) {\n case LayoutData_Banner_Position.TOP:\n return \"TOP\";\n case LayoutData_Banner_Position.BOTTOM:\n return \"BOTTOM\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function layoutData_Banner_OriginFromJSON(\n object: any\n): LayoutData_Banner_Origin {\n switch (object) {\n case 0:\n case \"IMAGE\":\n return LayoutData_Banner_Origin.IMAGE;\n case 1:\n case \"LAYOUT\":\n return LayoutData_Banner_Origin.LAYOUT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_Banner_Origin.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_Banner_OriginToJSON(\n object: LayoutData_Banner_Origin\n): string {\n switch (object) {\n case LayoutData_Banner_Origin.IMAGE:\n return \"IMAGE\";\n case LayoutData_Banner_Origin.LAYOUT:\n return \"LAYOUT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\n/** Background styling (color or gradient) */\nexport interface LayoutData_Background {\n /** Background type. */\n type: LayoutData_Background_Type;\n /** Background color as a hexadecimal value. */\n color?: string;\n /** Gradient configuration. */\n gradient?: Gradient;\n}\n\nexport function layoutData_Background_TypeFromJSON(\n object: any\n): LayoutData_Background_Type {\n switch (object) {\n case 0:\n case \"COLOR\":\n return LayoutData_Background_Type.COLOR;\n case 1:\n case \"GRADIENT\":\n return LayoutData_Background_Type.GRADIENT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_Background_Type.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_Background_TypeToJSON(\n object: LayoutData_Background_Type\n): string {\n switch (object) {\n case LayoutData_Background_Type.COLOR:\n return \"COLOR\";\n case LayoutData_Background_Type.GRADIENT:\n return \"GRADIENT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\n/** Backdrop styling (color or gradient) */\nexport interface LayoutData_Backdrop {\n /** Backdrop type. */\n type: LayoutData_Backdrop_Type;\n /** Backdrop color as a hexadecimal value. */\n color?: string;\n /** Gradient configuration. */\n gradient?: Gradient;\n}\n\nexport function layoutData_Backdrop_TypeFromJSON(\n object: any\n): LayoutData_Backdrop_Type {\n switch (object) {\n case 0:\n case \"COLOR\":\n return LayoutData_Backdrop_Type.COLOR;\n case 1:\n case \"GRADIENT\":\n return LayoutData_Backdrop_Type.GRADIENT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LayoutData_Backdrop_Type.UNRECOGNIZED;\n }\n}\n\nexport function layoutData_Backdrop_TypeToJSON(\n object: LayoutData_Backdrop_Type\n): string {\n switch (object) {\n case LayoutData_Backdrop_Type.COLOR:\n return \"COLOR\";\n case LayoutData_Backdrop_Type.GRADIENT:\n return \"GRADIENT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseLayoutData: object = {\n cellPadding: 0,\n cellVerticalAlignment: LayoutData_VerticalAlignment_Alignment.TOP,\n responsivenessBehaviour: LayoutData_ResponsivenessBehaviour.STACK,\n designTarget: LayoutData_DesignTarget.LAYOUT,\n};\n\nexport const LayoutData = {\n fromJSON(object: any): LayoutData {\n const message = { ...baseLayoutData } as LayoutData;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.backgroundImage =\n object.backgroundImage !== undefined && object.backgroundImage !== null\n ? LayoutData_BackgroundImage.fromJSON(object.backgroundImage)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.backdropColor =\n object.backdropColor !== undefined && object.backdropColor !== null\n ? String(object.backdropColor)\n : undefined;\n message.backdropImage =\n object.backdropImage !== undefined && object.backdropImage !== null\n ? LayoutData_BackgroundImage.fromJSON(object.backdropImage)\n : undefined;\n message.backdropPaddingTop =\n object.backdropPaddingTop !== undefined &&\n object.backdropPaddingTop !== null\n ? Number(object.backdropPaddingTop)\n : undefined;\n message.backdropPaddingBottom =\n object.backdropPaddingBottom !== undefined &&\n object.backdropPaddingBottom !== null\n ? Number(object.backdropPaddingBottom)\n : undefined;\n message.gap =\n object.gap !== undefined && object.gap !== null\n ? Number(object.gap)\n : undefined;\n message.cellPadding = (object.cellPadding ?? []).map((e: any) => Number(e));\n message.cellVerticalAlignment =\n object.cellVerticalAlignment !== undefined &&\n object.cellVerticalAlignment !== null\n ? layoutData_VerticalAlignment_AlignmentFromJSON(\n object.cellVerticalAlignment\n )\n : LayoutData_VerticalAlignment_Alignment.TOP;\n message.responsivenessBehaviour =\n object.responsivenessBehaviour !== undefined &&\n object.responsivenessBehaviour !== null\n ? layoutData_ResponsivenessBehaviourFromJSON(\n object.responsivenessBehaviour\n )\n : LayoutData_ResponsivenessBehaviour.STACK;\n message.responsivenessBreakpoint =\n object.responsivenessBreakpoint !== undefined &&\n object.responsivenessBreakpoint !== null\n ? Number(object.responsivenessBreakpoint)\n : undefined;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.designTarget =\n object.designTarget !== undefined && object.designTarget !== null\n ? layoutData_DesignTargetFromJSON(object.designTarget)\n : LayoutData_DesignTarget.LAYOUT;\n message.banner =\n object.banner !== undefined && object.banner !== null\n ? LayoutData_Banner.fromJSON(object.banner)\n : undefined;\n message.background =\n object.background !== undefined && object.background !== null\n ? LayoutData_Background.fromJSON(object.background)\n : undefined;\n message.backdrop =\n object.backdrop !== undefined && object.backdrop !== null\n ? LayoutData_Backdrop.fromJSON(object.backdrop)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: LayoutData): unknown {\n const obj: any = {};\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.backgroundImage !== undefined &&\n (obj.backgroundImage = message.backgroundImage\n ? LayoutData_BackgroundImage.toJSON(message.backgroundImage)\n : undefined);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.backdropColor !== undefined &&\n (obj.backdropColor = message.backdropColor);\n message.backdropImage !== undefined &&\n (obj.backdropImage = message.backdropImage\n ? LayoutData_BackgroundImage.toJSON(message.backdropImage)\n : undefined);\n message.backdropPaddingTop !== undefined &&\n (obj.backdropPaddingTop = message.backdropPaddingTop);\n message.backdropPaddingBottom !== undefined &&\n (obj.backdropPaddingBottom = message.backdropPaddingBottom);\n message.gap !== undefined && (obj.gap = message.gap);\n if (message.cellPadding) {\n obj.cellPadding = message.cellPadding.map((e) => Math.round(e));\n } else {\n obj.cellPadding = [];\n }\n message.cellVerticalAlignment !== undefined &&\n (obj.cellVerticalAlignment = layoutData_VerticalAlignment_AlignmentToJSON(\n message.cellVerticalAlignment\n ));\n message.responsivenessBehaviour !== undefined &&\n (obj.responsivenessBehaviour = layoutData_ResponsivenessBehaviourToJSON(\n message.responsivenessBehaviour\n ));\n message.responsivenessBreakpoint !== undefined &&\n (obj.responsivenessBreakpoint = message.responsivenessBreakpoint);\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.designTarget !== undefined &&\n (obj.designTarget = layoutData_DesignTargetToJSON(message.designTarget));\n message.banner !== undefined &&\n (obj.banner = message.banner\n ? LayoutData_Banner.toJSON(message.banner)\n : undefined);\n message.background !== undefined &&\n (obj.background = message.background\n ? LayoutData_Background.toJSON(message.background)\n : undefined);\n message.backdrop !== undefined &&\n (obj.backdrop = message.backdrop\n ? LayoutData_Backdrop.toJSON(message.backdrop)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseLayoutData_VerticalAlignment: object = {};\n\nexport const LayoutData_VerticalAlignment = {\n fromJSON(_: any): LayoutData_VerticalAlignment {\n const message = {\n ...baseLayoutData_VerticalAlignment,\n } as LayoutData_VerticalAlignment;\n return message;\n },\n\n toJSON(_: LayoutData_VerticalAlignment): unknown {\n const obj: any = {};\n return obj;\n },\n};\n\nconst baseLayoutData_ImageScaling: object = {};\n\nexport const LayoutData_ImageScaling = {\n fromJSON(_: any): LayoutData_ImageScaling {\n const message = {\n ...baseLayoutData_ImageScaling,\n } as LayoutData_ImageScaling;\n return message;\n },\n\n toJSON(_: LayoutData_ImageScaling): unknown {\n const obj: any = {};\n return obj;\n },\n};\n\nconst baseLayoutData_BackgroundImage: object = {\n scaling: LayoutData_ImageScaling_Scaling.AUTO,\n position: LayoutData_ImagePosition.CENTER,\n};\n\nexport const LayoutData_BackgroundImage = {\n fromJSON(object: any): LayoutData_BackgroundImage {\n const message = {\n ...baseLayoutData_BackgroundImage,\n } as LayoutData_BackgroundImage;\n message.media =\n object.media !== undefined && object.media !== null\n ? Media.fromJSON(object.media)\n : undefined;\n message.opacity =\n object.opacity !== undefined && object.opacity !== null\n ? Number(object.opacity)\n : undefined;\n message.scaling =\n object.scaling !== undefined && object.scaling !== null\n ? layoutData_ImageScaling_ScalingFromJSON(object.scaling)\n : LayoutData_ImageScaling_Scaling.AUTO;\n message.position =\n object.position !== undefined && object.position !== null\n ? layoutData_ImagePositionFromJSON(object.position)\n : LayoutData_ImagePosition.CENTER;\n message.blur =\n object.blur !== undefined && object.blur !== null\n ? Number(object.blur)\n : undefined;\n message.overlay =\n object.overlay !== undefined && object.overlay !== null\n ? LayoutData_Background.fromJSON(object.overlay)\n : undefined;\n return message;\n },\n\n toJSON(message: LayoutData_BackgroundImage): unknown {\n const obj: any = {};\n message.media !== undefined &&\n (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n message.opacity !== undefined && (obj.opacity = message.opacity);\n message.scaling !== undefined &&\n (obj.scaling = layoutData_ImageScaling_ScalingToJSON(message.scaling));\n message.position !== undefined &&\n (obj.position = layoutData_ImagePositionToJSON(message.position));\n message.blur !== undefined && (obj.blur = message.blur);\n message.overlay !== undefined &&\n (obj.overlay = message.overlay\n ? LayoutData_Background.toJSON(message.overlay)\n : undefined);\n return obj;\n },\n};\n\nconst baseLayoutData_Banner: object = {\n origin: LayoutData_Banner_Origin.IMAGE,\n position: LayoutData_Banner_Position.TOP,\n};\n\nexport const LayoutData_Banner = {\n fromJSON(object: any): LayoutData_Banner {\n const message = { ...baseLayoutData_Banner } as LayoutData_Banner;\n message.origin =\n object.origin !== undefined && object.origin !== null\n ? layoutData_Banner_OriginFromJSON(object.origin)\n : LayoutData_Banner_Origin.IMAGE;\n message.position =\n object.position !== undefined && object.position !== null\n ? layoutData_Banner_PositionFromJSON(object.position)\n : LayoutData_Banner_Position.TOP;\n return message;\n },\n\n toJSON(message: LayoutData_Banner): unknown {\n const obj: any = {};\n message.origin !== undefined &&\n (obj.origin = layoutData_Banner_OriginToJSON(message.origin));\n message.position !== undefined &&\n (obj.position = layoutData_Banner_PositionToJSON(message.position));\n return obj;\n },\n};\n\nconst baseLayoutData_Background: object = {\n type: LayoutData_Background_Type.COLOR,\n};\n\nexport const LayoutData_Background = {\n fromJSON(object: any): LayoutData_Background {\n const message = { ...baseLayoutData_Background } as LayoutData_Background;\n message.type =\n object.type !== undefined && object.type !== null\n ? layoutData_Background_TypeFromJSON(object.type)\n : LayoutData_Background_Type.COLOR;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.gradient =\n object.gradient !== undefined && object.gradient !== null\n ? Gradient.fromJSON(object.gradient)\n : undefined;\n return message;\n },\n\n toJSON(message: LayoutData_Background): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = layoutData_Background_TypeToJSON(message.type));\n message.color !== undefined && (obj.color = message.color);\n message.gradient !== undefined &&\n (obj.gradient = message.gradient\n ? Gradient.toJSON(message.gradient)\n : undefined);\n return obj;\n },\n};\n\nconst baseLayoutData_Backdrop: object = {\n type: LayoutData_Backdrop_Type.COLOR,\n};\n\nexport const LayoutData_Backdrop = {\n fromJSON(object: any): LayoutData_Backdrop {\n const message = { ...baseLayoutData_Backdrop } as LayoutData_Backdrop;\n message.type =\n object.type !== undefined && object.type !== null\n ? layoutData_Backdrop_TypeFromJSON(object.type)\n : LayoutData_Backdrop_Type.COLOR;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.gradient =\n object.gradient !== undefined && object.gradient !== null\n ? Gradient.fromJSON(object.gradient)\n : undefined;\n return message;\n },\n\n toJSON(message: LayoutData_Backdrop): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = layoutData_Backdrop_TypeToJSON(message.type));\n message.color !== undefined && (obj.color = message.color);\n message.gradient !== undefined &&\n (obj.gradient = message.gradient\n ? Gradient.toJSON(message.gradient)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\n/** flynt-disable missing-string-validations */\n\nexport interface LayoutCellData {\n /** Size of the cell in 12 columns grid. */\n colSpan?: number;\n}\n\nconst baseLayoutCellData: object = {};\n\nexport const LayoutCellData = {\n fromJSON(object: any): LayoutCellData {\n const message = { ...baseLayoutCellData } as LayoutCellData;\n message.colSpan =\n object.colSpan !== undefined && object.colSpan !== null\n ? Number(object.colSpan)\n : undefined;\n return message;\n },\n\n toJSON(message: LayoutCellData): unknown {\n const obj: any = {};\n message.colSpan !== undefined && (obj.colSpan = message.colSpan);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { Animation } from './animation.js';\n\nexport interface OrderedListData {\n /** Indentation level from 0-4. */\n indentation: number;\n /** Offset level from 0-4. */\n offset?: number;\n /** List start number. */\n start?: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface BulletedListData {\n /** Indentation level from 0-4. */\n indentation: number;\n /** Offset level from 0-4. */\n offset?: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface CheckboxListData {\n /** Indentation level from 0-4. */\n indentation: number;\n /** Offset level from 0-4. */\n offset?: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface ListItemNodeData {\n /** Checkbox list item state. Defaults to `false`. */\n checked?: boolean;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseOrderedListData: object = { indentation: 0 };\n\nexport const OrderedListData = {\n fromJSON(object: any): OrderedListData {\n const message = { ...baseOrderedListData } as OrderedListData;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? Number(object.indentation)\n : 0;\n message.offset =\n object.offset !== undefined && object.offset !== null\n ? Number(object.offset)\n : undefined;\n message.start =\n object.start !== undefined && object.start !== null\n ? Number(object.start)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: OrderedListData): unknown {\n const obj: any = {};\n message.indentation !== undefined &&\n (obj.indentation = Math.round(message.indentation));\n message.offset !== undefined && (obj.offset = message.offset);\n message.start !== undefined && (obj.start = message.start);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseBulletedListData: object = { indentation: 0 };\n\nexport const BulletedListData = {\n fromJSON(object: any): BulletedListData {\n const message = { ...baseBulletedListData } as BulletedListData;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? Number(object.indentation)\n : 0;\n message.offset =\n object.offset !== undefined && object.offset !== null\n ? Number(object.offset)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: BulletedListData): unknown {\n const obj: any = {};\n message.indentation !== undefined &&\n (obj.indentation = Math.round(message.indentation));\n message.offset !== undefined && (obj.offset = message.offset);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseCheckboxListData: object = { indentation: 0 };\n\nexport const CheckboxListData = {\n fromJSON(object: any): CheckboxListData {\n const message = { ...baseCheckboxListData } as CheckboxListData;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? Number(object.indentation)\n : 0;\n message.offset =\n object.offset !== undefined && object.offset !== null\n ? Number(object.offset)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: CheckboxListData): unknown {\n const obj: any = {};\n message.indentation !== undefined &&\n (obj.indentation = Math.round(message.indentation));\n message.offset !== undefined && (obj.offset = message.offset);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseListItemNodeData: object = {};\n\nexport const ListItemNodeData = {\n fromJSON(object: any): ListItemNodeData {\n const message = { ...baseListItemNodeData } as ListItemNodeData;\n message.checked =\n object.checked !== undefined && object.checked !== null\n ? Boolean(object.checked)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: ListItemNodeData): unknown {\n const obj: any = {};\n message.checked !== undefined && (obj.checked = message.checked);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { TextStyle } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface ParagraphData {\n /** Styling for the paragraph text. */\n textStyle?: TextStyle;\n /** Indentation level from 1-4. */\n indentation?: number;\n /** Paragraph level */\n level?: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseParagraphData: object = {};\n\nexport const ParagraphData = {\n fromJSON(object: any): ParagraphData {\n const message = { ...baseParagraphData } as ParagraphData;\n message.textStyle =\n object.textStyle !== undefined && object.textStyle !== null\n ? TextStyle.fromJSON(object.textStyle)\n : undefined;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? Number(object.indentation)\n : undefined;\n message.level =\n object.level !== undefined && object.level !== null\n ? Number(object.level)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: ParagraphData): unknown {\n const obj: any = {};\n message.textStyle !== undefined &&\n (obj.textStyle = message.textStyle\n ? TextStyle.toJSON(message.textStyle)\n : undefined);\n message.indentation !== undefined &&\n (obj.indentation = message.indentation);\n message.level !== undefined && (obj.level = message.level);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","export enum AppEmbedData_AppType {\n PRODUCT = \"PRODUCT\",\n EVENT = \"EVENT\",\n BOOKING = \"BOOKING\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_ImageStyles_Position {\n /** START - Image positioned at the start (left in LTR layouts, right in RTL layouts) */\n START = \"START\",\n /** END - Image positioned at the end (right in LTR layouts, left in RTL layouts) */\n END = \"END\",\n /** TOP - Image positioned at the top */\n TOP = \"TOP\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_ImageStyles_AspectRatio {\n /** SQUARE - 1:1 aspect ratio */\n SQUARE = \"SQUARE\",\n /** RECTANGLE - 16:9 aspect ratio */\n RECTANGLE = \"RECTANGLE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_ImageStyles_Resizing {\n /** FILL - Fill the container, may crop the image */\n FILL = \"FILL\",\n /** FIT - Fit the image within the container */\n FIT = \"FIT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_RibbonStyles_Placement {\n /** IMAGE - Ribbon placed on the image */\n IMAGE = \"IMAGE\",\n /** PRODUCT_INFO - Ribbon placed on the product information */\n PRODUCT_INFO = \"PRODUCT_INFO\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_CardStyles_Type {\n /** CONTAINED - Card with visible border and background */\n CONTAINED = \"CONTAINED\",\n /** FRAMELESS - Card without visible border */\n FRAMELESS = \"FRAMELESS\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_CardStyles_Alignment {\n /** START - Content aligned to start (left in LTR layouts, right in RTL layouts) */\n START = \"START\",\n /** CENTER - Content centered */\n CENTER = \"CENTER\",\n /** END - Content aligned to end (right in LTR layouts, left in RTL layouts) */\n END = \"END\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum AppEmbedData_CardStyles_Layout {\n /** STACKED - Elements stacked vertically */\n STACKED = \"STACKED\",\n /** SIDE_BY_SIDE - Elements arranged horizontally */\n SIDE_BY_SIDE = \"SIDE_BY_SIDE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Media, PluginContainerData } from './common.js';\nimport { Animation } from './animation.js';\n\nimport {\n AppEmbedData_AppType,\n AppEmbedData_ImageStyles_Position,\n AppEmbedData_ImageStyles_AspectRatio,\n AppEmbedData_ImageStyles_Resizing,\n AppEmbedData_RibbonStyles_Placement,\n AppEmbedData_CardStyles_Type,\n AppEmbedData_CardStyles_Alignment,\n AppEmbedData_CardStyles_Layout,\n} from './plugin_app_embed.enums.js';\n\nexport interface AppEmbedData {\n /** The type of Wix App content being embedded. */\n type: AppEmbedData_AppType;\n /** The ID of the embedded content. */\n itemId?: string;\n /** The name of the embedded content. */\n name?: string;\n /**\n * Deprecated: Use `image` instead.\n *\n * @deprecated\n */\n imageSrc?: string;\n /** The URL for the embedded content. */\n url?: string;\n /** An image for the embedded content. */\n image?: Media;\n /** Data for embedded Wix Bookings content. */\n bookingData?: AppEmbedData_BookingData | undefined;\n /** Data for embedded Wix Events content. */\n eventData?: AppEmbedData_EventData | undefined;\n /** Whether to hide the image. */\n hideImage?: boolean;\n /** Whether to hide the title. */\n hideTitle?: boolean;\n /** Whether to hide the price. */\n hidePrice?: boolean;\n /** Whether to hide the description (Event and Booking). */\n hideDescription?: boolean;\n /** Whether to hide the date and time (Event). */\n hideDateTime?: boolean;\n /** Whether to hide the location (Event). */\n hideLocation?: boolean;\n /** Whether to hide the duration (Booking). */\n hideDuration?: boolean;\n /** Whether to hide the button. */\n hideButton?: boolean;\n /** Whether to hide the ribbon. */\n hideRibbon?: boolean;\n /** Button styling options. */\n buttonStyles?: AppEmbedData_ButtonStyles;\n /** Image styling options. */\n imageStyles?: AppEmbedData_ImageStyles;\n /** Ribbon styling options. */\n ribbonStyles?: AppEmbedData_RibbonStyles;\n /** Card styling options. */\n cardStyles?: AppEmbedData_CardStyles;\n /** Styling for the app embed's container. */\n containerData?: PluginContainerData;\n /** Pricing data for embedded Wix App content. */\n pricingData?: AppEmbedData_PricingData;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function appEmbedData_AppTypeFromJSON(\n object: any\n): AppEmbedData_AppType {\n switch (object) {\n case 0:\n case \"PRODUCT\":\n return AppEmbedData_AppType.PRODUCT;\n case 1:\n case \"EVENT\":\n return AppEmbedData_AppType.EVENT;\n case 2:\n case \"BOOKING\":\n return AppEmbedData_AppType.BOOKING;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_AppType.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_AppTypeToJSON(\n object: AppEmbedData_AppType\n): string {\n switch (object) {\n case AppEmbedData_AppType.PRODUCT:\n return \"PRODUCT\";\n case AppEmbedData_AppType.EVENT:\n return \"EVENT\";\n case AppEmbedData_AppType.BOOKING:\n return \"BOOKING\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface AppEmbedData_ButtonStyles {\n /** Text to display on the button. */\n buttonText?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Text color as a hexadecimal value. */\n textColor?: string;\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Border color as a hexadecimal value (hover state). */\n borderColorHover?: string;\n /** Text color as a hexadecimal value (hover state). */\n textColorHover?: string;\n /** Background color as a hexadecimal value (hover state). */\n backgroundColorHover?: string;\n /** Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`. */\n buttonSize?: string;\n}\n\nexport interface AppEmbedData_ImageStyles {\n /** Whether to hide the image. */\n hideImage?: boolean;\n /** Position of image. Defaults to `START`. */\n imagePosition: AppEmbedData_ImageStyles_Position;\n /** Aspect ratio for the image. Defaults to `SQUARE`. */\n aspectRatio: AppEmbedData_ImageStyles_AspectRatio;\n /** How the image should be resized. Defaults to `FILL`. */\n resizing: AppEmbedData_ImageStyles_Resizing;\n /** Image border color as a hexadecimal value. */\n borderColor?: string;\n /** Image border width in pixels. */\n borderWidth?: number;\n /** Image border radius in pixels. */\n borderRadius?: number;\n}\n\nexport function appEmbedData_ImageStyles_PositionFromJSON(\n object: any\n): AppEmbedData_ImageStyles_Position {\n switch (object) {\n case 0:\n case \"START\":\n return AppEmbedData_ImageStyles_Position.START;\n case 1:\n case \"END\":\n return AppEmbedData_ImageStyles_Position.END;\n case 2:\n case \"TOP\":\n return AppEmbedData_ImageStyles_Position.TOP;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_ImageStyles_Position.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_ImageStyles_PositionToJSON(\n object: AppEmbedData_ImageStyles_Position\n): string {\n switch (object) {\n case AppEmbedData_ImageStyles_Position.START:\n return \"START\";\n case AppEmbedData_ImageStyles_Position.END:\n return \"END\";\n case AppEmbedData_ImageStyles_Position.TOP:\n return \"TOP\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function appEmbedData_ImageStyles_AspectRatioFromJSON(\n object: any\n): AppEmbedData_ImageStyles_AspectRatio {\n switch (object) {\n case 0:\n case \"SQUARE\":\n return AppEmbedData_ImageStyles_AspectRatio.SQUARE;\n case 1:\n case \"RECTANGLE\":\n return AppEmbedData_ImageStyles_AspectRatio.RECTANGLE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_ImageStyles_AspectRatio.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_ImageStyles_AspectRatioToJSON(\n object: AppEmbedData_ImageStyles_AspectRatio\n): string {\n switch (object) {\n case AppEmbedData_ImageStyles_AspectRatio.SQUARE:\n return \"SQUARE\";\n case AppEmbedData_ImageStyles_AspectRatio.RECTANGLE:\n return \"RECTANGLE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function appEmbedData_ImageStyles_ResizingFromJSON(\n object: any\n): AppEmbedData_ImageStyles_Resizing {\n switch (object) {\n case 0:\n case \"FILL\":\n return AppEmbedData_ImageStyles_Resizing.FILL;\n case 1:\n case \"FIT\":\n return AppEmbedData_ImageStyles_Resizing.FIT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_ImageStyles_Resizing.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_ImageStyles_ResizingToJSON(\n object: AppEmbedData_ImageStyles_Resizing\n): string {\n switch (object) {\n case AppEmbedData_ImageStyles_Resizing.FILL:\n return \"FILL\";\n case AppEmbedData_ImageStyles_Resizing.FIT:\n return \"FIT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface AppEmbedData_RibbonStyles {\n /** Text to display on the ribbon. */\n ribbonText?: string;\n /** Ribbon background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Ribbon text color as a hexadecimal value. */\n textColor?: string;\n /** Ribbon border color as a hexadecimal value. */\n borderColor?: string;\n /** Ribbon border width in pixels. */\n borderWidth?: number;\n /** Ribbon border radius in pixels. */\n borderRadius?: number;\n /** Placement of the ribbon. Defaults to `IMAGE`. */\n ribbonPlacement: AppEmbedData_RibbonStyles_Placement;\n}\n\nexport function appEmbedData_RibbonStyles_PlacementFromJSON(\n object: any\n): AppEmbedData_RibbonStyles_Placement {\n switch (object) {\n case 0:\n case \"IMAGE\":\n return AppEmbedData_RibbonStyles_Placement.IMAGE;\n case 1:\n case \"PRODUCT_INFO\":\n return AppEmbedData_RibbonStyles_Placement.PRODUCT_INFO;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_RibbonStyles_Placement.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_RibbonStyles_PlacementToJSON(\n object: AppEmbedData_RibbonStyles_Placement\n): string {\n switch (object) {\n case AppEmbedData_RibbonStyles_Placement.IMAGE:\n return \"IMAGE\";\n case AppEmbedData_RibbonStyles_Placement.PRODUCT_INFO:\n return \"PRODUCT_INFO\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface AppEmbedData_CardStyles {\n /** Card background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Card border color as a hexadecimal value. */\n borderColor?: string;\n /** Card border width in pixels. */\n borderWidth?: number;\n /** Card border radius in pixels. */\n borderRadius?: number;\n /** Card type. Defaults to `CONTAINED`. */\n type: AppEmbedData_CardStyles_Type;\n /** Content alignment. Defaults to `START`. */\n alignment: AppEmbedData_CardStyles_Alignment;\n /** Layout for title and price. Defaults to `STACKED`. */\n titlePriceLayout: AppEmbedData_CardStyles_Layout;\n /** Title text color as a hexadecimal value. */\n titleColor?: string;\n /** Text color as a hexadecimal value. */\n textColor?: string;\n}\n\nexport function appEmbedData_CardStyles_TypeFromJSON(\n object: any\n): AppEmbedData_CardStyles_Type {\n switch (object) {\n case 0:\n case \"CONTAINED\":\n return AppEmbedData_CardStyles_Type.CONTAINED;\n case 1:\n case \"FRAMELESS\":\n return AppEmbedData_CardStyles_Type.FRAMELESS;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_CardStyles_Type.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_CardStyles_TypeToJSON(\n object: AppEmbedData_CardStyles_Type\n): string {\n switch (object) {\n case AppEmbedData_CardStyles_Type.CONTAINED:\n return \"CONTAINED\";\n case AppEmbedData_CardStyles_Type.FRAMELESS:\n return \"FRAMELESS\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function appEmbedData_CardStyles_AlignmentFromJSON(\n object: any\n): AppEmbedData_CardStyles_Alignment {\n switch (object) {\n case 0:\n case \"START\":\n return AppEmbedData_CardStyles_Alignment.START;\n case 1:\n case \"CENTER\":\n return AppEmbedData_CardStyles_Alignment.CENTER;\n case 2:\n case \"END\":\n return AppEmbedData_CardStyles_Alignment.END;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_CardStyles_Alignment.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_CardStyles_AlignmentToJSON(\n object: AppEmbedData_CardStyles_Alignment\n): string {\n switch (object) {\n case AppEmbedData_CardStyles_Alignment.START:\n return \"START\";\n case AppEmbedData_CardStyles_Alignment.CENTER:\n return \"CENTER\";\n case AppEmbedData_CardStyles_Alignment.END:\n return \"END\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function appEmbedData_CardStyles_LayoutFromJSON(\n object: any\n): AppEmbedData_CardStyles_Layout {\n switch (object) {\n case 0:\n case \"STACKED\":\n return AppEmbedData_CardStyles_Layout.STACKED;\n case 1:\n case \"SIDE_BY_SIDE\":\n return AppEmbedData_CardStyles_Layout.SIDE_BY_SIDE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return AppEmbedData_CardStyles_Layout.UNRECOGNIZED;\n }\n}\n\nexport function appEmbedData_CardStyles_LayoutToJSON(\n object: AppEmbedData_CardStyles_Layout\n): string {\n switch (object) {\n case AppEmbedData_CardStyles_Layout.STACKED:\n return \"STACKED\";\n case AppEmbedData_CardStyles_Layout.SIDE_BY_SIDE:\n return \"SIDE_BY_SIDE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface AppEmbedData_BookingData {\n /** Booking duration in minutes. */\n durations?: string;\n}\n\nexport interface AppEmbedData_EventData {\n /** Event schedule. */\n scheduling?: string;\n /** Event location. */\n location?: string;\n}\n\nexport interface AppEmbedData_PricingData {\n /** Minimum numeric price value as string (e.g., \"10.99\"). */\n valueFrom?: string;\n /** Maximum numeric price value as string (e.g., \"19.99\"). */\n valueTo?: string;\n /** Numeric price value as string after discount application (e.g., \"15.99\"). */\n discountedValue?: string;\n /** Currency of the value in ISO 4217 format (e.g., \"USD\", \"EUR\"). */\n currency?: string;\n /** Pricing plan ID. */\n pricingPlanId?: string;\n}\n\nconst baseAppEmbedData: object = { type: AppEmbedData_AppType.PRODUCT };\n\nexport const AppEmbedData = {\n fromJSON(object: any): AppEmbedData {\n const message = { ...baseAppEmbedData } as AppEmbedData;\n message.type =\n object.type !== undefined && object.type !== null\n ? appEmbedData_AppTypeFromJSON(object.type)\n : AppEmbedData_AppType.PRODUCT;\n message.itemId =\n object.itemId !== undefined && object.itemId !== null\n ? String(object.itemId)\n : undefined;\n message.name =\n object.name !== undefined && object.name !== null\n ? String(object.name)\n : undefined;\n message.imageSrc =\n object.imageSrc !== undefined && object.imageSrc !== null\n ? String(object.imageSrc)\n : undefined;\n message.url =\n object.url !== undefined && object.url !== null\n ? String(object.url)\n : undefined;\n message.image =\n object.image !== undefined && object.image !== null\n ? Media.fromJSON(object.image)\n : undefined;\n message.bookingData =\n object.bookingData !== undefined && object.bookingData !== null\n ? AppEmbedData_BookingData.fromJSON(object.bookingData)\n : undefined;\n message.eventData =\n object.eventData !== undefined && object.eventData !== null\n ? AppEmbedData_EventData.fromJSON(object.eventData)\n : undefined;\n message.hideImage =\n object.hideImage !== undefined && object.hideImage !== null\n ? Boolean(object.hideImage)\n : undefined;\n message.hideTitle =\n object.hideTitle !== undefined && object.hideTitle !== null\n ? Boolean(object.hideTitle)\n : undefined;\n message.hidePrice =\n object.hidePrice !== undefined && object.hidePrice !== null\n ? Boolean(object.hidePrice)\n : undefined;\n message.hideDescription =\n object.hideDescription !== undefined && object.hideDescription !== null\n ? Boolean(object.hideDescription)\n : undefined;\n message.hideDateTime =\n object.hideDateTime !== undefined && object.hideDateTime !== null\n ? Boolean(object.hideDateTime)\n : undefined;\n message.hideLocation =\n object.hideLocation !== undefined && object.hideLocation !== null\n ? Boolean(object.hideLocation)\n : undefined;\n message.hideDuration =\n object.hideDuration !== undefined && object.hideDuration !== null\n ? Boolean(object.hideDuration)\n : undefined;\n message.hideButton =\n object.hideButton !== undefined && object.hideButton !== null\n ? Boolean(object.hideButton)\n : undefined;\n message.hideRibbon =\n object.hideRibbon !== undefined && object.hideRibbon !== null\n ? Boolean(object.hideRibbon)\n : undefined;\n message.buttonStyles =\n object.buttonStyles !== undefined && object.buttonStyles !== null\n ? AppEmbedData_ButtonStyles.fromJSON(object.buttonStyles)\n : undefined;\n message.imageStyles =\n object.imageStyles !== undefined && object.imageStyles !== null\n ? AppEmbedData_ImageStyles.fromJSON(object.imageStyles)\n : undefined;\n message.ribbonStyles =\n object.ribbonStyles !== undefined && object.ribbonStyles !== null\n ? AppEmbedData_RibbonStyles.fromJSON(object.ribbonStyles)\n : undefined;\n message.cardStyles =\n object.cardStyles !== undefined && object.cardStyles !== null\n ? AppEmbedData_CardStyles.fromJSON(object.cardStyles)\n : undefined;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.pricingData =\n object.pricingData !== undefined && object.pricingData !== null\n ? AppEmbedData_PricingData.fromJSON(object.pricingData)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = appEmbedData_AppTypeToJSON(message.type));\n message.itemId !== undefined && (obj.itemId = message.itemId);\n message.name !== undefined && (obj.name = message.name);\n message.imageSrc !== undefined && (obj.imageSrc = message.imageSrc);\n message.url !== undefined && (obj.url = message.url);\n message.image !== undefined &&\n (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n message.bookingData !== undefined &&\n (obj.bookingData = message.bookingData\n ? AppEmbedData_BookingData.toJSON(message.bookingData)\n : undefined);\n message.eventData !== undefined &&\n (obj.eventData = message.eventData\n ? AppEmbedData_EventData.toJSON(message.eventData)\n : undefined);\n message.hideImage !== undefined && (obj.hideImage = message.hideImage);\n message.hideTitle !== undefined && (obj.hideTitle = message.hideTitle);\n message.hidePrice !== undefined && (obj.hidePrice = message.hidePrice);\n message.hideDescription !== undefined &&\n (obj.hideDescription = message.hideDescription);\n message.hideDateTime !== undefined &&\n (obj.hideDateTime = message.hideDateTime);\n message.hideLocation !== undefined &&\n (obj.hideLocation = message.hideLocation);\n message.hideDuration !== undefined &&\n (obj.hideDuration = message.hideDuration);\n message.hideButton !== undefined && (obj.hideButton = message.hideButton);\n message.hideRibbon !== undefined && (obj.hideRibbon = message.hideRibbon);\n message.buttonStyles !== undefined &&\n (obj.buttonStyles = message.buttonStyles\n ? AppEmbedData_ButtonStyles.toJSON(message.buttonStyles)\n : undefined);\n message.imageStyles !== undefined &&\n (obj.imageStyles = message.imageStyles\n ? AppEmbedData_ImageStyles.toJSON(message.imageStyles)\n : undefined);\n message.ribbonStyles !== undefined &&\n (obj.ribbonStyles = message.ribbonStyles\n ? AppEmbedData_RibbonStyles.toJSON(message.ribbonStyles)\n : undefined);\n message.cardStyles !== undefined &&\n (obj.cardStyles = message.cardStyles\n ? AppEmbedData_CardStyles.toJSON(message.cardStyles)\n : undefined);\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.pricingData !== undefined &&\n (obj.pricingData = message.pricingData\n ? AppEmbedData_PricingData.toJSON(message.pricingData)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseAppEmbedData_ButtonStyles: object = {};\n\nexport const AppEmbedData_ButtonStyles = {\n fromJSON(object: any): AppEmbedData_ButtonStyles {\n const message = {\n ...baseAppEmbedData_ButtonStyles,\n } as AppEmbedData_ButtonStyles;\n message.buttonText =\n object.buttonText !== undefined && object.buttonText !== null\n ? String(object.buttonText)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.textColor =\n object.textColor !== undefined && object.textColor !== null\n ? String(object.textColor)\n : undefined;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.borderColorHover =\n object.borderColorHover !== undefined && object.borderColorHover !== null\n ? String(object.borderColorHover)\n : undefined;\n message.textColorHover =\n object.textColorHover !== undefined && object.textColorHover !== null\n ? String(object.textColorHover)\n : undefined;\n message.backgroundColorHover =\n object.backgroundColorHover !== undefined &&\n object.backgroundColorHover !== null\n ? String(object.backgroundColorHover)\n : undefined;\n message.buttonSize =\n object.buttonSize !== undefined && object.buttonSize !== null\n ? String(object.buttonSize)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData_ButtonStyles): unknown {\n const obj: any = {};\n message.buttonText !== undefined && (obj.buttonText = message.buttonText);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.textColor !== undefined && (obj.textColor = message.textColor);\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.borderColorHover !== undefined &&\n (obj.borderColorHover = message.borderColorHover);\n message.textColorHover !== undefined &&\n (obj.textColorHover = message.textColorHover);\n message.backgroundColorHover !== undefined &&\n (obj.backgroundColorHover = message.backgroundColorHover);\n message.buttonSize !== undefined && (obj.buttonSize = message.buttonSize);\n return obj;\n },\n};\n\nconst baseAppEmbedData_ImageStyles: object = {\n imagePosition: AppEmbedData_ImageStyles_Position.START,\n aspectRatio: AppEmbedData_ImageStyles_AspectRatio.SQUARE,\n resizing: AppEmbedData_ImageStyles_Resizing.FILL,\n};\n\nexport const AppEmbedData_ImageStyles = {\n fromJSON(object: any): AppEmbedData_ImageStyles {\n const message = {\n ...baseAppEmbedData_ImageStyles,\n } as AppEmbedData_ImageStyles;\n message.hideImage =\n object.hideImage !== undefined && object.hideImage !== null\n ? Boolean(object.hideImage)\n : undefined;\n message.imagePosition =\n object.imagePosition !== undefined && object.imagePosition !== null\n ? appEmbedData_ImageStyles_PositionFromJSON(object.imagePosition)\n : AppEmbedData_ImageStyles_Position.START;\n message.aspectRatio =\n object.aspectRatio !== undefined && object.aspectRatio !== null\n ? appEmbedData_ImageStyles_AspectRatioFromJSON(object.aspectRatio)\n : AppEmbedData_ImageStyles_AspectRatio.SQUARE;\n message.resizing =\n object.resizing !== undefined && object.resizing !== null\n ? appEmbedData_ImageStyles_ResizingFromJSON(object.resizing)\n : AppEmbedData_ImageStyles_Resizing.FILL;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData_ImageStyles): unknown {\n const obj: any = {};\n message.hideImage !== undefined && (obj.hideImage = message.hideImage);\n message.imagePosition !== undefined &&\n (obj.imagePosition = appEmbedData_ImageStyles_PositionToJSON(\n message.imagePosition\n ));\n message.aspectRatio !== undefined &&\n (obj.aspectRatio = appEmbedData_ImageStyles_AspectRatioToJSON(\n message.aspectRatio\n ));\n message.resizing !== undefined &&\n (obj.resizing = appEmbedData_ImageStyles_ResizingToJSON(\n message.resizing\n ));\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n return obj;\n },\n};\n\nconst baseAppEmbedData_RibbonStyles: object = {\n ribbonPlacement: AppEmbedData_RibbonStyles_Placement.IMAGE,\n};\n\nexport const AppEmbedData_RibbonStyles = {\n fromJSON(object: any): AppEmbedData_RibbonStyles {\n const message = {\n ...baseAppEmbedData_RibbonStyles,\n } as AppEmbedData_RibbonStyles;\n message.ribbonText =\n object.ribbonText !== undefined && object.ribbonText !== null\n ? String(object.ribbonText)\n : undefined;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.textColor =\n object.textColor !== undefined && object.textColor !== null\n ? String(object.textColor)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.ribbonPlacement =\n object.ribbonPlacement !== undefined && object.ribbonPlacement !== null\n ? appEmbedData_RibbonStyles_PlacementFromJSON(object.ribbonPlacement)\n : AppEmbedData_RibbonStyles_Placement.IMAGE;\n return message;\n },\n\n toJSON(message: AppEmbedData_RibbonStyles): unknown {\n const obj: any = {};\n message.ribbonText !== undefined && (obj.ribbonText = message.ribbonText);\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.textColor !== undefined && (obj.textColor = message.textColor);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.ribbonPlacement !== undefined &&\n (obj.ribbonPlacement = appEmbedData_RibbonStyles_PlacementToJSON(\n message.ribbonPlacement\n ));\n return obj;\n },\n};\n\nconst baseAppEmbedData_CardStyles: object = {\n type: AppEmbedData_CardStyles_Type.CONTAINED,\n alignment: AppEmbedData_CardStyles_Alignment.START,\n titlePriceLayout: AppEmbedData_CardStyles_Layout.STACKED,\n};\n\nexport const AppEmbedData_CardStyles = {\n fromJSON(object: any): AppEmbedData_CardStyles {\n const message = {\n ...baseAppEmbedData_CardStyles,\n } as AppEmbedData_CardStyles;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.type =\n object.type !== undefined && object.type !== null\n ? appEmbedData_CardStyles_TypeFromJSON(object.type)\n : AppEmbedData_CardStyles_Type.CONTAINED;\n message.alignment =\n object.alignment !== undefined && object.alignment !== null\n ? appEmbedData_CardStyles_AlignmentFromJSON(object.alignment)\n : AppEmbedData_CardStyles_Alignment.START;\n message.titlePriceLayout =\n object.titlePriceLayout !== undefined && object.titlePriceLayout !== null\n ? appEmbedData_CardStyles_LayoutFromJSON(object.titlePriceLayout)\n : AppEmbedData_CardStyles_Layout.STACKED;\n message.titleColor =\n object.titleColor !== undefined && object.titleColor !== null\n ? String(object.titleColor)\n : undefined;\n message.textColor =\n object.textColor !== undefined && object.textColor !== null\n ? String(object.textColor)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData_CardStyles): unknown {\n const obj: any = {};\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.type !== undefined &&\n (obj.type = appEmbedData_CardStyles_TypeToJSON(message.type));\n message.alignment !== undefined &&\n (obj.alignment = appEmbedData_CardStyles_AlignmentToJSON(\n message.alignment\n ));\n message.titlePriceLayout !== undefined &&\n (obj.titlePriceLayout = appEmbedData_CardStyles_LayoutToJSON(\n message.titlePriceLayout\n ));\n message.titleColor !== undefined && (obj.titleColor = message.titleColor);\n message.textColor !== undefined && (obj.textColor = message.textColor);\n return obj;\n },\n};\n\nconst baseAppEmbedData_BookingData: object = {};\n\nexport const AppEmbedData_BookingData = {\n fromJSON(object: any): AppEmbedData_BookingData {\n const message = {\n ...baseAppEmbedData_BookingData,\n } as AppEmbedData_BookingData;\n message.durations =\n object.durations !== undefined && object.durations !== null\n ? String(object.durations)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData_BookingData): unknown {\n const obj: any = {};\n message.durations !== undefined && (obj.durations = message.durations);\n return obj;\n },\n};\n\nconst baseAppEmbedData_EventData: object = {};\n\nexport const AppEmbedData_EventData = {\n fromJSON(object: any): AppEmbedData_EventData {\n const message = { ...baseAppEmbedData_EventData } as AppEmbedData_EventData;\n message.scheduling =\n object.scheduling !== undefined && object.scheduling !== null\n ? String(object.scheduling)\n : undefined;\n message.location =\n object.location !== undefined && object.location !== null\n ? String(object.location)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData_EventData): unknown {\n const obj: any = {};\n message.scheduling !== undefined && (obj.scheduling = message.scheduling);\n message.location !== undefined && (obj.location = message.location);\n return obj;\n },\n};\n\nconst baseAppEmbedData_PricingData: object = {};\n\nexport const AppEmbedData_PricingData = {\n fromJSON(object: any): AppEmbedData_PricingData {\n const message = {\n ...baseAppEmbedData_PricingData,\n } as AppEmbedData_PricingData;\n message.valueFrom =\n object.valueFrom !== undefined && object.valueFrom !== null\n ? String(object.valueFrom)\n : undefined;\n message.valueTo =\n object.valueTo !== undefined && object.valueTo !== null\n ? String(object.valueTo)\n : undefined;\n message.discountedValue =\n object.discountedValue !== undefined && object.discountedValue !== null\n ? String(object.discountedValue)\n : undefined;\n message.currency =\n object.currency !== undefined && object.currency !== null\n ? String(object.currency)\n : undefined;\n message.pricingPlanId =\n object.pricingPlanId !== undefined && object.pricingPlanId !== null\n ? String(object.pricingPlanId)\n : undefined;\n return message;\n },\n\n toJSON(message: AppEmbedData_PricingData): unknown {\n const obj: any = {};\n message.valueFrom !== undefined && (obj.valueFrom = message.valueFrom);\n message.valueTo !== undefined && (obj.valueTo = message.valueTo);\n message.discountedValue !== undefined &&\n (obj.discountedValue = message.discountedValue);\n message.currency !== undefined && (obj.currency = message.currency);\n message.pricingPlanId !== undefined &&\n (obj.pricingPlanId = message.pricingPlanId);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface AudioData {\n /** Styling for the audio node's container. */\n containerData?: PluginContainerData;\n /** Audio file details. */\n audio?: Media;\n /** Sets whether the audio node's download button is disabled. Defaults to `false`. */\n disableDownload?: boolean;\n /** Cover image. */\n coverImage?: Media;\n /** Track name. */\n name?: string;\n /** Author name. */\n authorName?: string;\n /** An HTML version of the audio node. */\n html?: string;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseAudioData: object = {};\n\nexport const AudioData = {\n fromJSON(object: any): AudioData {\n const message = { ...baseAudioData } as AudioData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.audio =\n object.audio !== undefined && object.audio !== null\n ? Media.fromJSON(object.audio)\n : undefined;\n message.disableDownload =\n object.disableDownload !== undefined && object.disableDownload !== null\n ? Boolean(object.disableDownload)\n : undefined;\n message.coverImage =\n object.coverImage !== undefined && object.coverImage !== null\n ? Media.fromJSON(object.coverImage)\n : undefined;\n message.name =\n object.name !== undefined && object.name !== null\n ? String(object.name)\n : undefined;\n message.authorName =\n object.authorName !== undefined && object.authorName !== null\n ? String(object.authorName)\n : undefined;\n message.html =\n object.html !== undefined && object.html !== null\n ? String(object.html)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: AudioData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.audio !== undefined &&\n (obj.audio = message.audio ? Media.toJSON(message.audio) : undefined);\n message.disableDownload !== undefined &&\n (obj.disableDownload = message.disableDownload);\n message.coverImage !== undefined &&\n (obj.coverImage = message.coverImage\n ? Media.toJSON(message.coverImage)\n : undefined);\n message.name !== undefined && (obj.name = message.name);\n message.authorName !== undefined && (obj.authorName = message.authorName);\n message.html !== undefined && (obj.html = message.html);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","export enum ButtonData_Type {\n /** LINK - Regular link button */\n LINK = \"LINK\",\n /** ACTION - Triggers custom action that is defined in plugin configuration by the consumer */\n ACTION = \"ACTION\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Background type */\nexport enum ButtonData_Styles_Background_Type {\n /** COLOR - Solid color background */\n COLOR = \"COLOR\",\n /** GRADIENT - Gradient background */\n GRADIENT = \"GRADIENT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Link, Gradient } from './common.js';\nimport { Animation } from './animation.js';\n\nimport { ButtonData_Type, ButtonData_Styles_Background_Type } from './plugin_button.enums.js';\n\nexport interface ButtonData {\n /** Styling for the button's container. */\n containerData?: PluginContainerData;\n /** The button type. */\n type: ButtonData_Type;\n /** Styling for the button. */\n styles?: ButtonData_Styles;\n /** The text to display on the button. */\n text?: string;\n /** Button link details. */\n link?: Link;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function buttonData_TypeFromJSON(object: any): ButtonData_Type {\n switch (object) {\n case 0:\n case \"LINK\":\n return ButtonData_Type.LINK;\n case 1:\n case \"ACTION\":\n return ButtonData_Type.ACTION;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return ButtonData_Type.UNRECOGNIZED;\n }\n}\n\nexport function buttonData_TypeToJSON(object: ButtonData_Type): string {\n switch (object) {\n case ButtonData_Type.LINK:\n return \"LINK\";\n case ButtonData_Type.ACTION:\n return \"ACTION\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface ButtonData_Styles {\n /**\n * Deprecated: Use `borderWidth` and `borderRadius` instead.\n *\n * @deprecated\n */\n border?: ButtonData_Styles_Border;\n /**\n * Deprecated: Use `textColor`, `borderColor` and `backgroundColor` instead.\n *\n * @deprecated\n */\n colors?: ButtonData_Styles_Colors;\n /** Border width in pixels. */\n borderWidth?: number;\n /**\n * Deprecated: Use `borderWidth` for normal/hover states instead.\n *\n * @deprecated\n */\n borderWidthHover?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border color as a hexadecimal value (hover state). */\n borderColorHover?: string;\n /** Text color as a hexadecimal value. */\n textColor?: string;\n /** Text color as a hexadecimal value (hover state). */\n textColorHover?: string;\n /**\n * Deprecated: Use `background` instead.\n *\n * @deprecated\n */\n backgroundColor?: string;\n /**\n * Deprecated: Use `backgroundHover` instead.\n *\n * @deprecated\n */\n backgroundColorHover?: string;\n /** Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`. */\n buttonSize?: string;\n /** Background styling (color or gradient). */\n background?: ButtonData_Styles_Background;\n /** Background styling for hover state (color or gradient). */\n backgroundHover?: ButtonData_Styles_Background;\n}\n\nexport interface ButtonData_Styles_Colors {\n /**\n * Deprecated: Use `textColor` in `styles` instead.\n *\n * @deprecated\n */\n text?: string;\n /**\n * Deprecated: Use `borderColor` in `styles` instead.\n *\n * @deprecated\n */\n border?: string;\n /**\n * Deprecated: Use `backgroundColor` in `styles` instead.\n *\n * @deprecated\n */\n background?: string;\n}\n\nexport interface ButtonData_Styles_Border {\n /**\n * Deprecated: Use `borderWidth` in `styles` instead.\n *\n * @deprecated\n */\n width?: number;\n /**\n * Deprecated: Use `borderRadius` in `styles` instead.\n *\n * @deprecated\n */\n radius?: number;\n}\n\n/** Background styling (color or gradient) */\nexport interface ButtonData_Styles_Background {\n /** Background type. */\n type: ButtonData_Styles_Background_Type;\n /** Background color as a hexadecimal value. */\n color?: string;\n /** Gradient configuration. */\n gradient?: Gradient;\n}\n\nexport function buttonData_Styles_Background_TypeFromJSON(\n object: any\n): ButtonData_Styles_Background_Type {\n switch (object) {\n case 0:\n case \"COLOR\":\n return ButtonData_Styles_Background_Type.COLOR;\n case 1:\n case \"GRADIENT\":\n return ButtonData_Styles_Background_Type.GRADIENT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return ButtonData_Styles_Background_Type.UNRECOGNIZED;\n }\n}\n\nexport function buttonData_Styles_Background_TypeToJSON(\n object: ButtonData_Styles_Background_Type\n): string {\n switch (object) {\n case ButtonData_Styles_Background_Type.COLOR:\n return \"COLOR\";\n case ButtonData_Styles_Background_Type.GRADIENT:\n return \"GRADIENT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseButtonData: object = { type: ButtonData_Type.LINK };\n\nexport const ButtonData = {\n fromJSON(object: any): ButtonData {\n const message = { ...baseButtonData } as ButtonData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.type =\n object.type !== undefined && object.type !== null\n ? buttonData_TypeFromJSON(object.type)\n : ButtonData_Type.LINK;\n message.styles =\n object.styles !== undefined && object.styles !== null\n ? ButtonData_Styles.fromJSON(object.styles)\n : undefined;\n message.text =\n object.text !== undefined && object.text !== null\n ? String(object.text)\n : undefined;\n message.link =\n object.link !== undefined && object.link !== null\n ? Link.fromJSON(object.link)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: ButtonData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.type !== undefined &&\n (obj.type = buttonData_TypeToJSON(message.type));\n message.styles !== undefined &&\n (obj.styles = message.styles\n ? ButtonData_Styles.toJSON(message.styles)\n : undefined);\n message.text !== undefined && (obj.text = message.text);\n message.link !== undefined &&\n (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseButtonData_Styles: object = {};\n\nexport const ButtonData_Styles = {\n fromJSON(object: any): ButtonData_Styles {\n const message = { ...baseButtonData_Styles } as ButtonData_Styles;\n message.border =\n object.border !== undefined && object.border !== null\n ? ButtonData_Styles_Border.fromJSON(object.border)\n : undefined;\n message.colors =\n object.colors !== undefined && object.colors !== null\n ? ButtonData_Styles_Colors.fromJSON(object.colors)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderWidthHover =\n object.borderWidthHover !== undefined && object.borderWidthHover !== null\n ? Number(object.borderWidthHover)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderColorHover =\n object.borderColorHover !== undefined && object.borderColorHover !== null\n ? String(object.borderColorHover)\n : undefined;\n message.textColor =\n object.textColor !== undefined && object.textColor !== null\n ? String(object.textColor)\n : undefined;\n message.textColorHover =\n object.textColorHover !== undefined && object.textColorHover !== null\n ? String(object.textColorHover)\n : undefined;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.backgroundColorHover =\n object.backgroundColorHover !== undefined &&\n object.backgroundColorHover !== null\n ? String(object.backgroundColorHover)\n : undefined;\n message.buttonSize =\n object.buttonSize !== undefined && object.buttonSize !== null\n ? String(object.buttonSize)\n : undefined;\n message.background =\n object.background !== undefined && object.background !== null\n ? ButtonData_Styles_Background.fromJSON(object.background)\n : undefined;\n message.backgroundHover =\n object.backgroundHover !== undefined && object.backgroundHover !== null\n ? ButtonData_Styles_Background.fromJSON(object.backgroundHover)\n : undefined;\n return message;\n },\n\n toJSON(message: ButtonData_Styles): unknown {\n const obj: any = {};\n message.border !== undefined &&\n (obj.border = message.border\n ? ButtonData_Styles_Border.toJSON(message.border)\n : undefined);\n message.colors !== undefined &&\n (obj.colors = message.colors\n ? ButtonData_Styles_Colors.toJSON(message.colors)\n : undefined);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderWidthHover !== undefined &&\n (obj.borderWidthHover = message.borderWidthHover);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderColorHover !== undefined &&\n (obj.borderColorHover = message.borderColorHover);\n message.textColor !== undefined && (obj.textColor = message.textColor);\n message.textColorHover !== undefined &&\n (obj.textColorHover = message.textColorHover);\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.backgroundColorHover !== undefined &&\n (obj.backgroundColorHover = message.backgroundColorHover);\n message.buttonSize !== undefined && (obj.buttonSize = message.buttonSize);\n message.background !== undefined &&\n (obj.background = message.background\n ? ButtonData_Styles_Background.toJSON(message.background)\n : undefined);\n message.backgroundHover !== undefined &&\n (obj.backgroundHover = message.backgroundHover\n ? ButtonData_Styles_Background.toJSON(message.backgroundHover)\n : undefined);\n return obj;\n },\n};\n\nconst baseButtonData_Styles_Colors: object = {};\n\nexport const ButtonData_Styles_Colors = {\n fromJSON(object: any): ButtonData_Styles_Colors {\n const message = {\n ...baseButtonData_Styles_Colors,\n } as ButtonData_Styles_Colors;\n message.text =\n object.text !== undefined && object.text !== null\n ? String(object.text)\n : undefined;\n message.border =\n object.border !== undefined && object.border !== null\n ? String(object.border)\n : undefined;\n message.background =\n object.background !== undefined && object.background !== null\n ? String(object.background)\n : undefined;\n return message;\n },\n\n toJSON(message: ButtonData_Styles_Colors): unknown {\n const obj: any = {};\n message.text !== undefined && (obj.text = message.text);\n message.border !== undefined && (obj.border = message.border);\n message.background !== undefined && (obj.background = message.background);\n return obj;\n },\n};\n\nconst baseButtonData_Styles_Border: object = {};\n\nexport const ButtonData_Styles_Border = {\n fromJSON(object: any): ButtonData_Styles_Border {\n const message = {\n ...baseButtonData_Styles_Border,\n } as ButtonData_Styles_Border;\n message.width =\n object.width !== undefined && object.width !== null\n ? Number(object.width)\n : undefined;\n message.radius =\n object.radius !== undefined && object.radius !== null\n ? Number(object.radius)\n : undefined;\n return message;\n },\n\n toJSON(message: ButtonData_Styles_Border): unknown {\n const obj: any = {};\n message.width !== undefined && (obj.width = message.width);\n message.radius !== undefined && (obj.radius = message.radius);\n return obj;\n },\n};\n\nconst baseButtonData_Styles_Background: object = {\n type: ButtonData_Styles_Background_Type.COLOR,\n};\n\nexport const ButtonData_Styles_Background = {\n fromJSON(object: any): ButtonData_Styles_Background {\n const message = {\n ...baseButtonData_Styles_Background,\n } as ButtonData_Styles_Background;\n message.type =\n object.type !== undefined && object.type !== null\n ? buttonData_Styles_Background_TypeFromJSON(object.type)\n : ButtonData_Styles_Background_Type.COLOR;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.gradient =\n object.gradient !== undefined && object.gradient !== null\n ? Gradient.fromJSON(object.gradient)\n : undefined;\n return message;\n },\n\n toJSON(message: ButtonData_Styles_Background): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = buttonData_Styles_Background_TypeToJSON(message.type));\n message.color !== undefined && (obj.color = message.color);\n message.gradient !== undefined &&\n (obj.gradient = message.gradient\n ? Gradient.toJSON(message.gradient)\n : undefined);\n return obj;\n },\n};\n","export enum CollapsibleListData_InitialExpandedItems {\n /** FIRST - First item will be expended initally */\n FIRST = \"FIRST\",\n /** ALL - All items will expended initally */\n ALL = \"ALL\",\n /** NONE - All items collapsed initally */\n NONE = \"NONE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum CollapsibleListData_Direction {\n /** LTR - Left-to-right */\n LTR = \"LTR\",\n /** RTL - Right-to-left */\n RTL = \"RTL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\nimport { Animation } from './animation.js';\n\nimport { CollapsibleListData_InitialExpandedItems, CollapsibleListData_Direction } from './plugin_collapsible_list.enums.js';\n\nexport interface CollapsibleListData {\n /** Styling for the collapsible list's container. */\n containerData?: PluginContainerData;\n /** If `true`, only one item can be expanded at a time. Defaults to `false`. */\n expandOnlyOne?: boolean;\n /** Sets which items are expanded when the page loads. */\n initialExpandedItems: CollapsibleListData_InitialExpandedItems;\n /** The direction of the text in the list. Either left-to-right or right-to-left. */\n direction: CollapsibleListData_Direction;\n /** If `true`, The collapsible item will appear in search results as an FAQ. */\n isQapageData?: boolean;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function collapsibleListData_InitialExpandedItemsFromJSON(\n object: any\n): CollapsibleListData_InitialExpandedItems {\n switch (object) {\n case 0:\n case \"FIRST\":\n return CollapsibleListData_InitialExpandedItems.FIRST;\n case 1:\n case \"ALL\":\n return CollapsibleListData_InitialExpandedItems.ALL;\n case 2:\n case \"NONE\":\n return CollapsibleListData_InitialExpandedItems.NONE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return CollapsibleListData_InitialExpandedItems.UNRECOGNIZED;\n }\n}\n\nexport function collapsibleListData_InitialExpandedItemsToJSON(\n object: CollapsibleListData_InitialExpandedItems\n): string {\n switch (object) {\n case CollapsibleListData_InitialExpandedItems.FIRST:\n return \"FIRST\";\n case CollapsibleListData_InitialExpandedItems.ALL:\n return \"ALL\";\n case CollapsibleListData_InitialExpandedItems.NONE:\n return \"NONE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function collapsibleListData_DirectionFromJSON(\n object: any\n): CollapsibleListData_Direction {\n switch (object) {\n case 0:\n case \"LTR\":\n return CollapsibleListData_Direction.LTR;\n case 1:\n case \"RTL\":\n return CollapsibleListData_Direction.RTL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return CollapsibleListData_Direction.UNRECOGNIZED;\n }\n}\n\nexport function collapsibleListData_DirectionToJSON(\n object: CollapsibleListData_Direction\n): string {\n switch (object) {\n case CollapsibleListData_Direction.LTR:\n return \"LTR\";\n case CollapsibleListData_Direction.RTL:\n return \"RTL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseCollapsibleListData: object = {\n initialExpandedItems: CollapsibleListData_InitialExpandedItems.FIRST,\n direction: CollapsibleListData_Direction.LTR,\n};\n\nexport const CollapsibleListData = {\n fromJSON(object: any): CollapsibleListData {\n const message = { ...baseCollapsibleListData } as CollapsibleListData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.expandOnlyOne =\n object.expandOnlyOne !== undefined && object.expandOnlyOne !== null\n ? Boolean(object.expandOnlyOne)\n : undefined;\n message.initialExpandedItems =\n object.initialExpandedItems !== undefined &&\n object.initialExpandedItems !== null\n ? collapsibleListData_InitialExpandedItemsFromJSON(\n object.initialExpandedItems\n )\n : CollapsibleListData_InitialExpandedItems.FIRST;\n message.direction =\n object.direction !== undefined && object.direction !== null\n ? collapsibleListData_DirectionFromJSON(object.direction)\n : CollapsibleListData_Direction.LTR;\n message.isQapageData =\n object.isQapageData !== undefined && object.isQapageData !== null\n ? Boolean(object.isQapageData)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: CollapsibleListData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.expandOnlyOne !== undefined &&\n (obj.expandOnlyOne = message.expandOnlyOne);\n message.initialExpandedItems !== undefined &&\n (obj.initialExpandedItems =\n collapsibleListData_InitialExpandedItemsToJSON(\n message.initialExpandedItems\n ));\n message.direction !== undefined &&\n (obj.direction = collapsibleListData_DirectionToJSON(message.direction));\n message.isQapageData !== undefined &&\n (obj.isQapageData = message.isQapageData);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","export enum DividerData_LineStyle {\n /** SINGLE - Single Line */\n SINGLE = \"SINGLE\",\n /** DOUBLE - Double Line */\n DOUBLE = \"DOUBLE\",\n /** DASHED - Dashed Line */\n DASHED = \"DASHED\",\n /** DOTTED - Dotted Line */\n DOTTED = \"DOTTED\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum DividerData_Width {\n /** LARGE - Large line */\n LARGE = \"LARGE\",\n /** MEDIUM - Medium line */\n MEDIUM = \"MEDIUM\",\n /** SMALL - Small line */\n SMALL = \"SMALL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum DividerData_Alignment {\n /** CENTER - Center alignment */\n CENTER = \"CENTER\",\n /** LEFT - Left alignment */\n LEFT = \"LEFT\",\n /** RIGHT - Right alignment */\n RIGHT = \"RIGHT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum DividerData_Styles_LineCap {\n /** SQUARE - Square line endings. */\n SQUARE = \"SQUARE\",\n /** ROUND - Rounded line endings. */\n ROUND = \"ROUND\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\nimport { Animation } from './animation.js';\n\nimport {\n DividerData_LineStyle,\n DividerData_Width,\n DividerData_Alignment,\n DividerData_Styles_LineCap,\n} from './plugin_divider.enums.js';\n\nexport interface DividerData {\n /** Styling for the divider's container. */\n containerData?: PluginContainerData;\n /** Divider line style. */\n lineStyle: DividerData_LineStyle;\n /** Divider width. */\n width: DividerData_Width;\n /** Divider alignment. */\n alignment: DividerData_Alignment;\n /** Visual styling for the divider lines. */\n styles?: DividerData_Styles;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function dividerData_LineStyleFromJSON(\n object: any\n): DividerData_LineStyle {\n switch (object) {\n case 0:\n case \"SINGLE\":\n return DividerData_LineStyle.SINGLE;\n case 1:\n case \"DOUBLE\":\n return DividerData_LineStyle.DOUBLE;\n case 2:\n case \"DASHED\":\n return DividerData_LineStyle.DASHED;\n case 3:\n case \"DOTTED\":\n return DividerData_LineStyle.DOTTED;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DividerData_LineStyle.UNRECOGNIZED;\n }\n}\n\nexport function dividerData_LineStyleToJSON(\n object: DividerData_LineStyle\n): string {\n switch (object) {\n case DividerData_LineStyle.SINGLE:\n return \"SINGLE\";\n case DividerData_LineStyle.DOUBLE:\n return \"DOUBLE\";\n case DividerData_LineStyle.DASHED:\n return \"DASHED\";\n case DividerData_LineStyle.DOTTED:\n return \"DOTTED\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function dividerData_WidthFromJSON(object: any): DividerData_Width {\n switch (object) {\n case 0:\n case \"LARGE\":\n return DividerData_Width.LARGE;\n case 1:\n case \"MEDIUM\":\n return DividerData_Width.MEDIUM;\n case 2:\n case \"SMALL\":\n return DividerData_Width.SMALL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DividerData_Width.UNRECOGNIZED;\n }\n}\n\nexport function dividerData_WidthToJSON(object: DividerData_Width): string {\n switch (object) {\n case DividerData_Width.LARGE:\n return \"LARGE\";\n case DividerData_Width.MEDIUM:\n return \"MEDIUM\";\n case DividerData_Width.SMALL:\n return \"SMALL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function dividerData_AlignmentFromJSON(\n object: any\n): DividerData_Alignment {\n switch (object) {\n case 0:\n case \"CENTER\":\n return DividerData_Alignment.CENTER;\n case 1:\n case \"LEFT\":\n return DividerData_Alignment.LEFT;\n case 2:\n case \"RIGHT\":\n return DividerData_Alignment.RIGHT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DividerData_Alignment.UNRECOGNIZED;\n }\n}\n\nexport function dividerData_AlignmentToJSON(\n object: DividerData_Alignment\n): string {\n switch (object) {\n case DividerData_Alignment.CENTER:\n return \"CENTER\";\n case DividerData_Alignment.LEFT:\n return \"LEFT\";\n case DividerData_Alignment.RIGHT:\n return \"RIGHT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface DividerData_Styles {\n /** Divider color as a hexadecimal value. An alpha channel controls opacity. */\n color?: string;\n /** Divider line ending shape. */\n lineCap: DividerData_Styles_LineCap;\n /** Line thicknesses in pixels, ordered from first line to last line. */\n lineThickness: number[];\n /** Visible dash length for dashed dividers, in pixels. The pattern is snapped to a whole number of dashes so that the first and last dash touch the divider's edges - narrower containers show fewer dashes at the same size. */\n dashLength?: number;\n /** Visible gap between dashes or dots, in pixels. */\n dashGap?: number;\n /** Gap between divider lines in pixels. */\n lineGap?: number;\n}\n\nexport function dividerData_Styles_LineCapFromJSON(\n object: any\n): DividerData_Styles_LineCap {\n switch (object) {\n case 0:\n case \"SQUARE\":\n return DividerData_Styles_LineCap.SQUARE;\n case 1:\n case \"ROUND\":\n return DividerData_Styles_LineCap.ROUND;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return DividerData_Styles_LineCap.UNRECOGNIZED;\n }\n}\n\nexport function dividerData_Styles_LineCapToJSON(\n object: DividerData_Styles_LineCap\n): string {\n switch (object) {\n case DividerData_Styles_LineCap.SQUARE:\n return \"SQUARE\";\n case DividerData_Styles_LineCap.ROUND:\n return \"ROUND\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseDividerData: object = {\n lineStyle: DividerData_LineStyle.SINGLE,\n width: DividerData_Width.LARGE,\n alignment: DividerData_Alignment.CENTER,\n};\n\nexport const DividerData = {\n fromJSON(object: any): DividerData {\n const message = { ...baseDividerData } as DividerData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.lineStyle =\n object.lineStyle !== undefined && object.lineStyle !== null\n ? dividerData_LineStyleFromJSON(object.lineStyle)\n : DividerData_LineStyle.SINGLE;\n message.width =\n object.width !== undefined && object.width !== null\n ? dividerData_WidthFromJSON(object.width)\n : DividerData_Width.LARGE;\n message.alignment =\n object.alignment !== undefined && object.alignment !== null\n ? dividerData_AlignmentFromJSON(object.alignment)\n : DividerData_Alignment.CENTER;\n message.styles =\n object.styles !== undefined && object.styles !== null\n ? DividerData_Styles.fromJSON(object.styles)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: DividerData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.lineStyle !== undefined &&\n (obj.lineStyle = dividerData_LineStyleToJSON(message.lineStyle));\n message.width !== undefined &&\n (obj.width = dividerData_WidthToJSON(message.width));\n message.alignment !== undefined &&\n (obj.alignment = dividerData_AlignmentToJSON(message.alignment));\n message.styles !== undefined &&\n (obj.styles = message.styles\n ? DividerData_Styles.toJSON(message.styles)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseDividerData_Styles: object = {\n lineCap: DividerData_Styles_LineCap.SQUARE,\n lineThickness: 0,\n};\n\nexport const DividerData_Styles = {\n fromJSON(object: any): DividerData_Styles {\n const message = { ...baseDividerData_Styles } as DividerData_Styles;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.lineCap =\n object.lineCap !== undefined && object.lineCap !== null\n ? dividerData_Styles_LineCapFromJSON(object.lineCap)\n : DividerData_Styles_LineCap.SQUARE;\n message.lineThickness = (object.lineThickness ?? []).map((e: any) =>\n Number(e)\n );\n message.dashLength =\n object.dashLength !== undefined && object.dashLength !== null\n ? Number(object.dashLength)\n : undefined;\n message.dashGap =\n object.dashGap !== undefined && object.dashGap !== null\n ? Number(object.dashGap)\n : undefined;\n message.lineGap =\n object.lineGap !== undefined && object.lineGap !== null\n ? Number(object.lineGap)\n : undefined;\n return message;\n },\n\n toJSON(message: DividerData_Styles): unknown {\n const obj: any = {};\n message.color !== undefined && (obj.color = message.color);\n message.lineCap !== undefined &&\n (obj.lineCap = dividerData_Styles_LineCapToJSON(message.lineCap));\n if (message.lineThickness) {\n obj.lineThickness = message.lineThickness.map((e) => Math.round(e));\n } else {\n obj.lineThickness = [];\n }\n message.dashLength !== undefined && (obj.dashLength = message.dashLength);\n message.dashGap !== undefined && (obj.dashGap = message.dashGap);\n message.lineGap !== undefined && (obj.lineGap = message.lineGap);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Oembed } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface EmbedData {\n /** Styling for the oEmbed node's container. */\n containerData?: PluginContainerData;\n /** An [oEmbed](https://www.oembed.com) object. */\n oembed?: Oembed;\n /** Origin asset source. */\n src?: string;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseEmbedData: object = {};\n\nexport const EmbedData = {\n fromJSON(object: any): EmbedData {\n const message = { ...baseEmbedData } as EmbedData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.oembed =\n object.oembed !== undefined && object.oembed !== null\n ? Oembed.fromJSON(object.oembed)\n : undefined;\n message.src =\n object.src !== undefined && object.src !== null\n ? String(object.src)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: EmbedData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.oembed !== undefined &&\n (obj.oembed = message.oembed ? Oembed.toJSON(message.oembed) : undefined);\n message.src !== undefined && (obj.src = message.src);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","export enum FileData_PDFSettings_ViewMode {\n /** NONE - No PDF view */\n NONE = \"NONE\",\n /** FULL - Full PDF view */\n FULL = \"FULL\",\n /** MINI - Mini PDF view */\n MINI = \"MINI\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, FileSource } from './common.js';\nimport { Animation } from './animation.js';\n\nimport { FileData_PDFSettings_ViewMode } from './plugin_file.enums.js';\n\nexport interface FileData {\n /** Styling for the file's container. */\n containerData?: PluginContainerData;\n /** The source for the file's data. */\n src?: FileSource;\n /** File name. */\n name?: string;\n /** File type. */\n type?: string;\n /**\n * Use `sizeInKb` instead.\n *\n * @deprecated\n */\n size?: number;\n /** Settings for PDF files. */\n pdfSettings?: FileData_PDFSettings;\n /** File MIME type. */\n mimeType?: string;\n /** File path. */\n path?: string;\n /** File size in KB. */\n sizeInKb?: string;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface FileData_PDFSettings {\n /**\n * PDF view mode. One of the following:\n * `NONE` : The PDF isn't displayed.\n * `FULL` : A full page view of the PDF is displayed.\n * `MINI` : A mini view of the PDF is displayed.\n */\n viewMode: FileData_PDFSettings_ViewMode;\n /** Sets whether the PDF download button is disabled. Defaults to `false`. */\n disableDownload?: boolean;\n /** Sets whether the PDF print button is disabled. Defaults to `false`. */\n disablePrint?: boolean;\n}\n\nexport function fileData_PDFSettings_ViewModeFromJSON(\n object: any\n): FileData_PDFSettings_ViewMode {\n switch (object) {\n case 0:\n case \"NONE\":\n return FileData_PDFSettings_ViewMode.NONE;\n case 1:\n case \"FULL\":\n return FileData_PDFSettings_ViewMode.FULL;\n case 2:\n case \"MINI\":\n return FileData_PDFSettings_ViewMode.MINI;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return FileData_PDFSettings_ViewMode.UNRECOGNIZED;\n }\n}\n\nexport function fileData_PDFSettings_ViewModeToJSON(\n object: FileData_PDFSettings_ViewMode\n): string {\n switch (object) {\n case FileData_PDFSettings_ViewMode.NONE:\n return \"NONE\";\n case FileData_PDFSettings_ViewMode.FULL:\n return \"FULL\";\n case FileData_PDFSettings_ViewMode.MINI:\n return \"MINI\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseFileData: object = {};\n\nexport const FileData = {\n fromJSON(object: any): FileData {\n const message = { ...baseFileData } as FileData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.src =\n object.src !== undefined && object.src !== null\n ? FileSource.fromJSON(object.src)\n : undefined;\n message.name =\n object.name !== undefined && object.name !== null\n ? String(object.name)\n : undefined;\n message.type =\n object.type !== undefined && object.type !== null\n ? String(object.type)\n : undefined;\n message.size =\n object.size !== undefined && object.size !== null\n ? Number(object.size)\n : undefined;\n message.pdfSettings =\n object.pdfSettings !== undefined && object.pdfSettings !== null\n ? FileData_PDFSettings.fromJSON(object.pdfSettings)\n : undefined;\n message.mimeType =\n object.mimeType !== undefined && object.mimeType !== null\n ? String(object.mimeType)\n : undefined;\n message.path =\n object.path !== undefined && object.path !== null\n ? String(object.path)\n : undefined;\n message.sizeInKb =\n object.sizeInKb !== undefined && object.sizeInKb !== null\n ? String(object.sizeInKb)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: FileData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.src !== undefined &&\n (obj.src = message.src ? FileSource.toJSON(message.src) : undefined);\n message.name !== undefined && (obj.name = message.name);\n message.type !== undefined && (obj.type = message.type);\n message.size !== undefined && (obj.size = message.size);\n message.pdfSettings !== undefined &&\n (obj.pdfSettings = message.pdfSettings\n ? FileData_PDFSettings.toJSON(message.pdfSettings)\n : undefined);\n message.mimeType !== undefined && (obj.mimeType = message.mimeType);\n message.path !== undefined && (obj.path = message.path);\n message.sizeInKb !== undefined && (obj.sizeInKb = message.sizeInKb);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseFileData_PDFSettings: object = {\n viewMode: FileData_PDFSettings_ViewMode.NONE,\n};\n\nexport const FileData_PDFSettings = {\n fromJSON(object: any): FileData_PDFSettings {\n const message = { ...baseFileData_PDFSettings } as FileData_PDFSettings;\n message.viewMode =\n object.viewMode !== undefined && object.viewMode !== null\n ? fileData_PDFSettings_ViewModeFromJSON(object.viewMode)\n : FileData_PDFSettings_ViewMode.NONE;\n message.disableDownload =\n object.disableDownload !== undefined && object.disableDownload !== null\n ? Boolean(object.disableDownload)\n : undefined;\n message.disablePrint =\n object.disablePrint !== undefined && object.disablePrint !== null\n ? Boolean(object.disablePrint)\n : undefined;\n return message;\n },\n\n toJSON(message: FileData_PDFSettings): unknown {\n const obj: any = {};\n message.viewMode !== undefined &&\n (obj.viewMode = fileData_PDFSettings_ViewModeToJSON(message.viewMode));\n message.disableDownload !== undefined &&\n (obj.disableDownload = message.disableDownload);\n message.disablePrint !== undefined &&\n (obj.disablePrint = message.disablePrint);\n return obj;\n },\n};\n","export enum GalleryOptions_Layout_Type {\n /** COLLAGE - Collage type */\n COLLAGE = \"COLLAGE\",\n /** MASONRY - Masonry type */\n MASONRY = \"MASONRY\",\n /** GRID - Grid type */\n GRID = \"GRID\",\n /** THUMBNAIL - Thumbnail type */\n THUMBNAIL = \"THUMBNAIL\",\n /** SLIDER - Slider type */\n SLIDER = \"SLIDER\",\n /** SLIDESHOW - Slideshow type */\n SLIDESHOW = \"SLIDESHOW\",\n /** PANORAMA - Panorama type */\n PANORAMA = \"PANORAMA\",\n /** COLUMN - Column type */\n COLUMN = \"COLUMN\",\n /** MAGIC - Magic type */\n MAGIC = \"MAGIC\",\n /** FULLSIZE - Fullsize images type */\n FULLSIZE = \"FULLSIZE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum GalleryOptions_Layout_Orientation {\n /** ROWS - Rows Orientation */\n ROWS = \"ROWS\",\n /** COLUMNS - Columns Orientation */\n COLUMNS = \"COLUMNS\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum GalleryOptions_ItemStyle_Crop {\n /** FILL - Crop to fill */\n FILL = \"FILL\",\n /** FIT - Crop to fit */\n FIT = \"FIT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum GalleryOptions_Thumbnails_Alignment {\n /** TOP - Top alignment */\n TOP = \"TOP\",\n /** RIGHT - Right alignment */\n RIGHT = \"RIGHT\",\n /** BOTTOM - Bottom alignment */\n BOTTOM = \"BOTTOM\",\n /** LEFT - Left alignment */\n LEFT = \"LEFT\",\n /** NONE - No thumbnail */\n NONE = \"NONE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Media, Link } from './common.js';\nimport { Animation } from './animation.js';\n\nimport {\n GalleryOptions_Layout_Type,\n GalleryOptions_Layout_Orientation,\n GalleryOptions_ItemStyle_Crop,\n GalleryOptions_Thumbnails_Alignment,\n} from './plugin_gallery.enums.js';\n\nexport interface GalleryOptions {\n /** Gallery layout. */\n layout?: GalleryOptions_Layout;\n /** Styling for gallery items. */\n item?: GalleryOptions_ItemStyle;\n /** Styling for gallery thumbnail images. */\n thumbnails?: GalleryOptions_Thumbnails;\n}\n\nexport interface GalleryOptions_Layout {\n /** Gallery layout type. */\n type: GalleryOptions_Layout_Type;\n /** Sets whether horizontal scroll is enabled. Defaults to `true` unless the layout `type` is set to `GRID` or `COLLAGE`. */\n horizontalScroll?: boolean;\n /** Gallery orientation. */\n orientation: GalleryOptions_Layout_Orientation;\n /** The number of columns to display on full size screens. */\n numberOfColumns?: number;\n /** The number of columns to display on mobile screens. */\n mobileNumberOfColumns?: number;\n}\n\nexport function galleryOptions_Layout_TypeFromJSON(\n object: any\n): GalleryOptions_Layout_Type {\n switch (object) {\n case 0:\n case \"COLLAGE\":\n return GalleryOptions_Layout_Type.COLLAGE;\n case 1:\n case \"MASONRY\":\n return GalleryOptions_Layout_Type.MASONRY;\n case 2:\n case \"GRID\":\n return GalleryOptions_Layout_Type.GRID;\n case 3:\n case \"THUMBNAIL\":\n return GalleryOptions_Layout_Type.THUMBNAIL;\n case 4:\n case \"SLIDER\":\n return GalleryOptions_Layout_Type.SLIDER;\n case 5:\n case \"SLIDESHOW\":\n return GalleryOptions_Layout_Type.SLIDESHOW;\n case 6:\n case \"PANORAMA\":\n return GalleryOptions_Layout_Type.PANORAMA;\n case 7:\n case \"COLUMN\":\n return GalleryOptions_Layout_Type.COLUMN;\n case 8:\n case \"MAGIC\":\n return GalleryOptions_Layout_Type.MAGIC;\n case 9:\n case \"FULLSIZE\":\n return GalleryOptions_Layout_Type.FULLSIZE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return GalleryOptions_Layout_Type.UNRECOGNIZED;\n }\n}\n\nexport function galleryOptions_Layout_TypeToJSON(\n object: GalleryOptions_Layout_Type\n): string {\n switch (object) {\n case GalleryOptions_Layout_Type.COLLAGE:\n return \"COLLAGE\";\n case GalleryOptions_Layout_Type.MASONRY:\n return \"MASONRY\";\n case GalleryOptions_Layout_Type.GRID:\n return \"GRID\";\n case GalleryOptions_Layout_Type.THUMBNAIL:\n return \"THUMBNAIL\";\n case GalleryOptions_Layout_Type.SLIDER:\n return \"SLIDER\";\n case GalleryOptions_Layout_Type.SLIDESHOW:\n return \"SLIDESHOW\";\n case GalleryOptions_Layout_Type.PANORAMA:\n return \"PANORAMA\";\n case GalleryOptions_Layout_Type.COLUMN:\n return \"COLUMN\";\n case GalleryOptions_Layout_Type.MAGIC:\n return \"MAGIC\";\n case GalleryOptions_Layout_Type.FULLSIZE:\n return \"FULLSIZE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function galleryOptions_Layout_OrientationFromJSON(\n object: any\n): GalleryOptions_Layout_Orientation {\n switch (object) {\n case 0:\n case \"ROWS\":\n return GalleryOptions_Layout_Orientation.ROWS;\n case 1:\n case \"COLUMNS\":\n return GalleryOptions_Layout_Orientation.COLUMNS;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return GalleryOptions_Layout_Orientation.UNRECOGNIZED;\n }\n}\n\nexport function galleryOptions_Layout_OrientationToJSON(\n object: GalleryOptions_Layout_Orientation\n): string {\n switch (object) {\n case GalleryOptions_Layout_Orientation.ROWS:\n return \"ROWS\";\n case GalleryOptions_Layout_Orientation.COLUMNS:\n return \"COLUMNS\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface GalleryOptions_ItemStyle {\n /** Desirable dimension for each item in pixels (behvaior changes according to gallery type) */\n targetSize?: number;\n /** Item ratio */\n ratio?: number;\n /** Sets how item images are cropped. */\n crop: GalleryOptions_ItemStyle_Crop;\n /** The spacing between items in pixels. */\n spacing?: number;\n}\n\nexport function galleryOptions_ItemStyle_CropFromJSON(\n object: any\n): GalleryOptions_ItemStyle_Crop {\n switch (object) {\n case 0:\n case \"FILL\":\n return GalleryOptions_ItemStyle_Crop.FILL;\n case 1:\n case \"FIT\":\n return GalleryOptions_ItemStyle_Crop.FIT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return GalleryOptions_ItemStyle_Crop.UNRECOGNIZED;\n }\n}\n\nexport function galleryOptions_ItemStyle_CropToJSON(\n object: GalleryOptions_ItemStyle_Crop\n): string {\n switch (object) {\n case GalleryOptions_ItemStyle_Crop.FILL:\n return \"FILL\";\n case GalleryOptions_ItemStyle_Crop.FIT:\n return \"FIT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface GalleryOptions_Thumbnails {\n /** Thumbnail alignment. */\n placement: GalleryOptions_Thumbnails_Alignment;\n /** Spacing between thumbnails in pixels. */\n spacing?: number;\n}\n\nexport function galleryOptions_Thumbnails_AlignmentFromJSON(\n object: any\n): GalleryOptions_Thumbnails_Alignment {\n switch (object) {\n case 0:\n case \"TOP\":\n return GalleryOptions_Thumbnails_Alignment.TOP;\n case 1:\n case \"RIGHT\":\n return GalleryOptions_Thumbnails_Alignment.RIGHT;\n case 2:\n case \"BOTTOM\":\n return GalleryOptions_Thumbnails_Alignment.BOTTOM;\n case 3:\n case \"LEFT\":\n return GalleryOptions_Thumbnails_Alignment.LEFT;\n case 4:\n case \"NONE\":\n return GalleryOptions_Thumbnails_Alignment.NONE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return GalleryOptions_Thumbnails_Alignment.UNRECOGNIZED;\n }\n}\n\nexport function galleryOptions_Thumbnails_AlignmentToJSON(\n object: GalleryOptions_Thumbnails_Alignment\n): string {\n switch (object) {\n case GalleryOptions_Thumbnails_Alignment.TOP:\n return \"TOP\";\n case GalleryOptions_Thumbnails_Alignment.RIGHT:\n return \"RIGHT\";\n case GalleryOptions_Thumbnails_Alignment.BOTTOM:\n return \"BOTTOM\";\n case GalleryOptions_Thumbnails_Alignment.LEFT:\n return \"LEFT\";\n case GalleryOptions_Thumbnails_Alignment.NONE:\n return \"NONE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface GalleryData {\n /** Styling for the gallery's container. */\n containerData?: PluginContainerData;\n /** The items in the gallery. */\n items: GalleryData_Item[];\n /** Options for defining the gallery's appearance. */\n options?: GalleryOptions;\n /** Sets whether the gallery's expand button is disabled. Defaults to `false`. */\n disableExpand?: boolean;\n /** Sets whether the gallery's download button is disabled. Defaults to `false`. */\n disableDownload?: boolean;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface GalleryData_Item {\n /** An image item. */\n image?: GalleryData_Item_Image | undefined;\n /** A video item. */\n video?: GalleryData_Item_Video | undefined;\n /** Item title. */\n title?: string;\n /** Item's alternative text. */\n altText?: string;\n}\n\nexport interface GalleryData_Item_Video {\n /** Video file details. */\n media?: Media;\n /** Video thumbnail file details. */\n thumbnail?: Media;\n}\n\nexport interface GalleryData_Item_Image {\n /** Image file details. */\n media?: Media;\n /** Link details for images that are links. */\n link?: Link;\n}\n\nconst baseGalleryOptions: object = {};\n\nexport const GalleryOptions = {\n fromJSON(object: any): GalleryOptions {\n const message = { ...baseGalleryOptions } as GalleryOptions;\n message.layout =\n object.layout !== undefined && object.layout !== null\n ? GalleryOptions_Layout.fromJSON(object.layout)\n : undefined;\n message.item =\n object.item !== undefined && object.item !== null\n ? GalleryOptions_ItemStyle.fromJSON(object.item)\n : undefined;\n message.thumbnails =\n object.thumbnails !== undefined && object.thumbnails !== null\n ? GalleryOptions_Thumbnails.fromJSON(object.thumbnails)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryOptions): unknown {\n const obj: any = {};\n message.layout !== undefined &&\n (obj.layout = message.layout\n ? GalleryOptions_Layout.toJSON(message.layout)\n : undefined);\n message.item !== undefined &&\n (obj.item = message.item\n ? GalleryOptions_ItemStyle.toJSON(message.item)\n : undefined);\n message.thumbnails !== undefined &&\n (obj.thumbnails = message.thumbnails\n ? GalleryOptions_Thumbnails.toJSON(message.thumbnails)\n : undefined);\n return obj;\n },\n};\n\nconst baseGalleryOptions_Layout: object = {\n type: GalleryOptions_Layout_Type.COLLAGE,\n orientation: GalleryOptions_Layout_Orientation.ROWS,\n};\n\nexport const GalleryOptions_Layout = {\n fromJSON(object: any): GalleryOptions_Layout {\n const message = { ...baseGalleryOptions_Layout } as GalleryOptions_Layout;\n message.type =\n object.type !== undefined && object.type !== null\n ? galleryOptions_Layout_TypeFromJSON(object.type)\n : GalleryOptions_Layout_Type.COLLAGE;\n message.horizontalScroll =\n object.horizontalScroll !== undefined && object.horizontalScroll !== null\n ? Boolean(object.horizontalScroll)\n : undefined;\n message.orientation =\n object.orientation !== undefined && object.orientation !== null\n ? galleryOptions_Layout_OrientationFromJSON(object.orientation)\n : GalleryOptions_Layout_Orientation.ROWS;\n message.numberOfColumns =\n object.numberOfColumns !== undefined && object.numberOfColumns !== null\n ? Number(object.numberOfColumns)\n : undefined;\n message.mobileNumberOfColumns =\n object.mobileNumberOfColumns !== undefined &&\n object.mobileNumberOfColumns !== null\n ? Number(object.mobileNumberOfColumns)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryOptions_Layout): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = galleryOptions_Layout_TypeToJSON(message.type));\n message.horizontalScroll !== undefined &&\n (obj.horizontalScroll = message.horizontalScroll);\n message.orientation !== undefined &&\n (obj.orientation = galleryOptions_Layout_OrientationToJSON(\n message.orientation\n ));\n message.numberOfColumns !== undefined &&\n (obj.numberOfColumns = message.numberOfColumns);\n message.mobileNumberOfColumns !== undefined &&\n (obj.mobileNumberOfColumns = message.mobileNumberOfColumns);\n return obj;\n },\n};\n\nconst baseGalleryOptions_ItemStyle: object = {\n crop: GalleryOptions_ItemStyle_Crop.FILL,\n};\n\nexport const GalleryOptions_ItemStyle = {\n fromJSON(object: any): GalleryOptions_ItemStyle {\n const message = {\n ...baseGalleryOptions_ItemStyle,\n } as GalleryOptions_ItemStyle;\n message.targetSize =\n object.targetSize !== undefined && object.targetSize !== null\n ? Number(object.targetSize)\n : undefined;\n message.ratio =\n object.ratio !== undefined && object.ratio !== null\n ? Number(object.ratio)\n : undefined;\n message.crop =\n object.crop !== undefined && object.crop !== null\n ? galleryOptions_ItemStyle_CropFromJSON(object.crop)\n : GalleryOptions_ItemStyle_Crop.FILL;\n message.spacing =\n object.spacing !== undefined && object.spacing !== null\n ? Number(object.spacing)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryOptions_ItemStyle): unknown {\n const obj: any = {};\n message.targetSize !== undefined && (obj.targetSize = message.targetSize);\n message.ratio !== undefined && (obj.ratio = message.ratio);\n message.crop !== undefined &&\n (obj.crop = galleryOptions_ItemStyle_CropToJSON(message.crop));\n message.spacing !== undefined && (obj.spacing = message.spacing);\n return obj;\n },\n};\n\nconst baseGalleryOptions_Thumbnails: object = {\n placement: GalleryOptions_Thumbnails_Alignment.TOP,\n};\n\nexport const GalleryOptions_Thumbnails = {\n fromJSON(object: any): GalleryOptions_Thumbnails {\n const message = {\n ...baseGalleryOptions_Thumbnails,\n } as GalleryOptions_Thumbnails;\n message.placement =\n object.placement !== undefined && object.placement !== null\n ? galleryOptions_Thumbnails_AlignmentFromJSON(object.placement)\n : GalleryOptions_Thumbnails_Alignment.TOP;\n message.spacing =\n object.spacing !== undefined && object.spacing !== null\n ? Number(object.spacing)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryOptions_Thumbnails): unknown {\n const obj: any = {};\n message.placement !== undefined &&\n (obj.placement = galleryOptions_Thumbnails_AlignmentToJSON(\n message.placement\n ));\n message.spacing !== undefined && (obj.spacing = message.spacing);\n return obj;\n },\n};\n\nconst baseGalleryData: object = {};\n\nexport const GalleryData = {\n fromJSON(object: any): GalleryData {\n const message = { ...baseGalleryData } as GalleryData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.items = (object.items ?? []).map((e: any) =>\n GalleryData_Item.fromJSON(e)\n );\n message.options =\n object.options !== undefined && object.options !== null\n ? GalleryOptions.fromJSON(object.options)\n : undefined;\n message.disableExpand =\n object.disableExpand !== undefined && object.disableExpand !== null\n ? Boolean(object.disableExpand)\n : undefined;\n message.disableDownload =\n object.disableDownload !== undefined && object.disableDownload !== null\n ? Boolean(object.disableDownload)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n if (message.items) {\n obj.items = message.items.map((e) =>\n e ? GalleryData_Item.toJSON(e) : undefined\n );\n } else {\n obj.items = [];\n }\n message.options !== undefined &&\n (obj.options = message.options\n ? GalleryOptions.toJSON(message.options)\n : undefined);\n message.disableExpand !== undefined &&\n (obj.disableExpand = message.disableExpand);\n message.disableDownload !== undefined &&\n (obj.disableDownload = message.disableDownload);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseGalleryData_Item: object = {};\n\nexport const GalleryData_Item = {\n fromJSON(object: any): GalleryData_Item {\n const message = { ...baseGalleryData_Item } as GalleryData_Item;\n message.image =\n object.image !== undefined && object.image !== null\n ? GalleryData_Item_Image.fromJSON(object.image)\n : undefined;\n message.video =\n object.video !== undefined && object.video !== null\n ? GalleryData_Item_Video.fromJSON(object.video)\n : undefined;\n message.title =\n object.title !== undefined && object.title !== null\n ? String(object.title)\n : undefined;\n message.altText =\n object.altText !== undefined && object.altText !== null\n ? String(object.altText)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryData_Item): unknown {\n const obj: any = {};\n message.image !== undefined &&\n (obj.image = message.image\n ? GalleryData_Item_Image.toJSON(message.image)\n : undefined);\n message.video !== undefined &&\n (obj.video = message.video\n ? GalleryData_Item_Video.toJSON(message.video)\n : undefined);\n message.title !== undefined && (obj.title = message.title);\n message.altText !== undefined && (obj.altText = message.altText);\n return obj;\n },\n};\n\nconst baseGalleryData_Item_Video: object = {};\n\nexport const GalleryData_Item_Video = {\n fromJSON(object: any): GalleryData_Item_Video {\n const message = { ...baseGalleryData_Item_Video } as GalleryData_Item_Video;\n message.media =\n object.media !== undefined && object.media !== null\n ? Media.fromJSON(object.media)\n : undefined;\n message.thumbnail =\n object.thumbnail !== undefined && object.thumbnail !== null\n ? Media.fromJSON(object.thumbnail)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryData_Item_Video): unknown {\n const obj: any = {};\n message.media !== undefined &&\n (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n message.thumbnail !== undefined &&\n (obj.thumbnail = message.thumbnail\n ? Media.toJSON(message.thumbnail)\n : undefined);\n return obj;\n },\n};\n\nconst baseGalleryData_Item_Image: object = {};\n\nexport const GalleryData_Item_Image = {\n fromJSON(object: any): GalleryData_Item_Image {\n const message = { ...baseGalleryData_Item_Image } as GalleryData_Item_Image;\n message.media =\n object.media !== undefined && object.media !== null\n ? Media.fromJSON(object.media)\n : undefined;\n message.link =\n object.link !== undefined && object.link !== null\n ? Link.fromJSON(object.link)\n : undefined;\n return message;\n },\n\n toJSON(message: GalleryData_Item_Image): unknown {\n const obj: any = {};\n message.media !== undefined &&\n (obj.media = message.media ? Media.toJSON(message.media) : undefined);\n message.link !== undefined &&\n (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n return obj;\n },\n};\n","export enum GIFData_GIFType {\n NORMAL = \"NORMAL\",\n STICKER = \"STICKER\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\nimport { Animation } from './animation.js';\n\nimport { GIFData_GIFType } from './plugin_gif.enums.js';\n\nexport interface GIFData {\n /** Styling for the GIF's container. */\n containerData?: PluginContainerData;\n /** The source of the full size GIF. */\n original?: GIF;\n /** The source of the downsized GIF. */\n downsized?: GIF;\n /** Height in pixels. */\n height: number;\n /** Width in pixels. */\n width: number;\n /** Type of GIF (Sticker or NORMAL). Defaults to `NORMAL`. */\n gifType: GIFData_GIFType;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function gIFData_GIFTypeFromJSON(object: any): GIFData_GIFType {\n switch (object) {\n case 0:\n case \"NORMAL\":\n return GIFData_GIFType.NORMAL;\n case 1:\n case \"STICKER\":\n return GIFData_GIFType.STICKER;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return GIFData_GIFType.UNRECOGNIZED;\n }\n}\n\nexport function gIFData_GIFTypeToJSON(object: GIFData_GIFType): string {\n switch (object) {\n case GIFData_GIFType.NORMAL:\n return \"NORMAL\";\n case GIFData_GIFType.STICKER:\n return \"STICKER\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface GIF {\n /** GIF format URL. */\n gif?: string;\n /** MP4 format URL. */\n mp4?: string;\n /** Thumbnail URL. */\n still?: string;\n}\n\nconst baseGIFData: object = {\n height: 0,\n width: 0,\n gifType: GIFData_GIFType.NORMAL,\n};\n\nexport const GIFData = {\n fromJSON(object: any): GIFData {\n const message = { ...baseGIFData } as GIFData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.original =\n object.original !== undefined && object.original !== null\n ? GIF.fromJSON(object.original)\n : undefined;\n message.downsized =\n object.downsized !== undefined && object.downsized !== null\n ? GIF.fromJSON(object.downsized)\n : undefined;\n message.height =\n object.height !== undefined && object.height !== null\n ? Number(object.height)\n : 0;\n message.width =\n object.width !== undefined && object.width !== null\n ? Number(object.width)\n : 0;\n message.gifType =\n object.gifType !== undefined && object.gifType !== null\n ? gIFData_GIFTypeFromJSON(object.gifType)\n : GIFData_GIFType.NORMAL;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: GIFData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.original !== undefined &&\n (obj.original = message.original\n ? GIF.toJSON(message.original)\n : undefined);\n message.downsized !== undefined &&\n (obj.downsized = message.downsized\n ? GIF.toJSON(message.downsized)\n : undefined);\n message.height !== undefined && (obj.height = Math.round(message.height));\n message.width !== undefined && (obj.width = Math.round(message.width));\n message.gifType !== undefined &&\n (obj.gifType = gIFData_GIFTypeToJSON(message.gifType));\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseGIF: object = {};\n\nexport const GIF = {\n fromJSON(object: any): GIF {\n const message = { ...baseGIF } as GIF;\n message.gif =\n object.gif !== undefined && object.gif !== null\n ? String(object.gif)\n : undefined;\n message.mp4 =\n object.mp4 !== undefined && object.mp4 !== null\n ? String(object.mp4)\n : undefined;\n message.still =\n object.still !== undefined && object.still !== null\n ? String(object.still)\n : undefined;\n return message;\n },\n\n toJSON(message: GIF): unknown {\n const obj: any = {};\n message.gif !== undefined && (obj.gif = message.gif);\n message.mp4 !== undefined && (obj.mp4 = message.mp4);\n message.still !== undefined && (obj.still = message.still);\n return obj;\n },\n};\n","export enum HTMLData_Source {\n HTML = \"HTML\",\n ADSENSE = \"ADSENSE\",\n AI = \"AI\",\n AI_WIDGET = \"AI_WIDGET\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\nimport { Animation } from './animation.js';\n\nimport { HTMLData_Source } from './plugin_html.enums.js';\n\nexport interface HTMLData {\n /** Styling for the HTML node's container. Height property is irrelevant for HTML embeds when autoHeight is set to `true`. */\n containerData?: PluginContainerData;\n /** The URL for the HTML code for the node. */\n url: string | undefined;\n /** The HTML code for the node. */\n html: string | undefined;\n /**\n * Whether this is an AdSense element. Use `source` instead.\n *\n * @deprecated\n */\n isAdsense?: boolean;\n /** The WixelWidget ID for AI_WIDGET source nodes. */\n widgetId: string | undefined;\n /** The type of HTML code. */\n source: HTMLData_Source;\n /** If container height is aligned with its content height. Defaults to `true`. */\n autoHeight?: boolean;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function hTMLData_SourceFromJSON(object: any): HTMLData_Source {\n switch (object) {\n case 0:\n case \"HTML\":\n return HTMLData_Source.HTML;\n case 1:\n case \"ADSENSE\":\n return HTMLData_Source.ADSENSE;\n case 2:\n case \"AI\":\n return HTMLData_Source.AI;\n case 3:\n case \"AI_WIDGET\":\n return HTMLData_Source.AI_WIDGET;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return HTMLData_Source.UNRECOGNIZED;\n }\n}\n\nexport function hTMLData_SourceToJSON(object: HTMLData_Source): string {\n switch (object) {\n case HTMLData_Source.HTML:\n return \"HTML\";\n case HTMLData_Source.ADSENSE:\n return \"ADSENSE\";\n case HTMLData_Source.AI:\n return \"AI\";\n case HTMLData_Source.AI_WIDGET:\n return \"AI_WIDGET\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseHTMLData: object = { source: HTMLData_Source.HTML };\n\nexport const HTMLData = {\n fromJSON(object: any): HTMLData {\n const message = { ...baseHTMLData } as HTMLData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.url =\n object.url !== undefined && object.url !== null\n ? String(object.url)\n : undefined;\n message.html =\n object.html !== undefined && object.html !== null\n ? String(object.html)\n : undefined;\n message.isAdsense =\n object.isAdsense !== undefined && object.isAdsense !== null\n ? Boolean(object.isAdsense)\n : undefined;\n message.widgetId =\n object.widgetId !== undefined && object.widgetId !== null\n ? String(object.widgetId)\n : undefined;\n message.source =\n object.source !== undefined && object.source !== null\n ? hTMLData_SourceFromJSON(object.source)\n : HTMLData_Source.HTML;\n message.autoHeight =\n object.autoHeight !== undefined && object.autoHeight !== null\n ? Boolean(object.autoHeight)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: HTMLData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.url !== undefined && (obj.url = message.url);\n message.html !== undefined && (obj.html = message.html);\n message.isAdsense !== undefined && (obj.isAdsense = message.isAdsense);\n message.widgetId !== undefined && (obj.widgetId = message.widgetId);\n message.source !== undefined &&\n (obj.source = hTMLData_SourceToJSON(message.source));\n message.autoHeight !== undefined && (obj.autoHeight = message.autoHeight);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media, Link } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface ImageData {\n /** Styling for the image's container. */\n containerData?: PluginContainerData;\n /** Image file details. */\n image?: Media;\n /** Link details for images that are links. */\n link?: Link;\n /** Sets whether the image expands to full screen when clicked. Defaults to `false`. */\n disableExpand?: boolean;\n /** Image's alternative text. */\n altText?: string;\n /**\n * Deprecated: use Caption node instead.\n *\n * @deprecated\n */\n caption?: string;\n /** Sets whether the image's download button is disabled. Defaults to `false`. */\n disableDownload?: boolean;\n /** Sets whether the image is decorative and does not need an explanation. Defaults to `false`. */\n decorative?: boolean;\n /** Styling for the image. */\n styles?: ImageData_Styles;\n /** Non-destructive crop rectangle, expressed as fractions (0-1) of the original image. When omitted, the full image is shown. */\n crop?: ImageData_Crop;\n /** Optional shape mask applied to the visible crop. Supported values: CIRCLE, OVAL, STAR, PENTAGON, HEXAGON, TRIANGLE, HEART, RHOMBUS, FLUID, WINDOW. */\n cropShape?: string;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface ImageData_Styles {\n /** Border attributes. */\n border?: ImageData_Styles_Border;\n}\n\nexport interface ImageData_Styles_Border {\n /** Border width in pixels. */\n width?: number;\n /** Border color as a hexadecimal value. */\n color?: string;\n /** Border radius in pixels. */\n radius?: number;\n}\n\nexport interface ImageData_Crop {\n /** Left edge of the crop, as a fraction (0-1) of the original image width. */\n x?: number;\n /** Top edge of the crop, as a fraction (0-1) of the original image height. */\n y?: number;\n /** Visible width of the crop, as a fraction (0-1) of the original image width. */\n width?: number;\n /** Visible height of the crop, as a fraction (0-1) of the original image height. */\n height?: number;\n}\n\nconst baseImageData: object = {};\n\nexport const ImageData = {\n fromJSON(object: any): ImageData {\n const message = { ...baseImageData } as ImageData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.image =\n object.image !== undefined && object.image !== null\n ? Media.fromJSON(object.image)\n : undefined;\n message.link =\n object.link !== undefined && object.link !== null\n ? Link.fromJSON(object.link)\n : undefined;\n message.disableExpand =\n object.disableExpand !== undefined && object.disableExpand !== null\n ? Boolean(object.disableExpand)\n : undefined;\n message.altText =\n object.altText !== undefined && object.altText !== null\n ? String(object.altText)\n : undefined;\n message.caption =\n object.caption !== undefined && object.caption !== null\n ? String(object.caption)\n : undefined;\n message.disableDownload =\n object.disableDownload !== undefined && object.disableDownload !== null\n ? Boolean(object.disableDownload)\n : undefined;\n message.decorative =\n object.decorative !== undefined && object.decorative !== null\n ? Boolean(object.decorative)\n : undefined;\n message.styles =\n object.styles !== undefined && object.styles !== null\n ? ImageData_Styles.fromJSON(object.styles)\n : undefined;\n message.crop =\n object.crop !== undefined && object.crop !== null\n ? ImageData_Crop.fromJSON(object.crop)\n : undefined;\n message.cropShape =\n object.cropShape !== undefined && object.cropShape !== null\n ? String(object.cropShape)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: ImageData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.image !== undefined &&\n (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n message.link !== undefined &&\n (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n message.disableExpand !== undefined &&\n (obj.disableExpand = message.disableExpand);\n message.altText !== undefined && (obj.altText = message.altText);\n message.caption !== undefined && (obj.caption = message.caption);\n message.disableDownload !== undefined &&\n (obj.disableDownload = message.disableDownload);\n message.decorative !== undefined && (obj.decorative = message.decorative);\n message.styles !== undefined &&\n (obj.styles = message.styles\n ? ImageData_Styles.toJSON(message.styles)\n : undefined);\n message.crop !== undefined &&\n (obj.crop = message.crop\n ? ImageData_Crop.toJSON(message.crop)\n : undefined);\n message.cropShape !== undefined && (obj.cropShape = message.cropShape);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseImageData_Styles: object = {};\n\nexport const ImageData_Styles = {\n fromJSON(object: any): ImageData_Styles {\n const message = { ...baseImageData_Styles } as ImageData_Styles;\n message.border =\n object.border !== undefined && object.border !== null\n ? ImageData_Styles_Border.fromJSON(object.border)\n : undefined;\n return message;\n },\n\n toJSON(message: ImageData_Styles): unknown {\n const obj: any = {};\n message.border !== undefined &&\n (obj.border = message.border\n ? ImageData_Styles_Border.toJSON(message.border)\n : undefined);\n return obj;\n },\n};\n\nconst baseImageData_Styles_Border: object = {};\n\nexport const ImageData_Styles_Border = {\n fromJSON(object: any): ImageData_Styles_Border {\n const message = {\n ...baseImageData_Styles_Border,\n } as ImageData_Styles_Border;\n message.width =\n object.width !== undefined && object.width !== null\n ? Number(object.width)\n : undefined;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.radius =\n object.radius !== undefined && object.radius !== null\n ? Number(object.radius)\n : undefined;\n return message;\n },\n\n toJSON(message: ImageData_Styles_Border): unknown {\n const obj: any = {};\n message.width !== undefined && (obj.width = message.width);\n message.color !== undefined && (obj.color = message.color);\n message.radius !== undefined && (obj.radius = message.radius);\n return obj;\n },\n};\n\nconst baseImageData_Crop: object = {};\n\nexport const ImageData_Crop = {\n fromJSON(object: any): ImageData_Crop {\n const message = { ...baseImageData_Crop } as ImageData_Crop;\n message.x =\n object.x !== undefined && object.x !== null\n ? Number(object.x)\n : undefined;\n message.y =\n object.y !== undefined && object.y !== null\n ? Number(object.y)\n : undefined;\n message.width =\n object.width !== undefined && object.width !== null\n ? Number(object.width)\n : undefined;\n message.height =\n object.height !== undefined && object.height !== null\n ? Number(object.height)\n : undefined;\n return message;\n },\n\n toJSON(message: ImageData_Crop): unknown {\n const obj: any = {};\n message.x !== undefined && (obj.x = message.x);\n message.y !== undefined && (obj.y = message.y);\n message.width !== undefined && (obj.width = message.width);\n message.height !== undefined && (obj.height = message.height);\n return obj;\n },\n};\n","export enum LinkPreviewData_Styles_Position {\n /** START - Thumbnail positioned at the start (left in LTR layouts, right in RTL layouts) */\n START = \"START\",\n /** END - Thumbnail positioned at the end (right in LTR layouts, left in RTL layouts) */\n END = \"END\",\n /** TOP - Thumbnail positioned at the top */\n TOP = \"TOP\",\n /** HIDDEN - Thumbnail hidden and not displayed */\n HIDDEN = \"HIDDEN\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Link } from './common.js';\nimport { Animation } from './animation.js';\n\nimport { LinkPreviewData_Styles_Position } from './plugin_link_preview.enums.js';\n\nexport interface LinkPreviewData {\n /** Styling for the link preview's container. */\n containerData?: PluginContainerData;\n /** Link details. */\n link?: Link;\n /** Preview title. */\n title?: string;\n /** Preview thumbnail URL. */\n thumbnailUrl?: string;\n /** Preview description. */\n description?: string;\n /** The preview content as HTML. */\n html?: string;\n /** Styling for the link preview. */\n styles?: LinkPreviewData_Styles;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface LinkPreviewData_Styles {\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Title color as a hexadecimal value. */\n titleColor?: string;\n /** Subtitle color as a hexadecimal value. */\n subtitleColor?: string;\n /** Link color as a hexadecimal value. */\n linkColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Position of thumbnail. Defaults to `START`. */\n thumbnailPosition: LinkPreviewData_Styles_Position;\n}\n\nexport function linkPreviewData_Styles_PositionFromJSON(\n object: any\n): LinkPreviewData_Styles_Position {\n switch (object) {\n case 0:\n case \"START\":\n return LinkPreviewData_Styles_Position.START;\n case 1:\n case \"END\":\n return LinkPreviewData_Styles_Position.END;\n case 2:\n case \"TOP\":\n return LinkPreviewData_Styles_Position.TOP;\n case 3:\n case \"HIDDEN\":\n return LinkPreviewData_Styles_Position.HIDDEN;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return LinkPreviewData_Styles_Position.UNRECOGNIZED;\n }\n}\n\nexport function linkPreviewData_Styles_PositionToJSON(\n object: LinkPreviewData_Styles_Position\n): string {\n switch (object) {\n case LinkPreviewData_Styles_Position.START:\n return \"START\";\n case LinkPreviewData_Styles_Position.END:\n return \"END\";\n case LinkPreviewData_Styles_Position.TOP:\n return \"TOP\";\n case LinkPreviewData_Styles_Position.HIDDEN:\n return \"HIDDEN\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseLinkPreviewData: object = {};\n\nexport const LinkPreviewData = {\n fromJSON(object: any): LinkPreviewData {\n const message = { ...baseLinkPreviewData } as LinkPreviewData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.link =\n object.link !== undefined && object.link !== null\n ? Link.fromJSON(object.link)\n : undefined;\n message.title =\n object.title !== undefined && object.title !== null\n ? String(object.title)\n : undefined;\n message.thumbnailUrl =\n object.thumbnailUrl !== undefined && object.thumbnailUrl !== null\n ? String(object.thumbnailUrl)\n : undefined;\n message.description =\n object.description !== undefined && object.description !== null\n ? String(object.description)\n : undefined;\n message.html =\n object.html !== undefined && object.html !== null\n ? String(object.html)\n : undefined;\n message.styles =\n object.styles !== undefined && object.styles !== null\n ? LinkPreviewData_Styles.fromJSON(object.styles)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: LinkPreviewData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.link !== undefined &&\n (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n message.title !== undefined && (obj.title = message.title);\n message.thumbnailUrl !== undefined &&\n (obj.thumbnailUrl = message.thumbnailUrl);\n message.description !== undefined &&\n (obj.description = message.description);\n message.html !== undefined && (obj.html = message.html);\n message.styles !== undefined &&\n (obj.styles = message.styles\n ? LinkPreviewData_Styles.toJSON(message.styles)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseLinkPreviewData_Styles: object = {\n thumbnailPosition: LinkPreviewData_Styles_Position.START,\n};\n\nexport const LinkPreviewData_Styles = {\n fromJSON(object: any): LinkPreviewData_Styles {\n const message = { ...baseLinkPreviewData_Styles } as LinkPreviewData_Styles;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.titleColor =\n object.titleColor !== undefined && object.titleColor !== null\n ? String(object.titleColor)\n : undefined;\n message.subtitleColor =\n object.subtitleColor !== undefined && object.subtitleColor !== null\n ? String(object.subtitleColor)\n : undefined;\n message.linkColor =\n object.linkColor !== undefined && object.linkColor !== null\n ? String(object.linkColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.thumbnailPosition =\n object.thumbnailPosition !== undefined &&\n object.thumbnailPosition !== null\n ? linkPreviewData_Styles_PositionFromJSON(object.thumbnailPosition)\n : LinkPreviewData_Styles_Position.START;\n return message;\n },\n\n toJSON(message: LinkPreviewData_Styles): unknown {\n const obj: any = {};\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.titleColor !== undefined && (obj.titleColor = message.titleColor);\n message.subtitleColor !== undefined &&\n (obj.subtitleColor = message.subtitleColor);\n message.linkColor !== undefined && (obj.linkColor = message.linkColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.thumbnailPosition !== undefined &&\n (obj.thumbnailPosition = linkPreviewData_Styles_PositionToJSON(\n message.thumbnailPosition\n ));\n return obj;\n },\n};\n","/**\n * flynt-disable field-lower-snake-case\n * flynt-disable missing-string-validations\n * MAP PLUGIN IS DEPRECATED\n */\n\nexport enum MapType {\n /** ROADMAP - Roadmap map type */\n ROADMAP = \"ROADMAP\",\n /** SATELITE - Satellite map type */\n SATELITE = \"SATELITE\",\n /** HYBRID - Hybrid map type */\n HYBRID = \"HYBRID\",\n /** TERRAIN - Terrain map type */\n TERRAIN = \"TERRAIN\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\n\nimport { MapType } from './plugin_map.enums.js';\n\nexport function mapTypeFromJSON(object: any): MapType {\n switch (object) {\n case 0:\n case \"ROADMAP\":\n return MapType.ROADMAP;\n case 1:\n case \"SATELITE\":\n return MapType.SATELITE;\n case 2:\n case \"HYBRID\":\n return MapType.HYBRID;\n case 3:\n case \"TERRAIN\":\n return MapType.TERRAIN;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return MapType.UNRECOGNIZED;\n }\n}\n\nexport function mapTypeToJSON(object: MapType): string {\n switch (object) {\n case MapType.ROADMAP:\n return \"ROADMAP\";\n case MapType.SATELITE:\n return \"SATELITE\";\n case MapType.HYBRID:\n return \"HYBRID\";\n case MapType.TERRAIN:\n return \"TERRAIN\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface MapData {\n /** Styling for the map's container. */\n containerData?: PluginContainerData;\n /** Map settings. */\n mapSettings?: MapSettings;\n}\n\nexport interface MapSettings {\n /** flynt-disable unannotated-pii-fields */\n address?: string;\n /** Sets whether the map is draggable. */\n draggable?: boolean;\n /** Sets whether the location marker is visible. */\n marker?: boolean;\n /** Sets whether street view control is enabled. */\n streetViewControl?: boolean;\n /** Sets whether zoom control is enabled. */\n zoomControl?: boolean;\n /** Location latitude. */\n lat?: number;\n /** Location longitude. */\n lng?: number;\n /** Location name. */\n locationName?: string;\n /** Sets whether view mode control is enabled. */\n viewModeControl?: boolean;\n /** Initial zoom value. */\n initialZoom?: number;\n /** Map type. `HYBRID` is a combination of the `ROADMAP` and `SATELLITE` map types. */\n mapType: MapType;\n}\n\nconst baseMapData: object = {};\n\nexport const MapData = {\n fromJSON(object: any): MapData {\n const message = { ...baseMapData } as MapData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.mapSettings =\n object.mapSettings !== undefined && object.mapSettings !== null\n ? MapSettings.fromJSON(object.mapSettings)\n : undefined;\n return message;\n },\n\n toJSON(message: MapData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.mapSettings !== undefined &&\n (obj.mapSettings = message.mapSettings\n ? MapSettings.toJSON(message.mapSettings)\n : undefined);\n return obj;\n },\n};\n\nconst baseMapSettings: object = { mapType: MapType.ROADMAP };\n\nexport const MapSettings = {\n fromJSON(object: any): MapSettings {\n const message = { ...baseMapSettings } as MapSettings;\n message.address =\n object.address !== undefined && object.address !== null\n ? String(object.address)\n : undefined;\n message.draggable =\n object.draggable !== undefined && object.draggable !== null\n ? Boolean(object.draggable)\n : undefined;\n message.marker =\n object.marker !== undefined && object.marker !== null\n ? Boolean(object.marker)\n : undefined;\n message.streetViewControl =\n object.streetViewControl !== undefined &&\n object.streetViewControl !== null\n ? Boolean(object.streetViewControl)\n : undefined;\n message.zoomControl =\n object.zoomControl !== undefined && object.zoomControl !== null\n ? Boolean(object.zoomControl)\n : undefined;\n message.lat =\n object.lat !== undefined && object.lat !== null\n ? Number(object.lat)\n : undefined;\n message.lng =\n object.lng !== undefined && object.lng !== null\n ? Number(object.lng)\n : undefined;\n message.locationName =\n object.locationName !== undefined && object.locationName !== null\n ? String(object.locationName)\n : undefined;\n message.viewModeControl =\n object.viewModeControl !== undefined && object.viewModeControl !== null\n ? Boolean(object.viewModeControl)\n : undefined;\n message.initialZoom =\n object.initialZoom !== undefined && object.initialZoom !== null\n ? Number(object.initialZoom)\n : undefined;\n message.mapType =\n object.mapType !== undefined && object.mapType !== null\n ? mapTypeFromJSON(object.mapType)\n : MapType.ROADMAP;\n return message;\n },\n\n toJSON(message: MapSettings): unknown {\n const obj: any = {};\n message.address !== undefined && (obj.address = message.address);\n message.draggable !== undefined && (obj.draggable = message.draggable);\n message.marker !== undefined && (obj.marker = message.marker);\n message.streetViewControl !== undefined &&\n (obj.streetViewControl = message.streetViewControl);\n message.zoomControl !== undefined &&\n (obj.zoomControl = message.zoomControl);\n message.lat !== undefined && (obj.lat = message.lat);\n message.lng !== undefined && (obj.lng = message.lng);\n message.locationName !== undefined &&\n (obj.locationName = message.locationName);\n message.viewModeControl !== undefined &&\n (obj.viewModeControl = message.viewModeControl);\n message.initialZoom !== undefined &&\n (obj.initialZoom = message.initialZoom);\n message.mapType !== undefined &&\n (obj.mapType = mapTypeToJSON(message.mapType));\n return obj;\n },\n};\n","export enum PollData_Poll_Settings_Permissions_ViewRole {\n /** CREATOR - Only Poll creator can view the results */\n CREATOR = \"CREATOR\",\n /** VOTERS - Anyone who voted can see the results */\n VOTERS = \"VOTERS\",\n /** EVERYONE - Anyone can see the results, even if one didn't vote */\n EVERYONE = \"EVERYONE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Poll_Settings_Permissions_VoteRole {\n /** SITE_MEMBERS - Logged in member */\n SITE_MEMBERS = \"SITE_MEMBERS\",\n /** ALL - Anyone */\n ALL = \"ALL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Layout_PollLayout_Type {\n /** LIST - List */\n LIST = \"LIST\",\n /** GRID - Grid */\n GRID = \"GRID\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Layout_PollLayout_Direction {\n /** LTR - Left-to-right */\n LTR = \"LTR\",\n /** RTL - Right-to-left */\n RTL = \"RTL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum PollData_Design_PollDesign_Background_Type {\n /** COLOR - Color background type */\n COLOR = \"COLOR\",\n /** IMAGE - Image background type */\n IMAGE = \"IMAGE\",\n /** GRADIENT - Gradiant background type */\n GRADIENT = \"GRADIENT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { PluginContainerData, Media } from './common.js';\nimport { Animation } from './animation.js';\n\nimport {\n PollData_Poll_Settings_Permissions_ViewRole,\n PollData_Poll_Settings_Permissions_VoteRole,\n PollData_Layout_PollLayout_Type,\n PollData_Layout_PollLayout_Direction,\n PollData_Design_PollDesign_Background_Type,\n} from './plugin_poll.enums.js';\n\nexport interface PollData {\n /** Styling for the poll's container. */\n containerData?: PluginContainerData;\n /** Poll data. */\n poll?: PollData_Poll;\n /** Layout settings for the poll and voting options. */\n layout?: PollData_Layout;\n /** Styling for the poll and voting options. */\n design?: PollData_Design;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface PollData_Poll {\n /** Poll ID. */\n id?: string;\n /** Poll title. */\n title?: string;\n /** Poll creator ID. */\n creatorId?: string;\n /** Main poll image. */\n image?: Media;\n /** Voting options. */\n options: PollData_Poll_Option[];\n /** The poll's permissions and display settings. */\n settings?: PollData_Poll_Settings;\n}\n\nexport interface PollData_Poll_Option {\n /** Option ID. */\n id?: string;\n /** Option title. */\n title?: string;\n /** The image displayed with the option. */\n image?: Media;\n}\n\nexport interface PollData_Poll_Settings {\n /** Permissions settings for voting. */\n permissions?: PollData_Poll_Settings_Permissions;\n /** Sets whether voters are displayed in the vote results. Defaults to `true`. */\n showVoters?: boolean;\n /** Sets whether the vote count is displayed. Defaults to `true`. */\n showVotesCount?: boolean;\n}\n\nexport interface PollData_Poll_Settings_Permissions {\n /** Sets who can view the poll results. */\n view: PollData_Poll_Settings_Permissions_ViewRole;\n /** Sets who can vote. */\n vote: PollData_Poll_Settings_Permissions_VoteRole;\n /** Sets whether one voter can vote multiple times. Defaults to `false`. */\n allowMultipleVotes?: boolean;\n}\n\nexport function pollData_Poll_Settings_Permissions_ViewRoleFromJSON(\n object: any\n): PollData_Poll_Settings_Permissions_ViewRole {\n switch (object) {\n case 0:\n case \"CREATOR\":\n return PollData_Poll_Settings_Permissions_ViewRole.CREATOR;\n case 1:\n case \"VOTERS\":\n return PollData_Poll_Settings_Permissions_ViewRole.VOTERS;\n case 2:\n case \"EVERYONE\":\n return PollData_Poll_Settings_Permissions_ViewRole.EVERYONE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PollData_Poll_Settings_Permissions_ViewRole.UNRECOGNIZED;\n }\n}\n\nexport function pollData_Poll_Settings_Permissions_ViewRoleToJSON(\n object: PollData_Poll_Settings_Permissions_ViewRole\n): string {\n switch (object) {\n case PollData_Poll_Settings_Permissions_ViewRole.CREATOR:\n return \"CREATOR\";\n case PollData_Poll_Settings_Permissions_ViewRole.VOTERS:\n return \"VOTERS\";\n case PollData_Poll_Settings_Permissions_ViewRole.EVERYONE:\n return \"EVERYONE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function pollData_Poll_Settings_Permissions_VoteRoleFromJSON(\n object: any\n): PollData_Poll_Settings_Permissions_VoteRole {\n switch (object) {\n case 0:\n case \"SITE_MEMBERS\":\n return PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS;\n case 1:\n case \"ALL\":\n return PollData_Poll_Settings_Permissions_VoteRole.ALL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PollData_Poll_Settings_Permissions_VoteRole.UNRECOGNIZED;\n }\n}\n\nexport function pollData_Poll_Settings_Permissions_VoteRoleToJSON(\n object: PollData_Poll_Settings_Permissions_VoteRole\n): string {\n switch (object) {\n case PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS:\n return \"SITE_MEMBERS\";\n case PollData_Poll_Settings_Permissions_VoteRole.ALL:\n return \"ALL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface PollData_Layout {\n /** Poll layout settings. */\n poll?: PollData_Layout_PollLayout;\n /** Voting otpions layout settings. */\n options?: PollData_Layout_OptionLayout;\n}\n\nexport interface PollData_Layout_PollLayout {\n /** The layout for displaying the voting options. */\n type: PollData_Layout_PollLayout_Type;\n /** The direction of the text displayed in the voting options. Text can be displayed either right-to-left or left-to-right. */\n direction: PollData_Layout_PollLayout_Direction;\n /** Sets whether to display the main poll image. Defaults to `false`. */\n enableImage?: boolean;\n}\n\nexport function pollData_Layout_PollLayout_TypeFromJSON(\n object: any\n): PollData_Layout_PollLayout_Type {\n switch (object) {\n case 0:\n case \"LIST\":\n return PollData_Layout_PollLayout_Type.LIST;\n case 1:\n case \"GRID\":\n return PollData_Layout_PollLayout_Type.GRID;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PollData_Layout_PollLayout_Type.UNRECOGNIZED;\n }\n}\n\nexport function pollData_Layout_PollLayout_TypeToJSON(\n object: PollData_Layout_PollLayout_Type\n): string {\n switch (object) {\n case PollData_Layout_PollLayout_Type.LIST:\n return \"LIST\";\n case PollData_Layout_PollLayout_Type.GRID:\n return \"GRID\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function pollData_Layout_PollLayout_DirectionFromJSON(\n object: any\n): PollData_Layout_PollLayout_Direction {\n switch (object) {\n case 0:\n case \"LTR\":\n return PollData_Layout_PollLayout_Direction.LTR;\n case 1:\n case \"RTL\":\n return PollData_Layout_PollLayout_Direction.RTL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PollData_Layout_PollLayout_Direction.UNRECOGNIZED;\n }\n}\n\nexport function pollData_Layout_PollLayout_DirectionToJSON(\n object: PollData_Layout_PollLayout_Direction\n): string {\n switch (object) {\n case PollData_Layout_PollLayout_Direction.LTR:\n return \"LTR\";\n case PollData_Layout_PollLayout_Direction.RTL:\n return \"RTL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface PollData_Layout_OptionLayout {\n /** Sets whether to display option images. Defaults to `false`. */\n enableImage?: boolean;\n}\n\nexport interface PollData_Design {\n /** Styling for the poll. */\n poll?: PollData_Design_PollDesign;\n /** Styling for voting options. */\n options?: PollData_Design_OptionDesign;\n}\n\nexport interface PollData_Design_PollDesign {\n /** Background styling. */\n background?: PollData_Design_PollDesign_Background;\n /** Border radius in pixels. */\n borderRadius?: number;\n}\n\nexport interface PollData_Design_PollDesign_Background {\n /** Background type. For each option, include the relevant details. */\n type: PollData_Design_PollDesign_Background_Type;\n /** The background color as a hexademical value. */\n color?: string;\n /** An image to use for the background. */\n image?: Media | undefined;\n /** Details for a gradient background. */\n gradient?: PollData_Design_PollDesign_Background_Gradient | undefined;\n}\n\nexport function pollData_Design_PollDesign_Background_TypeFromJSON(\n object: any\n): PollData_Design_PollDesign_Background_Type {\n switch (object) {\n case 0:\n case \"COLOR\":\n return PollData_Design_PollDesign_Background_Type.COLOR;\n case 1:\n case \"IMAGE\":\n return PollData_Design_PollDesign_Background_Type.IMAGE;\n case 2:\n case \"GRADIENT\":\n return PollData_Design_PollDesign_Background_Type.GRADIENT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return PollData_Design_PollDesign_Background_Type.UNRECOGNIZED;\n }\n}\n\nexport function pollData_Design_PollDesign_Background_TypeToJSON(\n object: PollData_Design_PollDesign_Background_Type\n): string {\n switch (object) {\n case PollData_Design_PollDesign_Background_Type.COLOR:\n return \"COLOR\";\n case PollData_Design_PollDesign_Background_Type.IMAGE:\n return \"IMAGE\";\n case PollData_Design_PollDesign_Background_Type.GRADIENT:\n return \"GRADIENT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface PollData_Design_PollDesign_Background_Gradient {\n /** The gradient angle in degrees. */\n angle?: number;\n /** The start color as a hexademical value. */\n startColor?: string;\n /** The end color as a hexademical value. */\n lastColor?: string;\n}\n\nexport interface PollData_Design_OptionDesign {\n /** Border radius in pixels. */\n borderRadius?: number;\n}\n\nconst basePollData: object = {};\n\nexport const PollData = {\n fromJSON(object: any): PollData {\n const message = { ...basePollData } as PollData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.poll =\n object.poll !== undefined && object.poll !== null\n ? PollData_Poll.fromJSON(object.poll)\n : undefined;\n message.layout =\n object.layout !== undefined && object.layout !== null\n ? PollData_Layout.fromJSON(object.layout)\n : undefined;\n message.design =\n object.design !== undefined && object.design !== null\n ? PollData_Design.fromJSON(object.design)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.poll !== undefined &&\n (obj.poll = message.poll\n ? PollData_Poll.toJSON(message.poll)\n : undefined);\n message.layout !== undefined &&\n (obj.layout = message.layout\n ? PollData_Layout.toJSON(message.layout)\n : undefined);\n message.design !== undefined &&\n (obj.design = message.design\n ? PollData_Design.toJSON(message.design)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst basePollData_Poll: object = {};\n\nexport const PollData_Poll = {\n fromJSON(object: any): PollData_Poll {\n const message = { ...basePollData_Poll } as PollData_Poll;\n message.id =\n object.id !== undefined && object.id !== null\n ? String(object.id)\n : undefined;\n message.title =\n object.title !== undefined && object.title !== null\n ? String(object.title)\n : undefined;\n message.creatorId =\n object.creatorId !== undefined && object.creatorId !== null\n ? String(object.creatorId)\n : undefined;\n message.image =\n object.image !== undefined && object.image !== null\n ? Media.fromJSON(object.image)\n : undefined;\n message.options = (object.options ?? []).map((e: any) =>\n PollData_Poll_Option.fromJSON(e)\n );\n message.settings =\n object.settings !== undefined && object.settings !== null\n ? PollData_Poll_Settings.fromJSON(object.settings)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Poll): unknown {\n const obj: any = {};\n message.id !== undefined && (obj.id = message.id);\n message.title !== undefined && (obj.title = message.title);\n message.creatorId !== undefined && (obj.creatorId = message.creatorId);\n message.image !== undefined &&\n (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n if (message.options) {\n obj.options = message.options.map((e) =>\n e ? PollData_Poll_Option.toJSON(e) : undefined\n );\n } else {\n obj.options = [];\n }\n message.settings !== undefined &&\n (obj.settings = message.settings\n ? PollData_Poll_Settings.toJSON(message.settings)\n : undefined);\n return obj;\n },\n};\n\nconst basePollData_Poll_Option: object = {};\n\nexport const PollData_Poll_Option = {\n fromJSON(object: any): PollData_Poll_Option {\n const message = { ...basePollData_Poll_Option } as PollData_Poll_Option;\n message.id =\n object.id !== undefined && object.id !== null\n ? String(object.id)\n : undefined;\n message.title =\n object.title !== undefined && object.title !== null\n ? String(object.title)\n : undefined;\n message.image =\n object.image !== undefined && object.image !== null\n ? Media.fromJSON(object.image)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Poll_Option): unknown {\n const obj: any = {};\n message.id !== undefined && (obj.id = message.id);\n message.title !== undefined && (obj.title = message.title);\n message.image !== undefined &&\n (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n return obj;\n },\n};\n\nconst basePollData_Poll_Settings: object = {};\n\nexport const PollData_Poll_Settings = {\n fromJSON(object: any): PollData_Poll_Settings {\n const message = { ...basePollData_Poll_Settings } as PollData_Poll_Settings;\n message.permissions =\n object.permissions !== undefined && object.permissions !== null\n ? PollData_Poll_Settings_Permissions.fromJSON(object.permissions)\n : undefined;\n message.showVoters =\n object.showVoters !== undefined && object.showVoters !== null\n ? Boolean(object.showVoters)\n : undefined;\n message.showVotesCount =\n object.showVotesCount !== undefined && object.showVotesCount !== null\n ? Boolean(object.showVotesCount)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Poll_Settings): unknown {\n const obj: any = {};\n message.permissions !== undefined &&\n (obj.permissions = message.permissions\n ? PollData_Poll_Settings_Permissions.toJSON(message.permissions)\n : undefined);\n message.showVoters !== undefined && (obj.showVoters = message.showVoters);\n message.showVotesCount !== undefined &&\n (obj.showVotesCount = message.showVotesCount);\n return obj;\n },\n};\n\nconst basePollData_Poll_Settings_Permissions: object = {\n view: PollData_Poll_Settings_Permissions_ViewRole.CREATOR,\n vote: PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS,\n};\n\nexport const PollData_Poll_Settings_Permissions = {\n fromJSON(object: any): PollData_Poll_Settings_Permissions {\n const message = {\n ...basePollData_Poll_Settings_Permissions,\n } as PollData_Poll_Settings_Permissions;\n message.view =\n object.view !== undefined && object.view !== null\n ? pollData_Poll_Settings_Permissions_ViewRoleFromJSON(object.view)\n : PollData_Poll_Settings_Permissions_ViewRole.CREATOR;\n message.vote =\n object.vote !== undefined && object.vote !== null\n ? pollData_Poll_Settings_Permissions_VoteRoleFromJSON(object.vote)\n : PollData_Poll_Settings_Permissions_VoteRole.SITE_MEMBERS;\n message.allowMultipleVotes =\n object.allowMultipleVotes !== undefined &&\n object.allowMultipleVotes !== null\n ? Boolean(object.allowMultipleVotes)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Poll_Settings_Permissions): unknown {\n const obj: any = {};\n message.view !== undefined &&\n (obj.view = pollData_Poll_Settings_Permissions_ViewRoleToJSON(\n message.view\n ));\n message.vote !== undefined &&\n (obj.vote = pollData_Poll_Settings_Permissions_VoteRoleToJSON(\n message.vote\n ));\n message.allowMultipleVotes !== undefined &&\n (obj.allowMultipleVotes = message.allowMultipleVotes);\n return obj;\n },\n};\n\nconst basePollData_Layout: object = {};\n\nexport const PollData_Layout = {\n fromJSON(object: any): PollData_Layout {\n const message = { ...basePollData_Layout } as PollData_Layout;\n message.poll =\n object.poll !== undefined && object.poll !== null\n ? PollData_Layout_PollLayout.fromJSON(object.poll)\n : undefined;\n message.options =\n object.options !== undefined && object.options !== null\n ? PollData_Layout_OptionLayout.fromJSON(object.options)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Layout): unknown {\n const obj: any = {};\n message.poll !== undefined &&\n (obj.poll = message.poll\n ? PollData_Layout_PollLayout.toJSON(message.poll)\n : undefined);\n message.options !== undefined &&\n (obj.options = message.options\n ? PollData_Layout_OptionLayout.toJSON(message.options)\n : undefined);\n return obj;\n },\n};\n\nconst basePollData_Layout_PollLayout: object = {\n type: PollData_Layout_PollLayout_Type.LIST,\n direction: PollData_Layout_PollLayout_Direction.LTR,\n};\n\nexport const PollData_Layout_PollLayout = {\n fromJSON(object: any): PollData_Layout_PollLayout {\n const message = {\n ...basePollData_Layout_PollLayout,\n } as PollData_Layout_PollLayout;\n message.type =\n object.type !== undefined && object.type !== null\n ? pollData_Layout_PollLayout_TypeFromJSON(object.type)\n : PollData_Layout_PollLayout_Type.LIST;\n message.direction =\n object.direction !== undefined && object.direction !== null\n ? pollData_Layout_PollLayout_DirectionFromJSON(object.direction)\n : PollData_Layout_PollLayout_Direction.LTR;\n message.enableImage =\n object.enableImage !== undefined && object.enableImage !== null\n ? Boolean(object.enableImage)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Layout_PollLayout): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = pollData_Layout_PollLayout_TypeToJSON(message.type));\n message.direction !== undefined &&\n (obj.direction = pollData_Layout_PollLayout_DirectionToJSON(\n message.direction\n ));\n message.enableImage !== undefined &&\n (obj.enableImage = message.enableImage);\n return obj;\n },\n};\n\nconst basePollData_Layout_OptionLayout: object = {};\n\nexport const PollData_Layout_OptionLayout = {\n fromJSON(object: any): PollData_Layout_OptionLayout {\n const message = {\n ...basePollData_Layout_OptionLayout,\n } as PollData_Layout_OptionLayout;\n message.enableImage =\n object.enableImage !== undefined && object.enableImage !== null\n ? Boolean(object.enableImage)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Layout_OptionLayout): unknown {\n const obj: any = {};\n message.enableImage !== undefined &&\n (obj.enableImage = message.enableImage);\n return obj;\n },\n};\n\nconst basePollData_Design: object = {};\n\nexport const PollData_Design = {\n fromJSON(object: any): PollData_Design {\n const message = { ...basePollData_Design } as PollData_Design;\n message.poll =\n object.poll !== undefined && object.poll !== null\n ? PollData_Design_PollDesign.fromJSON(object.poll)\n : undefined;\n message.options =\n object.options !== undefined && object.options !== null\n ? PollData_Design_OptionDesign.fromJSON(object.options)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Design): unknown {\n const obj: any = {};\n message.poll !== undefined &&\n (obj.poll = message.poll\n ? PollData_Design_PollDesign.toJSON(message.poll)\n : undefined);\n message.options !== undefined &&\n (obj.options = message.options\n ? PollData_Design_OptionDesign.toJSON(message.options)\n : undefined);\n return obj;\n },\n};\n\nconst basePollData_Design_PollDesign: object = {};\n\nexport const PollData_Design_PollDesign = {\n fromJSON(object: any): PollData_Design_PollDesign {\n const message = {\n ...basePollData_Design_PollDesign,\n } as PollData_Design_PollDesign;\n message.background =\n object.background !== undefined && object.background !== null\n ? PollData_Design_PollDesign_Background.fromJSON(object.background)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Design_PollDesign): unknown {\n const obj: any = {};\n message.background !== undefined &&\n (obj.background = message.background\n ? PollData_Design_PollDesign_Background.toJSON(message.background)\n : undefined);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n return obj;\n },\n};\n\nconst basePollData_Design_PollDesign_Background: object = {\n type: PollData_Design_PollDesign_Background_Type.COLOR,\n};\n\nexport const PollData_Design_PollDesign_Background = {\n fromJSON(object: any): PollData_Design_PollDesign_Background {\n const message = {\n ...basePollData_Design_PollDesign_Background,\n } as PollData_Design_PollDesign_Background;\n message.type =\n object.type !== undefined && object.type !== null\n ? pollData_Design_PollDesign_Background_TypeFromJSON(object.type)\n : PollData_Design_PollDesign_Background_Type.COLOR;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.image =\n object.image !== undefined && object.image !== null\n ? Media.fromJSON(object.image)\n : undefined;\n message.gradient =\n object.gradient !== undefined && object.gradient !== null\n ? PollData_Design_PollDesign_Background_Gradient.fromJSON(\n object.gradient\n )\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Design_PollDesign_Background): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = pollData_Design_PollDesign_Background_TypeToJSON(\n message.type\n ));\n message.color !== undefined && (obj.color = message.color);\n message.image !== undefined &&\n (obj.image = message.image ? Media.toJSON(message.image) : undefined);\n message.gradient !== undefined &&\n (obj.gradient = message.gradient\n ? PollData_Design_PollDesign_Background_Gradient.toJSON(\n message.gradient\n )\n : undefined);\n return obj;\n },\n};\n\nconst basePollData_Design_PollDesign_Background_Gradient: object = {};\n\nexport const PollData_Design_PollDesign_Background_Gradient = {\n fromJSON(object: any): PollData_Design_PollDesign_Background_Gradient {\n const message = {\n ...basePollData_Design_PollDesign_Background_Gradient,\n } as PollData_Design_PollDesign_Background_Gradient;\n message.angle =\n object.angle !== undefined && object.angle !== null\n ? Number(object.angle)\n : undefined;\n message.startColor =\n object.startColor !== undefined && object.startColor !== null\n ? String(object.startColor)\n : undefined;\n message.lastColor =\n object.lastColor !== undefined && object.lastColor !== null\n ? String(object.lastColor)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Design_PollDesign_Background_Gradient): unknown {\n const obj: any = {};\n message.angle !== undefined && (obj.angle = message.angle);\n message.startColor !== undefined && (obj.startColor = message.startColor);\n message.lastColor !== undefined && (obj.lastColor = message.lastColor);\n return obj;\n },\n};\n\nconst basePollData_Design_OptionDesign: object = {};\n\nexport const PollData_Design_OptionDesign = {\n fromJSON(object: any): PollData_Design_OptionDesign {\n const message = {\n ...basePollData_Design_OptionDesign,\n } as PollData_Design_OptionDesign;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n return message;\n },\n\n toJSON(message: PollData_Design_OptionDesign): unknown {\n const obj: any = {};\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media, Link } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface ShapeData {\n /** Styling for the shape's container. */\n containerData?: PluginContainerData;\n /** Shape file details. */\n shape?: Media;\n /** Styling for the shape. */\n styles?: ShapeData_Styles;\n /** Node animation. */\n animation?: Animation;\n /** Link details for shapes that are links. */\n link?: Link;\n /** Alternate text describing the link's purpose for accessibility. Applies only when `link` is set. */\n altText?: string;\n}\n\nexport interface ShapeData_Styles {\n /** Shape fill color as a hexadecimal value. */\n color?: string;\n /** Map of original color keys to their new color values. */\n colors: { [key: string]: string };\n}\n\nexport interface ShapeData_Styles_ColorsEntry {\n key: string;\n value: string;\n}\n\nconst baseShapeData: object = {};\n\nexport const ShapeData = {\n fromJSON(object: any): ShapeData {\n const message = { ...baseShapeData } as ShapeData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.shape =\n object.shape !== undefined && object.shape !== null\n ? Media.fromJSON(object.shape)\n : undefined;\n message.styles =\n object.styles !== undefined && object.styles !== null\n ? ShapeData_Styles.fromJSON(object.styles)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n message.link =\n object.link !== undefined && object.link !== null\n ? Link.fromJSON(object.link)\n : undefined;\n message.altText =\n object.altText !== undefined && object.altText !== null\n ? String(object.altText)\n : undefined;\n return message;\n },\n\n toJSON(message: ShapeData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.shape !== undefined &&\n (obj.shape = message.shape ? Media.toJSON(message.shape) : undefined);\n message.styles !== undefined &&\n (obj.styles = message.styles\n ? ShapeData_Styles.toJSON(message.styles)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n message.link !== undefined &&\n (obj.link = message.link ? Link.toJSON(message.link) : undefined);\n message.altText !== undefined && (obj.altText = message.altText);\n return obj;\n },\n};\n\nconst baseShapeData_Styles: object = {};\n\nexport const ShapeData_Styles = {\n fromJSON(object: any): ShapeData_Styles {\n const message = { ...baseShapeData_Styles } as ShapeData_Styles;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.colors = Object.entries(object.colors ?? {}).reduce<{\n [key: string]: string;\n }>((acc, [key, value]) => {\n acc[key] = String(value);\n return acc;\n }, {});\n return message;\n },\n\n toJSON(message: ShapeData_Styles): unknown {\n const obj: any = {};\n message.color !== undefined && (obj.color = message.color);\n obj.colors = {};\n if (message.colors) {\n Object.entries(message.colors).forEach(([k, v]) => {\n obj.colors[k] = v;\n });\n }\n return obj;\n },\n};\n\nconst baseShapeData_Styles_ColorsEntry: object = { key: \"\", value: \"\" };\n\nexport const ShapeData_Styles_ColorsEntry = {\n fromJSON(object: any): ShapeData_Styles_ColorsEntry {\n const message = {\n ...baseShapeData_Styles_ColorsEntry,\n } as ShapeData_Styles_ColorsEntry;\n message.key =\n object.key !== undefined && object.key !== null ? String(object.key) : \"\";\n message.value =\n object.value !== undefined && object.value !== null\n ? String(object.value)\n : \"\";\n return message;\n },\n\n toJSON(message: ShapeData_Styles_ColorsEntry): unknown {\n const obj: any = {};\n message.key !== undefined && (obj.key = message.key);\n message.value !== undefined && (obj.value = message.value);\n return obj;\n },\n};\n","/** Layout type of the smart block */\nexport enum SmartBlockData_Type {\n /** SOLID_BOXES - Grid-based layouts with solid box items containing title, body, and icon/image. */\n SOLID_BOXES = \"SOLID_BOXES\",\n /** NUMBERED_BOXES - Numbered boxes. */\n NUMBERED_BOXES = \"NUMBERED_BOXES\",\n /** STATS - Statistics display with large numbers/values. */\n STATS = \"STATS\",\n /** CIRCLE_STATS - Statistics with circular visual elements. */\n CIRCLE_STATS = \"CIRCLE_STATS\",\n /** SOLID_BOXES_ALTERNATING - Staggered/zigzag grid layout with alternating box positions. */\n SOLID_BOXES_ALTERNATING = \"SOLID_BOXES_ALTERNATING\",\n /** SOLID_JOINED_BOXES - Grid layout with boxes visually joined (no gaps, shared container border). */\n SOLID_JOINED_BOXES = \"SOLID_JOINED_BOXES\",\n /** SIDE_LINE_TEXT - Transparent cells with only a left side line. */\n SIDE_LINE_TEXT = \"SIDE_LINE_TEXT\",\n /** TOP_LINE_TEXT - Transparent cells with only a top line. */\n TOP_LINE_TEXT = \"TOP_LINE_TEXT\",\n /** OUTLINE_BOXES_WITH_TOP_CIRCLE - Outlined boxes with a numbered/icon circle at the top. */\n OUTLINE_BOXES_WITH_TOP_CIRCLE = \"OUTLINE_BOXES_WITH_TOP_CIRCLE\",\n /** BIG_BULLETS - Large icon bullets with text content. */\n BIG_BULLETS = \"BIG_BULLETS\",\n /** SMALL_BULLETS - Small dot bullets with text content. */\n SMALL_BULLETS = \"SMALL_BULLETS\",\n /** ARROW_BULLETS - Arrow icon bullets with text content. */\n ARROW_BULLETS = \"ARROW_BULLETS\",\n /** PROCESS_STEPS - Process steps with numbered/icon labels above a horizontal line. */\n PROCESS_STEPS = \"PROCESS_STEPS\",\n /** BAR_STATS - Statistics with bar visual elements. */\n BAR_STATS = \"BAR_STATS\",\n /** TIMELINE - Timeline layout with numbered chips on a connecting line; cells alternate around the line. */\n TIMELINE = \"TIMELINE\",\n /** MINIMAL_TIMELINE - Timeline layout with plain dot indicators; no numbers or shapes; cells alternate around the line. */\n MINIMAL_TIMELINE = \"MINIMAL_TIMELINE\",\n /** PILLS - Numbered pill-shaped labels (stadium chips) with text content; supports HORIZONTAL (pill on top) and VERTICAL (pill on left) orientations. */\n PILLS = \"PILLS\",\n /** STAR_RATING - Star rating display with stars and a numeric value per cell. */\n STAR_RATING = \"STAR_RATING\",\n /** QUOTE_BOXES - Outlined boxes with decorative quote glyphs at the top-left and bottom-right corners. */\n QUOTE_BOXES = \"QUOTE_BOXES\",\n /** CIRCLE - Donut/ring with numbered annular-sector segments; cell text labels sit outside the ring. */\n CIRCLE = \"CIRCLE\",\n /** PYRAMID - Hierarchical pyramid where each cell renders as a horizontal slice (apex at top, base at bottom) with the cell number or shape centered inside; text content sits beside (desktop) or below (mobile) the pyramid. */\n PYRAMID = \"PYRAMID\",\n /** STAIRCASE - Cells render a horizontal bar whose width scales with cell index, creating a staircase pattern; bar carries the cell number or a custom shape. */\n STAIRCASE = \"STAIRCASE\",\n /** VERTICAL_FUNNEL - Hierarchical funnel where each cell renders as a horizontal slice (wide at top, narrowing toward the bottom) with the cell number or shape centered inside; text content sits beside (desktop) or below (mobile) the funnel. */\n VERTICAL_FUNNEL = \"VERTICAL_FUNNEL\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Column size controlling how many cells appear per row. */\nexport enum SmartBlockData_ColumnSize {\n /** SMALL - Up to 4 cells in a row. */\n SMALL = \"SMALL\",\n /** MEDIUM - Up to 3 cells in a row (default). */\n MEDIUM = \"MEDIUM\",\n /** LARGE - Up to 2 cells in a row. */\n LARGE = \"LARGE\",\n /** EXTRA_LARGE - 1 cell in a row. */\n EXTRA_LARGE = \"EXTRA_LARGE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Animation } from './animation.js';\nimport { Media } from './common.js';\n\nimport { SmartBlockData_Type, SmartBlockData_ColumnSize } from './plugin_smart_block.enums.js';\n\n/** flynt-disable missing-string-validations */\n\n/** Data for a smart block node. */\nexport interface SmartBlockData {\n /** The type of the smart block. */\n type: SmartBlockData_Type;\n /** Layout orientation. HORIZONTAL or VERTICAL. Optional for variants with fixed orientation. */\n orientation?: string;\n /** Column size controlling cells per row. */\n columnSize: SmartBlockData_ColumnSize;\n /** Border color (for SOLID_JOINED_BOXES variant). */\n borderColor?: string;\n /** Border width in pixels (for SOLID_JOINED_BOXES variant). */\n borderWidth?: number;\n /** Border radius in pixels (for SOLID_JOINED_BOXES variant). */\n borderRadius?: number;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function smartBlockData_TypeFromJSON(object: any): SmartBlockData_Type {\n switch (object) {\n case 0:\n case \"SOLID_BOXES\":\n return SmartBlockData_Type.SOLID_BOXES;\n case 1:\n case \"NUMBERED_BOXES\":\n return SmartBlockData_Type.NUMBERED_BOXES;\n case 2:\n case \"STATS\":\n return SmartBlockData_Type.STATS;\n case 3:\n case \"CIRCLE_STATS\":\n return SmartBlockData_Type.CIRCLE_STATS;\n case 4:\n case \"SOLID_BOXES_ALTERNATING\":\n return SmartBlockData_Type.SOLID_BOXES_ALTERNATING;\n case 5:\n case \"SOLID_JOINED_BOXES\":\n return SmartBlockData_Type.SOLID_JOINED_BOXES;\n case 6:\n case \"SIDE_LINE_TEXT\":\n return SmartBlockData_Type.SIDE_LINE_TEXT;\n case 7:\n case \"TOP_LINE_TEXT\":\n return SmartBlockData_Type.TOP_LINE_TEXT;\n case 8:\n case \"OUTLINE_BOXES_WITH_TOP_CIRCLE\":\n return SmartBlockData_Type.OUTLINE_BOXES_WITH_TOP_CIRCLE;\n case 9:\n case \"BIG_BULLETS\":\n return SmartBlockData_Type.BIG_BULLETS;\n case 10:\n case \"SMALL_BULLETS\":\n return SmartBlockData_Type.SMALL_BULLETS;\n case 11:\n case \"ARROW_BULLETS\":\n return SmartBlockData_Type.ARROW_BULLETS;\n case 12:\n case \"PROCESS_STEPS\":\n return SmartBlockData_Type.PROCESS_STEPS;\n case 13:\n case \"BAR_STATS\":\n return SmartBlockData_Type.BAR_STATS;\n case 14:\n case \"TIMELINE\":\n return SmartBlockData_Type.TIMELINE;\n case 15:\n case \"MINIMAL_TIMELINE\":\n return SmartBlockData_Type.MINIMAL_TIMELINE;\n case 16:\n case \"PILLS\":\n return SmartBlockData_Type.PILLS;\n case 17:\n case \"STAR_RATING\":\n return SmartBlockData_Type.STAR_RATING;\n case 18:\n case \"QUOTE_BOXES\":\n return SmartBlockData_Type.QUOTE_BOXES;\n case 19:\n case \"CIRCLE\":\n return SmartBlockData_Type.CIRCLE;\n case 20:\n case \"PYRAMID\":\n return SmartBlockData_Type.PYRAMID;\n case 21:\n case \"STAIRCASE\":\n return SmartBlockData_Type.STAIRCASE;\n case 22:\n case \"VERTICAL_FUNNEL\":\n return SmartBlockData_Type.VERTICAL_FUNNEL;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return SmartBlockData_Type.UNRECOGNIZED;\n }\n}\n\nexport function smartBlockData_TypeToJSON(object: SmartBlockData_Type): string {\n switch (object) {\n case SmartBlockData_Type.SOLID_BOXES:\n return \"SOLID_BOXES\";\n case SmartBlockData_Type.NUMBERED_BOXES:\n return \"NUMBERED_BOXES\";\n case SmartBlockData_Type.STATS:\n return \"STATS\";\n case SmartBlockData_Type.CIRCLE_STATS:\n return \"CIRCLE_STATS\";\n case SmartBlockData_Type.SOLID_BOXES_ALTERNATING:\n return \"SOLID_BOXES_ALTERNATING\";\n case SmartBlockData_Type.SOLID_JOINED_BOXES:\n return \"SOLID_JOINED_BOXES\";\n case SmartBlockData_Type.SIDE_LINE_TEXT:\n return \"SIDE_LINE_TEXT\";\n case SmartBlockData_Type.TOP_LINE_TEXT:\n return \"TOP_LINE_TEXT\";\n case SmartBlockData_Type.OUTLINE_BOXES_WITH_TOP_CIRCLE:\n return \"OUTLINE_BOXES_WITH_TOP_CIRCLE\";\n case SmartBlockData_Type.BIG_BULLETS:\n return \"BIG_BULLETS\";\n case SmartBlockData_Type.SMALL_BULLETS:\n return \"SMALL_BULLETS\";\n case SmartBlockData_Type.ARROW_BULLETS:\n return \"ARROW_BULLETS\";\n case SmartBlockData_Type.PROCESS_STEPS:\n return \"PROCESS_STEPS\";\n case SmartBlockData_Type.BAR_STATS:\n return \"BAR_STATS\";\n case SmartBlockData_Type.TIMELINE:\n return \"TIMELINE\";\n case SmartBlockData_Type.MINIMAL_TIMELINE:\n return \"MINIMAL_TIMELINE\";\n case SmartBlockData_Type.PILLS:\n return \"PILLS\";\n case SmartBlockData_Type.STAR_RATING:\n return \"STAR_RATING\";\n case SmartBlockData_Type.QUOTE_BOXES:\n return \"QUOTE_BOXES\";\n case SmartBlockData_Type.CIRCLE:\n return \"CIRCLE\";\n case SmartBlockData_Type.PYRAMID:\n return \"PYRAMID\";\n case SmartBlockData_Type.STAIRCASE:\n return \"STAIRCASE\";\n case SmartBlockData_Type.VERTICAL_FUNNEL:\n return \"VERTICAL_FUNNEL\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function smartBlockData_ColumnSizeFromJSON(\n object: any\n): SmartBlockData_ColumnSize {\n switch (object) {\n case 0:\n case \"SMALL\":\n return SmartBlockData_ColumnSize.SMALL;\n case 1:\n case \"MEDIUM\":\n return SmartBlockData_ColumnSize.MEDIUM;\n case 2:\n case \"LARGE\":\n return SmartBlockData_ColumnSize.LARGE;\n case 3:\n case \"EXTRA_LARGE\":\n return SmartBlockData_ColumnSize.EXTRA_LARGE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return SmartBlockData_ColumnSize.UNRECOGNIZED;\n }\n}\n\nexport function smartBlockData_ColumnSizeToJSON(\n object: SmartBlockData_ColumnSize\n): string {\n switch (object) {\n case SmartBlockData_ColumnSize.SMALL:\n return \"SMALL\";\n case SmartBlockData_ColumnSize.MEDIUM:\n return \"MEDIUM\";\n case SmartBlockData_ColumnSize.LARGE:\n return \"LARGE\";\n case SmartBlockData_ColumnSize.EXTRA_LARGE:\n return \"EXTRA_LARGE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\n/** Data for a smart block cell node. */\nexport interface SmartBlockCellData {\n /** Optional label text for the cell (e.g., for stats variants). */\n label?: string;\n /** Shape file details. */\n shape?: Media;\n /** Border color of the cell. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** The type of the parent smart block (must match parent). */\n type: SmartBlockData_Type;\n /** Accent color for non-background variants (e.g., line, bullet, label color). */\n accentColor?: string;\n /** Background color for background-based variants (SOLID_BOXES, SOLID_BOXES_ALTERNATING, SOLID_JOINED_BOXES). */\n backgroundColor?: string;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n}\n\nconst baseSmartBlockData: object = {\n type: SmartBlockData_Type.SOLID_BOXES,\n columnSize: SmartBlockData_ColumnSize.SMALL,\n};\n\nexport const SmartBlockData = {\n fromJSON(object: any): SmartBlockData {\n const message = { ...baseSmartBlockData } as SmartBlockData;\n message.type =\n object.type !== undefined && object.type !== null\n ? smartBlockData_TypeFromJSON(object.type)\n : SmartBlockData_Type.SOLID_BOXES;\n message.orientation =\n object.orientation !== undefined && object.orientation !== null\n ? String(object.orientation)\n : undefined;\n message.columnSize =\n object.columnSize !== undefined && object.columnSize !== null\n ? smartBlockData_ColumnSizeFromJSON(object.columnSize)\n : SmartBlockData_ColumnSize.SMALL;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: SmartBlockData): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = smartBlockData_TypeToJSON(message.type));\n message.orientation !== undefined &&\n (obj.orientation = message.orientation);\n message.columnSize !== undefined &&\n (obj.columnSize = smartBlockData_ColumnSizeToJSON(message.columnSize));\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseSmartBlockCellData: object = {\n type: SmartBlockData_Type.SOLID_BOXES,\n};\n\nexport const SmartBlockCellData = {\n fromJSON(object: any): SmartBlockCellData {\n const message = { ...baseSmartBlockCellData } as SmartBlockCellData;\n message.label =\n object.label !== undefined && object.label !== null\n ? String(object.label)\n : undefined;\n message.shape =\n object.shape !== undefined && object.shape !== null\n ? Media.fromJSON(object.shape)\n : undefined;\n message.borderColor =\n object.borderColor !== undefined && object.borderColor !== null\n ? String(object.borderColor)\n : undefined;\n message.borderWidth =\n object.borderWidth !== undefined && object.borderWidth !== null\n ? Number(object.borderWidth)\n : undefined;\n message.borderRadius =\n object.borderRadius !== undefined && object.borderRadius !== null\n ? Number(object.borderRadius)\n : undefined;\n message.type =\n object.type !== undefined && object.type !== null\n ? smartBlockData_TypeFromJSON(object.type)\n : SmartBlockData_Type.SOLID_BOXES;\n message.accentColor =\n object.accentColor !== undefined && object.accentColor !== null\n ? String(object.accentColor)\n : undefined;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n message.shapeColor =\n object.shapeColor !== undefined && object.shapeColor !== null\n ? String(object.shapeColor)\n : undefined;\n return message;\n },\n\n toJSON(message: SmartBlockCellData): unknown {\n const obj: any = {};\n message.label !== undefined && (obj.label = message.label);\n message.shape !== undefined &&\n (obj.shape = message.shape ? Media.toJSON(message.shape) : undefined);\n message.borderColor !== undefined &&\n (obj.borderColor = message.borderColor);\n message.borderWidth !== undefined &&\n (obj.borderWidth = message.borderWidth);\n message.borderRadius !== undefined &&\n (obj.borderRadius = message.borderRadius);\n message.type !== undefined &&\n (obj.type = smartBlockData_TypeToJSON(message.type));\n message.accentColor !== undefined &&\n (obj.accentColor = message.accentColor);\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n message.shapeColor !== undefined && (obj.shapeColor = message.shapeColor);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { PluginContainerData } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface TableData {\n /** Styling for the table's container. */\n containerData?: PluginContainerData;\n /** The table's dimensions. */\n dimensions?: TableData_Dimensions;\n /**\n * Deprecated: Use `rowHeader` and `columnHeader` instead.\n *\n * @deprecated\n */\n header?: boolean;\n /** Sets whether the table's first row is a header. Defaults to `false`. */\n rowHeader?: boolean;\n /** Sets whether the table's first column is a header. Defaults to `false`. */\n columnHeader?: boolean;\n /** The spacing between cells in pixels. Defaults to `0`. */\n cellSpacing?: number;\n /** Padding in pixels for cells. Follows CSS order: top, right, bottom, left. */\n cellPadding: number[];\n /** Table's alternative text. */\n altText?: string;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport interface TableData_Dimensions {\n /** An array representing relative width of each column in relation to the other columns. */\n colsWidthRatio: number[];\n /** An array representing the height of each row in pixels. */\n rowsHeight: number[];\n /** An array representing the minimum width of each column in pixels. */\n colsMinWidth: number[];\n}\n\nconst baseTableData: object = { cellPadding: 0 };\n\nexport const TableData = {\n fromJSON(object: any): TableData {\n const message = { ...baseTableData } as TableData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.dimensions =\n object.dimensions !== undefined && object.dimensions !== null\n ? TableData_Dimensions.fromJSON(object.dimensions)\n : undefined;\n message.header =\n object.header !== undefined && object.header !== null\n ? Boolean(object.header)\n : undefined;\n message.rowHeader =\n object.rowHeader !== undefined && object.rowHeader !== null\n ? Boolean(object.rowHeader)\n : undefined;\n message.columnHeader =\n object.columnHeader !== undefined && object.columnHeader !== null\n ? Boolean(object.columnHeader)\n : undefined;\n message.cellSpacing =\n object.cellSpacing !== undefined && object.cellSpacing !== null\n ? Number(object.cellSpacing)\n : undefined;\n message.cellPadding = (object.cellPadding ?? []).map((e: any) => Number(e));\n message.altText =\n object.altText !== undefined && object.altText !== null\n ? String(object.altText)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: TableData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.dimensions !== undefined &&\n (obj.dimensions = message.dimensions\n ? TableData_Dimensions.toJSON(message.dimensions)\n : undefined);\n message.header !== undefined && (obj.header = message.header);\n message.rowHeader !== undefined && (obj.rowHeader = message.rowHeader);\n message.columnHeader !== undefined &&\n (obj.columnHeader = message.columnHeader);\n message.cellSpacing !== undefined &&\n (obj.cellSpacing = message.cellSpacing);\n if (message.cellPadding) {\n obj.cellPadding = message.cellPadding.map((e) => Math.round(e));\n } else {\n obj.cellPadding = [];\n }\n message.altText !== undefined && (obj.altText = message.altText);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n\nconst baseTableData_Dimensions: object = {\n colsWidthRatio: 0,\n rowsHeight: 0,\n colsMinWidth: 0,\n};\n\nexport const TableData_Dimensions = {\n fromJSON(object: any): TableData_Dimensions {\n const message = { ...baseTableData_Dimensions } as TableData_Dimensions;\n message.colsWidthRatio = (object.colsWidthRatio ?? []).map((e: any) =>\n Number(e)\n );\n message.rowsHeight = (object.rowsHeight ?? []).map((e: any) => Number(e));\n message.colsMinWidth = (object.colsMinWidth ?? []).map((e: any) =>\n Number(e)\n );\n return message;\n },\n\n toJSON(message: TableData_Dimensions): unknown {\n const obj: any = {};\n if (message.colsWidthRatio) {\n obj.colsWidthRatio = message.colsWidthRatio.map((e) => Math.round(e));\n } else {\n obj.colsWidthRatio = [];\n }\n if (message.rowsHeight) {\n obj.rowsHeight = message.rowsHeight.map((e) => Math.round(e));\n } else {\n obj.rowsHeight = [];\n }\n if (message.colsMinWidth) {\n obj.colsMinWidth = message.colsMinWidth.map((e) => Math.round(e));\n } else {\n obj.colsMinWidth = [];\n }\n return obj;\n },\n};\n","export enum TableCellData_VerticalAlignment {\n /** TOP - Top alignment */\n TOP = \"TOP\",\n /** MIDDLE - Middle alignment */\n MIDDLE = \"MIDDLE\",\n /** BOTTOM - Bottom alignment */\n BOTTOM = \"BOTTOM\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","import { TableCellData_VerticalAlignment } from './plugin_table_cell.enums.js';\n/* eslint-disable */\nexport interface TableCellData {\n /** Styling for the cell's background color and text alignment. */\n cellStyle?: TableCellData_CellStyle;\n /** The cell's border colors. */\n borderColors?: TableCellData_BorderColors;\n /** Defines how many columns the cell spans. Default: 1. */\n colspan?: number;\n /** Defines how many rows the cell spans. Default: 1. */\n rowspan?: number;\n /** The cell's border widths. */\n borderWidths?: TableCellData_BorderWidths;\n}\n\nexport function tableCellData_VerticalAlignmentFromJSON(\n object: any\n): TableCellData_VerticalAlignment {\n switch (object) {\n case 0:\n case \"TOP\":\n return TableCellData_VerticalAlignment.TOP;\n case 1:\n case \"MIDDLE\":\n return TableCellData_VerticalAlignment.MIDDLE;\n case 2:\n case \"BOTTOM\":\n return TableCellData_VerticalAlignment.BOTTOM;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return TableCellData_VerticalAlignment.UNRECOGNIZED;\n }\n}\n\nexport function tableCellData_VerticalAlignmentToJSON(\n object: TableCellData_VerticalAlignment\n): string {\n switch (object) {\n case TableCellData_VerticalAlignment.TOP:\n return \"TOP\";\n case TableCellData_VerticalAlignment.MIDDLE:\n return \"MIDDLE\";\n case TableCellData_VerticalAlignment.BOTTOM:\n return \"BOTTOM\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface TableCellData_CellStyle {\n /** Vertical alignment for the cell's text. */\n verticalAlignment: TableCellData_VerticalAlignment;\n /** Cell background color as a hexadecimal value. */\n backgroundColor?: string;\n}\n\nexport interface TableCellData_BorderColors {\n /** Left border color as a hexadecimal value. */\n left?: string;\n /** Right border color as a hexadecimal value. */\n right?: string;\n /** Top border color as a hexadecimal value. */\n top?: string;\n /** Bottom border color as a hexadecimal value. */\n bottom?: string;\n}\n\nexport interface TableCellData_BorderWidths {\n /** Left border width in pixels. */\n left?: number;\n /** Right border width in pixels. */\n right?: number;\n /** Top border width in pixels. */\n top?: number;\n /** Bottom border width in pixels. */\n bottom?: number;\n}\n\nconst baseTableCellData: object = {};\n\nexport const TableCellData = {\n fromJSON(object: any): TableCellData {\n const message = { ...baseTableCellData } as TableCellData;\n message.cellStyle =\n object.cellStyle !== undefined && object.cellStyle !== null\n ? TableCellData_CellStyle.fromJSON(object.cellStyle)\n : undefined;\n message.borderColors =\n object.borderColors !== undefined && object.borderColors !== null\n ? TableCellData_BorderColors.fromJSON(object.borderColors)\n : undefined;\n message.colspan =\n object.colspan !== undefined && object.colspan !== null\n ? Number(object.colspan)\n : undefined;\n message.rowspan =\n object.rowspan !== undefined && object.rowspan !== null\n ? Number(object.rowspan)\n : undefined;\n message.borderWidths =\n object.borderWidths !== undefined && object.borderWidths !== null\n ? TableCellData_BorderWidths.fromJSON(object.borderWidths)\n : undefined;\n return message;\n },\n\n toJSON(message: TableCellData): unknown {\n const obj: any = {};\n message.cellStyle !== undefined &&\n (obj.cellStyle = message.cellStyle\n ? TableCellData_CellStyle.toJSON(message.cellStyle)\n : undefined);\n message.borderColors !== undefined &&\n (obj.borderColors = message.borderColors\n ? TableCellData_BorderColors.toJSON(message.borderColors)\n : undefined);\n message.colspan !== undefined && (obj.colspan = message.colspan);\n message.rowspan !== undefined && (obj.rowspan = message.rowspan);\n message.borderWidths !== undefined &&\n (obj.borderWidths = message.borderWidths\n ? TableCellData_BorderWidths.toJSON(message.borderWidths)\n : undefined);\n return obj;\n },\n};\n\nconst baseTableCellData_CellStyle: object = {\n verticalAlignment: TableCellData_VerticalAlignment.TOP,\n};\n\nexport const TableCellData_CellStyle = {\n fromJSON(object: any): TableCellData_CellStyle {\n const message = {\n ...baseTableCellData_CellStyle,\n } as TableCellData_CellStyle;\n message.verticalAlignment =\n object.verticalAlignment !== undefined &&\n object.verticalAlignment !== null\n ? tableCellData_VerticalAlignmentFromJSON(object.verticalAlignment)\n : TableCellData_VerticalAlignment.TOP;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n return message;\n },\n\n toJSON(message: TableCellData_CellStyle): unknown {\n const obj: any = {};\n message.verticalAlignment !== undefined &&\n (obj.verticalAlignment = tableCellData_VerticalAlignmentToJSON(\n message.verticalAlignment\n ));\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n return obj;\n },\n};\n\nconst baseTableCellData_BorderColors: object = {};\n\nexport const TableCellData_BorderColors = {\n fromJSON(object: any): TableCellData_BorderColors {\n const message = {\n ...baseTableCellData_BorderColors,\n } as TableCellData_BorderColors;\n message.left =\n object.left !== undefined && object.left !== null\n ? String(object.left)\n : undefined;\n message.right =\n object.right !== undefined && object.right !== null\n ? String(object.right)\n : undefined;\n message.top =\n object.top !== undefined && object.top !== null\n ? String(object.top)\n : undefined;\n message.bottom =\n object.bottom !== undefined && object.bottom !== null\n ? String(object.bottom)\n : undefined;\n return message;\n },\n\n toJSON(message: TableCellData_BorderColors): unknown {\n const obj: any = {};\n message.left !== undefined && (obj.left = message.left);\n message.right !== undefined && (obj.right = message.right);\n message.top !== undefined && (obj.top = message.top);\n message.bottom !== undefined && (obj.bottom = message.bottom);\n return obj;\n },\n};\n\nconst baseTableCellData_BorderWidths: object = {};\n\nexport const TableCellData_BorderWidths = {\n fromJSON(object: any): TableCellData_BorderWidths {\n const message = {\n ...baseTableCellData_BorderWidths,\n } as TableCellData_BorderWidths;\n message.left =\n object.left !== undefined && object.left !== null\n ? Number(object.left)\n : undefined;\n message.right =\n object.right !== undefined && object.right !== null\n ? Number(object.right)\n : undefined;\n message.top =\n object.top !== undefined && object.top !== null\n ? Number(object.top)\n : undefined;\n message.bottom =\n object.bottom !== undefined && object.bottom !== null\n ? Number(object.bottom)\n : undefined;\n return message;\n },\n\n toJSON(message: TableCellData_BorderWidths): unknown {\n const obj: any = {};\n message.left !== undefined && (obj.left = message.left);\n message.right !== undefined && (obj.right = message.right);\n message.top !== undefined && (obj.top = message.top);\n message.bottom !== undefined && (obj.bottom = message.bottom);\n return obj;\n },\n};\n","/** List style. */\nexport enum TocData_ListStyle {\n /** PLAIN - No markers (default) */\n PLAIN = \"PLAIN\",\n /** NUMBERED - Numbered list */\n NUMBERED = \"NUMBERED\",\n /** LETTERS - Alphabetic letters */\n LETTERS = \"LETTERS\",\n /** ROMAN - Roman numerals */\n ROMAN = \"ROMAN\",\n /** BULLETED - Bulleted list */\n BULLETED = \"BULLETED\",\n /** ALPHABETICAL_INDEX - Alphabetical index */\n ALPHABETICAL_INDEX = \"ALPHABETICAL_INDEX\",\n /** ALPHABETICAL_INDEX_COMPACT - Alphabetical index (compact top-row only) */\n ALPHABETICAL_INDEX_COMPACT = \"ALPHABETICAL_INDEX_COMPACT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\n/** Indentation style. */\nexport enum TocData_Indentation {\n /** NESTED - Sub-headings indented under parents (default) */\n NESTED = \"NESTED\",\n /** FLAT - All items at the same level */\n FLAT = \"FLAT\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Animation } from './animation.js';\n\nimport { TocData_ListStyle, TocData_Indentation } from './plugin_toc.enums.js';\n\n/**\n * flynt-disable boolean-field-name-prefix\n * flynt-disable missing-array-limits\n * flynt-disable missing-string-validations\n */\n\nexport interface TocData {\n /** Heading levels included in the table of contents. Default: [1, 2, 3, 4, 5, 6]. */\n includedHeadings: number[];\n /** List style. Default: PLAIN. */\n listStyle: TocData_ListStyle;\n /** Optional override for the font size in pixels. */\n fontSize?: number;\n /** Optional override for the vertical spacing between items in pixels. */\n itemSpacing?: number;\n /** Optional override for the text color. */\n color?: string;\n /** Indentation style. Default: NESTED. */\n indentation: TocData_Indentation;\n /** Node animation. */\n animation?: Animation;\n}\n\nexport function tocData_ListStyleFromJSON(object: any): TocData_ListStyle {\n switch (object) {\n case 0:\n case \"PLAIN\":\n return TocData_ListStyle.PLAIN;\n case 1:\n case \"NUMBERED\":\n return TocData_ListStyle.NUMBERED;\n case 2:\n case \"LETTERS\":\n return TocData_ListStyle.LETTERS;\n case 3:\n case \"ROMAN\":\n return TocData_ListStyle.ROMAN;\n case 4:\n case \"BULLETED\":\n return TocData_ListStyle.BULLETED;\n case 5:\n case \"ALPHABETICAL_INDEX\":\n return TocData_ListStyle.ALPHABETICAL_INDEX;\n case 6:\n case \"ALPHABETICAL_INDEX_COMPACT\":\n return TocData_ListStyle.ALPHABETICAL_INDEX_COMPACT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return TocData_ListStyle.UNRECOGNIZED;\n }\n}\n\nexport function tocData_ListStyleToJSON(object: TocData_ListStyle): string {\n switch (object) {\n case TocData_ListStyle.PLAIN:\n return \"PLAIN\";\n case TocData_ListStyle.NUMBERED:\n return \"NUMBERED\";\n case TocData_ListStyle.LETTERS:\n return \"LETTERS\";\n case TocData_ListStyle.ROMAN:\n return \"ROMAN\";\n case TocData_ListStyle.BULLETED:\n return \"BULLETED\";\n case TocData_ListStyle.ALPHABETICAL_INDEX:\n return \"ALPHABETICAL_INDEX\";\n case TocData_ListStyle.ALPHABETICAL_INDEX_COMPACT:\n return \"ALPHABETICAL_INDEX_COMPACT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport function tocData_IndentationFromJSON(object: any): TocData_Indentation {\n switch (object) {\n case 0:\n case \"NESTED\":\n return TocData_Indentation.NESTED;\n case 1:\n case \"FLAT\":\n return TocData_Indentation.FLAT;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return TocData_Indentation.UNRECOGNIZED;\n }\n}\n\nexport function tocData_IndentationToJSON(object: TocData_Indentation): string {\n switch (object) {\n case TocData_Indentation.NESTED:\n return \"NESTED\";\n case TocData_Indentation.FLAT:\n return \"FLAT\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nconst baseTocData: object = {\n includedHeadings: 0,\n listStyle: TocData_ListStyle.PLAIN,\n indentation: TocData_Indentation.NESTED,\n};\n\nexport const TocData = {\n fromJSON(object: any): TocData {\n const message = { ...baseTocData } as TocData;\n message.includedHeadings = (object.includedHeadings ?? []).map((e: any) =>\n Number(e)\n );\n message.listStyle =\n object.listStyle !== undefined && object.listStyle !== null\n ? tocData_ListStyleFromJSON(object.listStyle)\n : TocData_ListStyle.PLAIN;\n message.fontSize =\n object.fontSize !== undefined && object.fontSize !== null\n ? Number(object.fontSize)\n : undefined;\n message.itemSpacing =\n object.itemSpacing !== undefined && object.itemSpacing !== null\n ? Number(object.itemSpacing)\n : undefined;\n message.color =\n object.color !== undefined && object.color !== null\n ? String(object.color)\n : undefined;\n message.indentation =\n object.indentation !== undefined && object.indentation !== null\n ? tocData_IndentationFromJSON(object.indentation)\n : TocData_Indentation.NESTED;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: TocData): unknown {\n const obj: any = {};\n if (message.includedHeadings) {\n obj.includedHeadings = message.includedHeadings.map((e) => Math.round(e));\n } else {\n obj.includedHeadings = [];\n }\n message.listStyle !== undefined &&\n (obj.listStyle = tocData_ListStyleToJSON(message.listStyle));\n message.fontSize !== undefined && (obj.fontSize = message.fontSize);\n message.itemSpacing !== undefined &&\n (obj.itemSpacing = message.itemSpacing);\n message.color !== undefined && (obj.color = message.color);\n message.indentation !== undefined &&\n (obj.indentation = tocData_IndentationToJSON(message.indentation));\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","/* eslint-disable */\nimport { PluginContainerData, Media, PlaybackOptions } from './common.js';\nimport { Animation } from './animation.js';\n\nexport interface VideoData {\n /** Styling for the video's container. */\n containerData?: PluginContainerData;\n /** Video details. */\n video?: Media;\n /** Video thumbnail details. */\n thumbnail?: Media;\n /** Sets whether the video's download button is disabled. Defaults to `false`. */\n disableDownload?: boolean;\n /** Video title. */\n title?: string;\n /** Video options. */\n options?: PlaybackOptions;\n /** Node animation. */\n animation?: Animation;\n}\n\nconst baseVideoData: object = {};\n\nexport const VideoData = {\n fromJSON(object: any): VideoData {\n const message = { ...baseVideoData } as VideoData;\n message.containerData =\n object.containerData !== undefined && object.containerData !== null\n ? PluginContainerData.fromJSON(object.containerData)\n : undefined;\n message.video =\n object.video !== undefined && object.video !== null\n ? Media.fromJSON(object.video)\n : undefined;\n message.thumbnail =\n object.thumbnail !== undefined && object.thumbnail !== null\n ? Media.fromJSON(object.thumbnail)\n : undefined;\n message.disableDownload =\n object.disableDownload !== undefined && object.disableDownload !== null\n ? Boolean(object.disableDownload)\n : undefined;\n message.title =\n object.title !== undefined && object.title !== null\n ? String(object.title)\n : undefined;\n message.options =\n object.options !== undefined && object.options !== null\n ? PlaybackOptions.fromJSON(object.options)\n : undefined;\n message.animation =\n object.animation !== undefined && object.animation !== null\n ? Animation.fromJSON(object.animation)\n : undefined;\n return message;\n },\n\n toJSON(message: VideoData): unknown {\n const obj: any = {};\n message.containerData !== undefined &&\n (obj.containerData = message.containerData\n ? PluginContainerData.toJSON(message.containerData)\n : undefined);\n message.video !== undefined &&\n (obj.video = message.video ? Media.toJSON(message.video) : undefined);\n message.thumbnail !== undefined &&\n (obj.thumbnail = message.thumbnail\n ? Media.toJSON(message.thumbnail)\n : undefined);\n message.disableDownload !== undefined &&\n (obj.disableDownload = message.disableDownload);\n message.title !== undefined && (obj.title = message.title);\n message.options !== undefined &&\n (obj.options = message.options\n ? PlaybackOptions.toJSON(message.options)\n : undefined);\n message.animation !== undefined &&\n (obj.animation = message.animation\n ? Animation.toJSON(message.animation)\n : undefined);\n return obj;\n },\n};\n","export enum Node_Type {\n PARAGRAPH = \"PARAGRAPH\",\n TEXT = \"TEXT\",\n HEADING = \"HEADING\",\n BULLETED_LIST = \"BULLETED_LIST\",\n ORDERED_LIST = \"ORDERED_LIST\",\n LIST_ITEM = \"LIST_ITEM\",\n BLOCKQUOTE = \"BLOCKQUOTE\",\n CODE_BLOCK = \"CODE_BLOCK\",\n VIDEO = \"VIDEO\",\n DIVIDER = \"DIVIDER\",\n FILE = \"FILE\",\n GALLERY = \"GALLERY\",\n GIF = \"GIF\",\n HTML = \"HTML\",\n IMAGE = \"IMAGE\",\n LINK_PREVIEW = \"LINK_PREVIEW\",\n /** MAP - @deprecated */\n MAP = \"MAP\",\n POLL = \"POLL\",\n APP_EMBED = \"APP_EMBED\",\n BUTTON = \"BUTTON\",\n COLLAPSIBLE_LIST = \"COLLAPSIBLE_LIST\",\n TABLE = \"TABLE\",\n EMBED = \"EMBED\",\n COLLAPSIBLE_ITEM = \"COLLAPSIBLE_ITEM\",\n COLLAPSIBLE_ITEM_TITLE = \"COLLAPSIBLE_ITEM_TITLE\",\n COLLAPSIBLE_ITEM_BODY = \"COLLAPSIBLE_ITEM_BODY\",\n TABLE_CELL = \"TABLE_CELL\",\n TABLE_ROW = \"TABLE_ROW\",\n EXTERNAL = \"EXTERNAL\",\n AUDIO = \"AUDIO\",\n CAPTION = \"CAPTION\",\n LAYOUT = \"LAYOUT\",\n LAYOUT_CELL = \"LAYOUT_CELL\",\n SHAPE = \"SHAPE\",\n CARD = \"CARD\",\n TOC = \"TOC\",\n SMART_BLOCK = \"SMART_BLOCK\",\n SMART_BLOCK_CELL = \"SMART_BLOCK_CELL\",\n CHECKBOX_LIST = \"CHECKBOX_LIST\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport enum Decoration_Type {\n BOLD = \"BOLD\",\n ITALIC = \"ITALIC\",\n UNDERLINE = \"UNDERLINE\",\n SPOILER = \"SPOILER\",\n ANCHOR = \"ANCHOR\",\n MENTION = \"MENTION\",\n LINK = \"LINK\",\n COLOR = \"COLOR\",\n FONT_SIZE = \"FONT_SIZE\",\n EXTERNAL = \"EXTERNAL\",\n STRIKETHROUGH = \"STRIKETHROUGH\",\n SUPERSCRIPT = \"SUPERSCRIPT\",\n SUBSCRIPT = \"SUBSCRIPT\",\n FONT_FAMILY = \"FONT_FAMILY\",\n SKETCH = \"SKETCH\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","/* eslint-disable */\nimport { Timestamp } from '../../../google/protobuf/timestamp.js';\nimport { ButtonData } from './plugin_button.js';\nimport { CodeBlockData } from './node_code_block.js';\nimport { DividerData } from './plugin_divider.js';\nimport { FileData } from './plugin_file.js';\nimport { GalleryData } from './plugin_gallery.js';\nimport { GIFData } from './plugin_gif.js';\nimport { HeadingData } from './node_heading.js';\nimport { HTMLData } from './plugin_html.js';\nimport { ImageData } from './plugin_image.js';\nimport { LinkPreviewData } from './plugin_link_preview.js';\nimport { MapData } from './plugin_map.js';\nimport { ParagraphData } from './node_paragraph.js';\nimport { PollData } from './plugin_poll.js';\nimport { AppEmbedData } from './plugin_app_embed.js';\nimport { VideoData } from './plugin_video.js';\nimport { EmbedData } from './plugin_embed.js';\nimport { CollapsibleListData } from './plugin_collapsible_list.js';\nimport { TableData } from './plugin_table.js';\nimport { TableCellData } from './plugin_table_cell.js';\nimport { Struct } from './struct.js';\nimport { AudioData } from './plugin_audio.js';\nimport {\n OrderedListData,\n BulletedListData,\n CheckboxListData,\n ListItemNodeData,\n} from './node_list.js';\nimport { BlockquoteData } from './node_blockquote.js';\nimport { CaptionData } from './node_caption.js';\nimport { LayoutData } from './node_layout.js';\nimport { LayoutCellData } from './node_layout_cell.js';\nimport { ShapeData } from './plugin_shape.js';\nimport { CardData } from './node_card.js';\nimport { TocData } from './plugin_toc.js';\nimport { SmartBlockData, SmartBlockCellData } from './plugin_smart_block.js';\nimport { AnchorData } from './decoration_anchor.js';\nimport { ColorData } from './decoration_color.js';\nimport { LinkData } from './decoration_link.js';\nimport { MentionData } from './decoration_mention.js';\nimport { FontSizeData } from './decoration_fontsize.js';\nimport { SpoilerData } from './decoration_spoiler.js';\nimport { FontFamilyData } from './decoration_fontfamily.js';\nimport { SketchData } from './decoration_sketch.js';\n\nimport { Node_Type, Decoration_Type } from './rich_content.enums.js';\n\nexport interface RichContent {\n /** Node objects representing a rich content document. */\n nodes: Node[];\n /** Object metadata. */\n metadata?: Metadata;\n /** Global styling for header, paragraph, block quote, and code block nodes in the object. */\n documentStyle?: DocumentStyle;\n}\n\nexport interface Node {\n /** Node type. Use `APP_EMBED` for nodes that embed content from other Wix apps. Use `EMBED` to embed content in [oEmbed](https://oembed.com/) format. */\n type: Node_Type;\n /** Node ID. */\n id: string;\n /** A list of child nodes. */\n nodes: Node[];\n /** Padding and background color styling for the node. */\n style?: NodeStyle;\n /** Data for a button node. */\n buttonData?: ButtonData | undefined;\n /** Data for a code block node. */\n codeBlockData?: CodeBlockData | undefined;\n /** Data for a divider node. */\n dividerData?: DividerData | undefined;\n /** Data for a file node. */\n fileData?: FileData | undefined;\n /** Data for a gallery node. */\n galleryData?: GalleryData | undefined;\n /** Data for a GIF node. */\n gifData?: GIFData | undefined;\n /** Data for a heading node. */\n headingData?: HeadingData | undefined;\n /** Data for an embedded HTML node. */\n htmlData?: HTMLData | undefined;\n /** Data for an image node. */\n imageData?: ImageData | undefined;\n /** Data for a link preview node. */\n linkPreviewData?: LinkPreviewData | undefined;\n /** @deprecated */\n mapData?: MapData | undefined;\n /** Data for a paragraph node. */\n paragraphData?: ParagraphData | undefined;\n /** Data for a poll node. */\n pollData?: PollData | undefined;\n /** Data for a text node. Used to apply decorations to text. */\n textData?: TextData | undefined;\n /** Data for an app embed node. */\n appEmbedData?: AppEmbedData | undefined;\n /** Data for a video node. */\n videoData?: VideoData | undefined;\n /** Data for an oEmbed node. */\n embedData?: EmbedData | undefined;\n /** Data for a collapsible list node. */\n collapsibleListData?: CollapsibleListData | undefined;\n /** Data for a table node. */\n tableData?: TableData | undefined;\n /** Data for a table cell node. */\n tableCellData?: TableCellData | undefined;\n /** Data for a custom external node. */\n externalData?: Struct | undefined;\n /** Data for an audio node. */\n audioData?: AudioData | undefined;\n /** Data for an ordered list node. */\n orderedListData?: OrderedListData | undefined;\n /** Data for a bulleted list node. */\n bulletedListData?: BulletedListData | undefined;\n /** Data for a block quote node. */\n blockquoteData?: BlockquoteData | undefined;\n /** Data for a caption node. */\n captionData?: CaptionData | undefined;\n /** Data for a layout node. Reserved for future use. */\n layoutData?: LayoutData | undefined;\n /** Data for a cell node. */\n layoutCellData?: LayoutCellData | undefined;\n /** Data for a shape node. */\n shapeData?: ShapeData | undefined;\n /** Data for a card node. */\n cardData?: CardData | undefined;\n /** Data for a table of contents node. */\n tocData?: TocData | undefined;\n /** Data for a smart block node. */\n smartBlockData?: SmartBlockData | undefined;\n /** Data for a smart block cell node. */\n smartBlockCellData?: SmartBlockCellData | undefined;\n /** Data for a checkbox list node. */\n checkboxListData?: CheckboxListData | undefined;\n /** Data for a list item node. */\n listItemData?: ListItemNodeData | undefined;\n}\n\nexport function node_TypeFromJSON(object: any): Node_Type {\n switch (object) {\n case 0:\n case \"PARAGRAPH\":\n return Node_Type.PARAGRAPH;\n case 1:\n case \"TEXT\":\n return Node_Type.TEXT;\n case 2:\n case \"HEADING\":\n return Node_Type.HEADING;\n case 3:\n case \"BULLETED_LIST\":\n return Node_Type.BULLETED_LIST;\n case 4:\n case \"ORDERED_LIST\":\n return Node_Type.ORDERED_LIST;\n case 5:\n case \"LIST_ITEM\":\n return Node_Type.LIST_ITEM;\n case 6:\n case \"BLOCKQUOTE\":\n return Node_Type.BLOCKQUOTE;\n case 7:\n case \"CODE_BLOCK\":\n return Node_Type.CODE_BLOCK;\n case 8:\n case \"VIDEO\":\n return Node_Type.VIDEO;\n case 9:\n case \"DIVIDER\":\n return Node_Type.DIVIDER;\n case 10:\n case \"FILE\":\n return Node_Type.FILE;\n case 11:\n case \"GALLERY\":\n return Node_Type.GALLERY;\n case 12:\n case \"GIF\":\n return Node_Type.GIF;\n case 13:\n case \"HTML\":\n return Node_Type.HTML;\n case 14:\n case \"IMAGE\":\n return Node_Type.IMAGE;\n case 15:\n case \"LINK_PREVIEW\":\n return Node_Type.LINK_PREVIEW;\n case 16:\n case \"MAP\":\n return Node_Type.MAP;\n case 17:\n case \"POLL\":\n return Node_Type.POLL;\n case 18:\n case \"APP_EMBED\":\n return Node_Type.APP_EMBED;\n case 19:\n case \"BUTTON\":\n return Node_Type.BUTTON;\n case 20:\n case \"COLLAPSIBLE_LIST\":\n return Node_Type.COLLAPSIBLE_LIST;\n case 21:\n case \"TABLE\":\n return Node_Type.TABLE;\n case 22:\n case \"EMBED\":\n return Node_Type.EMBED;\n case 23:\n case \"COLLAPSIBLE_ITEM\":\n return Node_Type.COLLAPSIBLE_ITEM;\n case 24:\n case \"COLLAPSIBLE_ITEM_TITLE\":\n return Node_Type.COLLAPSIBLE_ITEM_TITLE;\n case 25:\n case \"COLLAPSIBLE_ITEM_BODY\":\n return Node_Type.COLLAPSIBLE_ITEM_BODY;\n case 26:\n case \"TABLE_CELL\":\n return Node_Type.TABLE_CELL;\n case 27:\n case \"TABLE_ROW\":\n return Node_Type.TABLE_ROW;\n case 28:\n case \"EXTERNAL\":\n return Node_Type.EXTERNAL;\n case 29:\n case \"AUDIO\":\n return Node_Type.AUDIO;\n case 30:\n case \"CAPTION\":\n return Node_Type.CAPTION;\n case 31:\n case \"LAYOUT\":\n return Node_Type.LAYOUT;\n case 32:\n case \"LAYOUT_CELL\":\n return Node_Type.LAYOUT_CELL;\n case 33:\n case \"SHAPE\":\n return Node_Type.SHAPE;\n case 34:\n case \"CARD\":\n return Node_Type.CARD;\n case 35:\n case \"TOC\":\n return Node_Type.TOC;\n case 36:\n case \"SMART_BLOCK\":\n return Node_Type.SMART_BLOCK;\n case 37:\n case \"SMART_BLOCK_CELL\":\n return Node_Type.SMART_BLOCK_CELL;\n case 38:\n case \"CHECKBOX_LIST\":\n return Node_Type.CHECKBOX_LIST;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Node_Type.UNRECOGNIZED;\n }\n}\n\nexport function node_TypeToJSON(object: Node_Type): string {\n switch (object) {\n case Node_Type.PARAGRAPH:\n return \"PARAGRAPH\";\n case Node_Type.TEXT:\n return \"TEXT\";\n case Node_Type.HEADING:\n return \"HEADING\";\n case Node_Type.BULLETED_LIST:\n return \"BULLETED_LIST\";\n case Node_Type.ORDERED_LIST:\n return \"ORDERED_LIST\";\n case Node_Type.LIST_ITEM:\n return \"LIST_ITEM\";\n case Node_Type.BLOCKQUOTE:\n return \"BLOCKQUOTE\";\n case Node_Type.CODE_BLOCK:\n return \"CODE_BLOCK\";\n case Node_Type.VIDEO:\n return \"VIDEO\";\n case Node_Type.DIVIDER:\n return \"DIVIDER\";\n case Node_Type.FILE:\n return \"FILE\";\n case Node_Type.GALLERY:\n return \"GALLERY\";\n case Node_Type.GIF:\n return \"GIF\";\n case Node_Type.HTML:\n return \"HTML\";\n case Node_Type.IMAGE:\n return \"IMAGE\";\n case Node_Type.LINK_PREVIEW:\n return \"LINK_PREVIEW\";\n case Node_Type.MAP:\n return \"MAP\";\n case Node_Type.POLL:\n return \"POLL\";\n case Node_Type.APP_EMBED:\n return \"APP_EMBED\";\n case Node_Type.BUTTON:\n return \"BUTTON\";\n case Node_Type.COLLAPSIBLE_LIST:\n return \"COLLAPSIBLE_LIST\";\n case Node_Type.TABLE:\n return \"TABLE\";\n case Node_Type.EMBED:\n return \"EMBED\";\n case Node_Type.COLLAPSIBLE_ITEM:\n return \"COLLAPSIBLE_ITEM\";\n case Node_Type.COLLAPSIBLE_ITEM_TITLE:\n return \"COLLAPSIBLE_ITEM_TITLE\";\n case Node_Type.COLLAPSIBLE_ITEM_BODY:\n return \"COLLAPSIBLE_ITEM_BODY\";\n case Node_Type.TABLE_CELL:\n return \"TABLE_CELL\";\n case Node_Type.TABLE_ROW:\n return \"TABLE_ROW\";\n case Node_Type.EXTERNAL:\n return \"EXTERNAL\";\n case Node_Type.AUDIO:\n return \"AUDIO\";\n case Node_Type.CAPTION:\n return \"CAPTION\";\n case Node_Type.LAYOUT:\n return \"LAYOUT\";\n case Node_Type.LAYOUT_CELL:\n return \"LAYOUT_CELL\";\n case Node_Type.SHAPE:\n return \"SHAPE\";\n case Node_Type.CARD:\n return \"CARD\";\n case Node_Type.TOC:\n return \"TOC\";\n case Node_Type.SMART_BLOCK:\n return \"SMART_BLOCK\";\n case Node_Type.SMART_BLOCK_CELL:\n return \"SMART_BLOCK_CELL\";\n case Node_Type.CHECKBOX_LIST:\n return \"CHECKBOX_LIST\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface NodeStyle {\n /** The top padding value in pixels. */\n paddingTop?: string;\n /** The bottom padding value in pixels. */\n paddingBottom?: string;\n /** The background color as a hexadecimal value. */\n backgroundColor?: string;\n}\n\nexport interface TextData {\n /** The text to apply decorations to. */\n text: string;\n /** The decorations to apply. */\n decorations: Decoration[];\n}\n\n/** Adds appearence changes to text */\nexport interface Decoration {\n /** The type of decoration to apply. */\n type: Decoration_Type;\n /** Data for an anchor link decoration. */\n anchorData?: AnchorData | undefined;\n /** Data for a color decoration. */\n colorData?: ColorData | undefined;\n /** Data for an external link decoration. */\n linkData?: LinkData | undefined;\n /** Data for a mention decoration. */\n mentionData?: MentionData | undefined;\n /** Data for a font size decoration. */\n fontSizeData?: FontSizeData | undefined;\n /** Font weight for a bold decoration. */\n fontWeightValue?: number;\n /** Data for an italic decoration. Defaults to `true`. */\n italicData?: boolean;\n /** Data for an underline decoration. Defaults to `true`. */\n underlineData?: boolean;\n /** Data for a spoiler decoration. */\n spoilerData?: SpoilerData | undefined;\n /** Data for a strikethrough decoration. Defaults to `true`. */\n strikethroughData?: boolean;\n /** Data for a superscript decoration. Defaults to `true`. */\n superscriptData?: boolean;\n /** Data for a subscript decoration. Defaults to `true`. */\n subscriptData?: boolean;\n /** Data for a font family decoration. */\n fontFamilyData?: FontFamilyData | undefined;\n /** Data for a hand-drawn sketch annotation decoration. */\n sketchData?: SketchData | undefined;\n}\n\nexport function decoration_TypeFromJSON(object: any): Decoration_Type {\n switch (object) {\n case 0:\n case \"BOLD\":\n return Decoration_Type.BOLD;\n case 1:\n case \"ITALIC\":\n return Decoration_Type.ITALIC;\n case 2:\n case \"UNDERLINE\":\n return Decoration_Type.UNDERLINE;\n case 3:\n case \"SPOILER\":\n return Decoration_Type.SPOILER;\n case 4:\n case \"ANCHOR\":\n return Decoration_Type.ANCHOR;\n case 5:\n case \"MENTION\":\n return Decoration_Type.MENTION;\n case 6:\n case \"LINK\":\n return Decoration_Type.LINK;\n case 7:\n case \"COLOR\":\n return Decoration_Type.COLOR;\n case 8:\n case \"FONT_SIZE\":\n return Decoration_Type.FONT_SIZE;\n case 9:\n case \"EXTERNAL\":\n return Decoration_Type.EXTERNAL;\n case 10:\n case \"STRIKETHROUGH\":\n return Decoration_Type.STRIKETHROUGH;\n case 11:\n case \"SUPERSCRIPT\":\n return Decoration_Type.SUPERSCRIPT;\n case 12:\n case \"SUBSCRIPT\":\n return Decoration_Type.SUBSCRIPT;\n case 13:\n case \"FONT_FAMILY\":\n return Decoration_Type.FONT_FAMILY;\n case 14:\n case \"SKETCH\":\n return Decoration_Type.SKETCH;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return Decoration_Type.UNRECOGNIZED;\n }\n}\n\nexport function decoration_TypeToJSON(object: Decoration_Type): string {\n switch (object) {\n case Decoration_Type.BOLD:\n return \"BOLD\";\n case Decoration_Type.ITALIC:\n return \"ITALIC\";\n case Decoration_Type.UNDERLINE:\n return \"UNDERLINE\";\n case Decoration_Type.SPOILER:\n return \"SPOILER\";\n case Decoration_Type.ANCHOR:\n return \"ANCHOR\";\n case Decoration_Type.MENTION:\n return \"MENTION\";\n case Decoration_Type.LINK:\n return \"LINK\";\n case Decoration_Type.COLOR:\n return \"COLOR\";\n case Decoration_Type.FONT_SIZE:\n return \"FONT_SIZE\";\n case Decoration_Type.EXTERNAL:\n return \"EXTERNAL\";\n case Decoration_Type.STRIKETHROUGH:\n return \"STRIKETHROUGH\";\n case Decoration_Type.SUPERSCRIPT:\n return \"SUPERSCRIPT\";\n case Decoration_Type.SUBSCRIPT:\n return \"SUBSCRIPT\";\n case Decoration_Type.FONT_FAMILY:\n return \"FONT_FAMILY\";\n case Decoration_Type.SKETCH:\n return \"SKETCH\";\n default:\n return \"UNKNOWN\";\n }\n}\n\nexport interface Metadata {\n /** Schema version. */\n version: number;\n /**\n * When the object was created.\n *\n * @deprecated\n */\n createdTimestamp?: Date;\n /**\n * When the object was most recently updated.\n *\n * @deprecated\n */\n updatedTimestamp?: Date;\n /** Object ID. */\n id?: string;\n}\n\nexport interface TextNodeStyle {\n /** The decorations to apply to the node. */\n decorations: Decoration[];\n /** Padding and background color for the node. */\n nodeStyle?: NodeStyle;\n /** Line height for text in the node. */\n lineHeight?: string;\n}\n\nexport interface DocumentStyle {\n /** Styling for H1 nodes. */\n headerOne?: TextNodeStyle;\n /** Styling for H2 nodes. */\n headerTwo?: TextNodeStyle;\n /** Styling for H3 nodes. */\n headerThree?: TextNodeStyle;\n /** Styling for H4 nodes. */\n headerFour?: TextNodeStyle;\n /** Styling for H5 nodes. */\n headerFive?: TextNodeStyle;\n /** Styling for H6 nodes. */\n headerSix?: TextNodeStyle;\n /** Styling for paragraph nodes. */\n paragraph?: TextNodeStyle;\n /** Styling for block quote nodes. */\n blockquote?: TextNodeStyle;\n /** Styling for code block nodes. */\n codeBlock?: TextNodeStyle;\n}\n\nconst baseRichContent: object = {};\n\nexport const RichContent = {\n fromJSON(object: any): RichContent {\n const message = { ...baseRichContent } as RichContent;\n message.nodes = (object.nodes ?? []).map((e: any) => Node.fromJSON(e));\n message.metadata =\n object.metadata !== undefined && object.metadata !== null\n ? Metadata.fromJSON(object.metadata)\n : undefined;\n message.documentStyle =\n object.documentStyle !== undefined && object.documentStyle !== null\n ? DocumentStyle.fromJSON(object.documentStyle)\n : undefined;\n return message;\n },\n\n toJSON(message: RichContent): unknown {\n const obj: any = {};\n if (message.nodes) {\n obj.nodes = message.nodes.map((e) => (e ? Node.toJSON(e) : undefined));\n } else {\n obj.nodes = [];\n }\n message.metadata !== undefined &&\n (obj.metadata = message.metadata\n ? Metadata.toJSON(message.metadata)\n : undefined);\n message.documentStyle !== undefined &&\n (obj.documentStyle = message.documentStyle\n ? DocumentStyle.toJSON(message.documentStyle)\n : undefined);\n return obj;\n },\n};\n\nconst baseNode: object = { type: Node_Type.PARAGRAPH, id: \"\" };\n\nexport const Node = {\n fromJSON(object: any): Node {\n const message = { ...baseNode } as Node;\n message.type =\n object.type !== undefined && object.type !== null\n ? node_TypeFromJSON(object.type)\n : Node_Type.PARAGRAPH;\n message.id =\n object.id !== undefined && object.id !== null ? String(object.id) : \"\";\n message.nodes = (object.nodes ?? []).map((e: any) => Node.fromJSON(e));\n message.style =\n object.style !== undefined && object.style !== null\n ? NodeStyle.fromJSON(object.style)\n : undefined;\n message.buttonData =\n object.buttonData !== undefined && object.buttonData !== null\n ? ButtonData.fromJSON(object.buttonData)\n : undefined;\n message.codeBlockData =\n object.codeBlockData !== undefined && object.codeBlockData !== null\n ? CodeBlockData.fromJSON(object.codeBlockData)\n : undefined;\n message.dividerData =\n object.dividerData !== undefined && object.dividerData !== null\n ? DividerData.fromJSON(object.dividerData)\n : undefined;\n message.fileData =\n object.fileData !== undefined && object.fileData !== null\n ? FileData.fromJSON(object.fileData)\n : undefined;\n message.galleryData =\n object.galleryData !== undefined && object.galleryData !== null\n ? GalleryData.fromJSON(object.galleryData)\n : undefined;\n message.gifData =\n object.gifData !== undefined && object.gifData !== null\n ? GIFData.fromJSON(object.gifData)\n : undefined;\n message.headingData =\n object.headingData !== undefined && object.headingData !== null\n ? HeadingData.fromJSON(object.headingData)\n : undefined;\n message.htmlData =\n object.htmlData !== undefined && object.htmlData !== null\n ? HTMLData.fromJSON(object.htmlData)\n : undefined;\n message.imageData =\n object.imageData !== undefined && object.imageData !== null\n ? ImageData.fromJSON(object.imageData)\n : undefined;\n message.linkPreviewData =\n object.linkPreviewData !== undefined && object.linkPreviewData !== null\n ? LinkPreviewData.fromJSON(object.linkPreviewData)\n : undefined;\n message.mapData =\n object.mapData !== undefined && object.mapData !== null\n ? MapData.fromJSON(object.mapData)\n : undefined;\n message.paragraphData =\n object.paragraphData !== undefined && object.paragraphData !== null\n ? ParagraphData.fromJSON(object.paragraphData)\n : undefined;\n message.pollData =\n object.pollData !== undefined && object.pollData !== null\n ? PollData.fromJSON(object.pollData)\n : undefined;\n message.textData =\n object.textData !== undefined && object.textData !== null\n ? TextData.fromJSON(object.textData)\n : undefined;\n message.appEmbedData =\n object.appEmbedData !== undefined && object.appEmbedData !== null\n ? AppEmbedData.fromJSON(object.appEmbedData)\n : undefined;\n message.videoData =\n object.videoData !== undefined && object.videoData !== null\n ? VideoData.fromJSON(object.videoData)\n : undefined;\n message.embedData =\n object.embedData !== undefined && object.embedData !== null\n ? EmbedData.fromJSON(object.embedData)\n : undefined;\n message.collapsibleListData =\n object.collapsibleListData !== undefined &&\n object.collapsibleListData !== null\n ? CollapsibleListData.fromJSON(object.collapsibleListData)\n : undefined;\n message.tableData =\n object.tableData !== undefined && object.tableData !== null\n ? TableData.fromJSON(object.tableData)\n : undefined;\n message.tableCellData =\n object.tableCellData !== undefined && object.tableCellData !== null\n ? TableCellData.fromJSON(object.tableCellData)\n : undefined;\n message.externalData =\n object.externalData !== undefined && object.externalData !== null\n ? Struct.fromJSON(object.externalData)\n : undefined;\n message.audioData =\n object.audioData !== undefined && object.audioData !== null\n ? AudioData.fromJSON(object.audioData)\n : undefined;\n message.orderedListData =\n object.orderedListData !== undefined && object.orderedListData !== null\n ? OrderedListData.fromJSON(object.orderedListData)\n : undefined;\n message.bulletedListData =\n object.bulletedListData !== undefined && object.bulletedListData !== null\n ? BulletedListData.fromJSON(object.bulletedListData)\n : undefined;\n message.blockquoteData =\n object.blockquoteData !== undefined && object.blockquoteData !== null\n ? BlockquoteData.fromJSON(object.blockquoteData)\n : undefined;\n message.captionData =\n object.captionData !== undefined && object.captionData !== null\n ? CaptionData.fromJSON(object.captionData)\n : undefined;\n message.layoutData =\n object.layoutData !== undefined && object.layoutData !== null\n ? LayoutData.fromJSON(object.layoutData)\n : undefined;\n message.layoutCellData =\n object.layoutCellData !== undefined && object.layoutCellData !== null\n ? LayoutCellData.fromJSON(object.layoutCellData)\n : undefined;\n message.shapeData =\n object.shapeData !== undefined && object.shapeData !== null\n ? ShapeData.fromJSON(object.shapeData)\n : undefined;\n message.cardData =\n object.cardData !== undefined && object.cardData !== null\n ? CardData.fromJSON(object.cardData)\n : undefined;\n message.tocData =\n object.tocData !== undefined && object.tocData !== null\n ? TocData.fromJSON(object.tocData)\n : undefined;\n message.smartBlockData =\n object.smartBlockData !== undefined && object.smartBlockData !== null\n ? SmartBlockData.fromJSON(object.smartBlockData)\n : undefined;\n message.smartBlockCellData =\n object.smartBlockCellData !== undefined &&\n object.smartBlockCellData !== null\n ? SmartBlockCellData.fromJSON(object.smartBlockCellData)\n : undefined;\n message.checkboxListData =\n object.checkboxListData !== undefined && object.checkboxListData !== null\n ? CheckboxListData.fromJSON(object.checkboxListData)\n : undefined;\n message.listItemData =\n object.listItemData !== undefined && object.listItemData !== null\n ? ListItemNodeData.fromJSON(object.listItemData)\n : undefined;\n return message;\n },\n\n toJSON(message: Node): unknown {\n const obj: any = {};\n message.type !== undefined && (obj.type = node_TypeToJSON(message.type));\n message.id !== undefined && (obj.id = message.id);\n if (message.nodes) {\n obj.nodes = message.nodes.map((e) => (e ? Node.toJSON(e) : undefined));\n } else {\n obj.nodes = [];\n }\n message.style !== undefined &&\n (obj.style = message.style ? NodeStyle.toJSON(message.style) : undefined);\n message.buttonData !== undefined &&\n (obj.buttonData = message.buttonData\n ? ButtonData.toJSON(message.buttonData)\n : undefined);\n message.codeBlockData !== undefined &&\n (obj.codeBlockData = message.codeBlockData\n ? CodeBlockData.toJSON(message.codeBlockData)\n : undefined);\n message.dividerData !== undefined &&\n (obj.dividerData = message.dividerData\n ? DividerData.toJSON(message.dividerData)\n : undefined);\n message.fileData !== undefined &&\n (obj.fileData = message.fileData\n ? FileData.toJSON(message.fileData)\n : undefined);\n message.galleryData !== undefined &&\n (obj.galleryData = message.galleryData\n ? GalleryData.toJSON(message.galleryData)\n : undefined);\n message.gifData !== undefined &&\n (obj.gifData = message.gifData\n ? GIFData.toJSON(message.gifData)\n : undefined);\n message.headingData !== undefined &&\n (obj.headingData = message.headingData\n ? HeadingData.toJSON(message.headingData)\n : undefined);\n message.htmlData !== undefined &&\n (obj.htmlData = message.htmlData\n ? HTMLData.toJSON(message.htmlData)\n : undefined);\n message.imageData !== undefined &&\n (obj.imageData = message.imageData\n ? ImageData.toJSON(message.imageData)\n : undefined);\n message.linkPreviewData !== undefined &&\n (obj.linkPreviewData = message.linkPreviewData\n ? LinkPreviewData.toJSON(message.linkPreviewData)\n : undefined);\n message.mapData !== undefined &&\n (obj.mapData = message.mapData\n ? MapData.toJSON(message.mapData)\n : undefined);\n message.paragraphData !== undefined &&\n (obj.paragraphData = message.paragraphData\n ? ParagraphData.toJSON(message.paragraphData)\n : undefined);\n message.pollData !== undefined &&\n (obj.pollData = message.pollData\n ? PollData.toJSON(message.pollData)\n : undefined);\n message.textData !== undefined &&\n (obj.textData = message.textData\n ? TextData.toJSON(message.textData)\n : undefined);\n message.appEmbedData !== undefined &&\n (obj.appEmbedData = message.appEmbedData\n ? AppEmbedData.toJSON(message.appEmbedData)\n : undefined);\n message.videoData !== undefined &&\n (obj.videoData = message.videoData\n ? VideoData.toJSON(message.videoData)\n : undefined);\n message.embedData !== undefined &&\n (obj.embedData = message.embedData\n ? EmbedData.toJSON(message.embedData)\n : undefined);\n message.collapsibleListData !== undefined &&\n (obj.collapsibleListData = message.collapsibleListData\n ? CollapsibleListData.toJSON(message.collapsibleListData)\n : undefined);\n message.tableData !== undefined &&\n (obj.tableData = message.tableData\n ? TableData.toJSON(message.tableData)\n : undefined);\n message.tableCellData !== undefined &&\n (obj.tableCellData = message.tableCellData\n ? TableCellData.toJSON(message.tableCellData)\n : undefined);\n message.externalData !== undefined &&\n (obj.externalData = message.externalData\n ? Struct.toJSON(message.externalData)\n : undefined);\n message.audioData !== undefined &&\n (obj.audioData = message.audioData\n ? AudioData.toJSON(message.audioData)\n : undefined);\n message.orderedListData !== undefined &&\n (obj.orderedListData = message.orderedListData\n ? OrderedListData.toJSON(message.orderedListData)\n : undefined);\n message.bulletedListData !== undefined &&\n (obj.bulletedListData = message.bulletedListData\n ? BulletedListData.toJSON(message.bulletedListData)\n : undefined);\n message.blockquoteData !== undefined &&\n (obj.blockquoteData = message.blockquoteData\n ? BlockquoteData.toJSON(message.blockquoteData)\n : undefined);\n message.captionData !== undefined &&\n (obj.captionData = message.captionData\n ? CaptionData.toJSON(message.captionData)\n : undefined);\n message.layoutData !== undefined &&\n (obj.layoutData = message.layoutData\n ? LayoutData.toJSON(message.layoutData)\n : undefined);\n message.layoutCellData !== undefined &&\n (obj.layoutCellData = message.layoutCellData\n ? LayoutCellData.toJSON(message.layoutCellData)\n : undefined);\n message.shapeData !== undefined &&\n (obj.shapeData = message.shapeData\n ? ShapeData.toJSON(message.shapeData)\n : undefined);\n message.cardData !== undefined &&\n (obj.cardData = message.cardData\n ? CardData.toJSON(message.cardData)\n : undefined);\n message.tocData !== undefined &&\n (obj.tocData = message.tocData\n ? TocData.toJSON(message.tocData)\n : undefined);\n message.smartBlockData !== undefined &&\n (obj.smartBlockData = message.smartBlockData\n ? SmartBlockData.toJSON(message.smartBlockData)\n : undefined);\n message.smartBlockCellData !== undefined &&\n (obj.smartBlockCellData = message.smartBlockCellData\n ? SmartBlockCellData.toJSON(message.smartBlockCellData)\n : undefined);\n message.checkboxListData !== undefined &&\n (obj.checkboxListData = message.checkboxListData\n ? CheckboxListData.toJSON(message.checkboxListData)\n : undefined);\n message.listItemData !== undefined &&\n (obj.listItemData = message.listItemData\n ? ListItemNodeData.toJSON(message.listItemData)\n : undefined);\n return obj;\n },\n};\n\nconst baseNodeStyle: object = {};\n\nexport const NodeStyle = {\n fromJSON(object: any): NodeStyle {\n const message = { ...baseNodeStyle } as NodeStyle;\n message.paddingTop =\n object.paddingTop !== undefined && object.paddingTop !== null\n ? String(object.paddingTop)\n : undefined;\n message.paddingBottom =\n object.paddingBottom !== undefined && object.paddingBottom !== null\n ? String(object.paddingBottom)\n : undefined;\n message.backgroundColor =\n object.backgroundColor !== undefined && object.backgroundColor !== null\n ? String(object.backgroundColor)\n : undefined;\n return message;\n },\n\n toJSON(message: NodeStyle): unknown {\n const obj: any = {};\n message.paddingTop !== undefined && (obj.paddingTop = message.paddingTop);\n message.paddingBottom !== undefined &&\n (obj.paddingBottom = message.paddingBottom);\n message.backgroundColor !== undefined &&\n (obj.backgroundColor = message.backgroundColor);\n return obj;\n },\n};\n\nconst baseTextData: object = { text: \"\" };\n\nexport const TextData = {\n fromJSON(object: any): TextData {\n const message = { ...baseTextData } as TextData;\n message.text =\n object.text !== undefined && object.text !== null\n ? String(object.text)\n : \"\";\n message.decorations = (object.decorations ?? []).map((e: any) =>\n Decoration.fromJSON(e)\n );\n return message;\n },\n\n toJSON(message: TextData): unknown {\n const obj: any = {};\n message.text !== undefined && (obj.text = message.text);\n if (message.decorations) {\n obj.decorations = message.decorations.map((e) =>\n e ? Decoration.toJSON(e) : undefined\n );\n } else {\n obj.decorations = [];\n }\n return obj;\n },\n};\n\nconst baseDecoration: object = { type: Decoration_Type.BOLD };\n\nexport const Decoration = {\n fromJSON(object: any): Decoration {\n const message = { ...baseDecoration } as Decoration;\n message.type =\n object.type !== undefined && object.type !== null\n ? decoration_TypeFromJSON(object.type)\n : Decoration_Type.BOLD;\n message.anchorData =\n object.anchorData !== undefined && object.anchorData !== null\n ? AnchorData.fromJSON(object.anchorData)\n : undefined;\n message.colorData =\n object.colorData !== undefined && object.colorData !== null\n ? ColorData.fromJSON(object.colorData)\n : undefined;\n message.linkData =\n object.linkData !== undefined && object.linkData !== null\n ? LinkData.fromJSON(object.linkData)\n : undefined;\n message.mentionData =\n object.mentionData !== undefined && object.mentionData !== null\n ? MentionData.fromJSON(object.mentionData)\n : undefined;\n message.fontSizeData =\n object.fontSizeData !== undefined && object.fontSizeData !== null\n ? FontSizeData.fromJSON(object.fontSizeData)\n : undefined;\n message.fontWeightValue =\n object.fontWeightValue !== undefined && object.fontWeightValue !== null\n ? Number(object.fontWeightValue)\n : undefined;\n message.italicData =\n object.italicData !== undefined && object.italicData !== null\n ? Boolean(object.italicData)\n : undefined;\n message.underlineData =\n object.underlineData !== undefined && object.underlineData !== null\n ? Boolean(object.underlineData)\n : undefined;\n message.spoilerData =\n object.spoilerData !== undefined && object.spoilerData !== null\n ? SpoilerData.fromJSON(object.spoilerData)\n : undefined;\n message.strikethroughData =\n object.strikethroughData !== undefined &&\n object.strikethroughData !== null\n ? Boolean(object.strikethroughData)\n : undefined;\n message.superscriptData =\n object.superscriptData !== undefined && object.superscriptData !== null\n ? Boolean(object.superscriptData)\n : undefined;\n message.subscriptData =\n object.subscriptData !== undefined && object.subscriptData !== null\n ? Boolean(object.subscriptData)\n : undefined;\n message.fontFamilyData =\n object.fontFamilyData !== undefined && object.fontFamilyData !== null\n ? FontFamilyData.fromJSON(object.fontFamilyData)\n : undefined;\n message.sketchData =\n object.sketchData !== undefined && object.sketchData !== null\n ? SketchData.fromJSON(object.sketchData)\n : undefined;\n return message;\n },\n\n toJSON(message: Decoration): unknown {\n const obj: any = {};\n message.type !== undefined &&\n (obj.type = decoration_TypeToJSON(message.type));\n message.anchorData !== undefined &&\n (obj.anchorData = message.anchorData\n ? AnchorData.toJSON(message.anchorData)\n : undefined);\n message.colorData !== undefined &&\n (obj.colorData = message.colorData\n ? ColorData.toJSON(message.colorData)\n : undefined);\n message.linkData !== undefined &&\n (obj.linkData = message.linkData\n ? LinkData.toJSON(message.linkData)\n : undefined);\n message.mentionData !== undefined &&\n (obj.mentionData = message.mentionData\n ? MentionData.toJSON(message.mentionData)\n : undefined);\n message.fontSizeData !== undefined &&\n (obj.fontSizeData = message.fontSizeData\n ? FontSizeData.toJSON(message.fontSizeData)\n : undefined);\n message.fontWeightValue !== undefined &&\n (obj.fontWeightValue = message.fontWeightValue);\n message.italicData !== undefined && (obj.italicData = message.italicData);\n message.underlineData !== undefined &&\n (obj.underlineData = message.underlineData);\n message.spoilerData !== undefined &&\n (obj.spoilerData = message.spoilerData\n ? SpoilerData.toJSON(message.spoilerData)\n : undefined);\n message.strikethroughData !== undefined &&\n (obj.strikethroughData = message.strikethroughData);\n message.superscriptData !== undefined &&\n (obj.superscriptData = message.superscriptData);\n message.subscriptData !== undefined &&\n (obj.subscriptData = message.subscriptData);\n message.fontFamilyData !== undefined &&\n (obj.fontFamilyData = message.fontFamilyData\n ? FontFamilyData.toJSON(message.fontFamilyData)\n : undefined);\n message.sketchData !== undefined &&\n (obj.sketchData = message.sketchData\n ? SketchData.toJSON(message.sketchData)\n : undefined);\n return obj;\n },\n};\n\nconst baseMetadata: object = { version: 0 };\n\nexport const Metadata = {\n fromJSON(object: any): Metadata {\n const message = { ...baseMetadata } as Metadata;\n message.version =\n object.version !== undefined && object.version !== null\n ? Number(object.version)\n : 0;\n message.createdTimestamp =\n object.createdTimestamp !== undefined && object.createdTimestamp !== null\n ? fromJsonTimestamp(object.createdTimestamp)\n : undefined;\n message.updatedTimestamp =\n object.updatedTimestamp !== undefined && object.updatedTimestamp !== null\n ? fromJsonTimestamp(object.updatedTimestamp)\n : undefined;\n message.id =\n object.id !== undefined && object.id !== null\n ? String(object.id)\n : undefined;\n return message;\n },\n\n toJSON(message: Metadata): unknown {\n const obj: any = {};\n message.version !== undefined &&\n (obj.version = Math.round(message.version));\n message.createdTimestamp !== undefined &&\n (obj.createdTimestamp = message.createdTimestamp.toISOString());\n message.updatedTimestamp !== undefined &&\n (obj.updatedTimestamp = message.updatedTimestamp.toISOString());\n message.id !== undefined && (obj.id = message.id);\n return obj;\n },\n};\n\nconst baseTextNodeStyle: object = {};\n\nexport const TextNodeStyle = {\n fromJSON(object: any): TextNodeStyle {\n const message = { ...baseTextNodeStyle } as TextNodeStyle;\n message.decorations = (object.decorations ?? []).map((e: any) =>\n Decoration.fromJSON(e)\n );\n message.nodeStyle =\n object.nodeStyle !== undefined && object.nodeStyle !== null\n ? NodeStyle.fromJSON(object.nodeStyle)\n : undefined;\n message.lineHeight =\n object.lineHeight !== undefined && object.lineHeight !== null\n ? String(object.lineHeight)\n : undefined;\n return message;\n },\n\n toJSON(message: TextNodeStyle): unknown {\n const obj: any = {};\n if (message.decorations) {\n obj.decorations = message.decorations.map((e) =>\n e ? Decoration.toJSON(e) : undefined\n );\n } else {\n obj.decorations = [];\n }\n message.nodeStyle !== undefined &&\n (obj.nodeStyle = message.nodeStyle\n ? NodeStyle.toJSON(message.nodeStyle)\n : undefined);\n message.lineHeight !== undefined && (obj.lineHeight = message.lineHeight);\n return obj;\n },\n};\n\nconst baseDocumentStyle: object = {};\n\nexport const DocumentStyle = {\n fromJSON(object: any): DocumentStyle {\n const message = { ...baseDocumentStyle } as DocumentStyle;\n message.headerOne =\n object.headerOne !== undefined && object.headerOne !== null\n ? TextNodeStyle.fromJSON(object.headerOne)\n : undefined;\n message.headerTwo =\n object.headerTwo !== undefined && object.headerTwo !== null\n ? TextNodeStyle.fromJSON(object.headerTwo)\n : undefined;\n message.headerThree =\n object.headerThree !== undefined && object.headerThree !== null\n ? TextNodeStyle.fromJSON(object.headerThree)\n : undefined;\n message.headerFour =\n object.headerFour !== undefined && object.headerFour !== null\n ? TextNodeStyle.fromJSON(object.headerFour)\n : undefined;\n message.headerFive =\n object.headerFive !== undefined && object.headerFive !== null\n ? TextNodeStyle.fromJSON(object.headerFive)\n : undefined;\n message.headerSix =\n object.headerSix !== undefined && object.headerSix !== null\n ? TextNodeStyle.fromJSON(object.headerSix)\n : undefined;\n message.paragraph =\n object.paragraph !== undefined && object.paragraph !== null\n ? TextNodeStyle.fromJSON(object.paragraph)\n : undefined;\n message.blockquote =\n object.blockquote !== undefined && object.blockquote !== null\n ? TextNodeStyle.fromJSON(object.blockquote)\n : undefined;\n message.codeBlock =\n object.codeBlock !== undefined && object.codeBlock !== null\n ? TextNodeStyle.fromJSON(object.codeBlock)\n : undefined;\n return message;\n },\n\n toJSON(message: DocumentStyle): unknown {\n const obj: any = {};\n message.headerOne !== undefined &&\n (obj.headerOne = message.headerOne\n ? TextNodeStyle.toJSON(message.headerOne)\n : undefined);\n message.headerTwo !== undefined &&\n (obj.headerTwo = message.headerTwo\n ? TextNodeStyle.toJSON(message.headerTwo)\n : undefined);\n message.headerThree !== undefined &&\n (obj.headerThree = message.headerThree\n ? TextNodeStyle.toJSON(message.headerThree)\n : undefined);\n message.headerFour !== undefined &&\n (obj.headerFour = message.headerFour\n ? TextNodeStyle.toJSON(message.headerFour)\n : undefined);\n message.headerFive !== undefined &&\n (obj.headerFive = message.headerFive\n ? TextNodeStyle.toJSON(message.headerFive)\n : undefined);\n message.headerSix !== undefined &&\n (obj.headerSix = message.headerSix\n ? TextNodeStyle.toJSON(message.headerSix)\n : undefined);\n message.paragraph !== undefined &&\n (obj.paragraph = message.paragraph\n ? TextNodeStyle.toJSON(message.paragraph)\n : undefined);\n message.blockquote !== undefined &&\n (obj.blockquote = message.blockquote\n ? TextNodeStyle.toJSON(message.blockquote)\n : undefined);\n message.codeBlock !== undefined &&\n (obj.codeBlock = message.codeBlock\n ? TextNodeStyle.toJSON(message.codeBlock)\n : undefined);\n return obj;\n },\n};\n\nfunction fromTimestamp(t: Timestamp): Date {\n let millis = Number(t.seconds) * 1_000;\n millis += t.nanos / 1_000_000;\n return new Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n if (o instanceof Date) {\n return o;\n } else if (typeof o === \"string\") {\n return new Date(o);\n } else {\n return fromTimestamp(Timestamp.fromJSON(o));\n }\n}\n","/* eslint-disable */\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(time(NULL));\n * timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n * struct timeval tv;\n * gettimeofday(&tv, NULL);\n *\n * Timestamp timestamp;\n * timestamp.set_seconds(tv.tv_sec);\n * timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n * FILETIME ft;\n * GetSystemTimeAsFileTime(&ft);\n * UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n * // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n * // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n * Timestamp timestamp;\n * timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n * timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n * long millis = System.currentTimeMillis();\n *\n * Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n * .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n *\n * Example 5: Compute Timestamp from current time in Python.\n *\n * timestamp = Timestamp()\n * timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\n * ) to obtain a formatter capable of generating timestamps in this format.\n */\nexport interface Timestamp {\n /**\n * Represents seconds of UTC time since Unix epoch\n * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n * 9999-12-31T23:59:59Z inclusive.\n */\n seconds: string;\n /**\n * Non-negative fractions of a second at nanosecond resolution. Negative\n * second values with fractions must still have non-negative nanos values\n * that count forward in time. Must be from 0 to 999,999,999\n * inclusive.\n */\n nanos: number;\n}\n\nconst baseTimestamp: object = { seconds: \"0\", nanos: 0 };\n\nexport const Timestamp = {\n fromJSON(object: any): Timestamp {\n const message = { ...baseTimestamp } as Timestamp;\n message.seconds =\n object.seconds !== undefined && object.seconds !== null\n ? String(object.seconds)\n : \"0\";\n message.nanos =\n object.nanos !== undefined && object.nanos !== null\n ? Number(object.nanos)\n : 0;\n return message;\n },\n\n toJSON(message: Timestamp): unknown {\n const obj: any = {};\n message.seconds !== undefined && (obj.seconds = message.seconds);\n message.nanos !== undefined && (obj.nanos = Math.round(message.nanos));\n return obj;\n },\n};\n","import { NullValue } from './struct.enums.js';\n\nexport function nullValueFromJSON(object: any): NullValue {\n switch (object) {\n case 0:\n case \"NULL_VALUE\":\n return NullValue.NULL_VALUE;\n case -1:\n case \"UNRECOGNIZED\":\n default:\n return NullValue.UNRECOGNIZED;\n }\n}\n\nexport function nullValueToJSON(object: NullValue): string {\n switch (object) {\n case NullValue.NULL_VALUE:\n return \"NULL_VALUE\";\n default:\n return \"UNKNOWN\";\n }\n}\n\n/**\n * `Struct` represents a structured data value, consisting of fields\n * which map to dynamically typed values. In some languages, `Struct`\n * might be supported by a native representation. For example, in\n * scripting languages like JS a struct is represented as an\n * object. The details of that representation are described together\n * with the proto support for the language.\n *\n * The JSON representation for `Struct` is JSON object.\n */\nexport interface Struct {\n /** An unordered map of dynamically typed values. */\n fields: { [key: string]: Value };\n}\n\nexport interface Struct_FieldsEntry {\n key: string;\n value?: Value;\n}\n\n/**\n * `Value` represents a dynamically typed value which can be either\n * null, a number, a string, a boolean, a recursive struct value, or a\n * list of values. A producer of value is expected to set one of these\n * variants. Absence of any variant indicates an error.\n *\n * The JSON representation for `Value` is JSON value.\n */\nexport interface Value {\n /** A null value. */\n nullValue: NullValue | undefined;\n /** A double value. */\n numberValue: number | undefined;\n /** A string value. */\n stringValue: string | undefined;\n /** A boolean value. */\n boolValue: boolean | undefined;\n /** A structured value. */\n structValue?: Struct | undefined;\n /** An array of `value` objects. */\n listValue?: ListValue | undefined;\n}\n\n/**\n * `ListValue` is a wrapper around a repeated field of values.\n *\n * The JSON representation for `ListValue` is JSON array.\n */\nexport interface ListValue {\n /** Repeated field of dynamically typed values. */\n values: Value[];\n}\n\nconst baseStruct: object = {};\n\nexport const Struct = {\n fromJSON(object: any): Struct {\n const message = { ...baseStruct } as Struct;\n message.fields = Object.entries(object.fields ?? {}).reduce<{\n [key: string]: Value;\n }>((acc, [key, value]) => {\n acc[key] = Value.fromJSON(value);\n return acc;\n }, {});\n return message;\n },\n\n toJSON(message: Struct): unknown {\n const obj: any = {};\n obj.fields = {};\n if (message.fields) {\n Object.entries(message.fields).forEach(([k, v]) => {\n obj.fields[k] = Value.toJSON(v);\n });\n }\n return obj;\n },\n};\n\nconst baseStruct_FieldsEntry: object = { key: \"\" };\n\nexport const Struct_FieldsEntry = {\n fromJSON(object: any): Struct_FieldsEntry {\n const message = { ...baseStruct_FieldsEntry } as Struct_FieldsEntry;\n message.key =\n object.key !== undefined && object.key !== null ? String(object.key) : \"\";\n message.value =\n object.value !== undefined && object.value !== null\n ? Value.fromJSON(object.value)\n : undefined;\n return message;\n },\n\n toJSON(message: Struct_FieldsEntry): unknown {\n const obj: any = {};\n message.key !== undefined && (obj.key = message.key);\n message.value !== undefined &&\n (obj.value = message.value ? Value.toJSON(message.value) : undefined);\n return obj;\n },\n};\n\nconst baseValue: object = {};\n\nexport const Value = {\n fromJSON(object: any): Value {\n const message = { ...baseValue } as Value;\n message.nullValue =\n object.nullValue !== undefined && object.nullValue !== null\n ? nullValueFromJSON(object.nullValue)\n : undefined;\n message.numberValue =\n object.numberValue !== undefined && object.numberValue !== null\n ? Number(object.numberValue)\n : undefined;\n message.stringValue =\n object.stringValue !== undefined && object.stringValue !== null\n ? String(object.stringValue)\n : undefined;\n message.boolValue =\n object.boolValue !== undefined && object.boolValue !== null\n ? Boolean(object.boolValue)\n : undefined;\n message.structValue =\n object.structValue !== undefined && object.structValue !== null\n ? Struct.fromJSON(object.structValue)\n : undefined;\n message.listValue =\n object.listValue !== undefined && object.listValue !== null\n ? ListValue.fromJSON(object.listValue)\n : undefined;\n return message;\n },\n\n toJSON(message: Value): unknown {\n const obj: any = {};\n message.nullValue !== undefined &&\n (obj.nullValue =\n message.nullValue !== undefined\n ? nullValueToJSON(message.nullValue)\n : undefined);\n message.numberValue !== undefined &&\n (obj.numberValue = message.numberValue);\n message.stringValue !== undefined &&\n (obj.stringValue = message.stringValue);\n message.boolValue !== undefined && (obj.boolValue = message.boolValue);\n message.structValue !== undefined &&\n (obj.structValue = message.structValue\n ? Struct.toJSON(message.structValue)\n : undefined);\n message.listValue !== undefined &&\n (obj.listValue = message.listValue\n ? ListValue.toJSON(message.listValue)\n : undefined);\n return obj;\n },\n};\n\nconst baseListValue: object = {};\n\nexport const ListValue = {\n fromJSON(object: any): ListValue {\n const message = { ...baseListValue } as ListValue;\n message.values = (object.values ?? []).map((e: any) => Value.fromJSON(e));\n return message;\n },\n\n toJSON(message: ListValue): unknown {\n const obj: any = {};\n if (message.values) {\n obj.values = message.values.map((e) => (e ? Value.toJSON(e) : undefined));\n } else {\n obj.values = [];\n }\n return obj;\n },\n};\n","/* eslint-disable */\n/**\n * `NullValue` is a singleton enumeration to represent the null value for the\n * `Value` type union.\n *\n * The JSON representation for `NullValue` is JSON `null`.\n */\nexport enum NullValue {\n /** NULL_VALUE - Null value. */\n NULL_VALUE = \"NULL_VALUE\",\n UNRECOGNIZED = \"UNRECOGNIZED\",\n}","// Types\nexport type {\n AnchorData,\n AnchorDecoration,\n Animation,\n Animation_Pointer,\n Animation_View,\n AppEmbedData,\n AppEmbedData_BookingData,\n AppEmbedData_EventData,\n AppEmbedDataBooking,\n AppEmbedDataEvent,\n AppEmbedDataProduct,\n AppEmbedNode,\n AudioData,\n AudioNode,\n BackgroundImage,\n BlockquoteData,\n BlockquoteNode,\n BoldDecoration,\n BulletedListData,\n BulletedListNode,\n CheckboxListData,\n CheckboxListNode,\n ListItemNodeData,\n ButtonData,\n ButtonData_Styles,\n ButtonData_Styles_Border,\n ButtonData_Styles_Colors,\n ButtonNode,\n CardChildNode,\n CardData,\n Background,\n Background_ColorVariant,\n Background_GradientVariant,\n CardNode,\n CaptionData,\n CaptionNode,\n CodeBlockData,\n CodeBlockNode,\n CollapsibleItemBodyChildNode,\n CollapsibleItemBodyNode,\n CollapsibleItemChildNode,\n CollapsibleItemNode,\n CollapsibleItemTitleNode,\n CollapsibleListData,\n CollapsibleListNode,\n CollapsibleTitleChildNode,\n ColorData,\n ColorDecoration,\n Decoration,\n DividerData,\n DividerNode,\n DocumentStyle,\n EmbedData,\n EmbedNode,\n EntranceAnimation,\n EntranceEffect,\n FileData,\n FileData_PDFSettings,\n FileNode,\n FileSource,\n FontFamilyData,\n FontFamilyDecoration,\n FontSizeData,\n FontSizeDecoration,\n GalleryData,\n GalleryData_Item,\n GalleryData_Item_Image,\n GalleryData_Item_Video,\n GalleryNode,\n GalleryOptions,\n GalleryOptions_ItemStyle,\n GalleryOptions_Layout,\n GalleryOptions_Thumbnails,\n GIF,\n GIFData,\n GifNode,\n HeadingData,\n HeadingNode,\n HTMLData,\n HtmlNode,\n ImageData,\n ImageData_Crop,\n ImageNode,\n ItalicDecoration,\n LayoutCellChildNode,\n LayoutCellData,\n LayoutCellNode,\n LayoutData,\n LayoutData_DesignTarget,\n LayoutData_ResponsivenessBehaviour,\n LayoutData_Banner,\n LayoutData_BannerPosition,\n LayoutData_BannerOrigin,\n LayoutNode,\n Link,\n Link_Rel,\n LinkData,\n LinkDecoration,\n LinkPreviewData,\n LinkPreviewNode,\n ListItemChildNode,\n ListItemNode,\n LoopAnimation,\n LoopEffect,\n Media,\n MentionData,\n MentionDecoration,\n Metadata,\n Never,\n Node,\n NodeStyle,\n Oembed,\n OrderedListData,\n OrderedListNode,\n ParagraphData,\n ParagraphNode,\n PlaybackOptions,\n PluginContainerData,\n PluginContainerData_Height,\n PluginContainerData_Spoiler,\n PluginContainerData_Width,\n PointerEffect,\n PollData,\n PollData_Background_ColorVariant,\n PollData_Background_GradientVariant,\n PollData_Background_ImageVariant,\n PollData_Design,\n PollData_Design_OptionDesign,\n PollData_Design_PollDesign,\n PollData_Design_PollDesign_Background,\n PollData_Design_PollDesign_Background_Gradient,\n PollData_Layout,\n PollData_Layout_OptionLayout,\n PollData_Layout_PollLayout,\n PollData_Poll,\n PollData_Poll_Option,\n PollData_Poll_Settings,\n PollData_Poll_Settings_Permissions,\n PollNode,\n RicosDocument,\n RicosDocumentNode,\n RootNode,\n SketchData,\n SketchDecoration,\n ShapeData,\n ShapeNode,\n SmartBlockData,\n SmartBlockCellChildNode,\n SmartBlockCellData,\n SmartBlockCellNode,\n SmartBlockNode,\n SpoilerData,\n SpoilerDecoration,\n StrikethroughDecoration,\n SubscriptDecoration,\n SuperscriptDecoration,\n TableCellChildNode,\n TableCellData,\n TableCellData_BorderColors,\n TableCellData_CellStyle,\n TableCellNode,\n TableData,\n TableData_Dimensions,\n TocData,\n TocNode,\n TableNode,\n TableRowNode,\n TextData,\n TextNode,\n TextNodeStyle,\n TextStyle,\n UnderlineDecoration,\n VideoData,\n VideoNode,\n} from './generated/ricos_document.js';\nexport {\n Animation_Axis,\n Animation_CornerDirection,\n Animation_Direction,\n Animation_Easing,\n Animation_Orientation,\n Animation_RadialDirection,\n Animation_SideDirection,\n Animation_SpinDirection,\n Animation_Type,\n AppEmbedData_AppType,\n ButtonData_Type,\n Background_Type,\n CollapsibleListData_Direction,\n CollapsibleListData_InitialExpandedItems,\n Decoration_Type,\n DividerData_Alignment,\n DividerData_LineStyle,\n DividerData_Styles_LineCap,\n DividerData_Width,\n EntranceEffect_Bounce_Direction,\n EntranceEffect_Glide_Direction,\n EntranceEffect_Shape_ClipShape,\n EntranceEffect_Type,\n FileData_PDFSettings_ViewMode,\n FontSizeData_fontType,\n GalleryOptions_ItemStyle_Crop,\n GalleryOptions_Layout_Orientation,\n GalleryOptions_Layout_Type,\n GalleryOptions_Thumbnails_Alignment,\n GIFData_GIFType,\n HTMLData_Source,\n ImageData_CropShape,\n ImagePosition,\n ImageScaling,\n LATEST_VERSION,\n Link_Target,\n LoopEffect_Breathe_Direction,\n LoopEffect_Type,\n Node_Type,\n PluginContainerData_Alignment,\n PluginContainerData_Width_Type,\n PointerEffect_Scale_Direction,\n PointerEffect_Swivel_Axis,\n PointerEffect_Type,\n PollData_Design_PollDesign_Background_Type,\n PollData_Layout_PollLayout_Direction,\n PollData_Layout_PollLayout_Type,\n PollData_Poll_Settings_Permissions_ViewRole,\n PollData_Poll_Settings_Permissions_VoteRole,\n RichContent,\n RicosDocumentNodeType,\n SketchData_Variant,\n VerticalAlignment as TableCellData_VerticalAlignment,\n TextStyle_TextAlignment,\n VerticalAlignment,\n SmartBlockData_Type,\n SmartBlockData_Orientation,\n SmartBlockData_ColumnSize,\n SmartBlockCellData_Type,\n TocData_ListStyle,\n TocData_Indentation,\n} from './generated/ricos_document.js';\nexport { default as RicosDocumentJTD } from './generated/ricos_document.jtd.json.js';\n\n// Utils\nexport { RicosDocumentExamples } from './docs-static/examples-registry.js';\nexport type { SchemaFeature } from './features.js';\nexport { schemaFeatures } from './features.js';\nexport { ricosDocumentReferenceMd } from './generated/ricos-document-reference.js';\nexport type { EditorPluginName, ViewerPluginName } from './plugin-names.js';\nexport {\n editorPluginNames,\n legacyPluginToNextMap,\n toEditorPluginName,\n viewerPluginNames,\n} from './plugin-names.js';\nexport { decodeUnicodeBase64, encodeUnicodeBase64 } from './unicode-base64.js';\nexport { parseFromString } from './validator/parse-from-string.js';\nexport type { ValidationError } from './validator/validate-ricos-document.js';\nexport { validateRicosDocument } from './validator/validate-ricos-document.js';\nexport { RICOS_VERSION } from './version.js';\n","/* oxlint-disable no-redeclare */\n/* oxlint-disable @typescript-oxlint/no-namespace */\n\nexport type RicosDocument = {\n /** Array of nodes representing content elements, such as `ParagraphNode` or `HeadingNode`. */\n nodes: RicosDocumentNode[];\n /** Information about the Ricos document itself, such as its version. Only relevant when building the Ricos document using the [Ricos playground](https:/ricos.dev), in which case it is auto-generated. */\n metadata?: Metadata;\n /** Includes styling to be applied throughout the Ricos document for the specified node types. For example, you can define general styling for `headerOne`, and then override some of the properties separately for a specific header. */\n documentStyle?: DocumentStyle;\n};\nexport type NodeStyle = {\n /** The top padding value in pixels. */\n paddingTop?: string;\n /** The bottom padding value in pixels. */\n paddingBottom?: string;\n backgroundColor?: string;\n};\n/**\n * Sets a default styling for specific node types throughout the entire Ricos Document. For example, you can set the text color for all Heading 1 nodes.\n * You can override the styling of specific Text nodes separately using [decorations](#decorations).\n */\nexport type DocumentStyle = {\n /** Style for the H1 nodes. */\n headerOne?: TextNodeStyle;\n /** Style for the H2 nodes. */\n headerTwo?: TextNodeStyle;\n /** Style for the H3 nodes. */\n headerThree?: TextNodeStyle;\n /** Style for the H4 nodes. */\n headerFour?: TextNodeStyle;\n /** Style for the H5 nodes. */\n headerFive?: TextNodeStyle;\n /** Style for the H6 nodes. */\n headerSix?: TextNodeStyle;\n /** Style for the paragraph nodes. */\n paragraph?: TextNodeStyle;\n /** Style for the block quote nodes. */\n blockquote?: TextNodeStyle;\n /** Style for the codeblock nodes. */\n codeBlock?: TextNodeStyle;\n};\nexport type TextNodeStyle = {\n decorations?: Decoration[];\n /**\n * Node style, such as padding.\n * **Note:** This node requires the [lineSpacing](#plugins) plugin to be enabled.\n */\n nodeStyle?: NodeStyle;\n /** Text line height. */\n lineHeight?: string;\n};\nexport type Metadata = {\n /** Ricos document version. */\n version?: number;\n id?: any;\n createdTimestamp?: any;\n updatedTimestamp?: any;\n};\n/** Node animation, discriminated by `type`. `VIEW` animations play while the node is in view; `POINTER` animations follow the visitor's mouse. The kinds are mutually exclusive by construction — additional kinds (scroll-driven) may be added in the future. */\nexport type Animation = Animation_View | Animation_Pointer;\nexport type Animation_Type = 'VIEW' | 'POINTER';\n\nexport const Animation_Type = {\n VIEW: 'VIEW',\n POINTER: 'POINTER',\n} as const;\n\n/** Animations that play while the node is in view. At least one of `entrance` or `loop` should be set — an empty `VIEW` is treated as no animation. */\nexport type Animation_View = {\n /**\n * Animation kind.\n * Must be `VIEW`.\n */\n type: 'VIEW';\n /** Entrance animation, played once when the node first enters the viewport. */\n entrance?: EntranceAnimation;\n /** Looping animation, repeated indefinitely while the node is on the page. When combined with `entrance`, the loop starts after the entrance finishes. */\n loop?: LoopAnimation;\n};\n/** Animations driven by the visitor's mouse position — the node continuously reacts as the pointer moves. Mutually exclusive with `VIEW` animations by construction. */\nexport type Animation_Pointer = {\n /**\n * Animation kind.\n * Must be `POINTER`.\n */\n type: 'POINTER';\n /** The mouse effect, discriminated by `type`. */\n effect: PointerEffect;\n /** How quickly the node settles toward the pointer, in milliseconds (the editor's velocity control). When omitted, the effect's own tuned default is used. */\n transitionDuration?: number;\n};\n/** Entrance animation configuration: the effect to play and its timing options. */\nexport type EntranceAnimation = {\n /** The entrance effect, discriminated by `type`. */\n effect: EntranceEffect;\n /** Effect duration in milliseconds. When omitted, the effect's own tuned default is used — each effect has a different one. */\n duration?: number;\n /** Delay before the effect starts, in milliseconds. */\n delay?: number;\n};\n/** Entrance effect, discriminated by `type`. Each effect exposes only its own parameters; all parameters are optional and fall back to tuned defaults. */\nexport type EntranceEffect =\n | EntranceEffect_Fade\n | EntranceEffect_Arc\n | EntranceEffect_Blur\n | EntranceEffect_Bounce\n | EntranceEffect_Drop\n | EntranceEffect_Expand\n | EntranceEffect_Flip\n | EntranceEffect_Float\n | EntranceEffect_Fold\n | EntranceEffect_Glide\n | EntranceEffect_Reveal\n | EntranceEffect_Shape\n | EntranceEffect_Shutters\n | EntranceEffect_Slide\n | EntranceEffect_Spin\n | EntranceEffect_Tilt\n | EntranceEffect_Turn\n | EntranceEffect_Wink;\nexport type EntranceEffect_Type =\n | 'FADE'\n | 'ARC'\n | 'BLUR'\n | 'BOUNCE'\n | 'DROP'\n | 'EXPAND'\n | 'FLIP'\n | 'FLOAT'\n | 'FOLD'\n | 'GLIDE'\n | 'REVEAL'\n | 'SHAPE'\n | 'SHUTTERS'\n | 'SLIDE'\n | 'SPIN'\n | 'TILT'\n | 'TURN'\n | 'WINK';\n\nexport const EntranceEffect_Type = {\n FADE: 'FADE',\n ARC: 'ARC',\n BLUR: 'BLUR',\n BOUNCE: 'BOUNCE',\n DROP: 'DROP',\n EXPAND: 'EXPAND',\n FLIP: 'FLIP',\n FLOAT: 'FLOAT',\n FOLD: 'FOLD',\n GLIDE: 'GLIDE',\n REVEAL: 'REVEAL',\n SHAPE: 'SHAPE',\n SHUTTERS: 'SHUTTERS',\n SLIDE: 'SLIDE',\n SPIN: 'SPIN',\n TILT: 'TILT',\n TURN: 'TURN',\n WINK: 'WINK',\n} as const;\n\n/** Fades in smoothly from fully transparent to fully opaque. */\nexport type EntranceEffect_Fade = {\n /**\n * Effect type.\n * Must be `FADE`.\n */\n type: 'FADE';\n};\n/** Enters along a 3D arc path, rotating into view with depth motion. */\nexport type EntranceEffect_Arc = {\n /**\n * Effect type.\n * Must be `ARC`.\n */\n type: 'ARC';\n /** Direction the element arcs in from. Defaults to `LEFT`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Transitions from blurred to sharp while fading in. */\nexport type EntranceEffect_Blur = {\n /**\n * Effect type.\n * Must be `BLUR`.\n */\n type: 'BLUR';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Bounces into place from a direction with an elastic multi-step curve. */\nexport type EntranceEffect_Bounce = {\n /**\n * Effect type.\n * Must be `BOUNCE`.\n */\n type: 'BOUNCE';\n /** Direction the element bounces in from. `CENTER` bounces in place, with no travel. Defaults to `TOP`. */\n direction?: EntranceEffect_Bounce_Direction;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\nexport type EntranceEffect_Bounce_Direction = 'LEFT' | 'RIGHT' | 'TOP' | 'BOTTOM' | 'CENTER';\n\nexport const EntranceEffect_Bounce_Direction = {\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n CENTER: 'CENTER',\n} as const;\n\n/** Shrinks down from a larger size to its final scale. */\nexport type EntranceEffect_Drop = {\n /**\n * Effect type.\n * Must be `DROP`.\n */\n type: 'DROP';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Expands from a point in a given direction, scaling from small to full size with a fade-in. */\nexport type EntranceEffect_Expand = {\n /**\n * Effect type.\n * Must be `EXPAND`.\n */\n type: 'EXPAND';\n /** Direction the element travels in from while expanding. `CENTER` expands in place, with no travel. Defaults to `CENTER`. */\n direction?: Animation_RadialDirection;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Flips into view with a 3D rotation around the X or Y axis. */\nexport type EntranceEffect_Flip = {\n /**\n * Effect type.\n * Must be `FLIP`.\n */\n type: 'FLIP';\n /** Direction the element flips in from. Defaults to `BOTTOM`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Drifts gently into place from a direction with a fade-in. */\nexport type EntranceEffect_Float = {\n /**\n * Effect type.\n * Must be `FLOAT`.\n */\n type: 'FLOAT';\n /** Direction the element floats in from. Defaults to `BOTTOM`. */\n direction?: Animation_Direction;\n};\n/** Unfolds from an edge, rotating around an axis at the edge as if hinged. */\nexport type EntranceEffect_Fold = {\n /**\n * Effect type.\n * Must be `FOLD`.\n */\n type: 'FOLD';\n /** Edge the element unfolds from. Defaults to `TOP`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `INTENSE`. */\n easing?: Animation_Easing;\n};\n/** Glides in smoothly from off-screen along a direction. */\nexport type EntranceEffect_Glide = {\n /**\n * Effect type.\n * Must be `GLIDE`.\n */\n type: 'GLIDE';\n /** Direction the element glides in from, including the diagonals. Defaults to `BOTTOM`. */\n direction?: EntranceEffect_Glide_Direction;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\nexport type EntranceEffect_Glide_Direction =\n | 'RIGHT'\n | 'TOP_RIGHT'\n | 'TOP'\n | 'TOP_LEFT'\n | 'LEFT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM'\n | 'BOTTOM_RIGHT';\n\nexport const EntranceEffect_Glide_Direction = {\n RIGHT: 'RIGHT',\n TOP_RIGHT: 'TOP_RIGHT',\n TOP: 'TOP',\n TOP_LEFT: 'TOP_LEFT',\n LEFT: 'LEFT',\n BOTTOM_LEFT: 'BOTTOM_LEFT',\n BOTTOM: 'BOTTOM',\n BOTTOM_RIGHT: 'BOTTOM_RIGHT',\n} as const;\n\n/** Progressively revealed by an expanding clip-path from one edge. */\nexport type EntranceEffect_Reveal = {\n /**\n * Effect type.\n * Must be `REVEAL`.\n */\n type: 'REVEAL';\n /** Edge the reveal starts from. Defaults to `BOTTOM`. */\n direction?: Animation_Direction;\n};\n/** Appears through an expanding geometric clip-path shape. */\nexport type EntranceEffect_Shape = {\n /**\n * Effect type.\n * Must be `SHAPE`.\n */\n type: 'SHAPE';\n /** Clip-path shape. Defaults to `CIRCLE`. */\n shape?: EntranceEffect_Shape_ClipShape;\n};\nexport type EntranceEffect_Shape_ClipShape = 'ELLIPSE' | 'CIRCLE' | 'RECTANGLE' | 'DIAMOND';\n\nexport const EntranceEffect_Shape_ClipShape = {\n ELLIPSE: 'ELLIPSE',\n CIRCLE: 'CIRCLE',\n RECTANGLE: 'RECTANGLE',\n DIAMOND: 'DIAMOND',\n} as const;\n\n/** Revealed through multiple shutter-like strips that open in sequence. */\nexport type EntranceEffect_Shutters = {\n /**\n * Effect type.\n * Must be `SHUTTERS`.\n */\n type: 'SHUTTERS';\n /** Direction the shutters open toward. Defaults to `RIGHT`. */\n direction?: Animation_Direction;\n};\n/** Slides in from one side while being revealed with a clip-path mask. */\nexport type EntranceEffect_Slide = {\n /**\n * Effect type.\n * Must be `SLIDE`.\n */\n type: 'SLIDE';\n /** Direction the element slides in from. Defaults to `BOTTOM`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `INTENSE`. */\n easing?: Animation_Easing;\n};\n/** Spins into view while scaling from small to full size. */\nexport type EntranceEffect_Spin = {\n /**\n * Effect type.\n * Must be `SPIN`.\n */\n type: 'SPIN';\n /** Rotation direction. Defaults to `CLOCKWISE`. */\n direction?: Animation_SpinDirection;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Tilts in from the side with 3D rotation and a clip-path reveal. */\nexport type EntranceEffect_Tilt = {\n /**\n * Effect type.\n * Must be `TILT`.\n */\n type: 'TILT';\n /** Side the element tilts in from. Defaults to `LEFT`. */\n direction?: Animation_SideDirection;\n};\n/** Rotates into view around a corner pivot point. */\nexport type EntranceEffect_Turn = {\n /**\n * Effect type.\n * Must be `TURN`.\n */\n type: 'TURN';\n /** Corner pivot the element turns around. Defaults to `BOTTOM_LEFT`. */\n direction?: Animation_CornerDirection;\n /** Motion style. Defaults to `INTENSE`. */\n easing?: Animation_Easing;\n};\n/** Winks into view by expanding from its horizontal or vertical center, while being revealed with a clip-path. */\nexport type EntranceEffect_Wink = {\n /**\n * Effect type.\n * Must be `WINK`.\n */\n type: 'WINK';\n /** Axis the wink expands along. Defaults to `VERTICAL`. */\n direction?: Animation_Orientation;\n};\n/** Looping animation configuration: the effect to repeat and its timing options. The effect repeats indefinitely while the node is on the page. */\nexport type LoopAnimation = {\n /** The looping effect, discriminated by `type`. */\n effect: LoopEffect;\n /** Duration of a single iteration in milliseconds. When omitted, the effect's own tuned default is used — each effect has a different one. */\n duration?: number;\n /** Pause between iterations in milliseconds. */\n iterationDelay?: number;\n};\n/** Looping effect, discriminated by `type`. Each effect exposes only its own parameters; all parameters are optional and fall back to tuned defaults. */\nexport type LoopEffect =\n | LoopEffect_Bounce\n | LoopEffect_Breathe\n | LoopEffect_Cross\n | LoopEffect_Flash\n | LoopEffect_Flip\n | LoopEffect_Fold\n | LoopEffect_Jello\n | LoopEffect_Poke\n | LoopEffect_Pulse\n | LoopEffect_Rubber\n | LoopEffect_Spin\n | LoopEffect_Swing\n | LoopEffect_Wiggle;\nexport type LoopEffect_Type =\n | 'BOUNCE'\n | 'BREATHE'\n | 'CROSS'\n | 'FLASH'\n | 'FLIP'\n | 'FOLD'\n | 'JELLO'\n | 'POKE'\n | 'PULSE'\n | 'RUBBER'\n | 'SPIN'\n | 'SWING'\n | 'WIGGLE';\n\nexport const LoopEffect_Type = {\n BOUNCE: 'BOUNCE',\n BREATHE: 'BREATHE',\n CROSS: 'CROSS',\n FLASH: 'FLASH',\n FLIP: 'FLIP',\n FOLD: 'FOLD',\n JELLO: 'JELLO',\n POKE: 'POKE',\n PULSE: 'PULSE',\n RUBBER: 'RUBBER',\n SPIN: 'SPIN',\n SWING: 'SWING',\n WIGGLE: 'WIGGLE',\n} as const;\n\n/** Bounces up and down in place with an elastic multi-step curve. */\nexport type LoopEffect_Bounce = {\n /**\n * Effect type.\n * Must be `BOUNCE`.\n */\n type: 'BOUNCE';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Scales gently in and out along an axis, as if breathing. */\nexport type LoopEffect_Breathe = {\n /**\n * Effect type.\n * Must be `BREATHE`.\n */\n type: 'BREATHE';\n /** Axis the breathing motion travels along. `CENTER` breathes in place with a 3D depth motion instead. Defaults to `VERTICAL`. */\n direction?: LoopEffect_Breathe_Direction;\n};\nexport type LoopEffect_Breathe_Direction = 'HORIZONTAL' | 'VERTICAL' | 'CENTER';\n\nexport const LoopEffect_Breathe_Direction = {\n HORIZONTAL: 'HORIZONTAL',\n VERTICAL: 'VERTICAL',\n CENTER: 'CENTER',\n} as const;\n\n/** Drifts across its container toward one side, then re-enters from the opposite side. */\nexport type LoopEffect_Cross = {\n /**\n * Effect type.\n * Must be `CROSS`.\n */\n type: 'CROSS';\n /** Side the element drifts toward. Defaults to `RIGHT`. */\n direction?: Animation_SideDirection;\n};\n/** Fades out to fully transparent and back in. */\nexport type LoopEffect_Flash = {\n /**\n * Effect type.\n * Must be `FLASH`.\n */\n type: 'FLASH';\n};\n/** Rotates a full turn around its horizontal or vertical axis in 3D. */\nexport type LoopEffect_Flip = {\n /**\n * Effect type.\n * Must be `FLIP`.\n */\n type: 'FLIP';\n /** Axis the element flips around. Defaults to `HORIZONTAL`. */\n direction?: Animation_Orientation;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Folds back and forth around a hinged edge in 3D. */\nexport type LoopEffect_Fold = {\n /**\n * Effect type.\n * Must be `FOLD`.\n */\n type: 'FOLD';\n /** Edge the element is hinged on. Defaults to `TOP`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Wobbles with a jelly-like skew that settles gradually. */\nexport type LoopEffect_Jello = {\n /**\n * Effect type.\n * Must be `JELLO`.\n */\n type: 'JELLO';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Nudges repeatedly toward a direction and springs back. */\nexport type LoopEffect_Poke = {\n /**\n * Effect type.\n * Must be `POKE`.\n */\n type: 'POKE';\n /** Direction the element pokes toward. Defaults to `RIGHT`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Scales up and back down rhythmically. */\nexport type LoopEffect_Pulse = {\n /**\n * Effect type.\n * Must be `PULSE`.\n */\n type: 'PULSE';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Stretches and squashes like a rubber band. */\nexport type LoopEffect_Rubber = {\n /**\n * Effect type.\n * Must be `RUBBER`.\n */\n type: 'RUBBER';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Rotates continuously around its center. */\nexport type LoopEffect_Spin = {\n /**\n * Effect type.\n * Must be `SPIN`.\n */\n type: 'SPIN';\n /** Rotation direction. Defaults to `CLOCKWISE`. */\n direction?: Animation_SpinDirection;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Swings back and forth around an edge pivot, like a hanging sign. */\nexport type LoopEffect_Swing = {\n /**\n * Effect type.\n * Must be `SWING`.\n */\n type: 'SWING';\n /** Edge the element swings from. Defaults to `TOP`. */\n direction?: Animation_Direction;\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Rocks side to side with a quick, accumulating rotation. */\nexport type LoopEffect_Wiggle = {\n /**\n * Effect type.\n * Must be `WIGGLE`.\n */\n type: 'WIGGLE';\n /** Motion style. Defaults to `GENTLE`. */\n easing?: Animation_Easing;\n};\n/** Mouse effect, discriminated by `type`. Each effect exposes only its own parameters; all parameters are optional and fall back to tuned defaults. */\nexport type PointerEffect =\n | PointerEffect_Airy\n | PointerEffect_Blob\n | PointerEffect_Blur\n | PointerEffect_Scale\n | PointerEffect_Skew\n | PointerEffect_Swivel\n | PointerEffect_Tilt3d\n | PointerEffect_Track\n | PointerEffect_Track3d;\nexport type PointerEffect_Type =\n | 'AIRY'\n | 'BLOB'\n | 'BLUR'\n | 'SCALE'\n | 'SKEW'\n | 'SWIVEL'\n | 'TILT_3D'\n | 'TRACK'\n | 'TRACK_3D';\n\nexport const PointerEffect_Type = {\n AIRY: 'AIRY',\n BLOB: 'BLOB',\n BLUR: 'BLUR',\n SCALE: 'SCALE',\n SKEW: 'SKEW',\n SWIVEL: 'SWIVEL',\n TILT_3D: 'TILT_3D',\n TRACK: 'TRACK',\n TRACK_3D: 'TRACK_3D',\n} as const;\n\n/** Drifts loosely after the pointer with a light, floating rotation. */\nexport type PointerEffect_Airy = {\n /**\n * Effect type.\n * Must be `AIRY`.\n */\n type: 'AIRY';\n /** Moves away from the pointer instead of toward it. Defaults to `false`. */\n inverted?: boolean;\n /** Axis the movement is constrained to. Defaults to `BOTH`. */\n axis?: Animation_Axis;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Squashes and stretches toward the pointer like a soft blob. */\nexport type PointerEffect_Blob = {\n /**\n * Effect type.\n * Must be `BLOB`.\n */\n type: 'BLOB';\n /** Moves away from the pointer instead of toward it. Defaults to `false`. */\n inverted?: boolean;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Shifts after the pointer while blurring, like a motion trail. */\nexport type PointerEffect_Blur = {\n /**\n * Effect type.\n * Must be `BLUR`.\n */\n type: 'BLUR';\n /** Moves away from the pointer instead of toward it. Defaults to `false`. */\n inverted?: boolean;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Scales as the pointer approaches, shrinking or growing around its center. */\nexport type PointerEffect_Scale = {\n /**\n * Effect type.\n * Must be `SCALE`.\n */\n type: 'SCALE';\n /** Reacts away from the pointer instead of toward it. Defaults to `false`. */\n inverted?: boolean;\n /** Axis the movement is constrained to. Defaults to `HORIZONTAL`. */\n axis?: Animation_Axis;\n /** Whether the node grows or shrinks as the pointer nears. Defaults to `DOWN`. */\n direction?: PointerEffect_Scale_Direction;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\nexport type PointerEffect_Scale_Direction = 'UP' | 'DOWN';\n\nexport const PointerEffect_Scale_Direction = {\n UP: 'UP',\n DOWN: 'DOWN',\n} as const;\n\n/** Skews toward the pointer, shearing the node as it moves. */\nexport type PointerEffect_Skew = {\n /**\n * Effect type.\n * Must be `SKEW`.\n */\n type: 'SKEW';\n /** Skews away from the pointer instead of toward it. Defaults to `true`. */\n inverted?: boolean;\n /** Axis the movement is constrained to. Defaults to `BOTH`. */\n axis?: Animation_Axis;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Rotates around a pivot edge or axis, following the pointer like a hinged panel. */\nexport type PointerEffect_Swivel = {\n /**\n * Effect type.\n * Must be `SWIVEL`.\n */\n type: 'SWIVEL';\n /** Swivels away from the pointer instead of toward it. Defaults to `false`. */\n inverted?: boolean;\n /** Pivot the node swivels around — an edge or a center axis. Defaults to `TOP`. */\n axis?: PointerEffect_Swivel_Axis;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\nexport type PointerEffect_Swivel_Axis =\n | 'TOP'\n | 'BOTTOM'\n | 'LEFT'\n | 'RIGHT'\n | 'CENTER_HORIZONTAL'\n | 'CENTER_VERTICAL';\n\nexport const PointerEffect_Swivel_Axis = {\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n CENTER_HORIZONTAL: 'CENTER_HORIZONTAL',\n CENTER_VERTICAL: 'CENTER_VERTICAL',\n} as const;\n\n/** Tilts in 3D perspective toward the pointer, like a card catching the light. */\nexport type PointerEffect_Tilt3d = {\n /**\n * Effect type.\n * Must be `TILT_3D`.\n */\n type: 'TILT_3D';\n /** Tilts away from the pointer instead of toward it. Defaults to `false`. */\n inverted?: boolean;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Follows the pointer's position with a smooth translation. */\nexport type PointerEffect_Track = {\n /**\n * Effect type.\n * Must be `TRACK`.\n */\n type: 'TRACK';\n /** Moves away from the pointer instead of following it. Defaults to `false`. */\n inverted?: boolean;\n /** Axis the movement is constrained to. Defaults to `BOTH`. */\n axis?: Animation_Axis;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\n/** Follows the pointer with a 3D depth motion, rotating slightly in perspective. */\nexport type PointerEffect_Track3d = {\n /**\n * Effect type.\n * Must be `TRACK_3D`.\n */\n type: 'TRACK_3D';\n /** Moves away from the pointer instead of following it. Defaults to `true`. */\n inverted?: boolean;\n /** Axis the movement is constrained to. Defaults to `HORIZONTAL`. */\n axis?: Animation_Axis;\n /** Motion style. Defaults to `MODERATE`. */\n easing?: Animation_Easing;\n};\nexport type Animation_Direction = 'LEFT' | 'RIGHT' | 'TOP' | 'BOTTOM';\n\nexport const Animation_Direction = {\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n} as const;\n\nexport type Animation_Axis = 'HORIZONTAL' | 'VERTICAL' | 'BOTH';\n\nexport const Animation_Axis = {\n HORIZONTAL: 'HORIZONTAL',\n VERTICAL: 'VERTICAL',\n BOTH: 'BOTH',\n} as const;\n\nexport type Animation_RadialDirection =\n | 'RIGHT'\n | 'TOP_RIGHT'\n | 'TOP'\n | 'TOP_LEFT'\n | 'LEFT'\n | 'BOTTOM_LEFT'\n | 'BOTTOM'\n | 'BOTTOM_RIGHT'\n | 'CENTER';\n\nexport const Animation_RadialDirection = {\n RIGHT: 'RIGHT',\n TOP_RIGHT: 'TOP_RIGHT',\n TOP: 'TOP',\n TOP_LEFT: 'TOP_LEFT',\n LEFT: 'LEFT',\n BOTTOM_LEFT: 'BOTTOM_LEFT',\n BOTTOM: 'BOTTOM',\n BOTTOM_RIGHT: 'BOTTOM_RIGHT',\n CENTER: 'CENTER',\n} as const;\n\nexport type Animation_SideDirection = 'LEFT' | 'RIGHT';\n\nexport const Animation_SideDirection = {\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n} as const;\n\nexport type Animation_CornerDirection = 'TOP_LEFT' | 'BOTTOM_LEFT' | 'TOP_RIGHT' | 'BOTTOM_RIGHT';\n\nexport const Animation_CornerDirection = {\n TOP_LEFT: 'TOP_LEFT',\n BOTTOM_LEFT: 'BOTTOM_LEFT',\n TOP_RIGHT: 'TOP_RIGHT',\n BOTTOM_RIGHT: 'BOTTOM_RIGHT',\n} as const;\n\nexport type Animation_Orientation = 'HORIZONTAL' | 'VERTICAL';\n\nexport const Animation_Orientation = {\n HORIZONTAL: 'HORIZONTAL',\n VERTICAL: 'VERTICAL',\n} as const;\n\nexport type Animation_SpinDirection = 'CLOCKWISE' | 'COUNTER_CLOCKWISE';\n\nexport const Animation_SpinDirection = {\n CLOCKWISE: 'CLOCKWISE',\n COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE',\n} as const;\n\nexport type Animation_Easing = 'GENTLE' | 'MODERATE' | 'INTENSE';\n\nexport const Animation_Easing = {\n GENTLE: 'GENTLE',\n MODERATE: 'MODERATE',\n INTENSE: 'INTENSE',\n} as const;\n\nexport type TextStyle = {\n /** Text alignment. Supported values: <br> - `AUTO`: Text aligns itself automatically. <br> - `LEFT`: Text is aligned to the left. <br> - `RIGHT`: Text is aligned to the right. <br> - `CENTER`: Text is centered. <br> - `JUSTIFY`: Text is justified to both margins. <br> Default: `AUTO`. */\n textAlignment?: TextStyle_TextAlignment;\n /** Vertical spacing between lines of text in an element. */\n lineHeight?: string;\n};\nexport type TextStyle_TextAlignment = 'AUTO' | 'LEFT' | 'RIGHT' | 'CENTER' | 'JUSTIFY';\n\nexport const TextStyle_TextAlignment = {\n AUTO: 'AUTO',\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n CENTER: 'CENTER',\n JUSTIFY: 'JUSTIFY',\n} as const;\n\n/** Link object. */\nexport type Link = {\n /** Absolute URL to link to. */\n url?: string;\n /** Target [Node ID](#node-ids) to link to. */\n anchor?: string;\n /** The HTML `target` attribute value for the link. This property defines where the link opens. <br> Supported values: <br> `SELF` - Opens the link in the same frame.<br> `BLANK` - Opens the link in a new browser tab or window.<br> `PARENT` - Opens the link in the parent frame.<br> `TOP` - Opens the link in the full body of the link's browser tab or window. <br> Default: `SELF` */\n target?: Link_Target;\n /** Relationship between the current document and the linked document. */\n rel?: Link_Rel;\n /** A serialized object used for a custom or external link panel. */\n customData?: string;\n};\nexport type Link_Target = 'SELF' | 'BLANK' | 'PARENT' | 'TOP';\n\nexport const Link_Target = {\n SELF: 'SELF',\n BLANK: 'BLANK',\n PARENT: 'PARENT',\n TOP: 'TOP',\n} as const;\n\nexport type Link_Rel = {\n /**\n * Indicates to search engine crawlers not to follow the link.\n * Default: `false`\n */\n nofollow?: boolean;\n /**\n * Indicates to search engine crawlers that the link is a paid placement such as sponsored content or an advertisement.\n * Default: `false`\n */\n sponsored?: boolean;\n /**\n * Indicates that this link is user-generated content and isn't necessarily trusted or endorsed by the page author.\n * Default: `false`\n */\n ugc?: boolean;\n /** Indicates that this link protects referral information from being passed to the target website. */\n noreferrer?: boolean;\n};\n/** File source object. */\nexport type FileSource = {\n /** File source URL. */\n url?: string;\n /** ID that's resolved to a URL by a resolver function. */\n id?: string;\n /**\n * Whether the file's source is private. Learn more about [private files](https://dev.wix.com/docs/rest/assets/media/media-manager/files/private-files) in Wix.\n * Default: `false`\n */\n private?: boolean;\n};\nexport type Media = {\n /** File source. */\n src: FileSource;\n /** Media width in pixels. */\n width?: number;\n /** Media height in pixels. */\n height?: number;\n /** Media duration in seconds. Only relevant for audio and video files. */\n duration?: number;\n};\nexport type Never = {\n _neverCreatedElement: any;\n};\nexport type VerticalAlignment = 'TOP' | 'MIDDLE' | 'BOTTOM';\n\nexport const VerticalAlignment = {\n TOP: 'TOP',\n MIDDLE: 'MIDDLE',\n BOTTOM: 'BOTTOM',\n} as const;\n\nexport type BackgroundImage = {\n /** Background image. */\n media?: Media;\n /** Color or gradient drawn on top of the image. When present, this is the authoritative overlay and `opacity` is ignored. Its presence also marks content as authored under the new overlay model (vs. the legacy `opacity`-based dimming on `background`/`backdrop`). */\n overlay?: Background;\n /** Deprecated: use `overlay` instead. Legacy image opacity (0–100) that dimmed the image to reveal the `background`/`backdrop` color behind it. */\n opacity?: number;\n /** Background image scaling. */\n scaling?: ImageScaling;\n /** Position of background. Defaults to `CENTER`. */\n position?: ImagePosition;\n /** Blur radius in pixels applied to the image layer. `0` (default) leaves the image unblurred; blur is independent of any color overlay and the two stack. */\n blur?: number;\n};\nexport type ImageScaling = 'AUTO' | 'CONTAIN' | 'COVER';\n\nexport const ImageScaling = {\n AUTO: 'AUTO',\n CONTAIN: 'CONTAIN',\n COVER: 'COVER',\n} as const;\n\nexport type ImagePosition =\n | 'CENTER'\n | 'CENTER_LEFT'\n | 'CENTER_RIGHT'\n | 'TOP'\n | 'TOP_LEFT'\n | 'TOP_RIGHT'\n | 'BOTTOM'\n | 'BOTTOM_LEFT'\n | 'BOTTOM_RIGHT';\n\nexport const ImagePosition = {\n CENTER: 'CENTER',\n CENTER_LEFT: 'CENTER_LEFT',\n CENTER_RIGHT: 'CENTER_RIGHT',\n TOP: 'TOP',\n TOP_LEFT: 'TOP_LEFT',\n TOP_RIGHT: 'TOP_RIGHT',\n BOTTOM: 'BOTTOM',\n BOTTOM_LEFT: 'BOTTOM_LEFT',\n BOTTOM_RIGHT: 'BOTTOM_RIGHT',\n} as const;\n\n/** Gradient configuration. Either linear or radial. */\nexport type Gradient = Gradient_Linear | Gradient_Radial;\nexport type Gradient_Type = 'LINEAR' | 'RADIAL';\n\nexport const Gradient_Type = {\n LINEAR: 'LINEAR',\n RADIAL: 'RADIAL',\n} as const;\n\n/** Background styling. Either a solid color or gradient. */\nexport type Background = Background_ColorVariant | Background_GradientVariant;\nexport type Background_Type = 'COLOR' | 'GRADIENT';\n\nexport const Background_Type = {\n COLOR: 'COLOR',\n GRADIENT: 'GRADIENT',\n} as const;\n\nexport type Background_ColorVariant = {\n type: 'COLOR';\n /** Background color as a hexadecimal value. */\n color: string;\n};\nexport type Background_GradientVariant = {\n type: 'GRADIENT';\n /** Gradient configuration. */\n gradient: Gradient;\n};\nexport type Gradient_Linear = {\n type: 'LINEAR';\n stops: Gradient_Stop[];\n /**\n * Angle in degrees for linear gradient (0-360).\n * Default: `90`\n */\n angle?: number;\n};\nexport type Gradient_Radial = {\n type: 'RADIAL';\n stops: Gradient_Stop[];\n /**\n * Horizontal center position (0-100).\n * Default: `50`\n */\n centerX?: number;\n /**\n * Vertical center position (0-100).\n * Default: `50`\n */\n centerY?: number;\n};\nexport type Gradient_Stop = {\n /** Stop color as a hexadecimal value. */\n color?: string;\n /**\n * Stop position (0-1).\n * Default: `0`\n */\n position?: number;\n};\nexport type PluginContainerData = {\n /** Node display width. */\n width?: PluginContainerData_Width;\n /** Node alignment in its container. */\n alignment?: PluginContainerData_Alignment;\n /** Spoiler cover settings. */\n spoiler?: PluginContainerData_Spoiler;\n /** Node display height. */\n height?: PluginContainerData_Height;\n /**\n * Whether the text should wrap around the node when it's displayed. If `textWrap` is `false`, the node fills the width of its container.\n * Default: `true` for all node types except `DIVIDER`.\n */\n textWrap?: boolean;\n};\nexport type PluginContainerData_Alignment = 'CENTER' | 'LEFT' | 'RIGHT';\n\nexport const PluginContainerData_Alignment = {\n CENTER: 'CENTER',\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n} as const;\n\nexport type PluginContainerData_Spoiler = {\n /**\n * Whether the spoiler cover is enabled.\n * Default: `false`\n */\n enabled?: boolean;\n /** Text displayed on the spoiler cover. */\n description?: string;\n /** Text that appears on the button that removes the spoiler cover. */\n buttonText?: string;\n};\n/** Node display width. */\nexport type PluginContainerData_Width = {\n /**\n * Width of a node in a container. Supported values:\n * - `CONTENT`: Width of the container matches the content width.\n * - `SMALL`: Small width.\n * - `ORIGINAL`: Width of the container matches the original image width. **Note:** This value is only applicable for `imageData` containers.\n * `FULL_WIDTH`: Image container takes up the full width of the screen. **Note:** This value is only applicable for `imageData` containers.\n */\n size?: PluginContainerData_Width_Type;\n /** A custom width value in pixels. */\n custom?: string;\n};\nexport type PluginContainerData_Width_Type = 'CONTENT' | 'SMALL' | 'ORIGINAL' | 'FULL_WIDTH';\n\nexport const PluginContainerData_Width_Type = {\n CONTENT: 'CONTENT',\n SMALL: 'SMALL',\n ORIGINAL: 'ORIGINAL',\n FULL_WIDTH: 'FULL_WIDTH',\n} as const;\n\nexport type PluginContainerData_Height = {\n /** Node display height in pixels. */\n custom?: string;\n};\nexport type Decoration =\n | BoldDecoration\n | ItalicDecoration\n | UnderlineDecoration\n | SpoilerDecoration\n | AnchorDecoration\n | MentionDecoration\n | LinkDecoration\n | ColorDecoration\n | FontSizeDecoration\n | StrikethroughDecoration\n | SuperscriptDecoration\n | SubscriptDecoration\n | FontFamilyDecoration\n | SketchDecoration;\nexport type Decoration_Type =\n | 'BOLD'\n | 'ITALIC'\n | 'UNDERLINE'\n | 'SPOILER'\n | 'ANCHOR'\n | 'MENTION'\n | 'LINK'\n | 'COLOR'\n | 'FONT_SIZE'\n | 'STRIKETHROUGH'\n | 'SUPERSCRIPT'\n | 'SUBSCRIPT'\n | 'FONT_FAMILY'\n | 'SKETCH';\n\nexport const Decoration_Type = {\n BOLD: 'BOLD',\n ITALIC: 'ITALIC',\n UNDERLINE: 'UNDERLINE',\n SPOILER: 'SPOILER',\n ANCHOR: 'ANCHOR',\n MENTION: 'MENTION',\n LINK: 'LINK',\n COLOR: 'COLOR',\n FONT_SIZE: 'FONT_SIZE',\n STRIKETHROUGH: 'STRIKETHROUGH',\n SUPERSCRIPT: 'SUPERSCRIPT',\n SUBSCRIPT: 'SUBSCRIPT',\n FONT_FAMILY: 'FONT_FAMILY',\n SKETCH: 'SKETCH',\n} as const;\n\n/** Bolds text, which makes it appear thicker and more prominent than normal text. */\nexport type BoldDecoration = {\n /**\n * Decoration type.\n * Must be `BOLD`.\n */\n type: 'BOLD';\n /** Font weight. */\n fontWeightValue?: number;\n};\n/** Italicizes text, which makes it appear slanted or italicized. Italics are typically used for emphasis, citations, or to distinguish certain types of content. */\nexport type ItalicDecoration = {\n /**\n * Decoration type.\n * Must be `ITALIC`.\n */\n type: 'ITALIC';\n /** Whether to enable the italic text. */\n italicData?: boolean;\n};\n/** Underlines text. */\nexport type UnderlineDecoration = {\n /**\n * Decoration type.\n * Must be `UNDERLINE`.\n */\n type: 'UNDERLINE';\n /** Whether to underline the text. */\n underlineData?: boolean;\n};\n/** Strikes-through text. */\nexport type StrikethroughDecoration = {\n /**\n * Decoration type.\n * Must be `STRIKETHROUGH`.\n */\n type: 'STRIKETHROUGH';\n /** Whether to strikethrough the text. Default: `true`. */\n strikethroughData?: boolean;\n};\n/** Makes text appear smaller and raised above the baseline. */\nexport type SuperscriptDecoration = {\n /**\n * Decoration type.\n * Must be `SUPERSCRIPT`.\n */\n type: 'SUPERSCRIPT';\n /** Whether to make the text appear smaller and raised above the baseline. */\n superscriptData?: boolean;\n};\n/** Makes text appear smaller and lowered below the baseline. */\nexport type SubscriptDecoration = {\n /**\n * Decoration type.\n * Must be `SUBSCRIPT`.\n */\n type: 'SUBSCRIPT';\n /** Whether to make the text appear smaller and lowered below the baseline. */\n subscriptData?: boolean;\n};\n/** Blurs text. <br> **Note:** This decoration requires the [`spoiler`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type SpoilerDecoration = {\n /**\n * Decoration type.\n * Must be `SPOILER`.\n */\n type: 'SPOILER';\n /** Spoiler details. */\n spoilerData?: SpoilerData;\n};\n/** Makes clickable text a different color. The link navigates to another section of the same page. */\nexport type AnchorDecoration = {\n /**\n * Decoration type.\n * Must be `ANCHOR`.\n */\n type: 'ANCHOR';\n /** Anchor details. */\n anchorData?: AnchorData;\n};\n/** Text that mentions a specific user, often in social media platforms, forums, or content management systems. <br> **Note:** This decoration requires the [`mention`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type MentionDecoration = {\n /**\n * Decoration type.\n * Must be `MENTION`.\n */\n type: 'MENTION';\n /** Anchor details. */\n mentionData?: MentionData;\n};\n/** Makes clickable text a different color. The link navigates to another webpage or resource. <br> **Note:** This decoration requires the [`link`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type LinkDecoration = {\n /**\n * Decoration type.\n * Must be `LINK`.\n */\n type: 'LINK';\n /** Link details. */\n linkData?: LinkData;\n};\n/** Styles text using background and text colors. <br> **Note:** This decoration requires the [`colorDecoration`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled. */\nexport type ColorDecoration = {\n /**\n * Decoration type.\n * Value: `COLOR`\n */\n type: 'COLOR';\n /** Color details. */\n colorData?: ColorData;\n};\n/** Text font size. */\nexport type FontSizeDecoration = {\n /**\n * Decoration type.\n * Must be `FONT_SIZE`.\n */\n type: 'FONT_SIZE';\n /** Font size details. */\n fontSizeData?: FontSizeData;\n};\nexport type AnchorData = {\n /** Target Node ID to redirect to. */\n anchor?: string;\n};\nexport type ColorData = {\n /** Background color as a hexadecimal value. */\n background?: string;\n /** Text color as a hexadecimal value. */\n foreground?: string;\n};\nexport type LinkData = {\n /** Link object. */\n link?: Link;\n};\nexport type MentionData = {\n /** Display name of the mentioned user. */\n name?: string;\n /** Username of the mentioned user. This is th text that appears after the \"@\". */\n slug?: string;\n /** ID of the mentioned user. */\n id?: string;\n /** The kind of entity the mention refers to. Any value is accepted, and it's usually used to mark a mention as a group mention (for example, `group`). When empty, the mention refers to a member. */\n type?: string;\n};\nexport type FontSizeData = {\n /** Font size value. */\n value: number;\n /**\n * Font size units.\n * Default: `PX`\n */\n unit?: FontSizeData_fontType;\n};\nexport type FontSizeData_fontType = 'PX' | 'EM';\n\nexport const FontSizeData_fontType = {\n PX: 'PX',\n EM: 'EM',\n} as const;\n\n/** Text font family. */\nexport type FontFamilyDecoration = {\n /**\n * Decoration type.\n * Must be `FONT_FAMILY`.\n */\n type: 'FONT_FAMILY';\n /** Font family details. */\n fontFamilyData?: FontFamilyData;\n};\nexport type FontFamilyData = {\n /** Font family value. */\n value?: string;\n};\n/** Hand-drawn sketch annotation drawn over the text using rough.js. */\nexport type SketchDecoration = {\n /**\n * Decoration type.\n * Must be `SKETCH`.\n */\n type: 'SKETCH';\n /** Data for a sketch decoration. */\n sketchData?: SketchData;\n};\nexport type SketchData = {\n /** The sketch annotation variant to draw. */\n variant: SketchData_Variant;\n /** Annotation color. Defaults to the theme action color. */\n color?: string;\n /** Whether the annotation animates on first paint. Defaults to `true`. */\n animate?: boolean;\n};\nexport type SketchData_Variant =\n | 'UNDERLINE'\n | 'BOX'\n | 'CIRCLE'\n | 'HIGHLIGHT'\n | 'STRIKETHROUGH'\n | 'CROSSED_OFF';\n\nexport const SketchData_Variant = {\n UNDERLINE: 'UNDERLINE',\n BOX: 'BOX',\n CIRCLE: 'CIRCLE',\n HIGHLIGHT: 'HIGHLIGHT',\n STRIKETHROUGH: 'STRIKETHROUGH',\n CROSSED_OFF: 'CROSSED_OFF',\n} as const;\n\nexport type SpoilerData = {\n /** [Node ID](#node-ids). */\n id?: string;\n};\n/** Used to visually distinguish quoted or cited content from the surrounding text. When rendered, it displays as the quoted text with indentation or other styling to visually separate it from the surrounding content. */\nexport type BlockquoteNode = {\n /**\n * Node type.\n * Must be `BLOCKQUOTE`.\n */\n type: 'BLOCKQUOTE';\n /** Child nodes to define a blockquote paragraph. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Blockquote details. */\n blockquoteData?: BlockquoteData;\n /**\n * Defines the blockquote style, such as padding and background color.\n * **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n */\n style?: NodeStyle;\n};\nexport type BlockquoteData = {\n /**\n * Blockquote margin from the left side.\n * The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\n */\n indentation?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Caption container to be attached to media elements, such as images. Captions support formatted text content and can be styled independently from their parent nodes. */\nexport type CaptionNode = {\n /**\n * Node type.\n * Must be `CAPTION`.\n */\n type: 'CAPTION';\n nodes: RicosDocumentNode[];\n /** Caption [node ID](#node-ids). */\n id?: string;\n /**\n * Defines the caption styling, such as padding and background color.\n * **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n */\n style?: NodeStyle;\n /** Caption options. */\n captionData?: CaptionData;\n};\nexport type CaptionData = {\n /** Caption text styling. */\n textStyle?: TextStyle;\n};\n/** A card container node that can hold any block-level content. */\nexport type CardNode = {\n /**\n * Node type.\n * Must be `CARD`.\n */\n type: 'CARD';\n /** Child nodes that the card contains. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Card details. */\n cardData?: CardData;\n};\nexport type CardData = {\n /** Background styling (color or gradient). */\n background?: Background;\n /** Background image. */\n backgroundImage?: BackgroundImage;\n};\n/** Nodes that can be placed inside a Card. */\nexport type CardChildNode =\n | ParagraphNode\n | HeadingNode\n | BulletedListNode\n | OrderedListNode\n | CheckboxListNode\n | BlockquoteNode\n | CodeBlockNode\n | VideoNode\n | DividerNode\n | FileNode\n | GalleryNode\n | GifNode\n | HtmlNode\n | TocNode\n | ImageNode\n | LinkPreviewNode\n | PollNode\n | AppEmbedNode\n | ButtonNode\n | CollapsibleListNode\n | TableNode\n | EmbedNode\n | AudioNode\n | LayoutNode\n | ExternalNode\n | ShapeNode\n | SmartBlockNode;\n/** Presents code snippets, markup, or other text-based content that should be displayed exactly as it appears, without any interpretation or formatting applied by the browser. When rendered, it is displayed as the code block with a monospaced font, preserving indentation, line breaks, and spacing as specified in the code. */\nexport type CodeBlockNode = {\n /**\n * Node type.\n * VMust be `CODE_BLOCK`.\n */\n type: 'CODE_BLOCK';\n /** Child nodes to define a code block text. */\n nodes?: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Code block details. */\n codeBlockData?: CodeBlockData;\n /**\n * Code block styling, such as padding and background color.\n * **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n */\n style?: NodeStyle;\n};\nexport type CodeBlockData = {\n /** Defines the text styling, such as alignment and line height. */\n textStyle?: TextStyle;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Indicates a heading or title of a section. There are 6 levels of headings, with `1` being the most prominent and `6` being the least. */\nexport type HeadingNode = {\n /**\n * Node type.\n * Must be `HEADING`.\n */\n type: 'HEADING';\n /** Child nodes to define the heading text. */\n nodes?: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /**\n * Heading styling, such as padding and background color.\n * **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n */\n style?: NodeStyle;\n /** Heading options. */\n headingData?: HeadingData;\n};\nexport type HeadingData = {\n /** Heading size. <br> Mi: `1` <br> Max: `6` */\n level?: number;\n /** Heading text styling, such as text alignment and line height. */\n textStyle?: TextStyle;\n /**\n * Heading margin from the left side.\n * The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\n */\n indentation?: number;\n /** Rendered heading level for SEO/accessibility. When set, overrides the HTML tag (h1-h6) while `level` still controls the visual style. */\n renderedLevel?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Used to wrap cells in layout container. When rendered, it cells one after the other in a row */\nexport type LayoutNode = {\n /**\n * Node type.\n * Must be `LAYOUT`.\n */\n type: 'LAYOUT';\n /** Cell items. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Layout details. */\n layoutData?: LayoutData;\n};\nexport type LayoutData = {\n /** Layout container styling. */\n containerData?: PluginContainerData;\n /** Deprecated: Use `background` instead. */\n backgroundColor?: string;\n /** Background styling (color or gradient). */\n background?: Background;\n /** Background image. */\n backgroundImage?: BackgroundImage;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Deprecated: Use `backdrop` instead. */\n backdropColor?: string;\n /** Backdrop styling (color or gradient). */\n backdrop?: Background;\n /** Backdrop image. */\n backdropImage?: BackgroundImage;\n /** Backdrop padding top in pixels. */\n backdropPaddingTop?: number;\n /** Backdrop padding bottom in pixels. */\n backdropPaddingBottom?: number;\n /** Horizontal and vertical gap between columns in pixels. */\n gap?: number;\n /** Responsiveness behaviour. */\n responsivenessBehaviour?: LayoutData_ResponsivenessBehaviour;\n /** Size in pixels when responsivenessBehaviour applies. */\n responsivenessBreakpoint?: number;\n cellPadding?: number[];\n /** Vertical alignment for the cell's items. */\n cellVerticalAlignment?: VerticalAlignment;\n /** Defines where selected design propertied applies to. */\n designTarget?: LayoutData_DesignTarget;\n /** Banner configuration. When present, this layout is attached to a document edge (top for banner, bottom for footer). */\n banner?: LayoutData_Banner;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Edge banner configuration for layout. */\nexport type LayoutData_Banner = {\n /** Edge position - top (banner) or bottom (footer). */\n position?: LayoutData_BannerPosition;\n /** Origin of the banner - whether it was created from an image or a layout. */\n origin?: LayoutData_BannerOrigin;\n};\nexport type LayoutData_BannerPosition = 'TOP' | 'BOTTOM';\n\nexport const LayoutData_BannerPosition = {\n TOP: 'TOP',\n BOTTOM: 'BOTTOM',\n} as const;\n\nexport type LayoutData_BannerOrigin = 'IMAGE' | 'LAYOUT';\n\nexport const LayoutData_BannerOrigin = {\n IMAGE: 'IMAGE',\n LAYOUT: 'LAYOUT',\n} as const;\n\nexport type LayoutData_ResponsivenessBehaviour = 'STACK' | 'WRAP';\n\nexport const LayoutData_ResponsivenessBehaviour = {\n STACK: 'STACK',\n WRAP: 'WRAP',\n} as const;\n\nexport type LayoutData_DesignTarget = 'LAYOUT' | 'CELL';\n\nexport const LayoutData_DesignTarget = {\n LAYOUT: 'LAYOUT',\n CELL: 'CELL',\n} as const;\n\n/** Used to wrap content inside layout container. When rendered, it shows content inside layout column */\nexport type LayoutCellNode = {\n /**\n * Node type.\n * Must be `LAYOUT_CELL`.\n */\n type: 'LAYOUT_CELL';\n /** Child nodes that the cell item contains. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Layout Cell details. */\n layoutCellData?: LayoutCellData;\n};\nexport type LayoutCellData = {\n /** Defines how many columns cell spans inside 12 column grid. If not provided it will divide remaining space equally. */\n colSpan?: number;\n};\nexport type LayoutCellChildNode =\n | BlockquoteNode\n | CodeBlockNode\n | HeadingNode\n | OrderedListNode\n | BulletedListNode\n | CheckboxListNode\n | ParagraphNode\n | AppEmbedNode\n | AudioNode\n | ButtonNode\n | CollapsibleListNode\n | DividerNode\n | EmbedNode\n | FileNode\n | GalleryNode\n | GifNode\n | HtmlNode\n | ImageNode\n | LinkPreviewNode\n | PollNode\n | TocNode\n | VideoNode\n | ExternalNode\n | ShapeNode;\n/** Numbered list. */\nexport type OrderedListNode = {\n /**\n * Node type.\n * Must be `ORDERED_LIST`.\n */\n type: 'ORDERED_LIST';\n /** List items. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Ordered list details. */\n orderedListData?: OrderedListData;\n};\nexport type OrderedListData = {\n /**\n * List margin from the left side.\n * The indentation is measured relative to the font size *em* units by a ratio of 1.5. For example, if the indentation is `2`, then the margin is equal to **3em**. Therefore the margin is 3 times the size of the font.\n */\n indentation?: number;\n /** Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation. */\n offset?: number;\n /** Number at the top of the numbered list. <br> Default: `1` */\n start?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Bulleted list. */\nexport type BulletedListNode = {\n /**\n * Node type.\n * Must be `BULLETED_LIST`.\n */\n type: 'BULLETED_LIST';\n /** List items. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Bulleted list details. */\n bulletedListData?: BulletedListData;\n};\nexport type BulletedListData = {\n indentation?: number;\n /** Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation. */\n offset?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Checkbox list. */\nexport type CheckboxListNode = {\n /**\n * Node type.\n * Must be `CHECKBOX_LIST`.\n */\n type: 'CHECKBOX_LIST';\n /** List items. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Checkbox list details. */\n checkboxListData?: CheckboxListData;\n};\nexport type CheckboxListData = {\n indentation?: number;\n /** Additional indentation of a list node. When offset is `0`, the list node appears at its default nesting level. Higher values cause increased indentation. */\n offset?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type ListItemNode = {\n /**\n * Node type.\n * Value: `LIST_ITEM`\n */\n type: 'LIST_ITEM';\n /** Child nodes that the list item contains. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** List item details. */\n listItemData?: ListItemNodeData;\n};\nexport type ListItemNodeData = {\n /** Checkbox list item state. <br> Default: `false` */\n checked?: boolean;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type ListItemChildNode =\n | ParagraphNode\n | HeadingNode\n | OrderedListNode\n | BulletedListNode\n | CheckboxListNode\n | ImageNode\n | VideoNode\n | GifNode\n | GalleryNode;\n/** Structures text content, providing a clear separation between different ideas or sections of text. Paragraphs are rendered with default styling that typically includes some space above and below the paragraph, making it visually distinct from the surrounding content. */\nexport type ParagraphNode = {\n /**\n * Node type.\n * Must be `PARAGRAPH`.\n */\n type: 'PARAGRAPH';\n /** Paragraph children. */\n nodes?: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /**\n * Vertical padding.\n * **Note:** This node requires the [`lineSpacing`](https://dev.wix.com/docs/ricos/getting-started/introduction#plugins) plugin to be enabled.\n */\n style?: NodeStyle;\n /** Paragraph node attributes. */\n paragraphData?: ParagraphData;\n};\nexport type ParagraphData = {\n /** Paragraph text styling. */\n textStyle?: TextStyle;\n /**\n * Paragraph margin from the left side.\n * The indentation is measured relative to 40px. For example, if the indentation is `2`, then the margin is equal to **80px**.\n */\n indentation?: number;\n /** Paragraph level for future different paragraphs. */\n level?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Text nodes hold the text itself, similar to how `span` tags hold text in HTML. Text nodes can't be nested and must contain a non-empty string. Their appearance and behavior can be modified using [decorations](#decorations). */\nexport type TextNode = {\n /**\n * Node type.\n * Must be `TEXT`.\n */\n type: 'TEXT';\n /** Text options. */\n textData: TextData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type TextData = {\n /** Non-empty string to display as text. */\n text: string;\n decorations?: Decoration[];\n};\n/** Embeds an external content preview from Wix business solutions. For example, you can embed previews from the Wix Bookings, Wix Stores and Wix Events apps. */\nexport type AppEmbedNode = {\n /**\n * Node type.\n * Must be `APP_EMBED`.\n */\n type: 'APP_EMBED';\n /** Embedded Wix app. */\n appEmbedData: AppEmbedData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type AppEmbedData = AppEmbedDataProduct | AppEmbedDataEvent | AppEmbedDataBooking;\nexport type AppEmbedData_AppType = 'PRODUCT' | 'EVENT' | 'BOOKING';\n\nexport const AppEmbedData_AppType = {\n PRODUCT: 'PRODUCT',\n EVENT: 'EVENT',\n BOOKING: 'BOOKING',\n} as const;\n\n/** Embedded a product from Wix Stores. */\nexport type AppEmbedDataProduct = {\n /** Must be `PRODUCT`. */\n type: 'PRODUCT';\n /** Embedded content name. */\n name: string;\n /** Embedded content URL. */\n url: string;\n /** App embed container styling. */\n containerData?: PluginContainerData;\n /** Embedded content thumbnail. */\n image?: Media;\n /** Embedded content ID. */\n itemId?: string;\n /** Deprecated: Use `image` instead. */\n imageSrc?: string;\n /** Whether to hide the image. */\n hideImage?: boolean;\n /** Whether to hide the title. */\n hideTitle?: boolean;\n /** Whether to hide the price. */\n hidePrice?: boolean;\n /** Whether to hide the button. */\n hideButton?: boolean;\n /** Whether to hide the ribbon. */\n hideRibbon?: boolean;\n /** Button styling options. */\n buttonStyles?: AppEmbedData_ButtonStyles;\n /** Image styling options. */\n imageStyles?: AppEmbedData_ImageStyles;\n /** Ribbon styling options. */\n ribbonStyles?: AppEmbedData_RibbonStyles;\n /** Card styling options. */\n cardStyles?: AppEmbedData_CardStyles;\n /** Pricing information for the embedded content. */\n pricingData?: AppEmbedData_PricingData;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Embeds an event from Wix Events. */\nexport type AppEmbedDataEvent = {\n /** Must be `EVENT`. */\n type: 'EVENT';\n /** Embedded content name. */\n name: string;\n /** Embedded content URL. */\n url: string;\n /** App embed container styling. */\n containerData?: PluginContainerData;\n /** Embedded event content. */\n eventData?: AppEmbedData_EventData;\n /** Embedded content thumbnail. */\n image?: Media;\n /** Embedded content ID. */\n itemId?: string;\n /** Deprecated: Use `image` instead. */\n imageSrc?: string;\n /** Whether to hide the image. */\n hideImage?: boolean;\n /** Whether to hide the title. */\n hideTitle?: boolean;\n /** Whether to hide the price. */\n hidePrice?: boolean;\n /** Whether to hide the description. */\n hideDescription?: boolean;\n /** Whether to hide the date and time. */\n hideDateTime?: boolean;\n /** Whether to hide the location. */\n hideLocation?: boolean;\n /** Whether to hide the button. */\n hideButton?: boolean;\n /** Whether to hide the ribbon. */\n hideRibbon?: boolean;\n /** Button styling options. */\n buttonStyles?: AppEmbedData_ButtonStyles;\n /** Image styling options. */\n imageStyles?: AppEmbedData_ImageStyles;\n /** Ribbon styling options. */\n ribbonStyles?: AppEmbedData_RibbonStyles;\n /** Card styling options. */\n cardStyles?: AppEmbedData_CardStyles;\n /** Pricing information for the embedded content. */\n pricingData?: AppEmbedData_PricingData;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Embeds a booking from Wix Bookings. */\nexport type AppEmbedDataBooking = {\n type: 'BOOKING';\n /** Embedded content name. */\n name: string;\n /** Embedded content URL. */\n url: string;\n /** App embed container styling. */\n containerData?: PluginContainerData;\n /** Embedded content thumbnail. */\n image?: Media;\n /** Embedded content ID. */\n itemId?: string;\n /** Embedded booking content. */\n bookingData?: AppEmbedData_BookingData;\n /** Deprecated: Use `image` instead. */\n imageSrc?: string;\n /** Whether to hide the image. */\n hideImage?: boolean;\n /** Whether to hide the title. */\n hideTitle?: boolean;\n /** Whether to hide the price. */\n hidePrice?: boolean;\n /** Whether to hide the description. */\n hideDescription?: boolean;\n /** Whether to hide the duration. */\n hideDuration?: boolean;\n /** Whether to hide the location. */\n hideLocation?: boolean;\n /** Whether to hide the button. */\n hideButton?: boolean;\n /** Whether to hide the ribbon. */\n hideRibbon?: boolean;\n /** Button styling options. */\n buttonStyles?: AppEmbedData_ButtonStyles;\n /** Image styling options. */\n imageStyles?: AppEmbedData_ImageStyles;\n /** Ribbon styling options. */\n ribbonStyles?: AppEmbedData_RibbonStyles;\n /** Card styling options. */\n cardStyles?: AppEmbedData_CardStyles;\n /** Pricing information for the embedded content. */\n pricingData?: AppEmbedData_PricingData;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type AppEmbedData_BookingData = {\n /** Booking duration in minutes. */\n durations?: string;\n};\nexport type AppEmbedData_EventData = {\n /** Event schedule. */\n scheduling?: string;\n /** Event location. */\n location?: string;\n};\nexport type AppEmbedData_ButtonStyles = {\n /** Text to display on the button. */\n buttonText?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Text color as a hexadecimal value. */\n textColor?: string;\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Border color as a hexadecimal value (hover state). */\n borderColorHover?: string;\n /** Text color as a hexadecimal value (hover state). */\n textColorHover?: string;\n /** Background color as a hexadecimal value (hover state). */\n backgroundColorHover?: string;\n /** Button size option, one of `SMALL`, `MEDIUM` or `LARGE`. Defaults to `MEDIUM`. */\n buttonSize?: string;\n};\nexport type AppEmbedData_ImageStyles = {\n /** Position of image. Defaults to `START`. */\n imagePosition?: AppEmbedData_ImageStyles_Position;\n /** Aspect ratio for the image. Defaults to `SQUARE`. */\n aspectRatio?: AppEmbedData_ImageStyles_AspectRatio;\n /** How the image should be resized. Defaults to `FILL`. */\n resizing?: AppEmbedData_ImageStyles_Resizing;\n /** Image border color as a hexadecimal value. */\n borderColor?: string;\n /** Image border width in pixels. */\n borderWidth?: number;\n /** Image border radius in pixels. */\n borderRadius?: number;\n};\nexport type AppEmbedData_ImageStyles_Position = 'START' | 'END' | 'TOP';\n\nexport const AppEmbedData_ImageStyles_Position = {\n START: 'START',\n END: 'END',\n TOP: 'TOP',\n} as const;\n\nexport type AppEmbedData_ImageStyles_AspectRatio = 'SQUARE' | 'RECTANGLE';\n\nexport const AppEmbedData_ImageStyles_AspectRatio = {\n SQUARE: 'SQUARE',\n RECTANGLE: 'RECTANGLE',\n} as const;\n\nexport type AppEmbedData_ImageStyles_Resizing = 'FILL' | 'FIT';\n\nexport const AppEmbedData_ImageStyles_Resizing = {\n FILL: 'FILL',\n FIT: 'FIT',\n} as const;\n\nexport type AppEmbedData_RibbonStyles = {\n /** Text to display on the ribbon. */\n ribbonText?: string;\n /** Placement of the ribbon. Defaults to `IMAGE`. */\n ribbonPlacement?: AppEmbedData_RibbonStyles_Placement;\n /** Ribbon background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Ribbon text color as a hexadecimal value. */\n textColor?: string;\n /** Ribbon border color as a hexadecimal value. */\n borderColor?: string;\n /** Ribbon border width in pixels. */\n borderWidth?: number;\n /** Ribbon border radius in pixels. */\n borderRadius?: number;\n};\nexport type AppEmbedData_RibbonStyles_Placement = 'IMAGE' | 'PRODUCT_INFO';\n\nexport const AppEmbedData_RibbonStyles_Placement = {\n IMAGE: 'IMAGE',\n PRODUCT_INFO: 'PRODUCT_INFO',\n} as const;\n\nexport type AppEmbedData_CardStyles = {\n /** Card background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Card border color as a hexadecimal value. */\n borderColor?: string;\n /** Card border width in pixels. */\n borderWidth?: number;\n /** Card border radius in pixels. */\n borderRadius?: number;\n /** Card type. Defaults to `CONTAINED`. */\n type?: AppEmbedData_CardStyles_Type;\n /** Content alignment. Defaults to `START`. */\n alignment?: AppEmbedData_CardStyles_Alignment;\n /** Layout for title and price. Defaults to `STACKED`. */\n titlePriceLayout?: AppEmbedData_CardStyles_Layout;\n /** Title text color as a hexadecimal value. */\n titleColor?: string;\n /** Text color as a hexadecimal value. */\n textColor?: string;\n};\nexport type AppEmbedData_CardStyles_Type = 'CONTAINED' | 'FRAMELESS';\n\nexport const AppEmbedData_CardStyles_Type = {\n CONTAINED: 'CONTAINED',\n FRAMELESS: 'FRAMELESS',\n} as const;\n\nexport type AppEmbedData_CardStyles_Alignment = 'START' | 'CENTER' | 'END';\n\nexport const AppEmbedData_CardStyles_Alignment = {\n START: 'START',\n CENTER: 'CENTER',\n END: 'END',\n} as const;\n\n/** Layout options for arranging elements. */\nexport type AppEmbedData_CardStyles_Layout = 'STACKED' | 'SIDE_BY_SIDE';\nexport type AppEmbedData_PricingData = {\n /** Minimum numeric price value as string (e.g., \"10.99\"). */\n valueFrom?: string;\n /** Maximum numeric price value as string (e.g., \"19.99\"). */\n valueTo?: string;\n /** Numeric price value as string after discount application (e.g., \"15.99\"). */\n discountedValue?: string;\n /** Currency of the value in ISO 4217 format (e.g., \"USD\", \"EUR\"). */\n currency?: string;\n /** Pricing plan ID. */\n pricingPlanId?: string;\n};\n/** Embeds and plays audio content directly in a webpage. Users can interact with the controls to play, pause, rewind, and adjust the volume of the audio. */\nexport type AudioNode = {\n /**\n * Node type.\n * Must be `AUDIO`.\n */\n type: 'AUDIO';\n /** Audio details. */\n audioData: AudioData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type AudioData = {\n /** Audio node container styling. */\n containerData?: PluginContainerData;\n /** Audio file details. */\n audio?: Media;\n /**\n * Whether the audio download button is disabled.\n * Default: `false`\n */\n disableDownload?: boolean;\n /** Cover image. */\n coverImage?: Media;\n /** Track name. */\n name?: string;\n /** Author name. */\n authorName?: string;\n /** HTML version of the audio node. */\n html?: string;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\n/** Button to trigger an action. */\nexport type ButtonNode = {\n /**\n * Node type.\n * Must be `BUTTON`\n */\n type: 'BUTTON';\n /** Button details. */\n buttonData: ButtonData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type ButtonData = {\n /** Button type. Supported values: <br> - `LINK`: Redirects to a webpage. <br> - `ACTION`: Performs an action. */\n type: ButtonData_Type;\n /** Button text. */\n text: string;\n /** Button container styling. */\n containerData?: PluginContainerData;\n /** Button styling. */\n styles?: ButtonData_Styles;\n /** Button link details. */\n link?: Link;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type ButtonData_Type = 'LINK' | 'ACTION';\n\nexport const ButtonData_Type = {\n LINK: 'LINK',\n ACTION: 'ACTION',\n} as const;\n\nexport type ButtonData_Styles = {\n /** Deprecated: Use `borderWidth` and `borderRadius` instead. */\n border?: ButtonData_Styles_Border;\n /** Deprecated: Use `textColor`, `borderColor` and `backgroundColor` instead. */\n colors?: ButtonData_Styles_Colors;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Deprecated: Use `borderWidth` for normal/hover states instead. */\n borderWidthHover?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border color as a hexadecimal value (hover state). */\n borderColorHover?: string;\n /** Text color as a hexadecimal value. */\n textColor?: string;\n /** Text color as a hexadecimal value (hover state). */\n textColorHover?: string;\n /** Deprecated: Use `background` instead. */\n backgroundColor?: string;\n /** Deprecated: Use `backgroundHover` instead. */\n backgroundColorHover?: string;\n /** Background styling (color or gradient). */\n background?: Background;\n /** Background styling for hover state (color or gradient). */\n backgroundHover?: Background;\n /** Button size. Defaults to `MEDIUM`. */\n buttonSize?: ButtonData_Styles_ButtonSize;\n};\nexport type ButtonData_Styles_ButtonSize = 'MEDIUM' | 'SMALL' | 'LARGE';\n\nexport const ButtonData_Styles_ButtonSize = {\n MEDIUM: 'MEDIUM',\n SMALL: 'SMALL',\n LARGE: 'LARGE',\n} as const;\n\nexport type ButtonData_Styles_Colors = {\n /** Deprecated: Use `textColor` in `styles` instead. */\n text?: string;\n /** Deprecated: Use `borderColor` in `styles` instead. */\n border?: string;\n /** Deprecated: Use `backgroundColor` in `styles` instead. */\n background?: string;\n};\nexport type ButtonData_Styles_Border = {\n /** Deprecated: Use `borderWidth` in `styles` instead. */\n width?: number;\n /** Deprecated: Use `borderRadius` in `styles` instead */\n radius?: number;\n};\n/** List of items where each item can be expanded or collapsed. */\nexport type CollapsibleListNode = {\n /**\n * Node type.\n * Must be `COLLAPSIBLE_LIST`\n */\n type: 'COLLAPSIBLE_LIST';\n /** Collapsible list child nodes. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Collapsible list details. */\n collapsibleListData?: CollapsibleListData;\n};\nexport type CollapsibleListData = {\n /** Collapsible list container styling. */\n containerData?: PluginContainerData;\n /**\n * Whether only one item can be expanded at a time.\n * Default: `false`.\n */\n expandOnlyOne?: boolean;\n /** Sets which items are automatically expanded after the page loads. */\n initialExpandedItems?: CollapsibleListData_InitialExpandedItems;\n /**\n * Direction of the text in the list. Supported values:\n * - `LTR`: Left to right.\n * - `RTL`: Right to left.\n */\n direction?: CollapsibleListData_Direction;\n /** Whether the collapsible item will appear in search results as an FAQ. */\n isQapageData?: boolean;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type CollapsibleListData_InitialExpandedItems = 'FIRST' | 'ALL' | 'NONE';\n\nexport const CollapsibleListData_InitialExpandedItems = {\n FIRST: 'FIRST',\n ALL: 'ALL',\n NONE: 'NONE',\n} as const;\n\nexport type CollapsibleListData_Direction = 'LTR' | 'RTL';\n\nexport const CollapsibleListData_Direction = {\n LTR: 'LTR',\n RTL: 'RTL',\n} as const;\n\nexport type CollapsibleItemNode = {\n /**\n * Node type.\n * Must be `COLLAPSIBLE_ITEM`\n */\n type: 'COLLAPSIBLE_ITEM';\n /** Collapsible list item. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n};\nexport type CollapsibleItemChildNode = CollapsibleItemTitleNode | CollapsibleItemBodyNode;\n/** Collapsible list item title. */\nexport type CollapsibleItemTitleNode = {\n /**\n * Node type.\n * Must be `COLLAPSIBLE_ITEM_TITLE`.\n */\n type: 'COLLAPSIBLE_ITEM_TITLE';\n /** Collapsible list item title child nodes. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n};\nexport type CollapsibleTitleChildNode =\n | ParagraphNode\n | HeadingNode\n | BulletedListNode\n | OrderedListNode\n | CheckboxListNode\n | BlockquoteNode\n | CodeBlockNode;\n/** Collapsible list item body. */\nexport type CollapsibleItemBodyNode = {\n /**\n * Node type.\n * Must be `COLLAPSIBLE_ITEM_BODY`.\n */\n type: 'COLLAPSIBLE_ITEM_BODY';\n /** Collapsible list item body child nodes. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n};\n/** Collapsible list item body. */\nexport type CollapsibleItemBodyChildNode =\n | ParagraphNode\n | HeadingNode\n | BulletedListNode\n | OrderedListNode\n | CheckboxListNode\n | BlockquoteNode\n | AudioNode\n | FileNode\n | ImageNode\n | VideoNode\n | GifNode\n | DividerNode\n | CodeBlockNode\n | AppEmbedNode\n | LinkPreviewNode\n | GalleryNode\n | ButtonNode\n | CollapsibleListNode\n | TableNode\n | EmbedNode\n | PollNode\n | HtmlNode\n | TocNode\n | ShapeNode;\n/** Horizontal line between different content. */\nexport type DividerNode = {\n /**\n * Node type.\n * Must be `DIVIDER`.\n */\n type: 'DIVIDER';\n /** [Node ID](#node-ids). */\n id?: string;\n /** Divider details. */\n dividerData?: DividerData;\n nodes?: RicosDocumentNode[];\n};\n/** Divider data discriminated by line style. */\nexport type DividerData =\n | DividerData_SingleLine\n | DividerData_DoubleLine\n | DividerData_DashedLine\n | DividerData_DottedLine;\nexport type DividerData_LineStyle = 'SINGLE' | 'DOUBLE' | 'DASHED' | 'DOTTED';\n\nexport const DividerData_LineStyle = {\n SINGLE: 'SINGLE',\n DOUBLE: 'DOUBLE',\n DASHED: 'DASHED',\n DOTTED: 'DOTTED',\n} as const;\n\nexport type DividerData_SingleLine = {\n /** Must be `SINGLE`. */\n lineStyle: 'SINGLE';\n /** Divider container styling. */\n containerData?: PluginContainerData;\n /** Divider width. */\n width?: DividerData_Width;\n /** Divider alignment. */\n alignment?: DividerData_Alignment;\n /** Visual styling for the divider lines. */\n styles?: DividerData_SingleLine_Styles;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type DividerData_DoubleLine = {\n /** Must be `DOUBLE`. */\n lineStyle: 'DOUBLE';\n /** Divider container styling. */\n containerData?: PluginContainerData;\n /** Divider width. */\n width?: DividerData_Width;\n /** Divider alignment. */\n alignment?: DividerData_Alignment;\n /** Visual styling for the divider lines. */\n styles?: DividerData_DoubleLine_Styles;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type DividerData_DashedLine = {\n /** Must be `DASHED`. */\n lineStyle: 'DASHED';\n /** Divider container styling. */\n containerData?: PluginContainerData;\n /** Divider width. */\n width?: DividerData_Width;\n /** Divider alignment. */\n alignment?: DividerData_Alignment;\n /** Visual styling for the divider lines. */\n styles?: DividerData_DashedLine_Styles;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type DividerData_DottedLine = {\n /** Must be `DOTTED`. */\n lineStyle: 'DOTTED';\n /** Divider container styling. */\n containerData?: PluginContainerData;\n /** Divider width. */\n width?: DividerData_Width;\n /** Divider alignment. */\n alignment?: DividerData_Alignment;\n /** Visual styling for the divider lines. */\n styles?: DividerData_DottedLine_Styles;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type DividerData_Width = 'LARGE' | 'MEDIUM' | 'SMALL';\n\nexport const DividerData_Width = {\n LARGE: 'LARGE',\n MEDIUM: 'MEDIUM',\n SMALL: 'SMALL',\n} as const;\n\nexport type DividerData_Alignment = 'CENTER' | 'LEFT' | 'RIGHT';\n\nexport const DividerData_Alignment = {\n CENTER: 'CENTER',\n LEFT: 'LEFT',\n RIGHT: 'RIGHT',\n} as const;\n\nexport type DividerData_Styles_LineCap = 'SQUARE' | 'ROUND';\n\nexport const DividerData_Styles_LineCap = {\n SQUARE: 'SQUARE',\n ROUND: 'ROUND',\n} as const;\n\nexport type DividerData_SingleLine_Styles = {\n /** Divider color as a hexadecimal value. An alpha channel controls opacity. */\n color?: string;\n /** Divider line ending shape. */\n lineCap?: DividerData_Styles_LineCap;\n lineThickness?: number[];\n};\nexport type DividerData_DoubleLine_Styles = {\n /** Divider color as a hexadecimal value. An alpha channel controls opacity. */\n color?: string;\n /** Divider line ending shape. */\n lineCap?: DividerData_Styles_LineCap;\n lineThickness?: number[];\n /** Gap between divider lines in pixels. */\n lineGap?: number;\n};\nexport type DividerData_DashedLine_Styles = {\n /** Divider color as a hexadecimal value. An alpha channel controls opacity. */\n color?: string;\n /** Divider line ending shape. */\n lineCap?: DividerData_Styles_LineCap;\n lineThickness?: number[];\n /** Visible dash length for dashed dividers, in pixels. The pattern is snapped to a whole number of dashes so that the first and last dash touch the divider's edges - narrower containers show fewer dashes at the same size. */\n dashLength?: number;\n /** Visible gap between dashes or dots, in pixels. */\n dashGap?: number;\n};\nexport type DividerData_DottedLine_Styles = {\n /** Divider color as a hexadecimal value. An alpha channel controls opacity. */\n color?: string;\n /** Divider line ending shape. */\n lineCap?: DividerData_Styles_LineCap;\n lineThickness?: number[];\n /** Visible gap between dashes or dots, in pixels. */\n dashGap?: number;\n};\n/** Embedded content when you include a link to a resource, without having to parse the resource directly. This provides a standardized way for web developers to include content such as videos, images, and other multimedia elements from supported providers. To learn more, see [oembed](https://oembed.com/). */\nexport type EmbedNode = {\n /**\n * Node type.\n * Must be `EMBED`.\n */\n type: 'EMBED';\n /** oEmbed details. */\n embedData: EmbedData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type EmbedData = {\n /** oEmbed node container styling. */\n containerData?: PluginContainerData;\n /** [oEmbed](https://www.oembed.com) details. */\n oembed?: Oembed;\n /** Original asset source. */\n src?: string;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type Oembed = {\n /** Resource type. */\n type?: string;\n /** Width of the resource specified in the `url` field in pixels. */\n width?: number;\n /** Height of the resource specified in the `url` field in pixels. */\n height?: number;\n /** Resource title. */\n title?: string;\n /** Resource source URL. */\n url?: string;\n /** HTML to embed a video player. The HTML should have no padding or margins. */\n html?: string;\n /** Name of the author or owner of the resource. */\n authorName?: string;\n /** URL for the author or owner of the resource. */\n authorUrl?: string;\n /** Name of the resource provider. */\n providerName?: string;\n /** URL for the resource provider. */\n providerUrl?: string;\n /** Thumbnail image URL for the resource. If defined, `thumbnailWidth` and `thumbnailHeight` must also be defined. */\n thumbnailUrl?: string;\n /** Resource's thumbnail image width. If defined, `thumbnailUrl` and `thumbnailHeight` must also be defined. */\n thumbnailWidth?: string;\n /** Resource's thumbnail image height. If defined, `thumbnailUrl` and `thumbnailWidth`must also be defined. */\n thumbnailHeight?: string;\n /** Embedded video URL. */\n videoUrl?: string;\n /** The oEmbed version number. Must be `1.0`. */\n version?: string;\n};\nexport type ExternalNode = {\n type: 'EXTERNAL';\n id?: string;\n htmlData?: any;\n externalData?: Record<string, any>;\n nodes?: RicosDocumentNode[];\n};\n/** File that is uploaded and accessed in a page. Files can be different types of content, such as text documents, images, and videos. */\nexport type FileNode = {\n /**\n * Node type.\n * Must be `FILE`.\n */\n type: 'FILE';\n /** File details. */\n fileData: FileData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type FileData = {\n /** File container styling. */\n containerData?: PluginContainerData;\n /** File data source. */\n src?: FileSource;\n /** File name. */\n name?: string;\n /** File type. */\n type?: string;\n /** Deprecated. Replaced by `sizeInKb` */\n size?: number;\n /** File size in KB. */\n sizeInKb?: string;\n /** Settings for PDF files. */\n pdfSettings?: FileData_PDFSettings;\n /** File MIME type. */\n mimeType?: string;\n /** File path. */\n path?: string;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type FileData_PDFSettings = {\n /**\n * PDF view mode. Supported values:\n * - `NONE`: PDF isn't displayed.\n * - `FULL`: Full PDF page view is displayed.\n * - `MINI`: Mini view of the PDF is displayed.\n */\n viewMode?: FileData_PDFSettings_ViewMode;\n /**\n * Whether the PDF download button is disabled.\n * Default: `false`\n */\n disableDownload?: boolean;\n /**\n * Whether the PDF print button is disabled.\n * Default: `false`\n */\n disablePrint?: boolean;\n};\nexport type FileData_PDFSettings_ViewMode = 'NONE' | 'FULL' | 'MINI';\n\nexport const FileData_PDFSettings_ViewMode = {\n NONE: 'NONE',\n FULL: 'FULL',\n MINI: 'MINI',\n} as const;\n\n/** Collection of images displayed together. */\nexport type GalleryNode = {\n /**\n * Node type.\n * Must be `GALLERY`.\n */\n type: 'GALLERY';\n /** Gallery node details. */\n galleryData: GalleryData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type GalleryData = {\n items: GalleryData_Item[];\n /** Gallery container styling. */\n containerData?: PluginContainerData;\n /** Gallery appearance options. */\n options?: GalleryOptions;\n /**\n * Whether the expand button is disabled.\n * Default: `false`\n */\n disableExpand?: boolean;\n /**\n * Whether the download button is disabled.\n * Default: `false`\n */\n disableDownload?: boolean;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type GalleryOptions = {\n /** Gallery layout. */\n layout?: GalleryOptions_Layout;\n /** Styling for gallery items. */\n item?: GalleryOptions_ItemStyle;\n /** Styling for gallery thumbnail images. */\n thumbnails?: GalleryOptions_Thumbnails;\n};\nexport type GalleryOptions_Layout = {\n /** Gallery layout. Supported values: <br> - `COLLAGE`: Presents images in various sizes and positions, creating an artistic or dynamic layout. <br> - `MASONRY`: Grid-based design that places items in optimal positions based on available vertical space, creating an arrangement where items of varying heights fit together like bricks in a wall. <br> - `GRID`: A layout structure that organizes items into rows and columns, creating a uniform arrangement of images. <br> - `THUMBNAIL`: Smaller, scaled-down version of an image that serves as a preview. <br> - `SLIDER`: Component that allows users to browse through a set of images by sliding or swiping through them, typically in a confined viewing area. <br> - `SLIDESHOW`: A component that automatically or manually transitions through a set of images in a designated area. <br> - `PANORAMA`: Wide-angle or 360-degree image that allows users to view an extended horizontal view of a scene. <br> - `COLUMN`: Arrangement of the gallery items in vertical sections. <br> - `MAGIC`: Visually stunning, dynamic effects that enhance the user experience. <br> - `FULLSIZE`: A layout where each image or item is displayed at its full size, sometimes taking up the entire viewport or a significant portion of the screen. */\n type?: GalleryOptions_Layout_Type;\n /**\n * Whether the horizontal scroll is enabled.\n * Default: `true`, unless the `type` field is set to `GRID` or `COLLAGE`.\n */\n horizontalScroll?: boolean;\n /** Gallery orientation. */\n orientation?: GalleryOptions_Layout_Orientation;\n /** Number of columns to display on computer screens. */\n numberOfColumns?: number;\n /** Number of columns to display on mobile phone screens. */\n mobileNumberOfColumns?: number;\n};\nexport type GalleryOptions_Layout_Type =\n | 'COLLAGE'\n | 'MASONRY'\n | 'GRID'\n | 'THUMBNAIL'\n | 'SLIDER'\n | 'SLIDESHOW'\n | 'PANORAMA'\n | 'COLUMN'\n | 'MAGIC'\n | 'FULLSIZE';\n\nexport const GalleryOptions_Layout_Type = {\n COLLAGE: 'COLLAGE',\n MASONRY: 'MASONRY',\n GRID: 'GRID',\n THUMBNAIL: 'THUMBNAIL',\n SLIDER: 'SLIDER',\n SLIDESHOW: 'SLIDESHOW',\n PANORAMA: 'PANORAMA',\n COLUMN: 'COLUMN',\n MAGIC: 'MAGIC',\n FULLSIZE: 'FULLSIZE',\n} as const;\n\nexport type GalleryOptions_Layout_Orientation = 'ROWS' | 'COLUMNS';\n\nexport const GalleryOptions_Layout_Orientation = {\n ROWS: 'ROWS',\n COLUMNS: 'COLUMNS',\n} as const;\n\nexport type GalleryOptions_ItemStyle = {\n /** Dimensions for each gallery item in pixels. Behavior may change with gallery type. */\n targetSize?: number;\n /** Height to width ratio. */\n ratio?: number;\n /** Cropping strategy. Supported values: <br> - `FILL`: Each item in the gallery is cropped and resized to completely fill its container. <br> - `FIT`: Each item in the gallery is resized to fit exactly in its container without cropping. */\n crop?: GalleryOptions_ItemStyle_Crop;\n /** Spacing between gallery items in pixels. */\n spacing?: number;\n};\nexport type GalleryOptions_ItemStyle_Crop = 'FILL' | 'FIT';\n\nexport const GalleryOptions_ItemStyle_Crop = {\n FILL: 'FILL',\n FIT: 'FIT',\n} as const;\n\nexport type GalleryOptions_Thumbnails = {\n /** Thumbnail alignment. */\n placement?: GalleryOptions_Thumbnails_Alignment;\n /** Spacing between thumbnails in pixels. */\n spacing?: number;\n};\nexport type GalleryOptions_Thumbnails_Alignment = 'TOP' | 'RIGHT' | 'BOTTOM' | 'LEFT' | 'NONE';\n\nexport const GalleryOptions_Thumbnails_Alignment = {\n TOP: 'TOP',\n RIGHT: 'RIGHT',\n BOTTOM: 'BOTTOM',\n LEFT: 'LEFT',\n NONE: 'NONE',\n} as const;\n\nexport type GalleryData_Item = {\n /** Item title. */\n title?: string;\n /** Item's alternative text. */\n altText?: string;\n /** Image item. */\n image?: GalleryData_Item_Image;\n /** Video item. */\n video?: GalleryData_Item_Video;\n};\nexport type GalleryData_Item_Video = {\n /** Video file details. */\n media: Media;\n /** Video thumbnail file details. */\n thumbnail?: Media;\n};\nexport type GalleryData_Item_Image = {\n /** Image file details. */\n media: Media;\n /** Link details for images, if relevant. */\n link?: Link;\n};\n/** GIF images. */\nexport type GifNode = {\n /**\n * Node type.\n * Must be `GIF`.\n */\n type: 'GIF';\n /** GIF details. */\n gifData: GIFData;\n /** [Node ID](#node-ids). */\n id?: string;\n /** Child nodes to define a GIF caption. */\n nodes?: RicosDocumentNode[];\n};\nexport type GIFData = {\n /** GIF container styling. */\n containerData?: PluginContainerData;\n /** Source for the full size GIF. */\n original?: GIF;\n /** Source for the downsized GIF. */\n downsized?: GIF;\n /** Height in pixels. */\n height?: number;\n /** Width in pixels. */\n width?: number;\n /**\n * Type of GIF (Sticker or NORMAL).\n * Default: `NORMAL`\n */\n gifType?: GIFData_GIFType;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type GIFData_GIFType = 'NORMAL' | 'STICKER';\n\nexport const GIFData_GIFType = {\n NORMAL: 'NORMAL',\n STICKER: 'STICKER',\n} as const;\n\nexport type GIF = {\n /** GIF source URL. */\n gif?: string;\n /** MP4 source URL. */\n mp4?: string;\n /** GIF thumbnail URL. */\n still?: string;\n};\n/** HTML block that incorporates external content, such as interactive maps or entire web pages. */\nexport type HtmlNode = {\n /**\n * Node type.\n * Mst be `HTML`.\n */\n type: 'HTML';\n /** HTML details. */\n htmlData: HTMLData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type HTMLData = {\n /** HTML node container styling. Height property is irrelevant for HTML embeds when autoHeight is set to `true`. */\n containerData?: PluginContainerData;\n /**\n * HTML code type. Possible values:\n * - `HTML`: HTML code.\n * - [`ADSENSE`](https://adsense.google.com/start/): Service provided by Google for rendering advertisements on web pages.\n * - `AI`: AI-generated HTML code.\n */\n source?: HTMLData_Source;\n /** HTML code URL. */\n url?: string;\n /** HTML code. */\n html?: string;\n /** WixelWidget ID. Used when source is `AI_WIDGET`. */\n widgetId?: string;\n /**\n * If container height is aligned with its content height.\n * Default: `true`\n */\n autoHeight?: boolean;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type HTMLData_Source = 'HTML' | 'ADSENSE' | 'AI' | 'AI_WIDGET';\n\nexport const HTMLData_Source = {\n HTML: 'HTML',\n ADSENSE: 'ADSENSE',\n AI: 'AI',\n AI_WIDGET: 'AI_WIDGET',\n} as const;\n\n/** Standalone images in a page. */\nexport type ImageNode = {\n /**\n * Node type.\n * Must be `IMAGE`.\n */\n type: 'IMAGE';\n /** Image options. */\n imageData: ImageData;\n /** [Node ID](#node-ids). */\n id?: string;\n /** Child nodes to define an image caption. */\n nodes?: RicosDocumentNode[];\n};\nexport type ImageData = {\n /** Image file details. */\n image: Media;\n /** Image container styling. */\n containerData?: PluginContainerData;\n /** Image link details. */\n link?: Link;\n /**\n * Whether the image expands to the full screen when clicked.\n * Default: `false`\n */\n disableExpand?: boolean;\n /** Alternate text for accessibility and display when the image doesn't load. */\n altText?: string;\n /** Deprecated. Use `CaptionNode` instead. */\n caption?: string;\n /**\n * Whether the download image button is disabled.\n * Default: `false`\n */\n disableDownload?: boolean;\n /** Whether the image is decorative and does not need an explanation. Defaults to `false`. */\n decorative?: boolean;\n /** Image styling. */\n styles?: ImageData_Styles;\n /** Non-destructive crop rectangle, expressed as fractions (0-1) of the original image. When omitted, the full image is shown. */\n crop?: ImageData_Crop;\n /** Optional shape mask applied to the visible crop. */\n cropShape?: ImageData_CropShape;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type ImageData_CropShape =\n | 'CIRCLE'\n | 'OVAL'\n | 'STAR'\n | 'PENTAGON'\n | 'HEXAGON'\n | 'TRIANGLE'\n | 'HEART'\n | 'RHOMBUS'\n | 'FLUID'\n | 'WINDOW';\n\nexport const ImageData_CropShape = {\n CIRCLE: 'CIRCLE',\n OVAL: 'OVAL',\n STAR: 'STAR',\n PENTAGON: 'PENTAGON',\n HEXAGON: 'HEXAGON',\n TRIANGLE: 'TRIANGLE',\n HEART: 'HEART',\n RHOMBUS: 'RHOMBUS',\n FLUID: 'FLUID',\n WINDOW: 'WINDOW',\n} as const;\n\nexport type ImageData_Crop = {\n /** Left edge of the crop, as a fraction (0-1) of the original image width. */\n x?: number;\n /** Top edge of the crop, as a fraction (0-1) of the original image height. */\n y?: number;\n /** Visible width of the crop, as a fraction (0-1) of the original image width. */\n width?: number;\n /** Visible height of the crop, as a fraction (0-1) of the original image height. */\n height?: number;\n};\nexport type ImageData_Styles = {\n /** Border properties. */\n border?: ImageData_Styles_Border;\n};\nexport type ImageData_Styles_Border = {\n /** Border width in pixels. */\n width?: number;\n /** Border color as a hexadecimal value. */\n color?: string;\n /** Border radius in pixels. */\n radius?: number;\n};\n/** Preview or summary of a webpage. Link previews include elements such as the title of the linked page, a brief description or excerpt of the content, and sometimes a thumbnail image or other relevant information. */\nexport type LinkPreviewNode = {\n /**\n * Node type.\n * Must be `LINK_PREVIEW`.\n */\n type: 'LINK_PREVIEW';\n /** Link preview details. */\n linkPreviewData: LinkPreviewData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type LinkPreviewData = {\n /** Link preview container styling. */\n containerData?: PluginContainerData;\n /** Link details. */\n link?: Link;\n /** Preview title. */\n title?: string;\n /** Preview thumbnail URL. */\n thumbnailUrl?: string;\n /** Preview description. */\n description?: string;\n /** Preview content as HTML. */\n html?: string;\n /** Styling for the link preview. */\n styles?: LinkPreviewData_Styles;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type LinkPreviewData_Styles = {\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n /** Title color as a hexadecimal value. */\n titleColor?: string;\n /** Subtitle color as a hexadecimal value. */\n subtitleColor?: string;\n /** Link color as a hexadecimal value. */\n linkColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Position of thumbnail. Defaults to `START`. */\n thumbnailPosition?: 'START' | 'END' | 'TOP' | 'HIDDEN';\n};\n/** Provides a question with several options, where the options' cumulative total may be shown. */\nexport type PollNode = {\n /**\n * Node type.\n * Must be `POLL`.\n */\n type: 'POLL';\n /** Poll details. */\n pollData: PollData;\n /** [Node ID](#node-ids). */\n id?: string;\n nodes?: RicosDocumentNode[];\n};\nexport type PollData = {\n /** Poll container styling. */\n containerData?: PluginContainerData;\n /** Poll data. */\n poll?: PollData_Poll;\n /** Poll layout settings. */\n layout?: PollData_Layout;\n /** Poll design. */\n design?: PollData_Design;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type PollData_Poll = {\n /** [Node ID](#node-ids). */\n id?: string;\n /** Poll title. */\n title?: string;\n /** Poll creator ID. */\n creatorId?: string;\n /** Main poll image. */\n image?: Media;\n options?: PollData_Poll_Option[];\n /** Poll display settings. */\n settings?: PollData_Poll_Settings;\n};\nexport type PollData_Poll_Option = {\n /** Poll option ID. */\n id?: string;\n /** Poll option title */\n title?: string;\n /** Image displayed with the option. */\n image?: Media;\n};\nexport type PollData_Poll_Settings = {\n /** Voting permission settings. */\n permissions?: PollData_Poll_Settings_Permissions;\n /**\n * Whether to display the voters in the vote results.\n * Default: `true`.\n */\n showVoters?: boolean;\n /**\n * Whether to display the vote count.\n * Default: `true`.\n */\n showVotesCount?: boolean;\n};\nexport type PollData_Poll_Settings_Permissions = {\n /** Who can view the poll results. */\n view?: PollData_Poll_Settings_Permissions_ViewRole;\n /** Who can vote. */\n vote?: PollData_Poll_Settings_Permissions_VoteRole;\n /**\n * Whether a user can vote multiple times.\n * Default: `false`\n */\n allowMultipleVotes?: boolean;\n};\nexport type PollData_Poll_Settings_Permissions_ViewRole = 'CREATOR' | 'VOTERS' | 'EVERYONE';\n\nexport const PollData_Poll_Settings_Permissions_ViewRole = {\n CREATOR: 'CREATOR',\n VOTERS: 'VOTERS',\n EVERYONE: 'EVERYONE',\n} as const;\n\nexport type PollData_Poll_Settings_Permissions_VoteRole = 'SITE_MEMBERS' | 'ALL';\n\nexport const PollData_Poll_Settings_Permissions_VoteRole = {\n SITE_MEMBERS: 'SITE_MEMBERS',\n ALL: 'ALL',\n} as const;\n\nexport type PollData_Layout = {\n /** Poll layout settings. */\n poll?: PollData_Layout_PollLayout;\n /** Poll options layout settings. */\n options?: PollData_Layout_OptionLayout;\n};\nexport type PollData_Layout_PollLayout = {\n /** Voting options layout. */\n type?: PollData_Layout_PollLayout_Type;\n /** Direction of the text in the poll. Supported values: <br> - `LTR`: Left to right. <br> - `RTL`: Right to left. */\n direction?: PollData_Layout_PollLayout_Direction;\n /**\n * Whether to display the main poll image.\n * Default: `false`\n */\n enableImage?: boolean;\n};\nexport type PollData_Layout_PollLayout_Type = 'LIST' | 'GRID';\n\nexport const PollData_Layout_PollLayout_Type = {\n LIST: 'LIST',\n GRID: 'GRID',\n} as const;\n\nexport type PollData_Layout_PollLayout_Direction = 'LTR' | 'RTL';\n\nexport const PollData_Layout_PollLayout_Direction = {\n LTR: 'LTR',\n RTL: 'RTL',\n} as const;\n\nexport type PollData_Layout_OptionLayout = {\n /**\n * Whether to display option images.\n * Defaults: `false`.\n */\n enableImage?: boolean;\n};\nexport type PollData_Design = {\n /** Poll styling. */\n poll?: PollData_Design_PollDesign;\n /** Voting options styling. */\n options?: PollData_Design_OptionDesign;\n};\nexport type PollData_Design_PollDesign = {\n /** Poll background styling. */\n background?: PollData_Design_PollDesign_Background;\n /** Border radius in pixels. */\n borderRadius?: number;\n};\nexport type PollData_Design_PollDesign_Background =\n | PollData_Background_ColorVariant\n | PollData_Background_ImageVariant\n | PollData_Background_GradientVariant;\nexport type PollData_Design_PollDesign_Background_Type = 'COLOR' | 'IMAGE' | 'GRADIENT';\n\nexport const PollData_Design_PollDesign_Background_Type = {\n COLOR: 'COLOR',\n IMAGE: 'IMAGE',\n GRADIENT: 'GRADIENT',\n} as const;\n\nexport type PollData_Background_ColorVariant = {\n type: 'COLOR';\n /** Background color as a hexademical value. */\n color?: string;\n};\nexport type PollData_Background_ImageVariant = {\n type: 'IMAGE';\n /** Image to use for the background. */\n image?: Media;\n};\nexport type PollData_Background_GradientVariant = {\n type: 'GRADIENT';\n /** Gradient background details. */\n gradient?: PollData_Design_PollDesign_Background_Gradient;\n};\nexport type PollData_Design_PollDesign_Background_Gradient = {\n /** Gradient angle in degrees. */\n angle?: number;\n /** Start color as a hexadecimal value. */\n startColor?: string;\n /** End color as a hexadecimal value. */\n lastColor?: string;\n};\nexport type PollData_Design_OptionDesign = {\n /** Border radius in pixels. */\n borderRadius?: number;\n};\n/** Standalone shapes in a page. */\nexport type ShapeNode = {\n /**\n * Node type.\n * Must be `SHAPE`.\n */\n type: 'SHAPE';\n /** [Node ID](#node-ids). */\n id: string;\n /** Shape options. */\n shapeData: ShapeData;\n nodes?: RicosDocumentNode[];\n};\nexport type ShapeData = {\n /** Shape file details. */\n shape: Media;\n /** Shape container styling. */\n containerData?: PluginContainerData;\n /** Styling for the shape. */\n styles?: ShapeData_Styles;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n /** Shape link details. */\n link?: Link;\n /** Alternate text describing the link's purpose for accessibility. Applies only when `link` is set; a shape without a link stays decorative and hidden from screen readers. */\n altText?: string;\n};\nexport type ShapeData_Styles = {\n colors?: Record<string, string>;\n};\n/** A smart block node that allows switching between different visual representations (variants) while preserving content. */\nexport type SmartBlockNode = {\n /**\n * Node type.\n * Must be `SMART_BLOCK`.\n */\n type: 'SMART_BLOCK';\n /** Smart block cells. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Smart block details. */\n smartBlockData?: SmartBlockData;\n};\n/** Smart block data discriminated by type. */\nexport type SmartBlockData =\n | SmartBlockData_SolidBoxes\n | SmartBlockData_NumberedBoxes\n | SmartBlockData_Stats\n | SmartBlockData_BarStats\n | SmartBlockData_CircleStats\n | SmartBlockData_SolidBoxesAlternating\n | SmartBlockData_SolidJoinedBoxes\n | SmartBlockData_SideLineText\n | SmartBlockData_TopLineText\n | SmartBlockData_OutlineBoxesWithTopCircle\n | SmartBlockData_BigBullets\n | SmartBlockData_SmallBullets\n | SmartBlockData_ArrowBullets\n | SmartBlockData_ProcessSteps\n | SmartBlockData_Timeline\n | SmartBlockData_MinimalTimeline\n | SmartBlockData_Pills\n | SmartBlockData_StarRating\n | SmartBlockData_QuoteBoxes\n | SmartBlockData_Circle\n | SmartBlockData_Pyramid\n | SmartBlockData_Staircase\n | SmartBlockData_VerticalFunnel;\nexport type SmartBlockData_Type =\n | 'SOLID_BOXES'\n | 'NUMBERED_BOXES'\n | 'STATS'\n | 'BAR_STATS'\n | 'CIRCLE_STATS'\n | 'SOLID_BOXES_ALTERNATING'\n | 'SOLID_JOINED_BOXES'\n | 'SIDE_LINE_TEXT'\n | 'TOP_LINE_TEXT'\n | 'OUTLINE_BOXES_WITH_TOP_CIRCLE'\n | 'BIG_BULLETS'\n | 'SMALL_BULLETS'\n | 'ARROW_BULLETS'\n | 'PROCESS_STEPS'\n | 'TIMELINE'\n | 'MINIMAL_TIMELINE'\n | 'PILLS'\n | 'STAR_RATING'\n | 'QUOTE_BOXES'\n | 'CIRCLE'\n | 'PYRAMID'\n | 'STAIRCASE'\n | 'VERTICAL_FUNNEL';\n\nexport const SmartBlockData_Type = {\n SOLID_BOXES: 'SOLID_BOXES',\n NUMBERED_BOXES: 'NUMBERED_BOXES',\n STATS: 'STATS',\n BAR_STATS: 'BAR_STATS',\n CIRCLE_STATS: 'CIRCLE_STATS',\n SOLID_BOXES_ALTERNATING: 'SOLID_BOXES_ALTERNATING',\n SOLID_JOINED_BOXES: 'SOLID_JOINED_BOXES',\n SIDE_LINE_TEXT: 'SIDE_LINE_TEXT',\n TOP_LINE_TEXT: 'TOP_LINE_TEXT',\n OUTLINE_BOXES_WITH_TOP_CIRCLE: 'OUTLINE_BOXES_WITH_TOP_CIRCLE',\n BIG_BULLETS: 'BIG_BULLETS',\n SMALL_BULLETS: 'SMALL_BULLETS',\n ARROW_BULLETS: 'ARROW_BULLETS',\n PROCESS_STEPS: 'PROCESS_STEPS',\n TIMELINE: 'TIMELINE',\n MINIMAL_TIMELINE: 'MINIMAL_TIMELINE',\n PILLS: 'PILLS',\n STAR_RATING: 'STAR_RATING',\n QUOTE_BOXES: 'QUOTE_BOXES',\n CIRCLE: 'CIRCLE',\n PYRAMID: 'PYRAMID',\n STAIRCASE: 'STAIRCASE',\n VERTICAL_FUNNEL: 'VERTICAL_FUNNEL',\n} as const;\n\nexport type SmartBlockData_SolidBoxes = {\n /**\n * Variant type.\n * Must be `SOLID_BOXES`.\n */\n type: 'SOLID_BOXES';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_NumberedBoxes = {\n /**\n * Variant type.\n * Must be `NUMBERED_BOXES`.\n */\n type: 'NUMBERED_BOXES';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_Stats = {\n /**\n * Variant type.\n * Must be `STATS`.\n */\n type: 'STATS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_BarStats = {\n /**\n * Variant type.\n * Must be `BAR_STATS`.\n */\n type: 'BAR_STATS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_CircleStats = {\n /**\n * Variant type.\n * Must be `CIRCLE_STATS`.\n */\n type: 'CIRCLE_STATS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_SolidBoxesAlternating = {\n /**\n * Variant type.\n * Must be `SOLID_BOXES_ALTERNATING`.\n */\n type: 'SOLID_BOXES_ALTERNATING';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_SolidJoinedBoxes = {\n /**\n * Variant type.\n * Must be `SOLID_JOINED_BOXES`.\n */\n type: 'SOLID_JOINED_BOXES';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_SideLineText = {\n /**\n * Variant type.\n * Must be `SIDE_LINE_TEXT`.\n */\n type: 'SIDE_LINE_TEXT';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_TopLineText = {\n /**\n * Variant type.\n * Must be `TOP_LINE_TEXT`.\n */\n type: 'TOP_LINE_TEXT';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_OutlineBoxesWithTopCircle = {\n /**\n * Variant type.\n * Must be `OUTLINE_BOXES_WITH_TOP_CIRCLE`.\n */\n type: 'OUTLINE_BOXES_WITH_TOP_CIRCLE';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_BigBullets = {\n /**\n * Variant type.\n * Must be `BIG_BULLETS`.\n */\n type: 'BIG_BULLETS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_SmallBullets = {\n /**\n * Variant type.\n * Must be `SMALL_BULLETS`.\n */\n type: 'SMALL_BULLETS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_ArrowBullets = {\n /**\n * Variant type.\n * Must be `ARROW_BULLETS`.\n */\n type: 'ARROW_BULLETS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_ProcessSteps = {\n /**\n * Variant type.\n * Must be `PROCESS_STEPS`.\n */\n type: 'PROCESS_STEPS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_Timeline = {\n /**\n * Variant type.\n * Must be `TIMELINE`.\n */\n type: 'TIMELINE';\n /** Number of columns per row. Not exposed in the editor toolbar for TIMELINE (gated by the toolbar resolver), but kept in the schema for parity with the proto wire format which always carries this field. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_MinimalTimeline = {\n /**\n * Variant type.\n * Must be `MINIMAL_TIMELINE`.\n */\n type: 'MINIMAL_TIMELINE';\n /** Number of columns per row. Not exposed in the editor toolbar for MINIMAL_TIMELINE (gated by the toolbar resolver), but kept in the schema for parity with the proto wire format which always carries this field. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_Pills = {\n /**\n * Variant type.\n * Must be `PILLS`.\n */\n type: 'PILLS';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /** Layout orientation. HORIZONTAL places the pill on top of the cell content; VERTICAL places it on the left. */\n orientation?: SmartBlockData_Orientation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_StarRating = {\n /**\n * Variant type.\n * Must be `STAR_RATING`.\n */\n type: 'STAR_RATING';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_QuoteBoxes = {\n /**\n * Variant type.\n * Must be `QUOTE_BOXES`.\n */\n type: 'QUOTE_BOXES';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_Circle = {\n /**\n * Variant type.\n * Must be `CIRCLE`.\n */\n type: 'CIRCLE';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_Pyramid = {\n /**\n * Variant type.\n * Must be `PYRAMID`.\n */\n type: 'PYRAMID';\n /** Number of columns per row. Scales the overall pyramid width. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_Staircase = {\n /**\n * Variant type.\n * Must be `STAIRCASE`.\n */\n type: 'STAIRCASE';\n /** Number of columns per row. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_VerticalFunnel = {\n /**\n * Variant type.\n * Must be `VERTICAL_FUNNEL`.\n */\n type: 'VERTICAL_FUNNEL';\n /** Number of columns per row. Scales the overall funnel width. */\n columnSize?: SmartBlockData_ColumnSize;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type SmartBlockData_ColumnSize = 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE';\n\nexport const SmartBlockData_ColumnSize = {\n SMALL: 'SMALL',\n MEDIUM: 'MEDIUM',\n LARGE: 'LARGE',\n EXTRA_LARGE: 'EXTRA_LARGE',\n} as const;\n\nexport type SmartBlockData_Orientation = 'HORIZONTAL' | 'VERTICAL';\n\nexport const SmartBlockData_Orientation = {\n HORIZONTAL: 'HORIZONTAL',\n VERTICAL: 'VERTICAL',\n} as const;\n\n/** A cell within a smart block containing title, body, and optional icon/image. */\nexport type SmartBlockCellNode = {\n /**\n * Node type.\n * Must be `SMART_BLOCK_CELL`.\n */\n type: 'SMART_BLOCK_CELL';\n /** Child nodes that the cell contains (heading, paragraph, image, etc.). */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Cell-level variant data. */\n smartBlockCellData?: SmartBlockCellData;\n};\n/** Cell data discriminated by type. Type must match the parent SmartBlockData type. */\nexport type SmartBlockCellData =\n | SmartBlockCellData_SolidBoxes\n | SmartBlockCellData_NumberedBoxes\n | SmartBlockCellData_Stats\n | SmartBlockCellData_BarStats\n | SmartBlockCellData_CircleStats\n | SmartBlockCellData_SolidBoxesAlternating\n | SmartBlockCellData_SolidJoinedBoxes\n | SmartBlockCellData_SideLineText\n | SmartBlockCellData_TopLineText\n | SmartBlockCellData_OutlineBoxesWithTopCircle\n | SmartBlockCellData_BigBullets\n | SmartBlockCellData_SmallBullets\n | SmartBlockCellData_ArrowBullets\n | SmartBlockCellData_ProcessSteps\n | SmartBlockCellData_Timeline\n | SmartBlockCellData_MinimalTimeline\n | SmartBlockCellData_Pills\n | SmartBlockCellData_StarRating\n | SmartBlockCellData_QuoteBoxes\n | SmartBlockCellData_Circle\n | SmartBlockCellData_Pyramid\n | SmartBlockCellData_Staircase\n | SmartBlockCellData_VerticalFunnel;\nexport type SmartBlockCellData_Type =\n | 'SOLID_BOXES'\n | 'NUMBERED_BOXES'\n | 'STATS'\n | 'BAR_STATS'\n | 'CIRCLE_STATS'\n | 'SOLID_BOXES_ALTERNATING'\n | 'SOLID_JOINED_BOXES'\n | 'SIDE_LINE_TEXT'\n | 'TOP_LINE_TEXT'\n | 'OUTLINE_BOXES_WITH_TOP_CIRCLE'\n | 'BIG_BULLETS'\n | 'SMALL_BULLETS'\n | 'ARROW_BULLETS'\n | 'PROCESS_STEPS'\n | 'TIMELINE'\n | 'MINIMAL_TIMELINE'\n | 'PILLS'\n | 'STAR_RATING'\n | 'QUOTE_BOXES'\n | 'CIRCLE'\n | 'PYRAMID'\n | 'STAIRCASE'\n | 'VERTICAL_FUNNEL';\n\nexport const SmartBlockCellData_Type = {\n SOLID_BOXES: 'SOLID_BOXES',\n NUMBERED_BOXES: 'NUMBERED_BOXES',\n STATS: 'STATS',\n BAR_STATS: 'BAR_STATS',\n CIRCLE_STATS: 'CIRCLE_STATS',\n SOLID_BOXES_ALTERNATING: 'SOLID_BOXES_ALTERNATING',\n SOLID_JOINED_BOXES: 'SOLID_JOINED_BOXES',\n SIDE_LINE_TEXT: 'SIDE_LINE_TEXT',\n TOP_LINE_TEXT: 'TOP_LINE_TEXT',\n OUTLINE_BOXES_WITH_TOP_CIRCLE: 'OUTLINE_BOXES_WITH_TOP_CIRCLE',\n BIG_BULLETS: 'BIG_BULLETS',\n SMALL_BULLETS: 'SMALL_BULLETS',\n ARROW_BULLETS: 'ARROW_BULLETS',\n PROCESS_STEPS: 'PROCESS_STEPS',\n TIMELINE: 'TIMELINE',\n MINIMAL_TIMELINE: 'MINIMAL_TIMELINE',\n PILLS: 'PILLS',\n STAR_RATING: 'STAR_RATING',\n QUOTE_BOXES: 'QUOTE_BOXES',\n CIRCLE: 'CIRCLE',\n PYRAMID: 'PYRAMID',\n STAIRCASE: 'STAIRCASE',\n VERTICAL_FUNNEL: 'VERTICAL_FUNNEL',\n} as const;\n\nexport type SmartBlockCellData_SolidBoxes = {\n /**\n * Cell data type.\n * Must be `SOLID_BOXES`.\n */\n type: 'SOLID_BOXES';\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n};\nexport type SmartBlockCellData_NumberedBoxes = {\n /**\n * Cell data type.\n * Must be `NUMBERED_BOXES`.\n */\n type: 'NUMBERED_BOXES';\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_Stats = {\n /**\n * Cell data type.\n * Must be `STATS`.\n */\n type: 'STATS';\n /** Cell label text. */\n label?: string;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_BarStats = {\n /**\n * Cell data type.\n * Must be `BAR_STATS`.\n */\n type: 'BAR_STATS';\n /** Cell label text. */\n label?: string;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_CircleStats = {\n /**\n * Cell data type.\n * Must be `CIRCLE_STATS`.\n */\n type: 'CIRCLE_STATS';\n /** Cell label text. */\n label?: string;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_SolidBoxesAlternating = {\n /**\n * Cell data type.\n * Must be `SOLID_BOXES_ALTERNATING`.\n */\n type: 'SOLID_BOXES_ALTERNATING';\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n};\nexport type SmartBlockCellData_SolidJoinedBoxes = {\n /**\n * Cell data type.\n * Must be `SOLID_JOINED_BOXES`.\n */\n type: 'SOLID_JOINED_BOXES';\n /** Background color as a hexadecimal value. */\n backgroundColor?: string;\n};\nexport type SmartBlockCellData_SideLineText = {\n /**\n * Cell data type.\n * Must be `SIDE_LINE_TEXT`.\n */\n type: 'SIDE_LINE_TEXT';\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_TopLineText = {\n /**\n * Cell data type.\n * Must be `TOP_LINE_TEXT`.\n */\n type: 'TOP_LINE_TEXT';\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_OutlineBoxesWithTopCircle = {\n /**\n * Cell data type.\n * Must be `OUTLINE_BOXES_WITH_TOP_CIRCLE`.\n */\n type: 'OUTLINE_BOXES_WITH_TOP_CIRCLE';\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_BigBullets = {\n /**\n * Cell data type.\n * Must be `BIG_BULLETS`.\n */\n type: 'BIG_BULLETS';\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_SmallBullets = {\n /**\n * Cell data type.\n * Must be `SMALL_BULLETS`.\n */\n type: 'SMALL_BULLETS';\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_ArrowBullets = {\n /**\n * Cell data type.\n * Must be `ARROW_BULLETS`.\n */\n type: 'ARROW_BULLETS';\n /** Shape file details. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n /** Border color as a hexadecimal value. */\n borderColor?: string;\n /** Border width in pixels. */\n borderWidth?: number;\n /** Border radius in pixels. */\n borderRadius?: number;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_ProcessSteps = {\n /**\n * Cell data type.\n * Must be `PROCESS_STEPS`.\n */\n type: 'PROCESS_STEPS';\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_Timeline = {\n /**\n * Cell data type.\n * Must be `TIMELINE`.\n */\n type: 'TIMELINE';\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_MinimalTimeline = {\n /**\n * Cell data type.\n * Must be `MINIMAL_TIMELINE`.\n */\n type: 'MINIMAL_TIMELINE';\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_Pills = {\n /**\n * Cell data type.\n * Must be `PILLS`.\n */\n type: 'PILLS';\n /** Pill background color as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details rendered inside the pill instead of the cell number. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_StarRating = {\n /**\n * Cell data type.\n * Must be `STAR_RATING`.\n */\n type: 'STAR_RATING';\n /** Cell rating value as text (e.g. `3.5`). Drives the star fill. */\n label?: string;\n /** Accent color as a hexadecimal value. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_QuoteBoxes = {\n /**\n * Cell data type.\n * Must be `QUOTE_BOXES`.\n */\n type: 'QUOTE_BOXES';\n /** Accent color as a hexadecimal value. Drives both the quote-glyph fill and the cell border. */\n accentColor?: string;\n};\nexport type SmartBlockCellData_Circle = {\n /**\n * Cell data type.\n * Must be `CIRCLE`.\n */\n type: 'CIRCLE';\n /** Accent color used to fill this cell's donut segment. */\n accentColor?: string;\n /** Shape rendered inside the segment in place of the auto-generated number. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_Pyramid = {\n /**\n * Cell data type.\n * Must be `PYRAMID`.\n */\n type: 'PYRAMID';\n /** Fill color of the pyramid slice as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details rendered inside the slice instead of the cell number. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_Staircase = {\n /**\n * Cell data type.\n * Must be `STAIRCASE`.\n */\n type: 'STAIRCASE';\n /** Accent color as a hexadecimal value. Drives the staircase bar fill. */\n accentColor?: string;\n /** Shape file details rendered inside the bar instead of the cell number. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\nexport type SmartBlockCellData_VerticalFunnel = {\n /**\n * Cell data type.\n * Must be `VERTICAL_FUNNEL`.\n */\n type: 'VERTICAL_FUNNEL';\n /** Fill color of the funnel slice as a hexadecimal value. */\n accentColor?: string;\n /** Shape file details rendered inside the slice instead of the cell number. */\n shape?: Media;\n /** Shape fill color as a hexadecimal value. */\n shapeColor?: string;\n};\n/** A block-level node allowed as a direct child of a smart block cell. */\nexport type SmartBlockCellChildNode =\n | BlockquoteNode\n | CodeBlockNode\n | HeadingNode\n | OrderedListNode\n | BulletedListNode\n | CheckboxListNode\n | ParagraphNode\n | AppEmbedNode\n | AudioNode\n | ButtonNode\n | CollapsibleListNode\n | DividerNode\n | EmbedNode\n | FileNode\n | GalleryNode\n | GifNode\n | HtmlNode\n | ImageNode\n | LinkPreviewNode\n | PollNode\n | TocNode\n | VideoNode\n | ExternalNode;\n/** Data in rows and columns. */\nexport type TableNode = {\n /**\n * Node type.\n * Must be `TABLE`.\n */\n type: 'TABLE';\n /** Child nodes to define table rows. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Table details. */\n tableData?: TableData;\n};\nexport type TableRowNode = {\n /**\n * Node type.\n * Must be `TABLE_ROW`.\n */\n type: 'TABLE_ROW';\n /** [Node ID](#node-ids). */\n id?: string;\n /** Child nodes to define table cells. */\n nodes?: RicosDocumentNode[];\n};\nexport type TableData = {\n /** Table container styling. */\n containerData?: PluginContainerData;\n /** Table dimensions. */\n dimensions?: TableData_Dimensions;\n /** Whether the table's first row is a heading. <br> Default: `false` */\n rowHeader?: boolean;\n /** Whether the table's first column is a heading. <br> Default: `false` */\n columnHeader?: boolean;\n /** The spacing between cells. */\n cellSpacing?: number;\n cellPadding?: number[];\n /** Table's alternative text. */\n altText?: string;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type TableData_Dimensions = {\n colsWidthRatio?: number[];\n rowsHeight?: number[];\n colsMinWidth?: number[];\n};\nexport type TableCellNode = {\n /**\n * Node type.\n * Must be `TABLE_CELL`.\n */\n type: 'TABLE_CELL';\n /** Child nodes to define cell content. */\n nodes: RicosDocumentNode[];\n /** [Node ID](#node-ids). */\n id?: string;\n /** Table cell details. */\n tableCellData?: TableCellData;\n};\n/** Table cell content node. */\nexport type TableCellChildNode =\n | ParagraphNode\n | HeadingNode\n | BulletedListNode\n | OrderedListNode\n | CheckboxListNode\n | BlockquoteNode\n | AudioNode\n | FileNode\n | ImageNode\n | VideoNode\n | GifNode\n | DividerNode\n | CodeBlockNode\n | HtmlNode\n | TocNode\n | LinkPreviewNode\n | AppEmbedNode\n | ButtonNode\n | EmbedNode\n | ShapeNode;\nexport type TableCellData = {\n /** Cell styling. */\n cellStyle?: TableCellData_CellStyle;\n /** Cell border colors. */\n borderColors?: TableCellData_BorderColors;\n /** Cell border widths. */\n borderWidths?: TableCellData_BorderWidths;\n /** Defines how many columns the cell spans. */\n colspan?: number;\n /** Defines how many rows the cell spans. */\n rowspan?: number;\n};\nexport type TableCellData_CellStyle = {\n /** Vertical alignment for the cell's text. */\n verticalAlignment?: 'TOP' | 'MIDDLE' | 'BOTTOM';\n /** Cell background color as a hexadecimal value. */\n backgroundColor?: string;\n};\nexport type TableCellData_BorderColors = {\n /** Left border color as a hexadecimal value. */\n left?: string;\n /** Right border color as a hexadecimal value. */\n right?: string;\n /** Top border color as a hexadecimal value. */\n top?: string;\n /** Bottom border color as a hexadecimal value. */\n bottom?: string;\n};\nexport type TableCellData_BorderWidths = {\n /** Left border width. */\n left?: number;\n /** Right border width. */\n right?: number;\n /** Top border width. */\n top?: number;\n /** Bottom border width. */\n bottom?: number;\n};\n/** Dynamic table of contents block that renders links to headings in the document. */\nexport type TocNode = {\n /**\n * Node type.\n * Must be `TOC`.\n */\n type: 'TOC';\n /** [Node ID](#node-ids). */\n id?: string;\n /** Table of contents block settings. */\n tocData?: TocData;\n nodes?: RicosDocumentNode[];\n};\nexport type TocData = {\n includedHeadings?: number[];\n /** List style. Default: `NUMBERED`. */\n listStyle?: TocData_ListStyle;\n /** Optional override for the font size in pixels. */\n fontSize?: number;\n /** Optional override for the vertical spacing between items in pixels. */\n itemSpacing?: number;\n /** Optional override for the text color. */\n color?: string;\n /** Indentation style. Default: `NESTED`. */\n indentation?: TocData_Indentation;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type TocData_ListStyle =\n | 'BULLETED'\n | 'NUMBERED'\n | 'LETTERS'\n | 'ROMAN'\n | 'PLAIN'\n | 'ALPHABETICAL_INDEX'\n | 'ALPHABETICAL_INDEX_COMPACT';\n\nexport const TocData_ListStyle = {\n BULLETED: 'BULLETED',\n NUMBERED: 'NUMBERED',\n LETTERS: 'LETTERS',\n ROMAN: 'ROMAN',\n PLAIN: 'PLAIN',\n ALPHABETICAL_INDEX: 'ALPHABETICAL_INDEX',\n ALPHABETICAL_INDEX_COMPACT: 'ALPHABETICAL_INDEX_COMPACT',\n} as const;\n\nexport type TocData_Indentation = 'NESTED' | 'FLAT';\n\nexport const TocData_Indentation = {\n NESTED: 'NESTED',\n FLAT: 'FLAT',\n} as const;\n\n/** Embeds and plays video content directly in a page. When rendered, it is displayed as the video player with the specified video file. Users can interact with the controls to play, pause, rewind, and adjust the volume of the video. */\nexport type VideoNode = {\n /**\n * Node type.\n * Must be `VIDEO`.\n */\n type: 'VIDEO';\n /** Video details. */\n videoData: VideoData;\n /** [Node ID](#node-ids). */\n id?: string;\n /** Child nodes to define a video caption. */\n nodes?: RicosDocumentNode[];\n};\nexport type VideoData = {\n /** Video file details. */\n video: Media;\n /** Video container styling. */\n containerData?: PluginContainerData;\n /** Video thumbnail details. */\n thumbnail?: Media;\n /**\n * Whether the video download button is disabled.\n * Default: `false`\n */\n disableDownload?: boolean;\n /** Video title. */\n title?: string;\n /** Playback details. */\n options?: PlaybackOptions;\n /**\n * Node animation.\n * **Note:** This property requires the animation feature to be enabled.\n */\n animation?: Animation;\n};\nexport type PlaybackOptions = {\n /** Whether the media automatically starts playing after opening a page. */\n autoPlay?: boolean;\n /** Whether the media is looped. */\n playInLoop?: boolean;\n /** Whether to show the media controls. */\n showControls?: boolean;\n};\n/** Nodes that can be added to the root level of `nodes` array. */\nexport type RootNode =\n | ParagraphNode\n | HeadingNode\n | BulletedListNode\n | CheckboxListNode\n | OrderedListNode\n | BlockquoteNode\n | CodeBlockNode\n | VideoNode\n | DividerNode\n | FileNode\n | GalleryNode\n | GifNode\n | HtmlNode\n | TocNode\n | ImageNode\n | LinkPreviewNode\n | PollNode\n | AppEmbedNode\n | ButtonNode\n | CollapsibleListNode\n | TableNode\n | EmbedNode\n | AudioNode\n | LayoutNode\n | ExternalNode\n | ShapeNode\n | CardNode\n | SmartBlockNode;\n/** Union of all Ricos document node types. */\nexport type RicosDocumentNode =\n | BlockquoteNode\n | CaptionNode\n | CardNode\n | CodeBlockNode\n | HeadingNode\n | LayoutNode\n | LayoutCellNode\n | OrderedListNode\n | BulletedListNode\n | CheckboxListNode\n | ListItemNode\n | ParagraphNode\n | TextNode\n | AppEmbedNode\n | AudioNode\n | ButtonNode\n | CollapsibleListNode\n | CollapsibleItemNode\n | CollapsibleItemTitleNode\n | CollapsibleItemBodyNode\n | DividerNode\n | EmbedNode\n | ExternalNode\n | FileNode\n | GalleryNode\n | GifNode\n | HtmlNode\n | ImageNode\n | LinkPreviewNode\n | PollNode\n | ShapeNode\n | SmartBlockNode\n | SmartBlockCellNode\n | TableNode\n | TableRowNode\n | TableCellNode\n | TocNode\n | VideoNode;\n\nexport const LATEST_VERSION = 1;\nexport const RicosDocumentNodeType = {\n PARAGRAPH: 'PARAGRAPH',\n TEXT: 'TEXT',\n HEADING: 'HEADING',\n BULLETED_LIST: 'BULLETED_LIST',\n CHECKBOX_LIST: 'CHECKBOX_LIST',\n ORDERED_LIST: 'ORDERED_LIST',\n LIST_ITEM: 'LIST_ITEM',\n BLOCKQUOTE: 'BLOCKQUOTE',\n CODE_BLOCK: 'CODE_BLOCK',\n VIDEO: 'VIDEO',\n DIVIDER: 'DIVIDER',\n FILE: 'FILE',\n GALLERY: 'GALLERY',\n GIF: 'GIF',\n HTML: 'HTML',\n IMAGE: 'IMAGE',\n LINK_PREVIEW: 'LINK_PREVIEW',\n POLL: 'POLL',\n SHAPE: 'SHAPE',\n APP_EMBED: 'APP_EMBED',\n BUTTON: 'BUTTON',\n COLLAPSIBLE_LIST: 'COLLAPSIBLE_LIST',\n COLLAPSIBLE_ITEM: 'COLLAPSIBLE_ITEM',\n COLLAPSIBLE_ITEM_TITLE: 'COLLAPSIBLE_ITEM_TITLE',\n COLLAPSIBLE_ITEM_BODY: 'COLLAPSIBLE_ITEM_BODY',\n TABLE: 'TABLE',\n TOC: 'TOC',\n EMBED: 'EMBED',\n TABLE_CELL: 'TABLE_CELL',\n TABLE_ROW: 'TABLE_ROW',\n EXTERNAL: 'EXTERNAL',\n AUDIO: 'AUDIO',\n CAPTION: 'CAPTION',\n LAYOUT: 'LAYOUT',\n LAYOUT_CELL: 'LAYOUT_CELL',\n CARD: 'CARD',\n SMART_BLOCK: 'SMART_BLOCK',\n SMART_BLOCK_CELL: 'SMART_BLOCK_CELL',\n // for compat with legacy node\n UNRECOGNIZED: 'UNRECOGNIZED',\n MAP: 'MAP',\n} as const;\n\nexport type RicosDocumentNodeType = keyof typeof RicosDocumentNodeType;\n\n// For backwards compatibility\n\nexport type RichContent = RicosDocument;\n\nexport const RichContent = {\n fromJSON: (content: any): RichContent => {\n return content;\n },\n toJSON: (content: RichContent): any => {\n return content;\n },\n};\n\nexport type Node_Type = RicosDocumentNodeType;\nexport const Node_Type = RicosDocumentNodeType;\n\nexport type Node = RicosDocumentNode;\n// For places where enum value used as type\nexport namespace Node_Type {\n export type PARAGRAPH = 'PARAGRAPH';\n export type TEXT = 'TEXT';\n export type HEADING = 'HEADING';\n export type BULLETED_LIST = 'BULLETED_LIST';\n export type CHECKBOX_LIST = 'CHECKBOX_LIST';\n export type ORDERED_LIST = 'ORDERED_LIST';\n export type LIST_ITEM = 'LIST_ITEM';\n export type BLOCKQUOTE = 'BLOCKQUOTE';\n export type CODE_BLOCK = 'CODE_BLOCK';\n export type VIDEO = 'VIDEO';\n export type DIVIDER = 'DIVIDER';\n export type FILE = 'FILE';\n export type GALLERY = 'GALLERY';\n export type GIF = 'GIF';\n export type HTML = 'HTML';\n export type IMAGE = 'IMAGE';\n export type LINK_PREVIEW = 'LINK_PREVIEW';\n export type POLL = 'POLL';\n export type SHAPE = 'SHAPE';\n export type APP_EMBED = 'APP_EMBED';\n export type BUTTON = 'BUTTON';\n export type COLLAPSIBLE_LIST = 'COLLAPSIBLE_LIST';\n export type COLLAPSIBLE_ITEM = 'COLLAPSIBLE_ITEM';\n export type COLLAPSIBLE_ITEM_TITLE = 'COLLAPSIBLE_ITEM_TITLE';\n export type COLLAPSIBLE_ITEM_BODY = 'COLLAPSIBLE_ITEM_BODY';\n export type TABLE = 'TABLE';\n export type TOC = 'TOC';\n export type EMBED = 'EMBED';\n export type TABLE_CELL = 'TABLE_CELL';\n export type TABLE_ROW = 'TABLE_ROW';\n export type EXTERNAL = 'EXTERNAL';\n export type AUDIO = 'AUDIO';\n export type LAYOUT = 'LAYOUT';\n export type LAYOUT_CELL = 'LAYOUT_CELL';\n export type CARD = 'CARD';\n export type SMART_BLOCK = 'SMART_BLOCK';\n export type SMART_BLOCK_CELL = 'SMART_BLOCK_CELL';\n export type CAPTION = 'CAPTION';\n export type MAP = 'MAP';\n}\n\n// For places where enum value used as type\nexport namespace Decoration_Type {\n export type BOLD = 'BOLD';\n export type ITALIC = 'ITALIC';\n export type UNDERLINE = 'UNDERLINE';\n export type SPOILER = 'SPOILER';\n export type ANCHOR = 'ANCHOR';\n export type MENTION = 'MENTION';\n export type LINK = 'LINK';\n export type COLOR = 'COLOR';\n export type FONT_SIZE = 'FONT_SIZE';\n export type STRIKETHROUGH = 'STRIKETHROUGH';\n export type SUPERSCRIPT = 'SUPERSCRIPT';\n export type SUBSCRIPT = 'SUBSCRIPT';\n export type FONT_FAMILY = 'FONT_FAMILY';\n}\n","// Shallow lodash.omit replacement for dynamic key lists (for statically known\n// keys prefer rest destructuring). Tolerates nullish objects like lodash did.\nexport function omitKeys<T extends object>(\n obj: T | null | undefined,\n keys: readonly string[]\n): Partial<T> {\n return Object.fromEntries(\n Object.entries(obj ?? {}).filter(([key]) => !keys.includes(key))\n ) as Partial<T>;\n}\n","import { isThemeColorToken } from './../_shared/theme-color-token.js';\n\nexport function fromEntries(iterable: $TSFixMe) {\n return [...iterable].reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {});\n}\n\nconst isValidHexColor = (color?: string) =>\n color && /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{8}|[A-Fa-f0-9]{3}|[A-Fa-f0-9]{4})$/.test(color);\n\nexport const getValidHexColor = (color?: string) =>\n color && isValidHexColor(color) ? color : undefined;\n\nexport const getValidColorValue = (color?: string) =>\n color && (isValidHexColor(color) || isThemeColorToken(color)) ? color : undefined;\n","import { Node_Type } from './../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nexport const HEADER_BLOCK = Object.freeze({\n ONE: 'header-one',\n TWO: 'header-two',\n THREE: 'header-three',\n FOUR: 'header-four',\n FIVE: 'header-five',\n SIX: 'header-six',\n PARAGRAPH: 'unstyled',\n});\n\nexport const WRAP = 'wrap';\nexport const NO_WRAP = 'nowrap';\nexport const UNSTYLED = 'unstyled';\nexport const BLOCKQUOTE = 'blockquote';\nexport const NUMBERED_LIST_TYPE = 'ordered-list-item';\nexport const BULLET_LIST_TYPE = 'unordered-list-item';\nexport const CHECKBOX_LIST_TYPE = 'checkbox-list-item';\n\n/* oxlint-disable camelcase */\nexport const LINK_BUTTON_TYPE = 'wix-draft-plugin-link-button';\nexport const ACTION_BUTTON_TYPE = 'wix-draft-plugin-action-button';\nexport const ANIMATION_TYPE = 'animation';\nexport const CODE_BLOCK_TYPE = 'code-block';\nexport const DIVIDER_TYPE = 'wix-draft-plugin-divider';\nexport const EMOJI_TYPE = 'wix-draft-plugin-emoji';\nexport const FILE_UPLOAD_TYPE = 'wix-draft-plugin-file-upload';\nexport const GALLERY_TYPE = 'wix-draft-plugin-gallery';\nexport const GIPHY_TYPE = 'wix-draft-plugin-giphy';\nexport const HASHTAG_TYPE = 'wix-draft-plugin-hashtag';\nexport const HEADERS_MARKDOWN_TYPE = 'wix-draft-plugin-headers-markdown';\nexport const HTML_TYPE = 'wix-draft-plugin-html';\nexport const IMAGE_TYPE = 'wix-draft-plugin-image';\nexport const IMAGE_TYPE_LEGACY = 'IMAGE';\nexport const INDENT_TYPE = 'wix-rich-content-plugin-indent';\nexport const LINE_SPACING_TYPE = 'line-spacing';\nexport const HEADINGS_DROPDOWN_TYPE = 'wix-rich-content-plugin-headings';\nexport const SPOILER_TYPE = 'wix-rich-content-plugin-spoiler';\nexport const COLLAPSIBLE_LIST_TYPE = 'wix-rich-content-plugin-collapsible-list';\nexport const EXTERNAL_LINK_TYPE = 'wix-draft-plugin-external-link';\nexport const LINK_TYPE = 'LINK';\nexport const LINK_PREVIEW_TYPE = 'wix-draft-plugin-link-preview';\nexport const EXTERNAL_MENTIONS_TYPE = 'wix-draft-plugin-external-mentions';\nexport const MENTION_TYPE = 'mention';\nexport const SOUND_CLOUD_TYPE = 'wix-draft-plugin-sound-cloud';\nexport const TEXT_COLOR_TYPE = 'wix-rich-content-text-color';\nexport const TEXT_HIGHLIGHT_TYPE = 'wix-rich-content-text-highlight';\nexport const UNDO_REDO_TYPE = 'wix-rich-content-undo-redo';\nexport const APP_EMBED_TYPE = 'wix-draft-plugin-vertical-embed';\nexport const VERTICAL_EMBED_TYPE = 'wix-draft-plugin-vertical-embed';\nexport const VIDEO_TYPE = 'wix-draft-plugin-video';\nexport const AUDIO_TYPE = 'ricos-audio';\nexport const VIDEO_TYPE_LEGACY = 'VIDEO-EMBED';\nexport const POLL_TYPE = 'wix-draft-plugin-poll';\nexport const TABLE_TYPE = 'wix-rich-content-plugin-table';\nexport const ANCHOR_TYPE = 'ANCHOR';\nexport const PREVIEW = 'PREVIEW';\nexport const EMBED_TYPE = 'EMBED';\nexport const EXTERNAL = 'EXTERNAL';\nexport const SHAPE_TYPE = 'SHAPE';\nexport const CARD_TYPE = 'CARD';\nexport const TOC_TYPE = 'TOC';\nexport const SMART_BLOCK_TYPE = 'SMART_BLOCK';\nexport const SMART_BLOCK_CELL_TYPE = 'SMART_BLOCK_CELL';\n// ricos plugin types\nexport const RICOS_COLLAPSIBLE_LIST_TYPE = 'ricos-collapsible-list';\nexport const RICOS_ACTION_BUTTON_TYPE = 'ricos-action-button';\nexport const RICOS_DIVIDER_TYPE = 'ricos-divider';\nexport const RICOS_FILE_TYPE = 'ricos-file';\nexport const RICOS_GALLERY_TYPE = 'ricos-gallery';\nexport const RICOS_GIPHY_TYPE = 'ricos-giphy';\nexport const RICOS_HTML_TYPE = 'ricos-html';\nexport const RICOS_IMAGE_TYPE = 'ricos-image';\nexport const RICOS_CAPTION_TYPE = 'ricos-caption';\nexport const RICOS_INDENT_TYPE = 'ricos-indent';\nexport const RICOS_LINE_SPACING_TYPE = 'ricos-line-spacing';\nexport const RICOS_LINK_BUTTON_TYPE = 'ricos-link-button';\nexport const RICOS_LINK_PREVIEW_TYPE = 'ricos-link-preview';\nexport const RICOS_POLL_TYPE = 'ricos-poll';\nexport const RICOS_TABLE_TYPE = 'ricos-table';\nexport const RICOS_TEXT_COLOR_TYPE = 'ricos-text-color';\nexport const RICOS_TEXT_HIGHLIGHT_TYPE = 'ricos-text-highlight';\nexport const RICOS_VERTICAL_EMBED_TYPE = 'ricos-vertical-embed';\nexport const RICOS_VIDEO_TYPE = 'ricos-video';\nexport const RICOS_ANCHOR_TYPE = 'ricos-anchor';\nexport const RICOS_LINK_TYPE = 'ricos-link';\nexport const RICOS_MENTION_TYPE = 'ricos-mention';\nexport const RICOS_FONT_SIZE_TYPE = 'ricos-font-size';\nexport const RICOS_FONT_FAMILY_TYPE = 'ricos-font-family';\nexport const RICOS_LAYOUT_TYPE = 'ricos-layout';\nexport const RICOS_LAYOUT_CELL_TYPE = 'ricos-layout-cell';\nexport const RICOS_SHAPE_TYPE = 'ricos-shape';\n\n// tiptap plugins types\nexport const TIPTAP_DIVIDER_TYPE = Node_Type.DIVIDER;\nexport const TIPTAP_FIGURE_TYPE = 'FIGURE';\nexport const TIPTAP_IMAGE_TYPE = Node_Type.IMAGE;\nexport const TIPTAP_CAPTION_TYPE = Node_Type.CAPTION;\nexport const TIPTAP_GALLERY_TYPE = Node_Type.GALLERY;\nexport const TIPTAP_FILE_TYPE = Node_Type.FILE;\nexport const TIPTAP_GIF_TYPE = Node_Type.GIF;\nexport const TIPTAP_VIDEO_TYPE = Node_Type.VIDEO;\nexport const TIPTAP_AUDIO_TYPE = Node_Type.AUDIO;\nexport const TIPTAP_LINK_PREVIEW_TYPE = Node_Type.LINK_PREVIEW;\nexport const TIPTAP_EMBED_TYPE = Node_Type.EMBED;\nexport const TIPTAP_POLL_TYPE = Node_Type.POLL;\nexport const TIPTAP_APP_EMBED_TYPE = Node_Type.APP_EMBED;\nexport const TIPTAP_COLLAPSIBLE_LIST_TYPE = Node_Type.COLLAPSIBLE_LIST;\nexport const TIPTAP_COLLAPSIBLE_ITEM_TYPE = Node_Type.COLLAPSIBLE_ITEM;\nexport const TIPTAP_COLLAPSIBLE_ITEM_TITLE_TYPE = Node_Type.COLLAPSIBLE_ITEM_TITLE;\nexport const TIPTAP_COLLAPSIBLE_ITEM_BODY_TYPE = Node_Type.COLLAPSIBLE_ITEM_BODY;\nexport const TIPTAP_HTML_TYPE = Node_Type.HTML;\nexport const TIPTAP_LINK_BUTTON_TYPE = 'LINK_BUTTON';\nexport const TIPTAP_ACTION_BUTTON_TYPE = 'ACTION_BUTTON';\nexport const TIPTAP_CODE_BLOCK_TYPE = Node_Type.CODE_BLOCK;\nexport const TIPTAP_TABLE_TYPE = Node_Type.TABLE;\nexport const TIPTAP_TABLE_ROW_TYPE = Node_Type.TABLE_ROW;\nexport const TIPTAP_TABLE_CELL_TYPE = Node_Type.TABLE_CELL;\nexport const TIPTAP_TABLE_HEADER_CELL_TYPE = 'TABLE_HEADER_CELL';\nexport const TIPTAP_LAYOUT_TYPE = Node_Type.LAYOUT;\nexport const TIPTAP_LAYOUT_CELL_TYPE = Node_Type.LAYOUT_CELL;\nexport const TIPTAP_SHAPE_TYPE = Node_Type.SHAPE;\nexport const TIPTAP_CARD_TYPE = Node_Type.CARD;\nexport const TIPTAP_CARD_HEADER_TYPE = 'CARD_HEADER';\nexport const TIPTAP_CARD_CONTENT_TYPE = 'CARD_CONTENT';\nexport const TIPTAP_CARD_FOOTER_TYPE = 'CARD_FOOTER';\n\nexport const RICOS_NODE_TYPE_TO_DATA_FIELD = {\n [Node_Type.BUTTON]: 'buttonData',\n [Node_Type.DIVIDER]: 'dividerData',\n [Node_Type.FILE]: 'fileData',\n [Node_Type.GALLERY]: 'galleryData',\n [Node_Type.GIF]: 'gifData',\n [Node_Type.HTML]: 'htmlData',\n [Node_Type.IMAGE]: 'imageData',\n [Node_Type.CAPTION]: 'captionData',\n [Node_Type.COLLAPSIBLE_LIST]: 'collapsibleListData',\n [Node_Type.LINK_PREVIEW]: 'linkPreviewData',\n [Node_Type.APP_EMBED]: 'appEmbedData',\n [Node_Type.VIDEO]: 'videoData',\n [Node_Type.POLL]: 'pollData',\n [Node_Type.TABLE]: 'tableData',\n [Node_Type.TABLE_CELL]: 'tableCellData',\n [Node_Type.TOC]: 'tocData',\n [Node_Type.PARAGRAPH]: 'paragraphData',\n [Node_Type.LIST_ITEM]: 'paragraphData',\n [Node_Type.HEADING]: 'headingData',\n [Node_Type.CODE_BLOCK]: 'codeBlockData',\n [Node_Type.BLOCKQUOTE]: 'paragraphData',\n [Node_Type.EMBED]: 'embedData',\n [Node_Type.EXTERNAL]: 'externalData',\n [Node_Type.AUDIO]: 'audioData',\n [Node_Type.TEXT]: 'textData',\n [Node_Type.BULLETED_LIST]: 'bulletedListData',\n [Node_Type.CHECKBOX_LIST]: 'checkboxListData',\n [Node_Type.ORDERED_LIST]: 'orderedListData',\n [Node_Type.COLLAPSIBLE_ITEM]: undefined,\n [Node_Type.COLLAPSIBLE_ITEM_TITLE]: undefined,\n [Node_Type.COLLAPSIBLE_ITEM_BODY]: undefined,\n [Node_Type.TABLE_ROW]: undefined,\n [Node_Type.UNRECOGNIZED]: undefined,\n [Node_Type.MAP]: undefined,\n [Node_Type.LAYOUT]: undefined,\n [Node_Type.LAYOUT_CELL]: 'layoutCellData',\n [Node_Type.SHAPE]: 'shapeData',\n [Node_Type.CARD]: 'cardData',\n [Node_Type.SMART_BLOCK]: 'smartBlockData',\n [Node_Type.SMART_BLOCK_CELL]: 'smartBlockCellData',\n} as const satisfies { [key in Node_Type]: string | undefined };\n","let uniqueIdCounter = 0;\n\nexport function generateId(prefix = ''): string {\n const key = Math.random().toString(36).substr(2, 5);\n\n return `${key}${prefix}${++uniqueIdCounter}`;\n}\n","/**\n * The `Apply` class provides the `ap` which is used to apply a function to an argument under a type constructor.\n *\n * `Apply` can be used to lift functions of two or more arguments to work on values wrapped with the type constructor\n * `f`.\n *\n * Instances must satisfy the following law in addition to the `Functor` laws:\n *\n * 1. Associative composition: `F.ap(F.ap(F.map(fbc, bc => ab => a => bc(ab(a))), fab), fa) <-> F.ap(fbc, F.ap(fab, fa))`\n *\n * Formally, `Apply` represents a strong lax semi-monoidal endofunctor.\n *\n * @example\n * import * as O from 'fp-ts/Option'\n * import { pipe } from 'fp-ts/function'\n *\n * const f = (a: string) => (b: number) => (c: boolean) => a + String(b) + String(c)\n * const fa: O.Option<string> = O.some('s')\n * const fb: O.Option<number> = O.some(1)\n * const fc: O.Option<boolean> = O.some(true)\n *\n * assert.deepStrictEqual(\n * pipe(\n * // lift a function\n * O.some(f),\n * // apply the first argument\n * O.ap(fa),\n * // apply the second argument\n * O.ap(fb),\n * // apply the third argument\n * O.ap(fc)\n * ),\n * O.some('s1true')\n * )\n *\n * @since 2.0.0\n */\nimport { tuple } from './function.js';\nimport * as _ from './internal.js';\nexport function ap(F, G) {\n return (fa) => (fab) => F.ap(F.map(fab, (gab) => (ga) => G.ap(gab, ga)), fa);\n}\nexport function apFirst(A) {\n return (second) => (first) => A.ap(A.map(first, (a) => () => a), second);\n}\nexport function apSecond(A) {\n return (second) => (first) => A.ap(A.map(first, () => (b) => b), second);\n}\nexport function apS(F) {\n return (name, fb) => (fa) => F.ap(F.map(fa, (a) => (b) => Object.assign({}, a, { [name]: b })), fb);\n}\nexport function getApplySemigroup(F) {\n return (S) => ({\n concat: (first, second) => F.ap(F.map(first, (x) => (y) => S.concat(x, y)), second)\n });\n}\nfunction curried(f, n, acc) {\n return function (x) {\n const combined = Array(acc.length + 1);\n for (let i = 0; i < acc.length; i++) {\n combined[i] = acc[i];\n }\n combined[acc.length] = x;\n return n === 0 ? f.apply(null, combined) : curried(f, n - 1, combined);\n };\n}\nconst tupleConstructors = {\n 1: (a) => [a],\n 2: (a) => (b) => [a, b],\n 3: (a) => (b) => (c) => [a, b, c],\n 4: (a) => (b) => (c) => (d) => [a, b, c, d],\n 5: (a) => (b) => (c) => (d) => (e) => [a, b, c, d, e]\n};\nfunction getTupleConstructor(len) {\n if (!_.has.call(tupleConstructors, len)) {\n tupleConstructors[len] = curried(tuple, len - 1, []);\n }\n return tupleConstructors[len];\n}\nexport function sequenceT(F) {\n return (...args) => {\n const len = args.length;\n const f = getTupleConstructor(len);\n let fas = F.map(args[0], f);\n for (let i = 1; i < len; i++) {\n fas = F.ap(fas, args[i]);\n }\n return fas;\n };\n}\nfunction getRecordConstructor(keys) {\n const len = keys.length;\n switch (len) {\n case 1:\n return (a) => ({ [keys[0]]: a });\n case 2:\n return (a) => (b) => ({ [keys[0]]: a, [keys[1]]: b });\n case 3:\n return (a) => (b) => (c) => ({ [keys[0]]: a, [keys[1]]: b, [keys[2]]: c });\n case 4:\n return (a) => (b) => (c) => (d) => ({\n [keys[0]]: a,\n [keys[1]]: b,\n [keys[2]]: c,\n [keys[3]]: d\n });\n case 5:\n return (a) => (b) => (c) => (d) => (e) => ({\n [keys[0]]: a,\n [keys[1]]: b,\n [keys[2]]: c,\n [keys[3]]: d,\n [keys[4]]: e\n });\n default:\n return curried((...args) => {\n const r = {};\n for (let i = 0; i < len; i++) {\n r[keys[i]] = args[i];\n }\n return r;\n }, len - 1, []);\n }\n}\nexport function sequenceS(F) {\n return (r) => {\n const keys = Object.keys(r);\n const len = keys.length;\n const f = getRecordConstructor(keys);\n let fr = F.map(r[keys[0]], f);\n for (let i = 1; i < len; i++) {\n fr = F.ap(fr, r[keys[i]]);\n }\n return fr;\n };\n}\n","import { dual } from './function.js';\n// -------------------------------------------------------------------------------------\n// Option\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const isNone = (fa) => fa._tag === 'None';\n/** @internal */\nexport const isSome = (fa) => fa._tag === 'Some';\n/** @internal */\nexport const none = { _tag: 'None' };\n/** @internal */\nexport const some = (a) => ({ _tag: 'Some', value: a });\n// -------------------------------------------------------------------------------------\n// Either\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const isLeft = (ma) => ma._tag === 'Left';\n/** @internal */\nexport const isRight = (ma) => ma._tag === 'Right';\n/** @internal */\nexport const left = (e) => ({ _tag: 'Left', left: e });\n/** @internal */\nexport const right = (a) => ({ _tag: 'Right', right: a });\n// -------------------------------------------------------------------------------------\n// ReadonlyNonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const singleton = (a) => [a];\n/** @internal */\nexport const isNonEmpty = (as) => as.length > 0;\n/** @internal */\nexport const head = (as) => as[0];\n/** @internal */\nexport const tail = (as) => as.slice(1);\n// -------------------------------------------------------------------------------------\n// empty\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const emptyReadonlyArray = [];\n/** @internal */\nexport const emptyRecord = {};\n// -------------------------------------------------------------------------------------\n// Record\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const has = Object.prototype.hasOwnProperty;\n// -------------------------------------------------------------------------------------\n// NonEmptyArray\n// -------------------------------------------------------------------------------------\n/** @internal */\nexport const fromReadonlyNonEmptyArray = (as) => [as[0], ...as.slice(1)];\n/** @internal */\nexport const liftNullable = (F) => (f, onNullable) => (...a) => {\n const o = f(...a);\n return F.fromEither(o == null ? left(onNullable(...a)) : right(o));\n};\n/** @internal */\nexport const liftOption = (F) => (f, onNone) => (...a) => {\n const o = f(...a);\n return F.fromEither(isNone(o) ? left(onNone(...a)) : right(o.value));\n};\n/** @internal */\nexport const flatMapNullable = (F, M) => {\n return /*#__PURE__*/ dual(3, (self, f, onNullable) => M.flatMap(self, liftNullable(F)(f, onNullable)));\n};\n/** @internal */\nexport const flatMapOption = (F, M) => {\n return /*#__PURE__*/ dual(3, (self, f, onNone) => M.flatMap(self, liftOption(F)(f, onNone)));\n};\n/** @internal */\nexport const flatMapEither = (F, M) => {\n return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromEither(f(a))));\n};\n/** @internal */\nexport const flatMapIO = (F, M) => {\n return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromIO(f(a))));\n};\n/** @internal */\nexport const flatMapTask = (F, M) => {\n return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromTask(f(a))));\n};\n/** @internal */\nexport const flatMapReader = (F, M) => {\n return /*#__PURE__*/ dual(2, (self, f) => M.flatMap(self, (a) => F.fromReader(f(a))));\n};\n","export function chainFirst(M) {\n const tapM = tap(M);\n return (f) => (first) => tapM(first, f);\n}\n/** @internal */\nexport function tap(M) {\n return (first, f) => M.chain(first, (a) => M.map(f(a), () => a));\n}\nexport function bind(M) {\n return (name, f) => (ma) => M.chain(ma, (a) => M.map(f(a), (b) => Object.assign({}, a, { [name]: b })));\n}\n","/**\n * A `Functor` is a type constructor which supports a mapping operation `map`.\n *\n * `map` can be used to turn functions `a -> b` into functions `f a -> f b` whose argument and return types use the type\n * constructor `f` to represent some computational context.\n *\n * Instances must satisfy the following laws:\n *\n * 1. Identity: `F.map(fa, a => a) <-> fa`\n * 2. Composition: `F.map(fa, a => bc(ab(a))) <-> F.map(F.map(fa, ab), bc)`\n *\n * @since 2.0.0\n */\nimport { pipe } from './function.js';\nexport function map(F, G) {\n return (f) => (fa) => F.map(fa, (ga) => G.map(ga, f));\n}\nexport function flap(F) {\n return (a) => (fab) => F.map(fab, (f) => f(a));\n}\nexport function bindTo(F) {\n return (name) => (fa) => F.map(fa, (a) => ({ [name]: a }));\n}\nfunction let_(F) {\n return (name, f) => (fa) => F.map(fa, (a) => Object.assign({}, a, { [name]: f(a) }));\n}\nexport { \n/**\n * @since 2.13.0\n */\nlet_ as let };\n/** @deprecated */\nexport function getFunctorComposition(F, G) {\n const _map = map(F, G);\n return {\n map: (fga, f) => pipe(fga, _map(f))\n };\n}\n/** @internal */\nexport function as(F) {\n return (self, b) => F.map(self, () => b);\n}\n/** @internal */\nexport function asUnit(F) {\n const asM = as(F);\n return (self) => asM(self, undefined);\n}\n","import { eqStrict } from './Eq.js';\nimport { constant, constTrue, pipe } from './function.js';\n// -------------------------------------------------------------------------------------\n// defaults\n// -------------------------------------------------------------------------------------\n/**\n * @category defaults\n * @since 2.10.0\n */\nexport const equalsDefault = (compare) => (first, second) => first === second || compare(first, second) === 0;\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport const fromCompare = (compare) => ({\n equals: equalsDefault(compare),\n compare: (first, second) => (first === second ? 0 : compare(first, second))\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * Given a tuple of `Ord`s returns an `Ord` for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Ord'\n * import * as B from 'fp-ts/boolean'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n *\n * const O = tuple(S.Ord, N.Ord, B.Ord)\n * assert.strictEqual(O.compare(['a', 1, true], ['b', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 2, true]), -1)\n * assert.strictEqual(O.compare(['a', 1, true], ['a', 1, false]), 1)\n *\n * @since 2.10.0\n */\nexport const tuple = (...ords) => fromCompare((first, second) => {\n let i = 0;\n for (; i < ords.length - 1; i++) {\n const r = ords[i].compare(first[i], second[i]);\n if (r !== 0) {\n return r;\n }\n }\n return ords[i].compare(first[i], second[i]);\n});\n/**\n * @since 2.10.0\n */\nexport const reverse = (O) => fromCompare((first, second) => O.compare(second, first));\n/* istanbul ignore next */\nconst contramap_ = (fa, f) => pipe(fa, contramap(f));\n/**\n * A typical use case for `contramap` would be like, given some `User` type, to construct an `Ord<User>`.\n *\n * We can do so with a function from `User -> X` where `X` is some value that we know how to compare\n * for ordering (meaning we have an `Ord<X>`)\n *\n * For example, given the following `User` type, there are lots of possible choices for `X`,\n * but let's say we want to sort a list of users by `lastName`.\n *\n * If we have a way of comparing `lastName`s for ordering (`ordLastName: Ord<string>`) and we know how to go from `User -> string`,\n * using `contramap` we can do this\n *\n * @example\n * import { pipe } from 'fp-ts/function'\n * import { contramap, Ord } from 'fp-ts/Ord'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * interface User {\n * readonly firstName: string\n * readonly lastName: string\n * }\n *\n * const ordLastName: Ord<string> = S.Ord\n *\n * const ordByLastName: Ord<User> = pipe(\n * ordLastName,\n * contramap((user) => user.lastName)\n * )\n *\n * assert.deepStrictEqual(\n * RA.sort(ordByLastName)([\n * { firstName: 'a', lastName: 'd' },\n * { firstName: 'c', lastName: 'b' }\n * ]),\n * [\n * { firstName: 'c', lastName: 'b' },\n * { firstName: 'a', lastName: 'd' }\n * ]\n * )\n *\n * @since 2.0.0\n */\nexport const contramap = (f) => (fa) => fromCompare((first, second) => fa.compare(f(first), f(second)));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Ord';\n/**\n * A typical use case for the `Semigroup` instance of `Ord` is merging two or more orderings.\n *\n * For example the following snippet builds an `Ord` for a type `User` which\n * sorts by `created` date descending, and **then** `lastName`\n *\n * @example\n * import * as D from 'fp-ts/Date'\n * import { pipe } from 'fp-ts/function'\n * import { contramap, getSemigroup, Ord, reverse } from 'fp-ts/Ord'\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import * as S from 'fp-ts/string'\n *\n * interface User {\n * readonly id: string\n * readonly lastName: string\n * readonly created: Date\n * }\n *\n * const ordByLastName: Ord<User> = pipe(\n * S.Ord,\n * contramap((user) => user.lastName)\n * )\n *\n * const ordByCreated: Ord<User> = pipe(\n * D.Ord,\n * contramap((user) => user.created)\n * )\n *\n * const ordUserByCreatedDescThenLastName = getSemigroup<User>().concat(\n * reverse(ordByCreated),\n * ordByLastName\n * )\n *\n * assert.deepStrictEqual(\n * RA.sort(ordUserByCreatedDescThenLastName)([\n * { id: 'c', lastName: 'd', created: new Date(1973, 10, 30) },\n * { id: 'a', lastName: 'b', created: new Date(1973, 10, 30) },\n * { id: 'e', lastName: 'f', created: new Date(1980, 10, 30) }\n * ]),\n * [\n * { id: 'e', lastName: 'f', created: new Date(1980, 10, 30) },\n * { id: 'a', lastName: 'b', created: new Date(1973, 10, 30) },\n * { id: 'c', lastName: 'd', created: new Date(1973, 10, 30) }\n * ]\n * )\n *\n * @category instances\n * @since 2.0.0\n */\nexport const getSemigroup = () => ({\n concat: (first, second) => fromCompare((a, b) => {\n const ox = first.compare(a, b);\n return ox !== 0 ? ox : second.compare(a, b);\n })\n});\n/**\n * Returns a `Monoid` such that:\n *\n * - its `concat(ord1, ord2)` operation will order first by `ord1`, and then by `ord2`\n * - its `empty` value is an `Ord` that always considers compared elements equal\n *\n * @example\n * import { sort } from 'fp-ts/Array'\n * import { contramap, reverse, getMonoid } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as B from 'fp-ts/boolean'\n * import { pipe } from 'fp-ts/function'\n * import { concatAll } from 'fp-ts/Monoid'\n * import * as N from 'fp-ts/number'\n *\n * interface User {\n * readonly id: number\n * readonly name: string\n * readonly age: number\n * readonly rememberMe: boolean\n * }\n *\n * const byName = pipe(\n * S.Ord,\n * contramap((p: User) => p.name)\n * )\n *\n * const byAge = pipe(\n * N.Ord,\n * contramap((p: User) => p.age)\n * )\n *\n * const byRememberMe = pipe(\n * B.Ord,\n * contramap((p: User) => p.rememberMe)\n * )\n *\n * const M = getMonoid<User>()\n *\n * const users: Array<User> = [\n * { id: 1, name: 'Guido', age: 47, rememberMe: false },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true }\n * ]\n *\n * // sort by name, then by age, then by `rememberMe`\n * const O1 = concatAll(M)([byName, byAge, byRememberMe])\n * assert.deepStrictEqual(sort(O1)(users), [\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * // now `rememberMe = true` first, then by name, then by age\n * const O2 = concatAll(M)([reverse(byRememberMe), byName, byAge])\n * assert.deepStrictEqual(sort(O2)(users), [\n * { id: 4, name: 'Giulio', age: 44, rememberMe: true },\n * { id: 2, name: 'Guido', age: 46, rememberMe: true },\n * { id: 3, name: 'Giulio', age: 44, rememberMe: false },\n * { id: 1, name: 'Guido', age: 47, rememberMe: false }\n * ])\n *\n * @category instances\n * @since 2.4.0\n */\nexport const getMonoid = () => ({\n concat: getSemigroup().concat,\n empty: fromCompare(() => 0)\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Contravariant = {\n URI,\n contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.11.0\n */\nexport const trivial = {\n equals: constTrue,\n compare: /*#__PURE__*/ constant(0)\n};\n/**\n * @since 2.11.0\n */\nexport const equals = (O) => (second) => (first) => first === second || O.compare(first, second) === 0;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly less than_ another\n *\n * @since 2.0.0\n */\nexport const lt = (O) => (first, second) => O.compare(first, second) === -1;\n// TODO: curry in v3\n/**\n * Test whether one value is _strictly greater than_ another\n *\n * @since 2.0.0\n */\nexport const gt = (O) => (first, second) => O.compare(first, second) === 1;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly less than_ another\n *\n * @since 2.0.0\n */\nexport const leq = (O) => (first, second) => O.compare(first, second) !== 1;\n// TODO: curry in v3\n/**\n * Test whether one value is _non-strictly greater than_ another\n *\n * @since 2.0.0\n */\nexport const geq = (O) => (first, second) => O.compare(first, second) !== -1;\n// TODO: curry in v3\n/**\n * Take the minimum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nexport const min = (O) => (first, second) => first === second || O.compare(first, second) < 1 ? first : second;\n// TODO: curry in v3\n/**\n * Take the maximum of two values. If they are considered equal, the first argument is chosen\n *\n * @since 2.0.0\n */\nexport const max = (O) => (first, second) => first === second || O.compare(first, second) > -1 ? first : second;\n/**\n * Clamp a value between a minimum and a maximum\n *\n * @since 2.0.0\n */\nexport const clamp = (O) => {\n const minO = min(O);\n const maxO = max(O);\n return (low, hi) => (a) => maxO(minO(a, hi), low);\n};\n/**\n * Test whether a value is between a minimum and a maximum (inclusive)\n *\n * @since 2.0.0\n */\nexport const between = (O) => {\n const ltO = lt(O);\n const gtO = gt(O);\n return (low, hi) => (a) => ltO(a, low) || gtO(a, hi) ? false : true;\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleOrd = tuple;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getDualOrd = reverse;\n/**\n * Use [`Contravariant`](#contravariant) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ord = Contravariant;\n// default compare for primitive types\nfunction compare(first, second) {\n return first < second ? -1 : first > second ? 1 : 0;\n}\nconst strictOrd = {\n equals: eqStrict.equals,\n compare\n};\n/**\n * Use [`Ord`](./boolean.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordBoolean = strictOrd;\n/**\n * Use [`Ord`](./string.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordString = strictOrd;\n/**\n * Use [`Ord`](./number.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordNumber = strictOrd;\n/**\n * Use [`Ord`](./Date.ts.html#ord) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const ordDate = /*#__PURE__*/ pipe(ordNumber, \n/*#__PURE__*/\ncontramap((date) => date.valueOf()));\n","import { pipe } from './function.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * @category constructors\n * @since 2.0.0\n */\nexport const fromEquals = (equals) => ({\n equals: (x, y) => x === y || equals(x, y)\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.10.0\n */\nexport const struct = (eqs) => fromEquals((first, second) => {\n for (const key in eqs) {\n if (!eqs[key].equals(first[key], second[key])) {\n return false;\n }\n }\n return true;\n});\n/**\n * Given a tuple of `Eq`s returns a `Eq` for the tuple\n *\n * @example\n * import { tuple } from 'fp-ts/Eq'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import * as B from 'fp-ts/boolean'\n *\n * const E = tuple(S.Eq, N.Eq, B.Eq)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, true]), true)\n * assert.strictEqual(E.equals(['a', 1, true], ['b', 1, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 2, true]), false)\n * assert.strictEqual(E.equals(['a', 1, true], ['a', 1, false]), false)\n *\n * @since 2.10.0\n */\nexport const tuple = (...eqs) => fromEquals((first, second) => eqs.every((E, i) => E.equals(first[i], second[i])));\n/* istanbul ignore next */\nconst contramap_ = (fa, f) => pipe(fa, contramap(f));\n/**\n * A typical use case for `contramap` would be like, given some `User` type, to construct an `Eq<User>`.\n *\n * We can do so with a function from `User -> X` where `X` is some value that we know how to compare\n * for equality (meaning we have an `Eq<X>`)\n *\n * For example, given the following `User` type, we want to construct an `Eq<User>` that just looks at the `key` field\n * for each user (since it's known to be unique).\n *\n * If we have a way of comparing `UUID`s for equality (`eqUUID: Eq<UUID>`) and we know how to go from `User -> UUID`,\n * using `contramap` we can do this\n *\n * @example\n * import { contramap, Eq } from 'fp-ts/Eq'\n * import { pipe } from 'fp-ts/function'\n * import * as S from 'fp-ts/string'\n *\n * type UUID = string\n *\n * interface User {\n * readonly key: UUID\n * readonly firstName: string\n * readonly lastName: string\n * }\n *\n * const eqUUID: Eq<UUID> = S.Eq\n *\n * const eqUserByKey: Eq<User> = pipe(\n * eqUUID,\n * contramap((user) => user.key)\n * )\n *\n * assert.deepStrictEqual(\n * eqUserByKey.equals(\n * { key: 'k1', firstName: 'a1', lastName: 'b1' },\n * { key: 'k2', firstName: 'a1', lastName: 'b1' }\n * ),\n * false\n * )\n * assert.deepStrictEqual(\n * eqUserByKey.equals(\n * { key: 'k1', firstName: 'a1', lastName: 'b1' },\n * { key: 'k1', firstName: 'a2', lastName: 'b1' }\n * ),\n * true\n * )\n *\n * @since 2.0.0\n */\nexport const contramap = (f) => (fa) => fromEquals((x, y) => fa.equals(f(x), f(y)));\n/**\n * @category type lambdas\n * @since 2.0.0\n */\nexport const URI = 'Eq';\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const eqStrict = {\n equals: (a, b) => a === b\n};\nconst empty = {\n equals: () => true\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const getSemigroup = () => ({\n concat: (x, y) => fromEquals((a, b) => x.equals(a, b) && y.equals(a, b))\n});\n/**\n * @category instances\n * @since 2.6.0\n */\nexport const getMonoid = () => ({\n concat: getSemigroup().concat,\n empty\n});\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Contravariant = {\n URI,\n contramap: contramap_\n};\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleEq = tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getStructEq = struct;\n/**\n * Use [`eqStrict`](#eqstrict) instead\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const strictEqual = eqStrict.equals;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Contravariant` instance, pass `E.Contravariant` instead of `E.eq`\n * (where `E` is from `import E from 'fp-ts/Eq'`)\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eq = Contravariant;\n/**\n * Use [`Eq`](./boolean.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqBoolean = eqStrict;\n/**\n * Use [`Eq`](./string.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqString = eqStrict;\n/**\n * Use [`Eq`](./number.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqNumber = eqStrict;\n/**\n * Use [`Eq`](./Date.ts.html#eq) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const eqDate = {\n equals: (first, second) => first.valueOf() === second.valueOf()\n};\n","import { apFirst as apFirst_, apS as apS_, apSecond as apSecond_ } from './Apply.js';\nimport { bind as bind_, chainFirst as chainFirst_ } from './Chain.js';\nimport { fromEquals } from './Eq.js';\nimport { dual, flow, identity, pipe, SK } from './function.js';\nimport { bindTo as bindTo_, flap as flap_, let as let__ } from './Functor.js';\nimport * as _ from './internal.js';\nimport { getMonoid } from './Ord.js';\nimport * as Se from './Semigroup.js';\n// -------------------------------------------------------------------------------------\n// internal\n// -------------------------------------------------------------------------------------\n/**\n * @internal\n */\nexport const empty = _.emptyReadonlyArray;\n/**\n * @internal\n */\nexport const isNonEmpty = _.isNonEmpty;\n/**\n * @internal\n */\nexport const isOutOfBound = (i, as) => i < 0 || i >= as.length;\n/**\n * @internal\n */\nexport const prependW = (head) => (tail) => [head, ...tail];\n/**\n * @internal\n */\nexport const prepend = prependW;\n/**\n * @internal\n */\nexport const appendW = (end) => (init) => [...init, end];\n/**\n * @internal\n */\nexport const append = appendW;\n/**\n * @internal\n */\nexport const unsafeInsertAt = (i, a, as) => {\n if (isNonEmpty(as)) {\n const xs = _.fromReadonlyNonEmptyArray(as);\n xs.splice(i, 0, a);\n return xs;\n }\n return [a];\n};\n/**\n * @internal\n */\nexport const unsafeUpdateAt = (i, a, as) => {\n if (as[i] === a) {\n return as;\n }\n else {\n const xs = _.fromReadonlyNonEmptyArray(as);\n xs[i] = a;\n return xs;\n }\n};\n/**\n * Remove duplicates from a `ReadonlyNonEmptyArray`, keeping the first occurrence of an element.\n *\n * @example\n * import { uniq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * assert.deepStrictEqual(uniq(N.Eq)([1, 2, 1]), [1, 2])\n *\n * @since 2.11.0\n */\nexport const uniq = (E) => (as) => {\n if (as.length === 1) {\n return as;\n }\n const out = [head(as)];\n const rest = tail(as);\n for (const a of rest) {\n if (out.every((o) => !E.equals(o, a))) {\n out.push(a);\n }\n }\n return out;\n};\n/**\n * Sort the elements of a `ReadonlyNonEmptyArray` in increasing order, where elements are compared using first `ords[0]`, then `ords[1]`,\n * etc...\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { contramap } from 'fp-ts/Ord'\n * import * as S from 'fp-ts/string'\n * import * as N from 'fp-ts/number'\n * import { pipe } from 'fp-ts/function'\n *\n * interface Person {\n * name: string\n * age: number\n * }\n *\n * const byName = pipe(S.Ord, contramap((p: Person) => p.name))\n *\n * const byAge = pipe(N.Ord, contramap((p: Person) => p.age))\n *\n * const sortByNameByAge = RNEA.sortBy([byName, byAge])\n *\n * const persons: RNEA.ReadonlyNonEmptyArray<Person> = [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 },\n * { name: 'b', age: 2 }\n * ]\n *\n * assert.deepStrictEqual(sortByNameByAge(persons), [\n * { name: 'a', age: 1 },\n * { name: 'b', age: 2 },\n * { name: 'b', age: 3 },\n * { name: 'c', age: 2 }\n * ])\n *\n * @since 2.11.0\n */\nexport const sortBy = (ords) => {\n if (isNonEmpty(ords)) {\n const M = getMonoid();\n return sort(ords.reduce(M.concat, M.empty));\n }\n return identity;\n};\n/**\n * @since 2.11.0\n */\nexport const union = (E) => {\n const uniqE = uniq(E);\n return (second) => (first) => uniqE(pipe(first, concat(second)));\n};\n/**\n * Rotate a `ReadonlyNonEmptyArray` by `n` steps.\n *\n * @example\n * import { rotate } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(rotate(2)([1, 2, 3, 4, 5]), [4, 5, 1, 2, 3])\n * assert.deepStrictEqual(rotate(-2)([1, 2, 3, 4, 5]), [3, 4, 5, 1, 2])\n *\n * @since 2.11.0\n */\nexport const rotate = (n) => (as) => {\n const len = as.length;\n const m = Math.round(n) % len;\n if (isOutOfBound(Math.abs(m), as) || m === 0) {\n return as;\n }\n if (m < 0) {\n const [f, s] = splitAt(-m)(as);\n return pipe(s, concat(f));\n }\n else {\n return rotate(m - len)(as);\n }\n};\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Return a `ReadonlyNonEmptyArray` from a `ReadonlyArray` returning `none` if the input is empty.\n *\n * @category conversions\n * @since 2.5.0\n */\nexport const fromReadonlyArray = (as) => isNonEmpty(as) ? _.some(as) : _.none;\n/**\n * Return a `ReadonlyNonEmptyArray` of length `n` with element `i` initialized with `f(i)`.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { makeBy } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * const double = (n: number): number => n * 2\n * assert.deepStrictEqual(pipe(5, makeBy(double)), [0, 2, 4, 6, 8])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const makeBy = (f) => (n) => {\n const j = Math.max(0, Math.floor(n));\n const out = [f(0)];\n for (let i = 1; i < j; i++) {\n out.push(f(i));\n }\n return out;\n};\n/**\n * Create a `ReadonlyNonEmptyArray` containing a value repeated the specified number of times.\n *\n * **Note**. `n` is normalized to a natural number.\n *\n * @example\n * import { replicate } from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(3, replicate('a')), ['a', 'a', 'a'])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const replicate = (a) => makeBy(() => a);\n/**\n * Create a `ReadonlyNonEmptyArray` containing a range of integers, including both endpoints.\n *\n * @example\n * import { range } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(range(1, 5), [1, 2, 3, 4, 5])\n *\n * @category constructors\n * @since 2.11.0\n */\nexport const range = (start, end) => start <= end ? makeBy((i) => start + i)(end - start + 1) : [start];\n/**\n * Return the tuple of the `head` and the `tail`.\n *\n * @example\n * import { unprepend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unprepend([1, 2, 3, 4]), [1, [2, 3, 4]])\n *\n * @since 2.9.0\n */\nexport const unprepend = (as) => [head(as), tail(as)];\n/**\n * Return the tuple of the `init` and the `last`.\n *\n * @example\n * import { unappend } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(unappend([1, 2, 3, 4]), [[1, 2, 3], 4])\n *\n * @since 2.9.0\n */\nexport const unappend = (as) => [init(as), last(as)];\n/**\n * @category conversions\n * @since 2.5.0\n */\nexport const fromArray = (as) => fromReadonlyArray(as.slice());\nexport function concatW(second) {\n return (first) => first.concat(second);\n}\nexport function concat(x, y) {\n return y ? x.concat(y) : (y) => y.concat(x);\n}\n/**\n * @since 2.5.0\n */\nexport const reverse = (as) => as.length === 1 ? as : [last(as), ...as.slice(0, -1).reverse()];\nexport function group(E) {\n return (as) => {\n const len = as.length;\n if (len === 0) {\n return empty;\n }\n const out = [];\n let head = as[0];\n let nea = [head];\n for (let i = 1; i < len; i++) {\n const a = as[i];\n if (E.equals(a, head)) {\n nea.push(a);\n }\n else {\n out.push(nea);\n head = a;\n nea = [head];\n }\n }\n out.push(nea);\n return out;\n };\n}\n/**\n * Splits an array into sub-non-empty-arrays stored in an object, based on the result of calling a `string`-returning\n * function on each element, and grouping the results according to values returned\n *\n * @example\n * import { groupBy } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(groupBy((s: string) => String(s.length))(['a', 'b', 'ab']), {\n * '1': ['a', 'b'],\n * '2': ['ab']\n * })\n *\n * @since 2.5.0\n */\nexport const groupBy = (f) => (as) => {\n const out = {};\n for (const a of as) {\n const k = f(a);\n if (_.has.call(out, k)) {\n out[k].push(a);\n }\n else {\n out[k] = [a];\n }\n }\n return out;\n};\n/**\n * @since 2.5.0\n */\nexport const sort = (O) => (as) => as.length === 1 ? as : as.slice().sort(O.compare);\n/**\n * @since 2.5.0\n */\nexport const updateAt = (i, a) => modifyAt(i, () => a);\n/**\n * @since 2.5.0\n */\nexport const modifyAt = (i, f) => (as) => isOutOfBound(i, as) ? _.none : _.some(unsafeUpdateAt(i, f(as[i]), as));\n/**\n * @since 2.5.1\n */\nexport const zipWith = (as, bs, f) => {\n const cs = [f(as[0], bs[0])];\n const len = Math.min(as.length, bs.length);\n for (let i = 1; i < len; i++) {\n cs[i] = f(as[i], bs[i]);\n }\n return cs;\n};\nexport function zip(as, bs) {\n if (bs === undefined) {\n return (bs) => zip(bs, as);\n }\n return zipWith(as, bs, (a, b) => [a, b]);\n}\n/**\n * @since 2.5.1\n */\nexport const unzip = (abs) => {\n const fa = [abs[0][0]];\n const fb = [abs[0][1]];\n for (let i = 1; i < abs.length; i++) {\n fa[i] = abs[i][0];\n fb[i] = abs[i][1];\n }\n return [fa, fb];\n};\n/**\n * Prepend an element to every member of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { prependAll } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(prependAll(9)([1, 2, 3, 4]), [9, 1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.10.0\n */\nexport const prependAll = (middle) => (as) => {\n const out = [middle, as[0]];\n for (let i = 1; i < as.length; i++) {\n out.push(middle, as[i]);\n }\n return out;\n};\n/**\n * Places an element in between members of a `ReadonlyNonEmptyArray`.\n *\n * @example\n * import { intersperse } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(intersperse(9)([1, 2, 3, 4]), [1, 9, 2, 9, 3, 9, 4])\n *\n * @since 2.9.0\n */\nexport const intersperse = (middle) => (as) => {\n const rest = tail(as);\n return isNonEmpty(rest) ? pipe(rest, prependAll(middle), prepend(head(as))) : as;\n};\n/**\n * @category sequencing\n * @since 2.10.0\n */\nexport const chainWithIndex = (f) => (as) => {\n const out = _.fromReadonlyNonEmptyArray(f(0, head(as)));\n for (let i = 1; i < as.length; i++) {\n const bs = f(i, as[i]);\n for (let j = 0; j < bs.length; j++) {\n out.push(bs[j]);\n }\n }\n return out;\n};\n/**\n * A useful recursion pattern for processing a `ReadonlyNonEmptyArray` to produce a new `ReadonlyNonEmptyArray`, often used for \"chopping\" up the input\n * `ReadonlyNonEmptyArray`. Typically `chop` is called with some function that will consume an initial prefix of the `ReadonlyNonEmptyArray` and produce a\n * value and the tail of the `ReadonlyNonEmptyArray`.\n *\n * @since 2.10.0\n */\nexport const chop = (f) => (as) => {\n const [b, rest] = f(as);\n const out = [b];\n let next = rest;\n while (isNonEmpty(next)) {\n const [b, rest] = f(next);\n out.push(b);\n next = rest;\n }\n return out;\n};\n/**\n * Splits a `ReadonlyNonEmptyArray` into two pieces, the first piece has max `n` elements.\n *\n * @since 2.10.0\n */\nexport const splitAt = (n) => (as) => {\n const m = Math.max(1, n);\n return m >= as.length ? [as, empty] : [pipe(as.slice(1, m), prepend(head(as))), as.slice(m)];\n};\n/**\n * Splits a `ReadonlyNonEmptyArray` into length-`n` pieces. The last piece will be shorter if `n` does not evenly divide the length of\n * the `ReadonlyNonEmptyArray`.\n *\n * @since 2.10.0\n */\nexport const chunksOf = (n) => chop(splitAt(n));\nconst _map = (fa, f) => pipe(fa, map(f));\n/* istanbul ignore next */\nconst _mapWithIndex = (fa, f) => pipe(fa, mapWithIndex(f));\nconst _ap = (fab, fa) => pipe(fab, ap(fa));\n/* istanbul ignore next */\nconst _extend = (wa, f) => pipe(wa, extend(f));\n/* istanbul ignore next */\nconst _reduce = (fa, b, f) => pipe(fa, reduce(b, f));\n/* istanbul ignore next */\nconst _foldMap = (M) => {\n const foldMapM = foldMap(M);\n return (fa, f) => pipe(fa, foldMapM(f));\n};\n/* istanbul ignore next */\nconst _reduceRight = (fa, b, f) => pipe(fa, reduceRight(b, f));\n/* istanbul ignore next */\nconst _traverse = (F) => {\n const traverseF = traverse(F);\n return (ta, f) => pipe(ta, traverseF(f));\n};\n/* istanbul ignore next */\nconst _alt = (fa, that) => pipe(fa, alt(that));\n/* istanbul ignore next */\nconst _reduceWithIndex = (fa, b, f) => pipe(fa, reduceWithIndex(b, f));\n/* istanbul ignore next */\nconst _foldMapWithIndex = (M) => {\n const foldMapWithIndexM = foldMapWithIndex(M);\n return (fa, f) => pipe(fa, foldMapWithIndexM(f));\n};\n/* istanbul ignore next */\nconst _reduceRightWithIndex = (fa, b, f) => pipe(fa, reduceRightWithIndex(b, f));\n/* istanbul ignore next */\nconst _traverseWithIndex = (F) => {\n const traverseWithIndexF = traverseWithIndex(F);\n return (ta, f) => pipe(ta, traverseWithIndexF(f));\n};\n/**\n * @category constructors\n * @since 2.5.0\n */\nexport const of = _.singleton;\n/**\n * Less strict version of [`alt`](#alt).\n *\n * The `W` suffix (short for **W**idening) means that the return types will be merged.\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * [1, 2, 3] as RNEA.ReadonlyNonEmptyArray<number>,\n * RNEA.altW(() => ['a', 'b'])\n * ),\n * [1, 2, 3, 'a', 'b']\n * )\n *\n * @category error handling\n * @since 2.9.0\n */\nexport const altW = (that) => (as) => pipe(as, concatW(that()));\n/**\n * Identifies an associative operation on a type constructor. It is similar to `Semigroup`, except that it applies to\n * types of kind `* -> *`.\n *\n * In case of `ReadonlyNonEmptyArray` concatenates the inputs into a single array.\n *\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * [1, 2, 3],\n * RNEA.alt(() => [4, 5])\n * ),\n * [1, 2, 3, 4, 5]\n * )\n *\n * @category error handling\n * @since 2.6.2\n */\nexport const alt = altW;\n/**\n * @since 2.5.0\n */\nexport const ap = (as) => flatMap((f) => pipe(as, map(f)));\n/**\n * @example\n * import * as RNEA from 'fp-ts/ReadonlyNonEmptyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * [1, 2, 3],\n * RNEA.flatMap((n) => [`a${n}`, `b${n}`])\n * ),\n * ['a1', 'b1', 'a2', 'b2', 'a3', 'b3']\n * )\n *\n * @category sequencing\n * @since 2.14.0\n */\nexport const flatMap = /*#__PURE__*/ dual(2, (ma, f) => pipe(ma, chainWithIndex((i, a) => f(a, i))));\n/**\n * @since 2.5.0\n */\nexport const extend = (f) => (as) => {\n let next = tail(as);\n const out = [f(as)];\n while (isNonEmpty(next)) {\n out.push(f(next));\n next = tail(next);\n }\n return out;\n};\n/**\n * @since 2.5.0\n */\nexport const duplicate = \n/*#__PURE__*/ extend(identity);\n/**\n * @category sequencing\n * @since 2.5.0\n */\nexport const flatten = \n/*#__PURE__*/ flatMap(identity);\n/**\n * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types\n * use the type constructor `F` to represent some computational context.\n *\n * @category mapping\n * @since 2.5.0\n */\nexport const map = (f) => mapWithIndex((_, a) => f(a));\n/**\n * @category mapping\n * @since 2.5.0\n */\nexport const mapWithIndex = (f) => (as) => {\n const out = [f(0, head(as))];\n for (let i = 1; i < as.length; i++) {\n out.push(f(i, as[i]));\n }\n return out;\n};\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduce = (b, f) => reduceWithIndex(b, (_, b, a) => f(b, a));\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category folding\n * @since 2.5.0\n */\nexport const foldMap = (S) => (f) => (as) => as.slice(1).reduce((s, a) => S.concat(s, f(a)), f(as[0]));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRight = (b, f) => reduceRightWithIndex(b, (_, b, a) => f(b, a));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceWithIndex = (b, f) => (as) => as.reduce((b, a, i) => f(i, b, a), b);\n/**\n * **Note**. The constraint is relaxed: a `Semigroup` instead of a `Monoid`.\n *\n * @category folding\n * @since 2.5.0\n */\nexport const foldMapWithIndex = (S) => (f) => (as) => as.slice(1).reduce((s, a, i) => S.concat(s, f(i + 1, a)), f(0, as[0]));\n/**\n * @category folding\n * @since 2.5.0\n */\nexport const reduceRightWithIndex = (b, f) => (as) => as.reduceRight((b, a, i) => f(i, a, b), b);\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const traverse = (F) => {\n const traverseWithIndexF = traverseWithIndex(F);\n return (f) => traverseWithIndexF((_, a) => f(a));\n};\n/**\n * @category traversing\n * @since 2.6.3\n */\nexport const sequence = (F) => traverseWithIndex(F)(SK);\n/**\n * @category sequencing\n * @since 2.6.3\n */\nexport const traverseWithIndex = (F) => (f) => (as) => {\n let out = F.map(f(0, head(as)), of);\n for (let i = 1; i < as.length; i++) {\n out = F.ap(F.map(out, (bs) => (b) => pipe(bs, append(b))), f(i, as[i]));\n }\n return out;\n};\n/**\n * @category Comonad\n * @since 2.6.3\n */\nexport const extract = _.head;\n/**\n * @category type lambdas\n * @since 2.5.0\n */\nexport const URI = 'ReadonlyNonEmptyArray';\n/**\n * @category instances\n * @since 2.5.0\n */\nexport const getShow = (S) => ({\n show: (as) => `[${as.map(S.show).join(', ')}]`\n});\n/**\n * Builds a `Semigroup` instance for `ReadonlyNonEmptyArray`\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getSemigroup = () => ({\n concat\n});\n/**\n * @example\n * import { getEq } from 'fp-ts/ReadonlyNonEmptyArray'\n * import * as N from 'fp-ts/number'\n *\n * const E = getEq(N.Eq)\n * assert.strictEqual(E.equals([1, 2], [1, 2]), true)\n * assert.strictEqual(E.equals([1, 2], [1, 3]), false)\n *\n * @category instances\n * @since 2.5.0\n */\nexport const getEq = (E) => fromEquals((xs, ys) => xs.length === ys.length && xs.every((x, i) => E.equals(x, ys[i])));\n/**\n * @since 2.11.0\n */\nexport const getUnionSemigroup = (E) => {\n const unionE = union(E);\n return {\n concat: (first, second) => unionE(second)(first)\n };\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Functor = {\n URI,\n map: _map\n};\n/**\n * @category mapping\n * @since 2.10.0\n */\nexport const flap = /*#__PURE__*/ flap_(Functor);\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Pointed = {\n URI,\n of\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FunctorWithIndex = {\n URI,\n map: _map,\n mapWithIndex: _mapWithIndex\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Apply = {\n URI,\n map: _map,\n ap: _ap\n};\n/**\n * Combine two effectful actions, keeping only the result of the first.\n *\n * @since 2.5.0\n */\nexport const apFirst = /*#__PURE__*/ apFirst_(Apply);\n/**\n * Combine two effectful actions, keeping only the result of the second.\n *\n * @since 2.5.0\n */\nexport const apSecond = /*#__PURE__*/ apSecond_(Apply);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Applicative = {\n URI,\n map: _map,\n ap: _ap,\n of\n};\n/**\n * @category instances\n * @since 2.10.0\n */\nexport const Chain = {\n URI,\n map: _map,\n ap: _ap,\n chain: flatMap\n};\n/**\n * Composes computations in sequence, using the return value of one computation to determine the next computation and\n * keeping only the result of the first.\n *\n * @example\n * import * as RA from 'fp-ts/ReadonlyArray'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(\n * pipe(\n * [1, 2, 3],\n * RA.chainFirst(() => ['a', 'b'])\n * ),\n * [1, 1, 2, 2, 3, 3]\n * )\n *\n * @category sequencing\n * @since 2.5.0\n */\nexport const chainFirst = /*#__PURE__*/ chainFirst_(Chain);\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Monad = {\n URI,\n map: _map,\n ap: _ap,\n of,\n chain: flatMap\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Foldable = {\n URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const FoldableWithIndex = {\n URI,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Traversable = {\n URI,\n map: _map,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const TraversableWithIndex = {\n URI,\n map: _map,\n mapWithIndex: _mapWithIndex,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Alt = {\n URI,\n map: _map,\n alt: _alt\n};\n/**\n * @category instances\n * @since 2.7.0\n */\nexport const Comonad = {\n URI,\n map: _map,\n extend: _extend,\n extract\n};\n// -------------------------------------------------------------------------------------\n// do notation\n// -------------------------------------------------------------------------------------\n/**\n * @category do notation\n * @since 2.9.0\n */\nexport const Do = /*#__PURE__*/ of(_.emptyRecord);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bindTo = /*#__PURE__*/ bindTo_(Functor);\nconst let_ = /*#__PURE__*/ let__(Functor);\nexport { \n/**\n * @category do notation\n * @since 2.13.0\n */\nlet_ as let };\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const bind = /*#__PURE__*/ bind_(Chain);\n/**\n * @category do notation\n * @since 2.8.0\n */\nexport const apS = /*#__PURE__*/ apS_(Apply);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * @since 2.5.0\n */\nexport const head = extract;\n/**\n * @since 2.5.0\n */\nexport const tail = _.tail;\n/**\n * @since 2.5.0\n */\nexport const last = (as) => as[as.length - 1];\n/**\n * Get all but the last element of a non empty array, creating a new array.\n *\n * @example\n * import { init } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(init([1, 2, 3]), [1, 2])\n * assert.deepStrictEqual(init([1]), [])\n *\n * @since 2.5.0\n */\nexport const init = (as) => as.slice(0, -1);\n/**\n * @since 2.5.0\n */\nexport const min = (O) => {\n const S = Se.min(O);\n return (as) => as.reduce(S.concat);\n};\n/**\n * @since 2.5.0\n */\nexport const max = (O) => {\n const S = Se.max(O);\n return (as) => as.reduce(S.concat);\n};\n/**\n * @since 2.10.0\n */\nexport const concatAll = (S) => (as) => as.reduce(S.concat);\n/**\n * Break a `ReadonlyArray` into its first element and remaining elements.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchLeft = (f) => (as) => f(head(as), tail(as));\n/**\n * Break a `ReadonlyArray` into its initial elements and the last element.\n *\n * @category pattern matching\n * @since 2.11.0\n */\nexport const matchRight = (f) => (as) => f(init(as), last(as));\n/**\n * Apply a function to the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const modifyHead = (f) => (as) => [f(head(as)), ...tail(as)];\n/**\n * Change the head, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const updateHead = (a) => modifyHead(() => a);\n/**\n * Apply a function to the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const modifyLast = (f) => (as) => pipe(init(as), append(f(last(as))));\n/**\n * Change the last element, creating a new `ReadonlyNonEmptyArray`.\n *\n * @since 2.11.0\n */\nexport const updateLast = (a) => modifyLast(() => a);\n/**\n * Places an element in between members of a `ReadonlyNonEmptyArray`, then folds the results using the provided `Semigroup`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { intercalate } from 'fp-ts/ReadonlyNonEmptyArray'\n *\n * assert.deepStrictEqual(intercalate(S.Semigroup)('-')(['a', 'b', 'c']), 'a-b-c')\n *\n * @since 2.12.0\n */\nexport const intercalate = (S) => {\n const concatAllS = concatAll(S);\n return (middle) => flow(intersperse(middle), concatAllS);\n};\n// -------------------------------------------------------------------------------------\n// legacy\n// -------------------------------------------------------------------------------------\n/**\n * Alias of `flatMap`.\n *\n * @category legacy\n * @since 2.5.0\n */\nexport const chain = flatMap;\nexport function groupSort(O) {\n const sortO = sort(O);\n const groupO = group(O);\n return (as) => (isNonEmpty(as) ? groupO(sortO(as)) : empty);\n}\nexport function filter(predicate) {\n return filterWithIndex((_, a) => predicate(a));\n}\n/**\n * Use [`filterWithIndex`](./ReadonlyArray.ts.html#filterwithindex) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const filterWithIndex = (predicate) => (as) => fromReadonlyArray(as.filter((a, i) => predicate(i, a)));\n/**\n * Use [`unprepend`](#unprepend) instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport const uncons = unprepend;\n/**\n * Use [`unappend`](#unappend) instead.\n *\n * @category zone of death\n * @since 2.10.0\n * @deprecated\n */\nexport const unsnoc = unappend;\nexport function cons(head, tail) {\n return tail === undefined ? prepend(head) : pipe(tail, prepend(head));\n}\n/**\n * Use [`append`](./ReadonlyArray.ts.html#append) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const snoc = (init, end) => pipe(init, concat([end]));\n/**\n * Use [`insertAt`](./ReadonlyArray.ts.html#insertat) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const insertAt = (i, a) => (as) => i < 0 || i > as.length ? _.none : _.some(unsafeInsertAt(i, a, as));\n/**\n * Use [`prependAll`](#prependall) instead.\n *\n * @category zone of death\n * @since 2.9.0\n * @deprecated\n */\nexport const prependToAll = prependAll;\n/**\n * Use [`concatAll`](#concatall) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const fold = concatAll;\n/**\n * This instance is deprecated, use small, specific instances instead.\n * For example if a function needs a `Functor` instance, pass `RNEA.Functor` instead of `RNEA.readonlyNonEmptyArray`\n * (where `RNEA` is from `import RNEA from 'fp-ts/ReadonlyNonEmptyArray'`)\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const readonlyNonEmptyArray = {\n URI,\n of,\n map: _map,\n mapWithIndex: _mapWithIndex,\n ap: _ap,\n chain: flatMap,\n extend: _extend,\n extract: extract,\n reduce: _reduce,\n foldMap: _foldMap,\n reduceRight: _reduceRight,\n traverse: _traverse,\n sequence,\n reduceWithIndex: _reduceWithIndex,\n foldMapWithIndex: _foldMapWithIndex,\n reduceRightWithIndex: _reduceRightWithIndex,\n traverseWithIndex: _traverseWithIndex,\n alt: _alt\n};\n","/**\n * If a type `A` can form a `Semigroup` it has an **associative** binary operation.\n *\n * ```ts\n * interface Semigroup<A> {\n * readonly concat: (x: A, y: A) => A\n * }\n * ```\n *\n * Associativity means the following equality must hold for any choice of `x`, `y`, and `z`.\n *\n * ```ts\n * concat(x, concat(y, z)) = concat(concat(x, y), z)\n * ```\n *\n * A common example of a semigroup is the type `string` with the operation `+`.\n *\n * ```ts\n * import { Semigroup } from 'fp-ts/Semigroup'\n *\n * const semigroupString: Semigroup<string> = {\n * concat: (x, y) => x + y\n * }\n *\n * const x = 'x'\n * const y = 'y'\n * const z = 'z'\n *\n * semigroupString.concat(x, y) // 'xy'\n *\n * semigroupString.concat(x, semigroupString.concat(y, z)) // 'xyz'\n *\n * semigroupString.concat(semigroupString.concat(x, y), z) // 'xyz'\n * ```\n *\n * *Adapted from https://typelevel.org/cats*\n *\n * @since 2.0.0\n */\nimport { getSemigroup, identity } from './function.js';\nimport * as _ from './internal.js';\nimport * as M from './Magma.js';\nimport * as Or from './Ord.js';\n// -------------------------------------------------------------------------------------\n// constructors\n// -------------------------------------------------------------------------------------\n/**\n * Get a semigroup where `concat` will return the minimum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.min(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 1)\n *\n * @category constructors\n * @since 2.10.0\n */\nexport const min = (O) => ({\n concat: Or.min(O)\n});\n/**\n * Get a semigroup where `concat` will return the maximum, based on the provided order.\n *\n * @example\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/Semigroup'\n *\n * const S1 = S.max(N.Ord)\n *\n * assert.deepStrictEqual(S1.concat(1, 2), 2)\n *\n * @category constructors\n * @since 2.10.0\n */\nexport const max = (O) => ({\n concat: Or.max(O)\n});\n/**\n * @category constructors\n * @since 2.10.0\n */\nexport const constant = (a) => ({\n concat: () => a\n});\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Semigroup`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(reverse(S.Semigroup).concat('a', 'b'), 'ba')\n *\n * @since 2.10.0\n */\nexport const reverse = M.reverse;\n/**\n * Given a struct of semigroups returns a semigroup for the struct.\n *\n * @example\n * import { struct } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * interface Point {\n * readonly x: number\n * readonly y: number\n * }\n *\n * const S = struct<Point>({\n * x: N.SemigroupSum,\n * y: N.SemigroupSum\n * })\n *\n * assert.deepStrictEqual(S.concat({ x: 1, y: 2 }, { x: 3, y: 4 }), { x: 4, y: 6 })\n *\n * @since 2.10.0\n */\nexport const struct = (semigroups) => ({\n concat: (first, second) => {\n const r = {};\n for (const k in semigroups) {\n if (_.has.call(semigroups, k)) {\n r[k] = semigroups[k].concat(first[k], second[k]);\n }\n }\n return r;\n }\n});\n/**\n * Given a tuple of semigroups returns a semigroup for the tuple.\n *\n * @example\n * import { tuple } from 'fp-ts/Semigroup'\n * import * as B from 'fp-ts/boolean'\n * import * as N from 'fp-ts/number'\n * import * as S from 'fp-ts/string'\n *\n * const S1 = tuple(S.Semigroup, N.SemigroupSum)\n * assert.deepStrictEqual(S1.concat(['a', 1], ['b', 2]), ['ab', 3])\n *\n * const S2 = tuple(S.Semigroup, N.SemigroupSum, B.SemigroupAll)\n * assert.deepStrictEqual(S2.concat(['a', 1, true], ['b', 2, false]), ['ab', 3, false])\n *\n * @since 2.10.0\n */\nexport const tuple = (...semigroups) => ({\n concat: (first, second) => semigroups.map((s, i) => s.concat(first[i], second[i]))\n});\n/**\n * Between each pair of elements insert `middle`.\n *\n * @example\n * import { intercalate } from 'fp-ts/Semigroup'\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * const S1 = pipe(S.Semigroup, intercalate(' + '))\n *\n * assert.strictEqual(S1.concat('a', 'b'), 'a + b')\n *\n * @since 2.10.0\n */\nexport const intercalate = (middle) => (S) => ({\n concat: (x, y) => S.concat(x, S.concat(middle, y))\n});\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * Always return the first argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.first<number>().concat(1, 2), 1)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const first = () => ({ concat: identity });\n/**\n * Always return the last argument.\n *\n * @example\n * import * as S from 'fp-ts/Semigroup'\n *\n * assert.deepStrictEqual(S.last<number>().concat(1, 2), 2)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const last = () => ({ concat: (_, y) => y });\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Semigroup'\n * import * as N from 'fp-ts/number'\n *\n * const sum = concatAll(N.SemigroupSum)(0)\n *\n * assert.deepStrictEqual(sum([1, 2, 3]), 6)\n * assert.deepStrictEqual(sum([]), 0)\n *\n * @since 2.10.0\n */\nexport const concatAll = M.concatAll;\n// -------------------------------------------------------------------------------------\n// deprecated\n// -------------------------------------------------------------------------------------\n/**\n * Use `void` module instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupVoid = constant(undefined);\n/**\n * Use [`getAssignSemigroup`](./struct.ts.html#getAssignSemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getObjectSemigroup = () => ({\n concat: (first, second) => Object.assign({}, first, second)\n});\n/**\n * Use [`last`](#last) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getLastSemigroup = last;\n/**\n * Use [`first`](#first) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getFirstSemigroup = first;\n/**\n * Use [`tuple`](#tuple) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getTupleSemigroup = tuple;\n/**\n * Use [`struct`](#struct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getStructSemigroup = struct;\n/**\n * Use [`reverse`](#reverse) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getDualSemigroup = reverse;\n/**\n * Use [`max`](#max) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getJoinSemigroup = max;\n/**\n * Use [`min`](#min) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getMeetSemigroup = min;\n/**\n * Use [`intercalate`](#intercalate) instead.\n *\n * @category zone of death\n * @since 2.5.0\n * @deprecated\n */\nexport const getIntercalateSemigroup = intercalate;\nexport function fold(S) {\n const concatAllS = concatAll(S);\n return (startWith, as) => (as === undefined ? concatAllS(startWith) : concatAllS(startWith)(as));\n}\n/**\n * Use [`SemigroupAll`](./boolean.ts.html#SemigroupAll) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupAll = {\n concat: (x, y) => x && y\n};\n/**\n * Use [`SemigroupAny`](./boolean.ts.html#SemigroupAny) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupAny = {\n concat: (x, y) => x || y\n};\n/**\n * Use [`getSemigroup`](./function.ts.html#getSemigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const getFunctionSemigroup = getSemigroup;\n/**\n * Use [`Semigroup`](./string.ts.html#Semigroup) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupString = {\n concat: (x, y) => x + y\n};\n/**\n * Use [`SemigroupSum`](./number.ts.html#SemigroupSum) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupSum = {\n concat: (x, y) => x + y\n};\n/**\n * Use [`SemigroupProduct`](./number.ts.html#SemigroupProduct) instead.\n *\n * @category zone of death\n * @since 2.0.0\n * @deprecated\n */\nexport const semigroupProduct = {\n concat: (x, y) => x * y\n};\n","/**\n * A `Magma` is a pair `(A, concat)` in which `A` is a non-empty set and `concat` is a binary operation on `A`\n *\n * See [Semigroup](https://gcanti.github.io/fp-ts/modules/Semigroup.ts.html) for some instances.\n *\n * @since 2.0.0\n */\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * The dual of a `Magma`, obtained by swapping the arguments of `concat`.\n *\n * @example\n * import { reverse, concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(reverse(N.MagmaSub))(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), 2)\n *\n * @since 2.11.0\n */\nexport const reverse = (M) => ({\n concat: (first, second) => M.concat(second, first)\n});\n/**\n * @since 2.11.0\n */\nexport const filterFirst = (predicate) => (M) => ({\n concat: (first, second) => (predicate(first) ? M.concat(first, second) : second)\n});\n/**\n * @since 2.11.0\n */\nexport const filterSecond = (predicate) => (M) => ({\n concat: (first, second) => (predicate(second) ? M.concat(first, second) : first)\n});\n/**\n * @since 2.11.0\n */\nexport const endo = (f) => (M) => ({\n concat: (first, second) => M.concat(f(first), f(second))\n});\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Given a sequence of `as`, concat them and return the total.\n *\n * If `as` is empty, return the provided `startWith` value.\n *\n * @example\n * import { concatAll } from 'fp-ts/Magma'\n * import * as N from 'fp-ts/number'\n *\n * const subAll = concatAll(N.MagmaSub)(0)\n *\n * assert.deepStrictEqual(subAll([1, 2, 3]), -6)\n *\n * @since 2.11.0\n */\nexport const concatAll = (M) => (startWith) => (as) => as.reduce((a, acc) => M.concat(a, acc), startWith);\n","/* oxlint-disable no-bitwise */\nexport const uuid = (): string => {\n let d = new Date().getTime();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n const r = ((d + Math.random() * 16) % 16) | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);\n });\n};\n","import { isNonEmpty } from './ReadonlyNonEmptyArray.js';\n// -------------------------------------------------------------------------------------\n// instances\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Eq.equals('a', 'a'), true)\n * assert.deepStrictEqual(S.Eq.equals('a', 'b'), false)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Eq = {\n equals: (first, second) => first === second\n};\n/**\n * `string` semigroup under concatenation.\n *\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Semigroup.concat('a', 'b'), 'ab')\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Semigroup = {\n concat: (first, second) => first + second\n};\n/**\n * An empty `string`.\n *\n * @since 2.10.0\n */\nexport const empty = '';\n/**\n * `string` monoid under concatenation.\n *\n * The `empty` value is `''`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Monoid.concat('a', 'b'), 'ab')\n * assert.deepStrictEqual(S.Monoid.concat('a', S.Monoid.empty), 'a')\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Monoid = {\n concat: Semigroup.concat,\n empty\n};\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Ord.compare('a', 'a'), 0)\n * assert.deepStrictEqual(S.Ord.compare('a', 'b'), -1)\n * assert.deepStrictEqual(S.Ord.compare('b', 'a'), 1)\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Ord = {\n equals: Eq.equals,\n compare: (first, second) => (first < second ? -1 : first > second ? 1 : 0)\n};\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.Show.show('a'), '\"a\"')\n *\n * @category instances\n * @since 2.10.0\n */\nexport const Show = {\n show: (s) => JSON.stringify(s)\n};\n// -------------------------------------------------------------------------------------\n// refinements\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as S from 'fp-ts/string'\n *\n * assert.deepStrictEqual(S.isString('a'), true)\n * assert.deepStrictEqual(S.isString(1), false)\n *\n * @category refinements\n * @since 2.11.0\n */\nexport const isString = (u) => typeof u === 'string';\n// -------------------------------------------------------------------------------------\n// combinators\n// -------------------------------------------------------------------------------------\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('a', S.toUpperCase), 'A')\n *\n * @since 2.11.0\n */\nexport const toUpperCase = (s) => s.toUpperCase();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('A', S.toLowerCase), 'a')\n *\n * @since 2.11.0\n */\nexport const toLowerCase = (s) => s.toLowerCase();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.replace('b', 'd')), 'adc')\n *\n * @since 2.11.0\n */\nexport const replace = (searchValue, replaceValue) => (s) => s.replace(searchValue, replaceValue);\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(' a ', S.trim), 'a')\n *\n * @since 2.11.0\n */\nexport const trim = (s) => s.trim();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(' a ', S.trimLeft), 'a ')\n *\n * @since 2.11.0\n */\nexport const trimLeft = (s) => s.trimLeft();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe(' a ', S.trimRight), ' a')\n *\n * @since 2.11.0\n */\nexport const trimRight = (s) => s.trimRight();\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abcd', S.slice(1, 3)), 'bc')\n *\n * @since 2.11.0\n */\nexport const slice = (start, end) => (s) => s.slice(start, end);\n// -------------------------------------------------------------------------------------\n// utils\n// -------------------------------------------------------------------------------------\n/**\n * Test whether a `string` is empty.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('', S.isEmpty), true)\n * assert.deepStrictEqual(pipe('a', S.isEmpty), false)\n *\n * @since 2.10.0\n */\nexport const isEmpty = (s) => s.length === 0;\n/**\n * Calculate the number of characters in a `string`.\n *\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.size), 3)\n *\n * @since 2.10.0\n */\nexport const size = (s) => s.length;\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.split('')), ['a', 'b', 'c'])\n * assert.deepStrictEqual(pipe('', S.split('')), [''])\n *\n * @since 2.11.0\n */\nexport const split = (separator) => (s) => {\n const out = s.split(separator);\n return isNonEmpty(out) ? out : [s];\n};\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.includes('b')), true)\n * assert.deepStrictEqual(pipe('abc', S.includes('d')), false)\n *\n * @since 2.11.0\n */\nexport const includes = (searchString, position) => (s) => s.includes(searchString, position);\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.startsWith('a')), true)\n * assert.deepStrictEqual(pipe('bc', S.startsWith('a')), false)\n *\n * @since 2.11.0\n */\nexport const startsWith = (searchString, position) => (s) => s.startsWith(searchString, position);\n/**\n * @example\n * import * as S from 'fp-ts/string'\n * import { pipe } from 'fp-ts/function'\n *\n * assert.deepStrictEqual(pipe('abc', S.endsWith('c')), true)\n * assert.deepStrictEqual(pipe('ab', S.endsWith('c')), false)\n *\n * @since 2.11.0\n */\nexport const endsWith = (searchString, position) => (s) => s.endsWith(searchString, position);\n","import { pipe } from 'fp-ts-esm/function';\nimport * as S from 'fp-ts-esm/string';\n\nimport type {\n AppEmbedData,\n AudioData,\n BulletedListData,\n ButtonData,\n CheckboxListData,\n CodeBlockData,\n CollapsibleListData,\n Decoration,\n Decoration_Type,\n DividerData,\n EmbedData,\n FileData,\n GIFData,\n GalleryData,\n HTMLData,\n HeadingData,\n ImageData,\n Link,\n LinkPreviewData,\n Metadata,\n Node,\n NodeStyle,\n OrderedListData,\n ParagraphData,\n PollData,\n TableCellData,\n TableData,\n TextData,\n VideoData,\n} from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { LATEST_VERSION, Link_Target, Node_Type, TextStyle_TextAlignment } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport type { TableData as TableDataNext } from './../../ricos-schema/next-schema/index.js';\nimport { cloneDeep } from './../../_shared/clone-deep.js';\nimport { deepMerge } from './../../_shared/deep-merge.js';\nimport { uuid } from './../../wix-rich-content-common/Utils/uuid.js';\n\nimport type { RicosEntityRange, RicosInlineStyleRange } from '../types/index.js';\nimport { fromEntries } from '../utils.js';\nimport { generateId } from './generate-random-id.js';\n\nexport const createNode = <TData>(\n type: Node_Type,\n {\n nodes,\n data,\n style,\n id,\n }: {\n nodes: Node[];\n data: TData;\n style?: NodeStyle;\n id?: string;\n }\n): Node => ({\n type,\n id: id ?? generateId(),\n nodes,\n ...dataByNodeType(type, data),\n style,\n});\n\nexport const dataByNodeType = (type: Node_Type, data: unknown) => {\n const map = {\n [Node_Type.CODE_BLOCK]: { codeBlockData: data as CodeBlockData },\n [Node_Type.DIVIDER]: { dividerData: data as DividerData },\n [Node_Type.HEADING]: { headingData: data as HeadingData },\n [Node_Type.FILE]: { fileData: data as FileData },\n [Node_Type.GALLERY]: { galleryData: data as GalleryData },\n [Node_Type.GIF]: { gifData: data as GIFData },\n [Node_Type.HTML]: { htmlData: data as HTMLData },\n [Node_Type.IMAGE]: { imageData: data as ImageData },\n [Node_Type.BUTTON]: { buttonData: data as ButtonData },\n [Node_Type.PARAGRAPH]: { paragraphData: data as ParagraphData },\n [Node_Type.POLL]: { pollData: data as PollData },\n [Node_Type.TEXT]: { textData: data as TextData },\n [Node_Type.VIDEO]: { videoData: data as VideoData },\n [Node_Type.AUDIO]: { audioData: data as AudioData },\n [Node_Type.EMBED]: { embedData: data as EmbedData },\n [Node_Type.APP_EMBED]: { appEmbedData: data as AppEmbedData },\n [Node_Type.LINK_PREVIEW]: { linkPreviewData: data as LinkPreviewData },\n [Node_Type.TABLE]: { tableData: data as TableData },\n [Node_Type.TABLE_CELL]: { tableCellData: data as TableCellData },\n [Node_Type.COLLAPSIBLE_LIST]: { collapsibleListData: data as CollapsibleListData },\n [Node_Type.BULLETED_LIST]: {\n bulletedListData: data as BulletedListData,\n },\n [Node_Type.CHECKBOX_LIST]: {\n checkboxListData: data as CheckboxListData,\n },\n [Node_Type.ORDERED_LIST]: {\n orderedListData: data as OrderedListData,\n },\n };\n\n return map[type as keyof typeof map];\n};\n\nexport const createParagraphNode = (\n nodes: Node[] = [],\n data?: ParagraphData,\n style?: NodeStyle\n): Node =>\n createNode(Node_Type.PARAGRAPH, {\n nodes,\n data: {\n textStyle: { textAlignment: TextStyle_TextAlignment.AUTO },\n ...data,\n },\n style,\n });\n\nexport const createTextNode = (text: string, decorations: Decoration[] = []): Node =>\n createNode(Node_Type.TEXT, { nodes: [], id: '', data: { text, decorations } });\n\nexport const createHeadingNode = (nodes: Node[] = [], data: HeadingData): Node =>\n createNode(Node_Type.HEADING, {\n nodes,\n data: {\n textStyle: { textAlignment: TextStyle_TextAlignment.AUTO },\n ...data,\n },\n });\n\nexport const createCaptionNode = (nodes: Node[]): Node =>\n createNode(Node_Type.CAPTION, {\n data: {},\n nodes,\n });\n\nexport const createTableNode = (nodes: Node[], data: TableDataNext = {}): Node => {\n return createNode(Node_Type.TABLE, { nodes, data });\n};\n\nexport const createTableRowNode = (nodes: Node[]): Node => {\n return createNode(Node_Type.TABLE_ROW, { nodes, data: {} });\n};\n\nexport const createTableCellNode = (nodes: Node[]): Node => {\n return createNode(Node_Type.TABLE_CELL, { nodes, data: {} });\n};\n\nexport const createDecoration = (\n type: Decoration_Type,\n data: Omit<Decoration, 'type'> = {}\n): Decoration => ({ type, ...data });\n\nexport const initializeMetadata = ({\n version,\n id = uuid(),\n createdTimestamp,\n updatedTimestamp,\n}: {\n version?: number;\n id?: string;\n createdTimestamp?: Date;\n updatedTimestamp?: Date;\n} = {}): Metadata => ({\n version: version || LATEST_VERSION,\n createdTimestamp: createdTimestamp || new Date(),\n updatedTimestamp: updatedTimestamp || new Date(),\n id,\n});\n\ntype DecorationMap = Record<Decoration_Type, Decoration>;\n\nexport const reduceDecorations = (decorations: Decoration[]): Decoration[] => {\n const reducedDecorationsMap: DecorationMap = decorations.reduce(\n (decorationMap, { type, ...data }) => {\n const currentDecoration: Decoration = decorationMap[type] || { type };\n const nextDecoration: Decoration = { type, ...data };\n return {\n ...decorationMap,\n [type]: deepMerge(currentDecoration, nextDecoration),\n };\n },\n {} as DecorationMap\n );\n const reducedDecorations = Object.values(reducedDecorationsMap);\n return reducedDecorations;\n};\n\nconst toLinkTarget = (target = 'BLANK') => {\n switch (pipe(target, S.toUpperCase, S.replace('_', ''))) {\n case 'SELF': {\n return Link_Target.SELF;\n }\n case 'BLANK': {\n return Link_Target.BLANK;\n }\n case 'PARENT': {\n return Link_Target.PARENT;\n }\n case 'TOP': {\n return Link_Target.TOP;\n }\n default: {\n return Link_Target.BLANK;\n }\n }\n};\n\nexport const createLink = ({\n url,\n rel,\n target,\n anchor,\n}: {\n url?: string;\n rel?: string;\n target?: string;\n anchor?: string;\n}): Link => {\n const relValues: [string, boolean][] =\n (typeof rel === 'string' ? rel : '')\n .split(' ')\n .filter(key => ['nofollow', 'sponsored', 'ugc', 'noreferrer'].includes(key))\n .map(key => [key, true]) || [];\n\n return {\n anchor,\n url,\n rel: relValues.length > 0 ? fromEntries(relValues) : undefined,\n target: toLinkTarget(typeof target === 'string' ? target : undefined),\n };\n};\n\nexport const parseLink = (\n link: Link | undefined\n): {\n url?: string;\n rel?: string;\n target?: string;\n anchor?: string;\n customData?: string;\n} => ({\n anchor: link?.anchor,\n url: link?.url,\n rel:\n link?.rel &&\n Object.entries(link.rel)\n .flatMap(([key, value]) => (value ? key : []))\n .join(' '),\n target: link?.target && '_' + link.target.toLowerCase(),\n customData: link?.customData,\n});\n\nconst last = (arr: $TSFixMe) => (arr.length > 0 ? arr[arr.length - 1] : null);\n\nexport const partitionBy =\n <T>(\n isSeparator: (node: T) => boolean,\n isPartition: (node: T) => boolean,\n Separator: (node: T) => T,\n Partition: (node: T) => T,\n addToPartition: (partition: T, node: T) => void\n ) =>\n (nodes: T[]): T[] =>\n nodes.reduce((partitions: T[], node: T) => {\n if (isSeparator(node)) {\n partitions.push(Separator(node));\n } else {\n let lastPartition = last(partitions);\n if (!lastPartition || !isPartition(lastPartition)) {\n const partition = Partition(node);\n partitions.push(partition);\n lastPartition = last(partitions);\n }\n addToPartition(lastPartition, node);\n }\n return partitions;\n }, []);\n\ntype RicosInlineStyleRangeWithStyle = RicosInlineStyleRange & {\n styleKey: string;\n styleValue: string;\n};\n\nconst getRangeStyle = (range: RicosInlineStyleRange) => {\n try {\n const style = JSON.parse(range.style);\n return { styleKey: Object.keys(style)[0], styleValue: Object.values(style)[0] };\n } catch {\n return { styleKey: range.style, styleValue: range.style };\n }\n};\n\nexport const removeOverlappingRangesWithSameStyle = (ranges: RicosInlineStyleRange[]) => {\n const isOverlapping = (a: RicosInlineStyleRangeWithStyle, b: RicosInlineStyleRangeWithStyle) =>\n a.styleKey === b.styleKey &&\n a.styleValue === b.styleValue &&\n a.offset <= b.offset + b.length &&\n a.offset + a.length >= b.offset;\n\n return (\n ranges\n .map(\n // @ts-ignore $TSFixMe\n (range): RicosInlineStyleRangeWithStyle => ({\n ...range,\n ...getRangeStyle(range),\n })\n )\n .reduce<RicosInlineStyleRangeWithStyle[]>((acc, range) => {\n const filteredRanges = acc.filter(r => {\n return !(\n range.styleKey === r.styleKey &&\n r.offset >= range.offset &&\n r.offset + r.length <= range.offset + range.length\n );\n });\n\n return mergeRangeWithList(filteredRanges, range, isOverlapping);\n }, [])\n .reduce<RicosInlineStyleRangeWithStyle[]>((acc, range) => {\n return adjustAndAddRange(acc, range);\n }, [])\n // oxlint-disable-next-line @typescript-oxlint/no-unused-vars\n .map(({ styleKey, styleValue, ...range }) => range)\n );\n};\n\nconst adjustAndAddRange = (\n existingRanges: RicosInlineStyleRangeWithStyle[],\n newRange: RicosInlineStyleRangeWithStyle\n): RicosInlineStyleRangeWithStyle[] => {\n const isOverlapping = (a: RicosInlineStyleRangeWithStyle, b: RicosInlineStyleRangeWithStyle) =>\n (a.styleKey === b.styleKey ||\n `NOT_${a.styleKey}` === b.styleKey ||\n a.styleKey === `NOT_${b.styleKey}`) &&\n a.offset <= b.offset + b.length &&\n a.offset + a.length >= b.offset;\n\n const adjust = (\n existing: RicosInlineStyleRangeWithStyle,\n newR: RicosInlineStyleRangeWithStyle\n ): RicosInlineStyleRangeWithStyle => {\n if (isOverlapping(existing, newR)) {\n if (existing.offset === newR.offset) {\n return {\n ...existing,\n offset: newR.offset + newR.length,\n length: existing.length - newR.length,\n };\n } else if (existing.offset > newR.offset) {\n const overlapLength = newR.offset + newR.length - existing.offset;\n return {\n ...existing,\n offset: existing.offset + overlapLength,\n length: existing.length - overlapLength,\n };\n } else {\n return { ...existing, length: newR.offset - existing.offset };\n }\n }\n return existing;\n };\n\n const adjustedRanges = existingRanges\n .map(range => adjust(range, newRange))\n .filter(range => range.length > 0);\n\n adjustedRanges.push(newRange);\n\n return adjustedRanges;\n};\n\nexport const mergeOverlappingEntityRanges = (\n entityRanges: RicosEntityRange[]\n): RicosEntityRange[] => {\n const isOverlapping = (a: RicosEntityRange, b: RicosEntityRange) =>\n a.key === b.key && a.offset <= b.offset + b.length && a.offset + a.length >= b.offset;\n\n return entityRanges.reduce(\n (acc: RicosEntityRange[], range: RicosEntityRange) =>\n mergeRangeWithList(acc, range, isOverlapping),\n [] as RicosEntityRange[]\n );\n};\n\nconst mergeRangeWithList = <T extends { offset: number; length: number }>(\n ranges: T[],\n newRange: T,\n isOverlapping: (a: T, b: T) => boolean\n): T[] => {\n const mergeRanges = (a: T, b: T) => ({\n ...a,\n offset: Math.min(a.offset, b.offset),\n length: Math.max(a.offset + a.length, b.offset + b.length) - Math.min(a.offset, b.offset),\n });\n\n const result = ranges.reduce(\n (acc: { ranges: T[]; currentMerging: T }, currentRange) => {\n if (isOverlapping(acc.currentMerging, currentRange)) {\n acc.currentMerging = mergeRanges(acc.currentMerging, currentRange);\n return acc;\n }\n\n acc.ranges.push(currentRange);\n\n return acc;\n },\n { ranges: [], currentMerging: newRange }\n );\n\n result.ranges.push(result.currentMerging);\n\n return result.ranges;\n};\n\nexport const generateRangeMap = (ranges: (RicosInlineStyleRange | RicosEntityRange)[]) => {\n const rangeMap: $TSFixMe = {};\n ranges.forEach(({ offset, length, ...props }) => {\n rangeMap[offset] = [...(rangeMap[offset] || []), { action: 'start', ...props, length }];\n rangeMap[offset + length] = [\n ...(rangeMap[offset + length] || []),\n { action: 'end', ...props, length },\n ];\n });\n\n const normalizedRangeMap = normalizeRangeMap(rangeMap);\n\n if (!normalizedRangeMap[0]) {\n normalizedRangeMap[0] = [];\n }\n\n return normalizedRangeMap;\n};\n\ntype RangeMapEntry = (\n | Omit<RicosInlineStyleRange, 'offset' | 'length'>\n | Omit<RicosEntityRange, 'offset' | 'length'>\n) & {\n action: 'start' | 'end';\n};\n\ntype RangeMapEntryWithLength = RangeMapEntry & { length: number };\n\nconst getRangeEntityId = (entry: RangeMapEntry) => {\n if ('key' in entry) {\n return entry.key;\n }\n\n return entry.style;\n};\n\nconst isEntryOverlapping = (current: RangeMapEntryWithLength, next: RangeMapEntryWithLength) => {\n return (\n getRangeEntityId(current) === getRangeEntityId(next) &&\n current.action === 'end' &&\n next.action === 'start' &&\n // Ranges of length 1 are not overlapping\n current.length !== 1 &&\n next.length !== 1\n );\n};\n\nconst getStyleKeyVariation = (entry: RangeMapEntry) => {\n if ('key' in entry) {\n return entry.key;\n }\n\n try {\n const style = JSON.parse(entry.style);\n return Object.keys(style)[0];\n } catch {\n return entry.style;\n }\n};\n\nconst getStyleKeyValue = (entry: RangeMapEntry) => {\n if ('key' in entry) {\n return entry.key;\n }\n\n return entry.style;\n};\n\nconst mergeAdjacentRanges = (\n rangeMap: Record<number, RangeMapEntryWithLength[]>\n): Record<number, RangeMapEntry[]> => {\n const newRangeMap = cloneDeep(rangeMap);\n\n Object.keys(newRangeMap).forEach(key => {\n const intKey = parseInt(key);\n if (!newRangeMap[intKey + 1]) {\n return;\n }\n // Merge only if no other style is ending/starting at the same time\n const hasMultipleSameStyleEntries = newRangeMap[intKey].some(current => {\n return newRangeMap[intKey].some(next =>\n current === next ? false : getStyleKeyVariation(current) === getStyleKeyVariation(next)\n );\n });\n\n if (hasMultipleSameStyleEntries) {\n return;\n }\n\n const currentRangeBeforeUpdate = newRangeMap[intKey];\n // filter out ranges that are overlapping with the next range in both entries\n newRangeMap[intKey] = newRangeMap[intKey].filter(current => {\n return newRangeMap[intKey + 1].every(next => !isEntryOverlapping(current, next));\n });\n newRangeMap[intKey + 1] = newRangeMap[intKey + 1].filter(next => {\n return currentRangeBeforeUpdate.every(current => !isEntryOverlapping(current, next));\n });\n });\n\n return Object.entries(newRangeMap).reduce(\n (acc, [key, value]) => {\n return {\n ...acc,\n [key]: value.map(v => ({ ...v, length: undefined })),\n };\n },\n {} as Record<number, RangeMapEntry[]>\n );\n};\n\nconst moveEndOfRanges = (rangeMap: Record<number, RangeMapEntry[]>) => {\n const newRangeMap = cloneDeep(rangeMap);\n Object.keys(newRangeMap)\n .reverse()\n .forEach((k, index, allKeys) => {\n const key = parseInt(k);\n // oxlint-disable-next-line fp/no-loops\n for (const current of newRangeMap[key]) {\n if (current.action !== 'end') {\n continue;\n }\n const currentStyleKey = getStyleKeyVariation(current);\n let isMovable = false;\n let hasValidStart = false;\n\n const sameStyleStartInSameKey = newRangeMap[key].find((entry: $TSFixMe) => {\n return getStyleKeyValue(entry) === getStyleKeyValue(current) && entry.action === 'start';\n });\n\n if (sameStyleStartInSameKey) {\n newRangeMap[key] = newRangeMap[key].filter(\n (entry: $TSFixMe) => ![current, sameStyleStartInSameKey].includes(entry)\n );\n continue;\n }\n\n // oxlint-disable-next-line fp/no-loops\n for (let i = index + 1; i < allKeys.length; i++) {\n const prevKey = Number(allKeys[i]);\n\n // if first encounter of same style is a start,\n // it's a valid case, continue to the next one\n hasValidStart = newRangeMap[prevKey].some((prev: $TSFixMe) => {\n return prev.action === 'start' && getRangeEntityId(current) === getRangeEntityId(prev);\n });\n\n if (hasValidStart) {\n break;\n }\n\n isMovable = newRangeMap[prevKey].some((prev: $TSFixMe) => {\n const prevStyleKey = getStyleKeyVariation(prev);\n return (\n prev.action === 'start' &&\n currentStyleKey === prevStyleKey &&\n getRangeEntityId(current) !== getRangeEntityId(prev)\n );\n });\n\n if (isMovable) {\n newRangeMap[prevKey].push(current);\n break;\n }\n }\n\n if (hasValidStart) {\n continue;\n }\n\n if (isMovable) {\n newRangeMap[key] = newRangeMap[key].filter((entry: $TSFixMe) => entry !== current);\n }\n }\n });\n\n return newRangeMap;\n};\n\nexport const normalizeRangeMap = (rangeMap: Record<number, RangeMapEntryWithLength[]>) => {\n const newRangeMap = moveEndOfRanges(mergeAdjacentRanges(rangeMap));\n\n // remove empty ranges\n Object.keys(newRangeMap).forEach(key => {\n if (newRangeMap[Number(key)]?.length === 0) {\n // oxlint-disable-next-line fp/no-delete\n delete newRangeMap[Number(key)];\n }\n });\n\n return newRangeMap;\n};\n","export { fromDraft, toDraft } from '../converters/draft/index.js';\nexport { fromJSONLight, toJSONLight } from '../converters/json-utils.js';\nexport {\n createDecoration,\n createHeadingNode,\n createLink,\n createNode,\n createParagraphNode,\n createTextNode,\n dataByNodeType,\n generateRangeMap,\n initializeMetadata,\n mergeOverlappingEntityRanges,\n normalizeRangeMap,\n parseLink,\n partitionBy,\n reduceDecorations,\n removeOverlappingRangesWithSameStyle,\n} from '../converters/node-utils.js';\nexport { fromPlainText, toPlainText } from '../converters/plainText/index.js';\n","import { Decoration_Type, Node_Type } from './../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport {\n ACTION_BUTTON_TYPE,\n ANCHOR_TYPE,\n APP_EMBED_TYPE,\n AUDIO_TYPE,\n COLLAPSIBLE_LIST_TYPE,\n DIVIDER_TYPE,\n EMBED_TYPE,\n EXTERNAL,\n FILE_UPLOAD_TYPE,\n GALLERY_TYPE,\n GIPHY_TYPE,\n HTML_TYPE,\n IMAGE_TYPE,\n IMAGE_TYPE_LEGACY,\n LINK_BUTTON_TYPE,\n LINK_PREVIEW_TYPE,\n LINK_TYPE,\n MENTION_TYPE,\n POLL_TYPE,\n RICOS_NODE_TYPE_TO_DATA_FIELD,\n SPOILER_TYPE,\n TABLE_TYPE,\n VIDEO_TYPE,\n VIDEO_TYPE_LEGACY,\n} from '../../consts.js';\nimport { fromEntries } from '../../utils.js';\n\nexport enum BlockType {\n Unstyled = 'unstyled',\n HeaderOne = 'header-one',\n HeaderTwo = 'header-two',\n HeaderThree = 'header-three',\n HeaderFour = 'header-four',\n HeaderFive = 'header-five',\n HeaderSix = 'header-six',\n UnorderedListItem = 'unordered-list-item',\n OrderedListItem = 'ordered-list-item',\n Blockquote = 'blockquote',\n CodeBlock = 'code-block',\n Atomic = 'atomic',\n}\n\nexport enum HeaderLevel {\n 'header-one' = 1,\n 'header-two' = 2,\n 'header-three' = 3,\n 'header-four' = 4,\n 'header-five' = 5,\n 'header-six' = 6,\n}\n\nexport const FROM_DRAFT_LIST_TYPE = {\n [BlockType.UnorderedListItem]: Node_Type.BULLETED_LIST,\n [BlockType.OrderedListItem]: Node_Type.ORDERED_LIST,\n};\n\nexport const TO_DRAFT_LIST_TYPE = fromEntries(\n Object.entries(FROM_DRAFT_LIST_TYPE).map(([key, value]) => [value, key])\n);\n\nexport const TO_RICOS_NODE_TYPE = {\n [LINK_BUTTON_TYPE]: Node_Type.BUTTON,\n [ACTION_BUTTON_TYPE]: Node_Type.BUTTON,\n [DIVIDER_TYPE]: Node_Type.DIVIDER,\n [FILE_UPLOAD_TYPE]: Node_Type.FILE,\n [GALLERY_TYPE]: Node_Type.GALLERY,\n [GIPHY_TYPE]: Node_Type.GIF,\n [HTML_TYPE]: Node_Type.HTML,\n [IMAGE_TYPE]: Node_Type.IMAGE,\n [IMAGE_TYPE_LEGACY]: Node_Type.IMAGE,\n [COLLAPSIBLE_LIST_TYPE]: Node_Type.COLLAPSIBLE_LIST,\n [LINK_PREVIEW_TYPE]: Node_Type.LINK_PREVIEW,\n [APP_EMBED_TYPE]: Node_Type.APP_EMBED,\n [VIDEO_TYPE]: Node_Type.VIDEO,\n [AUDIO_TYPE]: Node_Type.AUDIO,\n [VIDEO_TYPE_LEGACY]: Node_Type.VIDEO,\n [POLL_TYPE]: Node_Type.POLL,\n [TABLE_TYPE]: Node_Type.TABLE,\n [EMBED_TYPE]: Node_Type.EMBED,\n [EXTERNAL]: Node_Type.EXTERNAL,\n};\n\nconst DUPLICATE_KEYS = [IMAGE_TYPE_LEGACY, VIDEO_TYPE_LEGACY];\n\n// Node_Type.IMAGE: IMAGE_TYPE\nexport const FROM_RICOS_ENTITY_TYPE = fromEntries(\n Object.entries(TO_RICOS_NODE_TYPE)\n .filter(([key]) => !DUPLICATE_KEYS.includes(key))\n .map(([key, value]) => [value, key])\n);\n\nexport const TO_RICOS_DECORATION_TYPE = {\n BOLD: Decoration_Type.BOLD,\n ITALIC: Decoration_Type.ITALIC,\n UNDERLINE: Decoration_Type.UNDERLINE,\n [SPOILER_TYPE]: Decoration_Type.SPOILER,\n [ANCHOR_TYPE]: Decoration_Type.ANCHOR,\n [MENTION_TYPE]: Decoration_Type.MENTION,\n [LINK_TYPE]: Decoration_Type.LINK,\n [EXTERNAL]: Decoration_Type.EXTERNAL,\n};\n\nexport const TO_RICOS_INLINE_STYLE_TYPE = {\n BOLD: { type: Decoration_Type.BOLD, fontWeightValue: 700 },\n NOT_BOLD: { type: Decoration_Type.BOLD, fontWeightValue: 400 },\n ITALIC: { type: Decoration_Type.ITALIC, italicData: true },\n NOT_ITALIC: { type: Decoration_Type.ITALIC, italicData: false },\n UNDERLINE: { type: Decoration_Type.UNDERLINE, underlineData: true },\n NOT_UNDERLINE: { type: Decoration_Type.UNDERLINE, underlineData: false },\n};\n\nexport const TO_RICOS_PLUGIN_TYPE = {\n ...TO_RICOS_NODE_TYPE,\n ...TO_RICOS_DECORATION_TYPE,\n};\n\n// Decoration_Type.BOLD: BOLD\nexport const FROM_RICOS_DECORATION_TYPE = fromEntries(\n Object.entries(TO_RICOS_DECORATION_TYPE).map(([key, value]) => [value, key])\n);\n\nexport const ENTITY_DECORATION_TO_MUTABILITY = {\n [ANCHOR_TYPE]: 'MUTABLE',\n [LINK_TYPE]: 'MUTABLE',\n [MENTION_TYPE]: 'SEGMENTED',\n EMOJI_TYPE: 'IMMUTABLE',\n};\n\nconst DRAFT_BLOCK_TYPE_TO_DATA_FIELD = {\n [BlockType.Unstyled]: 'paragraphData',\n [BlockType.UnorderedListItem]: 'paragraphData',\n [BlockType.OrderedListItem]: 'paragraphData',\n [BlockType.HeaderOne]: 'headingData',\n [BlockType.HeaderTwo]: 'headingData',\n [BlockType.HeaderThree]: 'headingData',\n [BlockType.HeaderFour]: 'headingData',\n [BlockType.HeaderFive]: 'headingData',\n [BlockType.HeaderSix]: 'headingData',\n [BlockType.CodeBlock]: 'codeBlockData',\n [BlockType.Blockquote]: 'paragraphData',\n};\n\n// IMAGE_TYPE: imageData\nconst DRAFT_PLUGIN_TYPE_TO_DATA_FIELD = fromEntries(\n Object.entries(TO_RICOS_NODE_TYPE).map(([key, value]) => [\n key,\n RICOS_NODE_TYPE_TO_DATA_FIELD[value],\n ])\n);\n\nconst ENTITY_DECORATION_TO_DATA_FIELD = {\n [ANCHOR_TYPE]: 'anchorData',\n [LINK_TYPE]: 'linkData',\n [MENTION_TYPE]: 'mentionData',\n EMOJI_TYPE: 'emojiData',\n};\n\nconst DECORATION_TO_DATA_FIELD = {\n COLOR: 'colorData',\n FONT_SIZE: 'fontSizeData',\n};\n\nexport const TO_RICOS_DECORATION_DATA_FIELD = {\n ...ENTITY_DECORATION_TO_DATA_FIELD,\n ...DECORATION_TO_DATA_FIELD,\n};\n\nexport const TO_RICOS_DATA_FIELD = {\n ...TO_RICOS_DECORATION_DATA_FIELD,\n ...DRAFT_PLUGIN_TYPE_TO_DATA_FIELD,\n ...DRAFT_BLOCK_TYPE_TO_DATA_FIELD,\n};\n\nexport type DraftGalleryStyles = {\n galleryLayout?: number;\n gallerySizePx?: number;\n oneRow?: boolean;\n cubeRatio?: number;\n isVertical?: boolean;\n numberOfImagesPerRow?: number;\n m_numberOfImagesPerRow?: number;\n cubeType?: string;\n galleryThumbnailsAlignment?: string;\n imageMargin?: number;\n thumbnailSpacings?: number;\n};\n","/* oxlint-disable no-console */\nimport type { Decoration, Node } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Decoration_Type, Node_Type } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { omitKeys } from './../../../../_shared/omit-keys.js';\n\nimport { ANCHOR_TYPE, LINK_TYPE, MENTION_TYPE } from '../../../consts.js';\nimport type {\n RicosEntityMap,\n RicosEntityRange,\n RicosInlineStyleRange,\n} from '../../../types/index.js';\nimport { FROM_RICOS_DECORATION_TYPE, TO_RICOS_DECORATION_DATA_FIELD } from '../consts.js';\nimport { emojiRegex } from '../emoji-regex.js';\nimport { createDecorationEntityData } from './get-draft-entity-data.js';\n\nexport interface DraftTypedDecoration extends Omit<Decoration, 'type'> {\n type: string;\n emojiData?: { emojiUnicode: string };\n}\n\nexport interface RangedDecoration extends DraftTypedDecoration {\n start: number;\n end: number;\n}\n\ninterface RangedDecorationMap {\n [type: string]: RangedDecoration[];\n}\n\nconst isInlineStyleDecoration = (decorationType: string) =>\n TO_RICOS_DECORATION_DATA_FIELD[decorationType as keyof typeof TO_RICOS_DECORATION_DATA_FIELD] ===\n undefined;\n\nconst pipe = (arg: $TSFixMe, ...fns: ((arg: $TSFixMe) => unknown)[]) => {\n return fns.reduce((v, fn) => fn(v), arg);\n};\n\nexport const mergeTextNodes = (\n nodes: Node[] | undefined\n): { text: string; decorationMap: RangedDecorationMap } => {\n let length = 0;\n return (nodes ?? []).reduce<{\n text: string;\n decorationMap: RangedDecorationMap;\n }>(\n ({ text, decorationMap }, currNode) => {\n let accText = text;\n if (currNode.textData) {\n const { text: currText, decorations: currDecorations } = currNode.textData;\n const textLength = Array.from(currText).length; // required for properly reading emojis\n accText += currText;\n if (currDecorations) {\n convertDecorationTypes(currDecorations).forEach(decoration => {\n if (!decorationMap[decoration.type]) {\n decorationMap[decoration.type] = [];\n }\n decorationMap[decoration.type] = [\n ...decorationMap[decoration.type],\n {\n ...decoration,\n start: length,\n end: length + textLength,\n },\n ];\n });\n }\n length += textLength;\n }\n return { text: accText, decorationMap };\n },\n { text: '', decorationMap: {} }\n );\n};\n\nexport const mergeParagraphNodes = (\n nodes: Node[]\n): { text: string; decorationMap: RangedDecorationMap } => {\n return nodes.reduce<{\n text: string;\n decorationMap: RangedDecorationMap;\n }>(\n ({ text, decorationMap }, currNode) => {\n if (currNode.type !== Node_Type.PARAGRAPH && currNode.type !== Node_Type.HEADING) {\n return { text, decorationMap };\n }\n\n const currentText = mergeTextNodes(currNode.nodes ?? []);\n\n const shouldAddNewLineBetween = text && text !== '';\n const previousText = shouldAddNewLineBetween ? `${text}\\n` : text;\n const resultText = `${previousText}${currentText.text}`;\n\n const movedNewDecorationMap = moveDecorationsMapByPreviousTextLength(\n previousText,\n currentText.decorationMap\n );\n const mergedDecorationMap = mergeDecorationMap(decorationMap, movedNewDecorationMap);\n\n return { text: resultText, decorationMap: mergedDecorationMap };\n },\n { text: '', decorationMap: {} }\n );\n};\n\nconst mergeDecorationMap = (\n oldDecorationMap: RangedDecorationMap,\n newDecorationMap: RangedDecorationMap\n) => {\n return Object.entries(newDecorationMap).reduce<RangedDecorationMap>(\n (acc, [decorationType, decorations]) => {\n return {\n ...acc,\n [decorationType]: [...(acc[decorationType] ?? []), ...decorations],\n };\n },\n oldDecorationMap\n );\n};\n\nconst moveDecorationsMapByPreviousTextLength = (\n textBefore: string,\n decorationMap: RangedDecorationMap\n) => {\n return Object.entries(decorationMap).reduce<RangedDecorationMap>(\n (acc, [decorationType, decorations]) => {\n return {\n ...acc,\n [decorationType]: decorations.map(decoration => ({\n ...decoration,\n start: decoration.start + textBefore.length,\n end: decoration.end + textBefore.length,\n })),\n };\n },\n {}\n );\n};\n\nexport const parseDecorations = (\n decorationMap: RangedDecorationMap,\n text: string\n): { inlineStyleDecorations: RangedDecoration[]; entityDecorations: RangedDecoration[] } => {\n const nonMergableDecorations = [LINK_TYPE, MENTION_TYPE, ANCHOR_TYPE];\n\n const decorations = Object.values(decorationMap)\n .sort(decorationComparator)\n .reduce((decorations: RangedDecoration[], currentDecorations) => {\n if (currentDecorations.length > 0) {\n const firstDecoration = currentDecorations.shift() as RangedDecoration;\n const mergedDecorations: RangedDecoration[] = [firstDecoration];\n currentDecorations.forEach(decoration => {\n const lastDecoration = mergedDecorations.pop() as RangedDecoration;\n if (\n decoration.start === lastDecoration.end &&\n !nonMergableDecorations.includes(decoration.type)\n ) {\n mergedDecorations.push({ ...lastDecoration, end: decoration.end });\n } else {\n mergedDecorations.push(lastDecoration, decoration);\n }\n });\n return [...decorations, ...mergedDecorations.sort(decorationComparator)];\n }\n return decorations;\n }, []);\n const allDecorations = [...decorations, ...createEmojiDecorations(text)];\n const entityDecorations = allDecorations\n .filter(({ type }) => !isInlineStyleDecoration(type))\n .sort(decorationComparator);\n const inlineStyleDecorations = allDecorations.filter(({ type }) => isInlineStyleDecoration(type));\n return { inlineStyleDecorations, entityDecorations };\n};\n\nexport const parseInlineStyleDecorations = (\n decorations: RangedDecoration[]\n): RicosInlineStyleRange[] => {\n const inlineStyleRanges = decorations.reduce<RicosInlineStyleRange[]>(\n (inlineStyleRanges, decoration) => [\n ...inlineStyleRanges,\n {\n style: decoration.type,\n offset: decoration.start,\n length: decoration.end - decoration.start,\n },\n ],\n []\n );\n return inlineStyleRanges;\n};\n\nexport const parseEntityDecorations = (\n decorations: RangedDecoration[],\n latestEntityKey: number\n): {\n entityRanges: RicosEntityRange[];\n entityMap: RicosEntityMap;\n latestEntityKey: number;\n} => {\n const {\n entityRanges,\n entityMap,\n latestEntityKey: newLatestEntityKey,\n } = decorations.reduce<{\n entityRanges: RicosEntityRange[];\n entityMap: RicosEntityMap;\n latestEntityKey: number;\n }>(\n ({ entityRanges, entityMap, latestEntityKey }, decoration) => {\n const newEntityKey = latestEntityKey + 1;\n const newEntityMap = createDecorationEntityData(decoration, newEntityKey);\n return {\n entityRanges: [\n ...entityRanges,\n {\n key: newEntityKey,\n offset: decoration.start,\n length: decoration.end - decoration.start,\n },\n ],\n entityMap: { ...entityMap, ...newEntityMap },\n latestEntityKey: newEntityKey,\n };\n },\n { entityRanges: [], entityMap: {}, latestEntityKey }\n );\n return {\n entityRanges,\n entityMap,\n latestEntityKey: newLatestEntityKey,\n };\n};\n\nexport const getParagraphNode = (node: Node) => {\n if (node.nodes?.[0].type === Node_Type.PARAGRAPH) {\n return node.nodes[0];\n } else {\n throw Error(`Expected a paragraph node but found ${node.nodes?.[0].type}`);\n }\n};\n\nconst convertDecorationTypes = (decorations: Decoration[]): DraftTypedDecoration[] =>\n decorations.flatMap(decoration =>\n pipe(\n decoration,\n toDraftDecorationType,\n convertFontSize,\n convertFontWeight,\n convertItalic,\n convertUnderline,\n splitColorDecoration\n )\n );\n\nconst createEmojiDecorations = (text: string) => {\n const result: RangedDecoration[] = [];\n let match;\n // oxlint-disable-next-line fp/no-loops\n while ((match = emojiRegex.exec(text)) !== null) {\n const { 0: emojiUnicode, index: start } = match;\n const decoration: RangedDecoration = {\n type: 'EMOJI_TYPE',\n emojiData: { emojiUnicode },\n start,\n end: start + Array.from(emojiUnicode).length,\n };\n result.push(decoration);\n }\n return result;\n};\n\nconst toDraftDecorationType = (decoration: Decoration): DraftTypedDecoration => {\n const type = omitKeys(FROM_RICOS_DECORATION_TYPE, [\n Decoration_Type.BOLD,\n Decoration_Type.ITALIC,\n Decoration_Type.UNDERLINE,\n ])[decoration?.type];\n return type ? { ...decoration, type } : decoration;\n};\n\nconst splitColorDecoration = ({\n colorData,\n ...decoration\n}: DraftTypedDecoration): DraftTypedDecoration | DraftTypedDecoration[] => {\n if (!colorData) {\n return decoration;\n }\n const { foreground, background } = colorData;\n return [foreground && { FG: foreground }, background && { BG: background }]\n .filter(x => x)\n .map(type => ({ ...decoration, type: JSON.stringify(type) }));\n};\n\nconst convertFontSize = ({\n fontSizeData,\n ...decoration\n}: DraftTypedDecoration): DraftTypedDecoration =>\n fontSizeData\n ? {\n ...decoration,\n type: JSON.stringify({\n 'font-size': fontSizeData.value?.toString() + (fontSizeData.unit?.toLowerCase() || 'px'),\n }),\n }\n : decoration;\n\nconst convertFontWeight = ({\n fontWeightValue,\n ...decoration\n}: DraftTypedDecoration): DraftTypedDecoration =>\n decoration.type === Decoration_Type.BOLD\n ? {\n ...decoration,\n type: !fontWeightValue || fontWeightValue >= 700 ? 'BOLD' : 'NOT_BOLD',\n }\n : decoration;\n\nconst convertItalic = ({\n italicData,\n ...decoration\n}: DraftTypedDecoration): DraftTypedDecoration => {\n const isItalicDataUndefined = typeof italicData === 'undefined';\n return decoration.type === Decoration_Type.ITALIC\n ? {\n ...decoration,\n type: isItalicDataUndefined || italicData ? 'ITALIC' : 'NOT_ITALIC',\n }\n : decoration;\n};\n\nconst convertUnderline = ({\n underlineData,\n ...decoration\n}: DraftTypedDecoration): DraftTypedDecoration => {\n const isUnerlineDataUndefined = typeof underlineData === 'undefined';\n return decoration.type === Decoration_Type.UNDERLINE\n ? {\n ...decoration,\n type: isUnerlineDataUndefined || underlineData ? 'UNDERLINE' : 'NOT_UNDERLINE',\n }\n : decoration;\n};\n\nconst decorationComparator = (\n a: RangedDecoration | RangedDecoration[],\n b: RangedDecoration | RangedDecoration[]\n) =>\n 'start' in a && 'start' in b\n ? a.start - b.start\n : Array.isArray(a) && Array.isArray(b)\n ? a[0].start - b[0].start\n : 0;\n","export { fromPlainText } from './fromPlainText/from-plain-text.js';\nexport { toPlainText } from './toPlainText/to-plain-text.js';\n","import type { Node } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { RichContent } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { createParagraphNode, createTextNode, initializeMetadata } from '../../node-utils.js';\n\nexport const fromPlainText = (text: string): RichContent => {\n const paragraphs = text\n .split('\\n')\n .map(\n (paragraph: string): Node => createParagraphNode(paragraph ? [createTextNode(paragraph)] : [])\n );\n\n const content: RichContent = {\n nodes: paragraphs,\n metadata: initializeMetadata(),\n };\n\n return RichContent.fromJSON(content);\n};\n","import type { RichContent } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { getDefaultAudioUrl, getDefaultVideoUrl } from './convert-nodes.js';\nimport { toPlainTextBase } from './to-plain-text-base.js';\n\ninterface PlainTextOptions {\n urlShortener?: (url: string) => Promise<string>;\n getVideoUrl?: (fileId: string) => Promise<string>;\n getVideoEmbeddedUrl?: (url: string) => Promise<string>;\n getAudioUrl?: (fileId: string) => Promise<string>;\n getGifUrl?: (url: string) => Promise<string>;\n addLinksToText?: boolean;\n delimiter?: string;\n}\n\nexport const toPlainText = async (content: RichContent, options: PlainTextOptions = {}) => {\n const gen = toPlainTextBase(content, options.delimiter, options.addLinksToText);\n let next = gen.next();\n\n while (!next.done) {\n switch (next.value.command) {\n case 'getImageUrl': {\n const url = options.urlShortener\n ? await options.urlShortener?.(next.value.data)\n : next.value.data;\n next = gen.next(url);\n break;\n }\n case 'getVideoUrl': {\n const url = await (options.getVideoUrl\n ? options.getVideoUrl(next.value.data)\n : getDefaultVideoUrl(next.value.data));\n next = gen.next(url);\n break;\n }\n case 'getVideoEmbeddedUrl': {\n const url = await (options.getVideoEmbeddedUrl\n ? options.getVideoEmbeddedUrl(next.value.data)\n : next.value.data);\n next = gen.next(url);\n break;\n }\n case 'getAudioUrl': {\n const url = await (options.getAudioUrl\n ? options.getAudioUrl(next.value.data)\n : getDefaultAudioUrl(next.value.data));\n next = gen.next(url);\n break;\n }\n case 'getGifUrl': {\n const url = await (options.getGifUrl\n ? options.getGifUrl(next.value.data)\n : next.value.data);\n next = gen.next(url);\n break;\n }\n default:\n return '';\n }\n }\n\n return next.value;\n};\n","import type { FileSource, Node } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { LINK_TYPE } from '../../../consts.js';\nimport type { RangedDecoration } from '../../draft/toDraft/decoration-parsers.js';\nimport { mergeTextNodes } from '../../draft/toDraft/decoration-parsers.js';\n\ntype ToPlainTextGeneratorYield =\n | { command: 'getImageUrl'; data: string }\n | { command: 'getVideoUrl'; data: string }\n | { command: 'getVideoEmbeddedUrl'; data: string }\n | { command: 'getAudioUrl'; data: string }\n | { command: 'getGifUrl'; data: string };\nexport type ToPlainTextGenerator = Generator<ToPlainTextGeneratorYield, string, string>;\n\nexport const parseTextNodes = (node: Node, addTextLinks: boolean) => {\n const {\n text,\n decorationMap: { [LINK_TYPE]: linkDecorations },\n } = mergeTextNodes(node.nodes);\n const normalizedText = normalizeAdjacentWhitespace(text);\n const finalText = addTextLinks ? addLinksToText(normalizedText, linkDecorations) : normalizedText;\n return removeTrailingNewLine(finalText);\n};\n\n// Recursively flattens list and returns array of separate nodes rendered as strings\nconst listNodeToLines = (listNode: Node, addTextLinks: boolean, depth = 0): string[] =>\n listNode.nodes?.flatMap((listItemNode, listItemIndex) => {\n // List item can contain multiple paragraphs/lists. The first child is\n // always a paragraph and it gets the list symbol/number as prefix.\n return (\n listItemNode.nodes?.flatMap((listItemNodeChild, index) => {\n if (\n listItemNodeChild.type === Node_Type.PARAGRAPH ||\n listItemNodeChild.type === Node_Type.HEADING\n ) {\n const text = parseTextNodes(listItemNodeChild, addTextLinks);\n if (index === 0) {\n if (listNode.type === Node_Type.ORDERED_LIST) {\n return ' '.repeat(depth) + (listItemIndex + 1) + '. ' + text;\n }\n if (listNode.type === Node_Type.CHECKBOX_LIST) {\n return (\n ' '.repeat(depth) + ` [${listItemNode.listItemData?.checked ? 'x' : ' '}] ` + text\n );\n }\n if (listNode.type === Node_Type.BULLETED_LIST) {\n return ' '.repeat(depth) + ` • ` + text;\n }\n // Illegal case - will fallback to no prefix\n }\n // paragraphs not in the beginning of the list item gets additional\n // indentation to align with the first paragraph\n return ' '.repeat(depth + 1) + text;\n }\n if (\n listItemNodeChild.type === Node_Type.ORDERED_LIST ||\n listItemNodeChild.type === Node_Type.BULLETED_LIST ||\n listItemNodeChild.type === Node_Type.CHECKBOX_LIST\n ) {\n return listNodeToLines(listItemNodeChild, addTextLinks, depth + 1);\n }\n\n // No other types of nodes should be in the list item\n return [];\n }) ?? []\n );\n }) ?? [];\n\n// Takes ORDERED_LIST or BULLETED_LIST node and returns a string representation of it\nexport const parseListNode = (node: Node, delimiter: string, addTextLinks: boolean): string =>\n listNodeToLines(node, addTextLinks).join(delimiter);\n\nconst addLinksToText = (text: string, linkDecorations: RangedDecoration[] = []) =>\n linkDecorations\n .sort((a, b) => a.end - b.end)\n .reduce(\n (newText, link) =>\n insertInText(\n newText,\n link.end + newText.length - text.length + 1,\n `(${link.linkData?.link?.url})`\n ),\n text\n );\n\nconst insertInText = (text: string, pos: number, insertedText: string) =>\n text.substring(0, pos) + insertedText + text.substring(pos);\n\nconst removeTrailingNewLine = (text: string) =>\n text.endsWith('\\n') ? text.substring(0, text.length - 1) : text;\n\n/**\n * Normalizes adjacent whitespace sequences containing both regular spaces and nbsp.\n * - \" \\u00A0\" (space + nbsp) → \"\\u00A0\" (single nbsp)\n * - \"\\u00A0 \" (nbsp + space) → \"\\u00A0\" (single nbsp)\n * - Standalone nbsp is preserved: \"word\\u00A0word\" stays unchanged\n *\n * We keep nbsp (not regular space) to preserve the non-breaking behavior.\n */\nconst normalizeAdjacentWhitespace = (text: string): string =>\n text.replace(/ \\u00A0/g, '\\u00A0').replace(/\\u00A0 /g, '\\u00A0');\n\nconst getImagePlainTextUrl = (src: FileSource = {}) => {\n const id = src.id || src.custom;\n\n if (id) {\n return `https://static.wixstatic.com/media/${id.replace('media/', '')}`;\n }\n\n return src.url || '';\n};\n\nexport function* parseImage({ imageData }: Node, delimiter: string): ToPlainTextGenerator {\n const { caption } = imageData || {};\n const { src } = imageData?.image || {};\n const imageUrl = getImagePlainTextUrl(src);\n\n if (!imageUrl) {\n return caption || '';\n }\n\n const url = yield {\n command: 'getImageUrl',\n data: imageUrl,\n };\n return [caption, url].filter(Boolean).join(delimiter);\n}\n\nexport const getDefaultVideoUrl = (fileId: string) => `https://video.wixstatic.com/${fileId}`;\nexport const getDefaultAudioUrl = (fileId: string) => `https://static.wixstatic.com/${fileId}`;\n\nexport function* parseVideo({ videoData }: Node, delimiter: string): ToPlainTextGenerator {\n const { video, title } = videoData || {};\n const { custom, id, url } = video?.src || {};\n const vidId = id || custom;\n const vidUrl = url || '';\n\n let videoUrl: string;\n if (vidId) {\n videoUrl = yield {\n command: 'getVideoUrl',\n data: vidId,\n };\n } else {\n videoUrl = yield {\n command: 'getVideoEmbeddedUrl',\n data: vidUrl,\n };\n }\n return title ? title + delimiter + videoUrl : videoUrl;\n}\n\nexport function* parseAudio({ audioData }: Node, delimiter: string): ToPlainTextGenerator {\n const { audio, name } = audioData || {};\n const { id, url } = audio?.src || {};\n\n let audioUrl = url || '';\n if (id) {\n audioUrl = yield {\n command: 'getAudioUrl',\n data: id,\n };\n }\n\n return name ? name + delimiter + audioUrl : audioUrl;\n}\n\nexport function* parseGiphy({ gifData }: Node): ToPlainTextGenerator {\n let gifUrl = gifData?.original?.gif || '';\n if (gifUrl) {\n gifUrl = yield {\n command: 'getGifUrl',\n data: gifUrl,\n };\n }\n\n return gifUrl;\n}\n\nexport const parseAppEmbed = ({ appEmbedData }: Node, delimiter: string): string => {\n const { url, name } = appEmbedData || {};\n return [name, url].filter(Boolean).join(delimiter);\n};\n\nexport const parseLinkPreview = ({ linkPreviewData }: Node): string => {\n const { url } = linkPreviewData?.link || {};\n return url || '';\n};\n\nexport const parseEmbed = ({ embedData }: Node, delimiter?: string): string => {\n return [embedData?.oembed?.title, embedData?.src].filter(Boolean).join(delimiter);\n};\n","import type { Node } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type, RichContent } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { getParagraphNode } from '../../draft/toDraft/decoration-parsers.js';\nimport type { ToPlainTextGenerator } from './convert-nodes.js';\nimport {\n parseAppEmbed,\n parseAudio,\n parseEmbed,\n parseGiphy,\n parseImage,\n parseLinkPreview,\n parseListNode,\n parseTextNodes,\n parseVideo,\n} from './convert-nodes.js';\n\n// We are having this function here instead of './convertNodes' to avoid circular dependency\nfunction* parseCollapsible(node: Node, delimiter?: string) {\n const collapsibleTextNodes: string[] = [];\n\n // oxlint-disable-next-line fp/no-loops\n for (const child of node.nodes ?? []) {\n const [first, second] = child.nodes ?? [];\n if (!first || !second) {\n continue;\n }\n collapsibleTextNodes.push(\n [yield* toPlainTextBase(first), yield* toPlainTextBase(second)].join(delimiter)\n );\n }\n\n return collapsibleTextNodes.join(delimiter);\n}\n\n/*\n * This function is used to convert a RichContent to plain text.\n * It is a generator function that yields the following commands:\n * - getImageUrl: returns the image url\n * - getVideoUrl: returns the video url\n * - getAudioUrl: returns the audio url\n * It also receives a delimiter string that is used to separate the different nodes.\n * The default delimiter is a new line.\n * The function returns a string that is the plain text representation of the RichContent.\n *\n * It's a generator function because it needs to yield the commands to get the urls of the\n * media which can be both sync and async.\n */\nexport function* toPlainTextBase(\n content: RichContent,\n delimiter = '\\n',\n addLinksToText = true\n): ToPlainTextGenerator {\n const ricosContent = RichContent.fromJSON(content);\n const { nodes = [] } = ricosContent;\n let plainText = '';\n let index = 0;\n\n while (nodes.length) {\n const node = nodes.shift();\n if (node) {\n if (index > 0) {\n plainText += delimiter;\n }\n index++;\n switch (node.type) {\n case Node_Type.CODE_BLOCK:\n case Node_Type.PARAGRAPH:\n case Node_Type.HEADING:\n plainText += parseTextNodes(node, addLinksToText);\n break;\n case Node_Type.BLOCKQUOTE:\n plainText += parseTextNodes(getParagraphNode(node), addLinksToText);\n break;\n case Node_Type.ORDERED_LIST:\n case Node_Type.BULLETED_LIST:\n case Node_Type.CHECKBOX_LIST:\n plainText += parseListNode(node, delimiter, addLinksToText);\n break;\n case Node_Type.GIF:\n plainText += yield* parseGiphy(node);\n break;\n case Node_Type.APP_EMBED:\n plainText += parseAppEmbed(node, delimiter);\n break;\n case Node_Type.LINK_PREVIEW:\n plainText += parseLinkPreview(node);\n break;\n case Node_Type.EMBED:\n plainText += parseEmbed(node);\n break;\n case Node_Type.IMAGE:\n plainText += yield* parseImage(node, delimiter);\n break;\n case Node_Type.VIDEO:\n plainText += yield* parseVideo(node, delimiter);\n break;\n case Node_Type.AUDIO:\n plainText += yield* parseAudio(node, delimiter);\n break;\n case Node_Type.COLLAPSIBLE_LIST:\n plainText += yield* parseCollapsible(node, delimiter);\n break;\n case Node_Type.LAYOUT: {\n const layoutCellsContent = node.nodes.map(cell => cell.nodes).flat();\n nodes.unshift(...layoutCellsContent);\n index--; // we are actually adding nodes to the list, so we need to decrease the index which was increased before\n break;\n }\n default:\n }\n }\n }\n\n return plainText;\n}\n","import type { RichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { Node_Type } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { initializeMetadata } from '../converters/node-utils.js';\n\n/**\n * Initializes an empty `RichContent` object\n * @param metadata Optional metadata params\n * @returns Empty `RichContent` object\n */\nexport const createEmptyContent: (\n metadata?: Parameters<typeof initializeMetadata>[0]\n) => RichContent = metadata => ({\n nodes: [\n {\n type: Node_Type.PARAGRAPH,\n id: 'foo',\n nodes: [],\n },\n ],\n metadata: initializeMetadata(metadata),\n});\n","export { ensureContentId } from '../RicosContentAPI/metadata-utils.js';\n","import type { RichContent } from './../../ricos-schema/legacy/wix/rich_content/v1/index.js';\nimport { cloneDeep } from './../../_shared/clone-deep.js';\nimport { uuid } from './../../wix-rich-content-common/Utils/uuid.js';\n\nimport { initializeMetadata } from '../converters/node-utils.js';\nimport { createEmptyContent } from './create-empty-content.js';\n\nconst applyNewId = ({ metadata, ...rest }: RichContent): RichContent => ({\n ...rest,\n metadata: initializeMetadata({ ...(metadata || {}), id: uuid() }),\n});\n\n/**\n * Duplicates `RichContent` object, and assigning a newly generated `id`\n * @param content = `RichContent` object\n * @returns Cloned object with new `id`\n */\nexport const duplicate = (content: RichContent): RichContent => applyNewId(cloneDeep(content));\n\n/**\n * Ensure that a given `RichContent` object contains an id\n * by generating one (if not exist) or leaving it as is (if it does).\n * If no content is provided, an empty content with a new id is generated.\n * @param content (optional) `RichContent` object\n * @returns `RichContent` object with `id`\n */\nexport const ensureContentId = (content?: RichContent) => {\n if (!content) {\n return createEmptyContent();\n }\n if (content.metadata?.id) {\n return content;\n }\n return applyNewId(content);\n};\n\n/**\n * Extract `id` from content. If not exists, returns `undefined`\n * @param content `RichContent` object\n * @returns `id`\n */\nexport const extractIdFromContent = (content: RichContent) => content.metadata?.id;\n","export { toPlainTextSync } from '../converters/plainText/toPlainText/index.js';\n","export { toPlainTextSync } from './to-plain-text-sync.js';\n","import type { RichContent } from './../../../../ricos-schema/legacy/wix/rich_content/v1/index.js';\n\nimport { getDefaultAudioUrl, getDefaultVideoUrl } from './convert-nodes.js';\nimport { toPlainTextBase } from './to-plain-text-base.js';\n\ninterface PlainTextOptions {\n urlShortener?: (url: string) => string;\n getVideoUrl?: (fileId: string) => string;\n getVideoEmbeddedUrl?: (url: string) => string;\n getAudioUrl?: (fileId: string) => string;\n getGifUrl?: (url: string) => string;\n addLinksToText?: boolean;\n delimiter?: string;\n}\n\nexport const toPlainTextSync = (content: RichContent, options: PlainTextOptions = {}) => {\n const gen = toPlainTextBase(content, options.delimiter, options.addLinksToText);\n let next = gen.next();\n\n while (!next.done) {\n switch (next.value.command) {\n case 'getImageUrl': {\n const url = options.urlShortener\n ? options.urlShortener?.(next.value.data)\n : next.value.data;\n next = gen.next(url);\n break;\n }\n case 'getVideoUrl': {\n const url = options.getVideoUrl\n ? options.getVideoUrl(next.value.data)\n : getDefaultVideoUrl(next.value.data);\n next = gen.next(url);\n break;\n }\n case 'getVideoEmbeddedUrl': {\n const url = options.getVideoEmbeddedUrl\n ? options.getVideoEmbeddedUrl(next.value.data)\n : next.value.data;\n next = gen.next(url);\n break;\n }\n case 'getAudioUrl': {\n const url = options.getAudioUrl\n ? options.getAudioUrl(next.value.data)\n : getDefaultAudioUrl(next.value.data);\n next = gen.next(url);\n break;\n }\n case 'getGifUrl': {\n const url = options.getGifUrl ? options.getGifUrl(next.value.data) : next.value.data;\n next = gen.next(url);\n break;\n }\n default:\n return '';\n }\n }\n\n return next.value;\n};\n"],"mappings":"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","names":["init_define_process_env","__esmMin","init_define_process_env","init_define_process_env","init_define_process_env","init_define_process_env","init_define_process_env","Animation_Type","EntranceEffect_Type","LoopEffect_Type","PointerEffect_Type","init_define_process_env","animation_TypeFromJSON","object","Animation_Type","animation_TypeToJSON","entranceEffect_TypeFromJSON","EntranceEffect_Type","entranceEffect_TypeToJSON","loopEffect_TypeFromJSON","LoopEffect_Type","loopEffect_TypeToJSON","pointerEffect_TypeFromJSON","PointerEffect_Type","pointerEffect_TypeToJSON","baseAnimation","Animation","message","EntranceAnimation","LoopAnimation","PointerEffect","obj","baseEntranceAnimation","EntranceEffect","baseEntranceEffect","baseLoopAnimation","LoopEffect","baseLoopEffect","basePointerEffect","init_define_process_env","TextStyle_TextAlignment","Link_Target","PluginContainerData_Alignment","PluginContainerData_Width_Type","Gradient_Type","init_define_process_env","textStyle_TextAlignmentFromJSON","object","TextStyle_TextAlignment","textStyle_TextAlignmentToJSON","link_TargetFromJSON","Link_Target","link_TargetToJSON","pluginContainerData_AlignmentFromJSON","PluginContainerData_Alignment","pluginContainerData_AlignmentToJSON","pluginContainerData_Width_TypeFromJSON","PluginContainerData_Width_Type","pluginContainerData_Width_TypeToJSON","gradient_TypeFromJSON","Gradient_Type","gradient_TypeToJSON","baseTextStyle","TextStyle","message","obj","baseLink","Link","Link_Rel","baseLink_Rel","basePluginContainerData","PluginContainerData","PluginContainerData_Width","PluginContainerData_Spoiler","PluginContainerData_Height","basePluginContainerData_Spoiler","basePluginContainerData_Width","basePluginContainerData_Height","baseFileSource","FileSource","baseMedia","Media","basePlaybackOptions","PlaybackOptions","baseOembed","Oembed","baseGradient","Gradient","_a","e","Gradient_Stop","baseGradient_Stop","init_define_process_env","baseAnchorData","AnchorData","object","message","obj","init_define_process_env","baseColorData","ColorData","object","message","obj","init_define_process_env","baseFontFamilyData","FontFamilyData","object","message","obj","init_define_process_env","FontSizeData_fontType","init_define_process_env","fontSizeData_fontTypeFromJSON","object","FontSizeData_fontType","fontSizeData_fontTypeToJSON","baseFontSizeData","FontSizeData","message","obj","init_define_process_env","baseLinkData","LinkData","object","message","Link","obj","init_define_process_env","baseMentionData","MentionData","object","message","obj","init_define_process_env","SketchData_Variant","init_define_process_env","sketchData_VariantFromJSON","object","SketchData_Variant","sketchData_VariantToJSON","baseSketchData","SketchData","message","obj","init_define_process_env","baseSpoilerData","SpoilerData","object","message","obj","init_define_process_env","baseBlockquoteData","BlockquoteData","object","message","Animation","obj","init_define_process_env","baseCaptionData","CaptionData","object","message","TextStyle","obj","init_define_process_env","CardData_ImageScaling_Scaling","CardData_ImagePosition_Position","CardData_Background_Type","init_define_process_env","cardData_ImageScaling_ScalingFromJSON","object","CardData_ImageScaling_Scaling","cardData_ImageScaling_ScalingToJSON","cardData_ImagePosition_PositionFromJSON","CardData_ImagePosition_Position","cardData_ImagePosition_PositionToJSON","cardData_Background_TypeFromJSON","CardData_Background_Type","cardData_Background_TypeToJSON","baseCardData","CardData","message","CardData_Background","CardData_BackgroundImage","obj","baseCardData_BackgroundImage","CardData_ImageScaling_Scaling","CardData_ImagePosition_Position","CardData_BackgroundImage","object","message","Media","cardData_ImageScaling_ScalingFromJSON","cardData_ImagePosition_PositionFromJSON","CardData_Background","obj","cardData_ImageScaling_ScalingToJSON","cardData_ImagePosition_PositionToJSON","baseCardData_Background","CardData_Background_Type","cardData_Background_TypeFromJSON","Gradient","cardData_Background_TypeToJSON","init_define_process_env","baseCodeBlockData","CodeBlockData","object","message","TextStyle","Animation","obj","init_define_process_env","baseHeadingData","HeadingData","object","message","TextStyle","Animation","obj","init_define_process_env","LayoutData_ImagePosition","LayoutData_ResponsivenessBehaviour","LayoutData_DesignTarget","LayoutData_VerticalAlignment_Alignment","LayoutData_ImageScaling_Scaling","LayoutData_Banner_Position","LayoutData_Banner_Origin","LayoutData_Background_Type","LayoutData_Backdrop_Type","init_define_process_env","layoutData_ImagePositionFromJSON","object","LayoutData_ImagePosition","layoutData_ImagePositionToJSON","layoutData_ResponsivenessBehaviourFromJSON","LayoutData_ResponsivenessBehaviour","layoutData_ResponsivenessBehaviourToJSON","layoutData_DesignTargetFromJSON","LayoutData_DesignTarget","layoutData_DesignTargetToJSON","layoutData_VerticalAlignment_AlignmentFromJSON","LayoutData_VerticalAlignment_Alignment","layoutData_VerticalAlignment_AlignmentToJSON","layoutData_ImageScaling_ScalingFromJSON","LayoutData_ImageScaling_Scaling","layoutData_ImageScaling_ScalingToJSON","layoutData_Banner_PositionFromJSON","LayoutData_Banner_Position","layoutData_Banner_PositionToJSON","layoutData_Banner_OriginFromJSON","LayoutData_Banner_Origin","layoutData_Banner_OriginToJSON","layoutData_Background_TypeFromJSON","LayoutData_Background_Type","layoutData_Background_TypeToJSON","layoutData_Backdrop_TypeFromJSON","LayoutData_Backdrop_Type","layoutData_Backdrop_TypeToJSON","baseLayoutData","LayoutData","_a","message","LayoutData_BackgroundImage","e","PluginContainerData","LayoutData_Banner","LayoutData_Background","LayoutData_Backdrop","Animation","obj","baseLayoutData_BackgroundImage","LayoutData_ImageScaling_Scaling","LayoutData_ImagePosition","LayoutData_BackgroundImage","object","message","Media","layoutData_ImageScaling_ScalingFromJSON","layoutData_ImagePositionFromJSON","LayoutData_Background","obj","layoutData_ImageScaling_ScalingToJSON","layoutData_ImagePositionToJSON","baseLayoutData_Banner","LayoutData_Banner_Origin","LayoutData_Banner_Position","LayoutData_Banner","layoutData_Banner_OriginFromJSON","layoutData_Banner_PositionFromJSON","layoutData_Banner_OriginToJSON","layoutData_Banner_PositionToJSON","baseLayoutData_Background","LayoutData_Background_Type","layoutData_Background_TypeFromJSON","Gradient","layoutData_Background_TypeToJSON","baseLayoutData_Backdrop","LayoutData_Backdrop_Type","LayoutData_Backdrop","layoutData_Backdrop_TypeFromJSON","layoutData_Backdrop_TypeToJSON","init_define_process_env","baseLayoutCellData","LayoutCellData","object","message","obj","init_define_process_env","baseOrderedListData","OrderedListData","object","message","Animation","obj","baseBulletedListData","BulletedListData","baseCheckboxListData","CheckboxListData","baseListItemNodeData","ListItemNodeData","init_define_process_env","baseParagraphData","ParagraphData","object","message","TextStyle","Animation","obj","init_define_process_env","AppEmbedData_AppType","AppEmbedData_ImageStyles_Position","AppEmbedData_ImageStyles_AspectRatio","AppEmbedData_ImageStyles_Resizing","AppEmbedData_RibbonStyles_Placement","AppEmbedData_CardStyles_Type","AppEmbedData_CardStyles_Alignment","AppEmbedData_CardStyles_Layout","init_define_process_env","appEmbedData_AppTypeFromJSON","object","AppEmbedData_AppType","appEmbedData_AppTypeToJSON","appEmbedData_ImageStyles_PositionFromJSON","AppEmbedData_ImageStyles_Position","appEmbedData_ImageStyles_PositionToJSON","appEmbedData_ImageStyles_AspectRatioFromJSON","AppEmbedData_ImageStyles_AspectRatio","appEmbedData_ImageStyles_AspectRatioToJSON","appEmbedData_ImageStyles_ResizingFromJSON","AppEmbedData_ImageStyles_Resizing","appEmbedData_ImageStyles_ResizingToJSON","appEmbedData_RibbonStyles_PlacementFromJSON","AppEmbedData_RibbonStyles_Placement","appEmbedData_RibbonStyles_PlacementToJSON","appEmbedData_CardStyles_TypeFromJSON","AppEmbedData_CardStyles_Type","appEmbedData_CardStyles_TypeToJSON","appEmbedData_CardStyles_AlignmentFromJSON","AppEmbedData_CardStyles_Alignment","appEmbedData_CardStyles_AlignmentToJSON","appEmbedData_CardStyles_LayoutFromJSON","AppEmbedData_CardStyles_Layout","appEmbedData_CardStyles_LayoutToJSON","baseAppEmbedData","AppEmbedData","message","Media","AppEmbedData_BookingData","AppEmbedData_EventData","AppEmbedData_ButtonStyles","AppEmbedData_ImageStyles","AppEmbedData_RibbonStyles","AppEmbedData_CardStyles","PluginContainerData","AppEmbedData_PricingData","Animation","obj","baseAppEmbedData_ButtonStyles","baseAppEmbedData_ImageStyles","baseAppEmbedData_RibbonStyles","baseAppEmbedData_CardStyles","baseAppEmbedData_BookingData","baseAppEmbedData_EventData","baseAppEmbedData_PricingData","init_define_process_env","baseAudioData","AudioData","object","message","PluginContainerData","Media","Animation","obj","init_define_process_env","ButtonData_Type","ButtonData_Styles_Background_Type","init_define_process_env","buttonData_TypeFromJSON","object","ButtonData_Type","buttonData_TypeToJSON","buttonData_Styles_Background_TypeFromJSON","ButtonData_Styles_Background_Type","buttonData_Styles_Background_TypeToJSON","baseButtonData","ButtonData","message","PluginContainerData","ButtonData_Styles","Link","Animation","obj","baseButtonData_Styles","ButtonData_Styles_Border","ButtonData_Styles_Colors","ButtonData_Styles_Background","baseButtonData_Styles_Colors","baseButtonData_Styles_Border","baseButtonData_Styles_Background","Gradient","init_define_process_env","CollapsibleListData_InitialExpandedItems","CollapsibleListData_Direction","init_define_process_env","collapsibleListData_InitialExpandedItemsFromJSON","object","CollapsibleListData_InitialExpandedItems","collapsibleListData_InitialExpandedItemsToJSON","collapsibleListData_DirectionFromJSON","CollapsibleListData_Direction","collapsibleListData_DirectionToJSON","baseCollapsibleListData","CollapsibleListData","message","PluginContainerData","Animation","obj","init_define_process_env","DividerData_LineStyle","DividerData_Width","DividerData_Alignment","DividerData_Styles_LineCap","init_define_process_env","dividerData_LineStyleFromJSON","object","DividerData_LineStyle","dividerData_LineStyleToJSON","dividerData_WidthFromJSON","DividerData_Width","dividerData_WidthToJSON","dividerData_AlignmentFromJSON","DividerData_Alignment","dividerData_AlignmentToJSON","dividerData_Styles_LineCapFromJSON","DividerData_Styles_LineCap","dividerData_Styles_LineCapToJSON","baseDividerData","DividerData","message","PluginContainerData","DividerData_Styles","Animation","obj","baseDividerData_Styles","_a","e","init_define_process_env","baseEmbedData","EmbedData","object","message","PluginContainerData","Oembed","Animation","obj","init_define_process_env","FileData_PDFSettings_ViewMode","init_define_process_env","fileData_PDFSettings_ViewModeFromJSON","object","FileData_PDFSettings_ViewMode","fileData_PDFSettings_ViewModeToJSON","baseFileData","FileData","message","PluginContainerData","FileSource","FileData_PDFSettings","Animation","obj","baseFileData_PDFSettings","init_define_process_env","GalleryOptions_Layout_Type","GalleryOptions_Layout_Orientation","GalleryOptions_ItemStyle_Crop","GalleryOptions_Thumbnails_Alignment","init_define_process_env","galleryOptions_Layout_TypeFromJSON","object","GalleryOptions_Layout_Type","galleryOptions_Layout_TypeToJSON","galleryOptions_Layout_OrientationFromJSON","GalleryOptions_Layout_Orientation","galleryOptions_Layout_OrientationToJSON","galleryOptions_ItemStyle_CropFromJSON","GalleryOptions_ItemStyle_Crop","galleryOptions_ItemStyle_CropToJSON","galleryOptions_Thumbnails_AlignmentFromJSON","GalleryOptions_Thumbnails_Alignment","galleryOptions_Thumbnails_AlignmentToJSON","baseGalleryOptions","GalleryOptions","message","GalleryOptions_Layout","GalleryOptions_ItemStyle","GalleryOptions_Thumbnails","obj","baseGalleryOptions_Layout","baseGalleryOptions_ItemStyle","baseGalleryOptions_Thumbnails","baseGalleryData","GalleryData","_a","PluginContainerData","e","GalleryData_Item","Animation","baseGalleryData_Item","GalleryData_Item_Image","GalleryData_Item_Video","baseGalleryData_Item_Video","Media","baseGalleryData_Item_Image","Link","init_define_process_env","GIFData_GIFType","init_define_process_env","gIFData_GIFTypeFromJSON","object","GIFData_GIFType","gIFData_GIFTypeToJSON","baseGIFData","GIFData","message","PluginContainerData","GIF","Animation","obj","baseGIF","init_define_process_env","HTMLData_Source","init_define_process_env","hTMLData_SourceFromJSON","object","HTMLData_Source","hTMLData_SourceToJSON","baseHTMLData","HTMLData","message","PluginContainerData","Animation","obj","init_define_process_env","baseImageData","ImageData","object","message","PluginContainerData","Media","Link","ImageData_Styles","ImageData_Crop","Animation","obj","baseImageData_Styles","ImageData_Styles_Border","baseImageData_Styles_Border","baseImageData_Crop","init_define_process_env","LinkPreviewData_Styles_Position","init_define_process_env","linkPreviewData_Styles_PositionFromJSON","object","LinkPreviewData_Styles_Position","linkPreviewData_Styles_PositionToJSON","baseLinkPreviewData","LinkPreviewData","message","PluginContainerData","Link","LinkPreviewData_Styles","Animation","obj","baseLinkPreviewData_Styles","init_define_process_env","MapType","init_define_process_env","mapTypeFromJSON","object","MapType","mapTypeToJSON","baseMapData","MapData","message","PluginContainerData","MapSettings","obj","baseMapSettings","init_define_process_env","PollData_Poll_Settings_Permissions_ViewRole","PollData_Poll_Settings_Permissions_VoteRole","PollData_Layout_PollLayout_Type","PollData_Layout_PollLayout_Direction","PollData_Design_PollDesign_Background_Type","init_define_process_env","pollData_Poll_Settings_Permissions_ViewRoleFromJSON","object","PollData_Poll_Settings_Permissions_ViewRole","pollData_Poll_Settings_Permissions_ViewRoleToJSON","pollData_Poll_Settings_Permissions_VoteRoleFromJSON","PollData_Poll_Settings_Permissions_VoteRole","pollData_Poll_Settings_Permissions_VoteRoleToJSON","pollData_Layout_PollLayout_TypeFromJSON","PollData_Layout_PollLayout_Type","pollData_Layout_PollLayout_TypeToJSON","pollData_Layout_PollLayout_DirectionFromJSON","PollData_Layout_PollLayout_Direction","pollData_Layout_PollLayout_DirectionToJSON","pollData_Design_PollDesign_Background_TypeFromJSON","PollData_Design_PollDesign_Background_Type","pollData_Design_PollDesign_Background_TypeToJSON","basePollData","PollData","message","PluginContainerData","PollData_Poll","PollData_Layout","PollData_Design","Animation","obj","basePollData_Poll","_a","Media","e","PollData_Poll_Option","PollData_Poll_Settings","basePollData_Poll_Option","basePollData_Poll_Settings","PollData_Poll_Settings_Permissions","basePollData_Poll_Settings_Permissions","basePollData_Layout","PollData_Layout_PollLayout","PollData_Layout_OptionLayout","basePollData_Layout_PollLayout","basePollData_Layout_OptionLayout","basePollData_Design","PollData_Design_PollDesign","PollData_Design_OptionDesign","basePollData_Design_PollDesign","PollData_Design_PollDesign_Background","basePollData_Design_PollDesign_Background","PollData_Design_PollDesign_Background_Gradient","basePollData_Design_PollDesign_Background_Gradient","basePollData_Design_OptionDesign","init_define_process_env","baseShapeData","ShapeData","object","message","PluginContainerData","Media","ShapeData_Styles","Animation","Link","obj","baseShapeData_Styles","_a","acc","key","value","k","v","init_define_process_env","SmartBlockData_Type","SmartBlockData_ColumnSize","init_define_process_env","smartBlockData_TypeFromJSON","object","SmartBlockData_Type","smartBlockData_TypeToJSON","smartBlockData_ColumnSizeFromJSON","SmartBlockData_ColumnSize","smartBlockData_ColumnSizeToJSON","baseSmartBlockData","SmartBlockData","message","Animation","obj","baseSmartBlockCellData","SmartBlockCellData","Media","init_define_process_env","baseTableData","TableData","object","_a","message","PluginContainerData","TableData_Dimensions","e","Animation","obj","baseTableData_Dimensions","_b","_c","init_define_process_env","TableCellData_VerticalAlignment","init_define_process_env","tableCellData_VerticalAlignmentFromJSON","object","TableCellData_VerticalAlignment","tableCellData_VerticalAlignmentToJSON","baseTableCellData","TableCellData","message","TableCellData_CellStyle","TableCellData_BorderColors","TableCellData_BorderWidths","obj","baseTableCellData_CellStyle","baseTableCellData_BorderColors","baseTableCellData_BorderWidths","init_define_process_env","TocData_ListStyle","TocData_Indentation","init_define_process_env","tocData_ListStyleFromJSON","object","TocData_ListStyle","tocData_ListStyleToJSON","tocData_IndentationFromJSON","TocData_Indentation","tocData_IndentationToJSON","baseTocData","TocData","_a","message","e","Animation","obj","init_define_process_env","baseVideoData","VideoData","object","message","PluginContainerData","Media","PlaybackOptions","Animation","obj","init_define_process_env","Node_Type","Decoration_Type","init_define_process_env","init_define_process_env","baseTimestamp","Timestamp","object","message","obj","init_define_process_env","init_define_process_env","NullValue","nullValueFromJSON","object","NullValue","nullValueToJSON","baseStruct","Struct","_a","message","acc","key","value","Value","obj","k","v","baseValue","Value","object","message","nullValueFromJSON","Struct","ListValue","obj","nullValueToJSON","baseListValue","_a","e","node_TypeFromJSON","object","Node_Type","node_TypeToJSON","decoration_TypeFromJSON","Decoration_Type","decoration_TypeToJSON","baseRichContent","RichContent","_a","message","e","Node","Metadata","DocumentStyle","obj","baseNode","NodeStyle","ButtonData","CodeBlockData","DividerData","FileData","GalleryData","GIFData","HeadingData","HTMLData","ImageData","LinkPreviewData","MapData","ParagraphData","PollData","TextData","AppEmbedData","VideoData","EmbedData","CollapsibleListData","TableData","TableCellData","Struct","AudioData","OrderedListData","BulletedListData","BlockquoteData","CaptionData","LayoutData","LayoutCellData","ShapeData","CardData","TocData","SmartBlockData","SmartBlockCellData","CheckboxListData","ListItemNodeData","baseNodeStyle","baseTextData","Decoration","baseDecoration","AnchorData","ColorData","LinkData","MentionData","FontSizeData","SpoilerData","FontFamilyData","SketchData","baseMetadata","fromJsonTimestamp","baseTextNodeStyle","TextNodeStyle","baseDocumentStyle","fromTimestamp","millis","o","Timestamp","LATEST_VERSION","init_define_process_env","init_define_process_env","RichContent","content","init_define_process_env","omitKeys","obj","keys","key","init_define_process_env","fromEntries","iterable","obj","key","val","init_define_process_env","HEADER_BLOCK","LINK_BUTTON_TYPE","ACTION_BUTTON_TYPE","DIVIDER_TYPE","FILE_UPLOAD_TYPE","GALLERY_TYPE","GIPHY_TYPE","HTML_TYPE","IMAGE_TYPE","IMAGE_TYPE_LEGACY","SPOILER_TYPE","COLLAPSIBLE_LIST_TYPE","LINK_TYPE","LINK_PREVIEW_TYPE","MENTION_TYPE","APP_EMBED_TYPE","VIDEO_TYPE","AUDIO_TYPE","VIDEO_TYPE_LEGACY","POLL_TYPE","TABLE_TYPE","ANCHOR_TYPE","EMBED_TYPE","EXTERNAL","TIPTAP_DIVIDER_TYPE","Node_Type","TIPTAP_IMAGE_TYPE","Node_Type","TIPTAP_CAPTION_TYPE","TIPTAP_GALLERY_TYPE","TIPTAP_FILE_TYPE","TIPTAP_GIF_TYPE","TIPTAP_VIDEO_TYPE","TIPTAP_AUDIO_TYPE","TIPTAP_LINK_PREVIEW_TYPE","TIPTAP_EMBED_TYPE","TIPTAP_POLL_TYPE","TIPTAP_APP_EMBED_TYPE","TIPTAP_COLLAPSIBLE_LIST_TYPE","TIPTAP_COLLAPSIBLE_ITEM_TYPE","TIPTAP_COLLAPSIBLE_ITEM_TITLE_TYPE","TIPTAP_COLLAPSIBLE_ITEM_BODY_TYPE","TIPTAP_HTML_TYPE","TIPTAP_CODE_BLOCK_TYPE","Node_Type","TIPTAP_TABLE_TYPE","TIPTAP_TABLE_ROW_TYPE","TIPTAP_TABLE_CELL_TYPE","TIPTAP_LAYOUT_TYPE","Node_Type","TIPTAP_LAYOUT_CELL_TYPE","TIPTAP_SHAPE_TYPE","TIPTAP_CARD_TYPE","RICOS_NODE_TYPE_TO_DATA_FIELD","Node_Type","init_define_process_env","uniqueIdCounter","generateId","prefix","key","init_define_process_env","init_define_process_env","init_define_process_env","init_define_process_env","init_define_process_env","init_define_process_env","eqStrict","a","b","strictEqual","eqStrict","compare","first","second","strictOrd","eqStrict","init_define_process_env","init_define_process_env","init_define_process_env","constant","a","semigroupVoid","constant","init_define_process_env","uuid","d","c","r","init_define_process_env","Eq","first","second","Semigroup","empty","Monoid","Ord","init_define_process_env","createNode","type","nodes","data","style","id","generateId","dataByNodeType","Node_Type","createParagraphNode","TextStyle_TextAlignment","createTextNode","text","decorations","initializeMetadata","version","id","uuid","createdTimestamp","updatedTimestamp","LATEST_VERSION","init_define_process_env","init_define_process_env","FROM_DRAFT_LIST_TYPE","Node_Type","TO_DRAFT_LIST_TYPE","fromEntries","key","value","TO_RICOS_NODE_TYPE","LINK_BUTTON_TYPE","ACTION_BUTTON_TYPE","DIVIDER_TYPE","FILE_UPLOAD_TYPE","GALLERY_TYPE","GIPHY_TYPE","HTML_TYPE","IMAGE_TYPE","IMAGE_TYPE_LEGACY","COLLAPSIBLE_LIST_TYPE","LINK_PREVIEW_TYPE","APP_EMBED_TYPE","VIDEO_TYPE","AUDIO_TYPE","VIDEO_TYPE_LEGACY","POLL_TYPE","TABLE_TYPE","EMBED_TYPE","EXTERNAL","DUPLICATE_KEYS","FROM_RICOS_ENTITY_TYPE","TO_RICOS_DECORATION_TYPE","Decoration_Type","SPOILER_TYPE","ANCHOR_TYPE","MENTION_TYPE","LINK_TYPE","TO_RICOS_INLINE_STYLE_TYPE","TO_RICOS_PLUGIN_TYPE","FROM_RICOS_DECORATION_TYPE","ENTITY_DECORATION_TO_MUTABILITY","DRAFT_BLOCK_TYPE_TO_DATA_FIELD","DRAFT_PLUGIN_TYPE_TO_DATA_FIELD","RICOS_NODE_TYPE_TO_DATA_FIELD","ENTITY_DECORATION_TO_DATA_FIELD","DECORATION_TO_DATA_FIELD","TO_RICOS_DECORATION_DATA_FIELD","TO_RICOS_DATA_FIELD","init_define_process_env","pipe","arg","fns","v","fn","mergeTextNodes","nodes","length","text","decorationMap","currNode","accText","currText","currDecorations","textLength","convertDecorationTypes","decoration","getParagraphNode","node","_a","_b","Node_Type","convertDecorationTypes","decorations","decoration","pipe","toDraftDecorationType","convertFontSize","convertFontWeight","convertItalic","convertUnderline","splitColorDecoration","toDraftDecorationType","decoration","type","omitKeys","FROM_RICOS_DECORATION_TYPE","Decoration_Type","splitColorDecoration","colorData","foreground","background","x","convertFontSize","fontSizeData","_a","_b","convertFontWeight","fontWeightValue","convertItalic","italicData","isItalicDataUndefined","convertUnderline","underlineData","isUnerlineDataUndefined","init_define_process_env","init_define_process_env","fromPlainText","text","content","paragraph","createParagraphNode","createTextNode","initializeMetadata","RichContent","init_define_process_env","init_define_process_env","parseTextNodes","node","addTextLinks","text","LINK_TYPE","linkDecorations","mergeTextNodes","normalizedText","normalizeAdjacentWhitespace","finalText","addLinksToText","removeTrailingNewLine","listNodeToLines","listNode","depth","_a","_b","listItemNode","listItemIndex","listItemNodeChild","index","Node_Type","parseListNode","delimiter","a","b","newText","link","insertInText","pos","insertedText","getImagePlainTextUrl","src","id","parseImage","imageData","caption","imageUrl","url","getDefaultVideoUrl","fileId","getDefaultAudioUrl","parseVideo","videoData","video","title","custom","vidId","vidUrl","videoUrl","parseAudio","audioData","audio","name","audioUrl","parseGiphy","gifData","gifUrl","parseAppEmbed","appEmbedData","parseLinkPreview","linkPreviewData","parseEmbed","embedData","init_define_process_env","parseCollapsible","node","delimiter","_a","_b","collapsibleTextNodes","child","first","second","toPlainTextBase","content","addLinksToText","ricosContent","RichContent","nodes","plainText","index","Node_Type","parseTextNodes","getParagraphNode","parseListNode","parseGiphy","parseAppEmbed","parseLinkPreview","parseEmbed","parseImage","parseVideo","parseAudio","layoutCellsContent","cell","toPlainText","content","options","_a","gen","toPlainTextBase","next","url","getDefaultVideoUrl","getDefaultAudioUrl","init_define_process_env","createEmptyContent","metadata","Node_Type","initializeMetadata","init_define_process_env","init_define_process_env","applyNewId","metadata","rest","initializeMetadata","uuid","ensureContentId","content","_a","applyNewId","createEmptyContent","init_define_process_env","init_define_process_env","init_define_process_env","toPlainTextSync","content","options","_a","gen","toPlainTextBase","next","url","getDefaultVideoUrl","getDefaultAudioUrl","ensureContentId","fromPlainText","toPlainText","toPlainTextSync"]}
|