@kong-ui-public/document-viewer 0.2.7 → 0.2.8
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-viewer.es.js","sources":["../src/components/nodes/Blockquote.vue","../src/components/nodes/Code.vue","../src/components/nodes/CodeBlock.vue","../src/components/nodes/Emphasis.vue","../src/components/nodes/Heading.vue","../src/components/nodes/LineBreak.vue","../src/components/nodes/Table.vue","../src/types/index.ts","../src/components/nodes/TableRow.vue","../src/components/nodes/TableCell.vue","../src/components/nodes/Text.vue","../src/components/nodes/TextBlock.vue","../src/components/nodes/Paragraph.vue","../src/components/nodes/List.vue","../src/components/nodes/ListItem.vue","../src/components/renderChildren.tsx","../src/components/DocumentViewer.vue"],"sourcesContent":["<template>\n <blockquote>\n <slot />\n </blockquote>\n</template>\n\n<style scoped>\nblockquote {\n background: var(--document-viewer-blockquote-background, #f8f8fa);\n border-left: 2.5px solid var(--document-viewer-blockquote-border, var(--text_colors-accent, #0b172d));\n border-radius: var(--document-viewer-blockquote-border-radius, 3px);\n font-size: 14px;\n margin: var(--spacing-sm, 12px) var(--spacing-sm, 12px);\n padding: var(--spacing-sm, 12px);\n}\n</style>\n","<template>\n <code>\n <slot />\n </code>\n</template>\n\n<style scoped>\ncode {\n background: var(--document-viewer-code-background, #f1f1f1);\n border-radius: var(--document-viewer-code-border-radius, 3px);\n color: var(--document-viewer-code-color, inherit);\n font-family: var(--document-viewer-code-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-font-size, 14px);\n padding: 4px 6px;\n}\n</style>\n","<template>\n <pre><code><slot /></code></pre>\n</template>\n\n<style scoped>\npre {\n background: var(--document-viewer-code-block-background, #f1f1f1);\n border-radius: var(--document-viewer-code-block-border-radius, 3px);\n color: var(--document-viewer-code-block-color, inherit);\n font-family: var(--document-viewer-code-block-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-block-font-size, 14px);\n margin-bottom: var(--spacing-sm, 12px);\n padding: 12px;\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n default: 1,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n return num > 0 && num < 3\n },\n },\n})\n\nconst tag = props.level === 1 ? 'em' : 'strong'\n</script>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n\n return num > 0 && num < 7\n },\n default: 1,\n },\n})\n\nconst tag = `h${props.level}`\n</script>\n\n<style scoped>\nh1, h2, h3, h4, h5, h6 {\n color: var(--document-viewer-color, var(--text_colors-headings, #0b172d));\n font-family: var(--document-viewer-font-family-headings, var(--document-viewer-font-family-default));\n font-weight: var(--document-viewer-heading-font-weight, 500);\n margin-top: 0;\n}\n\nh1 {\n font-size: 32px;\n font-weight: 500;\n line-height: 38px;\n margin-bottom: var(--spacing-xxl, 48px);\n}\n\nh2 {\n font-size: 24px;\n line-height: 20px;\n margin-bottom: var(--spacing-lg, 24px);\n}\n\nh3 {\n font-size: 20px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh4 {\n font-size: 18px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh5 {\n font-size: 16px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh6 {\n font-size: 14.5px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child {\n margin-top: 0;\n}\n</style>\n","<template>\n <hr />\n</template>\n","<template>\n <table>\n <slot />\n </table>\n</template>\n","/* eslint-disable no-unused-vars */\nexport interface BaseNode<Type extends string = string> {\n type: Type\n children?: Array<BaseNode>\n}\n\n// TODO: Reach out to DevX for a proper interface\nexport interface Document extends BaseNode<'document'> {\n children: Array<BaseNode>\n version: number\n}\n\nexport enum TableRowSection {\n header = 'header',\n body = 'body',\n footer = 'footer'\n}\n\nexport enum TableCellAlign {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport interface TableCellNode extends BaseNode<'table_cell'> {\n align?: TableCellAlign\n}\n\nexport interface TableRowNode extends BaseNode<'table_row'> {\n section?: TableRowSection\n children: Array<TableCellNode>\n}\n\nexport interface TextNode extends BaseNode<'text'> {\n text: string\n children: undefined\n hardBreak?: boolean\n}\n\nexport interface HeadingNode extends BaseNode<'heading'> {\n level: number\n}\n\nexport interface ListItemNode extends BaseNode<'list_item'> {}\n\nexport interface ListNode extends BaseNode<'list'> {\n isOrdered?: boolean\n children: Array<ListItemNode>\n}\n\nexport interface LinkNode extends BaseNode<'link'> {\n href: string\n}\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableRowSection } from '../../types'\n\nconst props = defineProps({\n section: {\n type: String as PropType<TableRowSection>,\n default: TableRowSection.body,\n },\n})\n\nlet tag: string\nif (props.section === TableRowSection.header) {\n tag = 'thead'\n} else if (props.section === TableRowSection.body) {\n tag = 'tbody'\n} else if (props.section === TableRowSection.footer) {\n tag = 'tfoot'\n}\n</script>\n","<template>\n <component\n :is=\"tag\"\n :class=\"className\"\n >\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableCellAlign, TableRowNode, TableRowSection } from '../../types'\n\nconst props = defineProps({\n align: {\n type: String as PropType<TableCellAlign>,\n default: TableCellAlign.left,\n },\n parent: {\n type: Object as PropType<TableRowNode>,\n required: true,\n },\n})\n\nconst tag = props.parent?.section === TableRowSection.header ? 'th' : 'td'\n\nlet className: string\nif (props.align === TableCellAlign.center) {\n className = 'align-center'\n} else if (props.align === TableCellAlign.right) {\n className = 'align-right'\n}\n</script>\n\n<style scoped>\nth, td {\n text-align: left;\n}\n\n.align-center {\n text-align: center;\n}\n\n.align-right {\n text-align: right;\n}\n</style>\n","<template>\n {{ text }}<br v-if=\"hardBreak\">\n</template>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n}\n</script>\n<script setup lang=\"ts\">\ndefineProps({\n text: {\n type: String,\n required: true,\n },\n hardBreak: {\n type: Boolean,\n default: false,\n },\n})\n</script>\n","<template>\n <span>\n <slot />\n </span>\n</template>\n","<template>\n <p>\n <slot />\n </p>\n</template>\n\n<style scoped>\np {\n font-size: 14px;\n line-height: 20px;\n margin: var(--document-viewer-paragraph-margin, 0 0 12px);\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n isOrdered: {\n type: Boolean,\n default: false,\n },\n})\n\nconst tag = props.isOrdered ? 'ol' : 'ul'\n</script>\n\n<style scoped>\nul, ol {\n font-size: 14px;\n margin-bottom: var(--spacing-sm, 12px);\n margin-left: 16px;\n padding: 0;\n}\n\nol {\n list-style: decimal;\n}\n\nul {\n list-style: disc;\n}\n</style>\n","<template>\n <li>\n <slot />\n </li>\n</template>\n","import { Component } from 'vue'\nimport { BaseNode } from '../types'\nimport Blockquote from './nodes/Blockquote.vue'\nimport Code from './nodes/Code.vue'\nimport CodeBlock from './nodes/CodeBlock.vue'\nimport Emphasis from './nodes/Emphasis.vue'\nimport Heading from './nodes/Heading.vue'\nimport Image from './nodes/Image.vue'\nimport LineBreak from './nodes/LineBreak.vue'\nimport Table from './nodes/Table.vue'\nimport TableRow from './nodes/TableRow.vue'\nimport TableCell from './nodes/TableCell.vue'\nimport Text from './nodes/Text.vue'\nimport TextBlock from './nodes/TextBlock.vue'\nimport Paragraph from './nodes/Paragraph.vue'\nimport List from './nodes/List.vue'\nimport ListItem from './nodes/ListItem.vue'\nimport Link from './nodes/Link.vue'\n\n// The node to component mapping is currently static but may change in the future\nconst nodeTypeToComponentMap: Record<string, Component> = {\n blockquote: Blockquote,\n code: Code,\n code_block: CodeBlock,\n emphasis: Emphasis,\n heading: Heading,\n image: Image,\n line_break: LineBreak,\n link: Link,\n list: List,\n list_item: ListItem,\n paragraph: Paragraph,\n table: Table,\n table_row: TableRow,\n table_cell: TableCell,\n text: Text,\n text_block: TextBlock,\n}\n\nconst nodeTypesNotified: Array<string> = []\nfunction notifyUnknownNodeType(type: string) {\n if (nodeTypesNotified.indexOf(type) !== -1) {\n return\n }\n\n nodeTypesNotified.push(type)\n console.warn(`[DocumentViewer] Unable to render an unknown node type \"${type}\"`)\n}\n\nexport default function renderChildren<ChildTypes extends BaseNode>(children: Array<ChildTypes>, parent?: BaseNode): Component {\n return children.map((child) => {\n if (!child) {\n return null\n }\n\n const { type, children, ...restProps } = child\n const component = nodeTypeToComponentMap[child.type]\n\n if (!component) {\n notifyUnknownNodeType(type)\n return null\n }\n\n return (\n <component {...restProps} parent={parent}>\n {() => children && renderChildren(children, child)}\n </component>\n )\n })\n}\n","<template>\n <div class=\"document-viewer\">\n <Children />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport renderChildren from './renderChildren'\n\nconst props = defineProps({\n document: {\n type: Object,\n required: true,\n },\n})\n\nconst Children = () => props.document?.children ? renderChildren(props.document.children) : null\n</script>\n\n<style>\n:root {\n --document-viewer-font-family-default: Roboto, Helvetica, sans-serif;\n --document-viewer-font-family-monospace: Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n}\n</style>\n<style scoped>\n.document-viewer {\n color: var(--document-viewer-color, var(--text_colors-primary, #0b172d));\n font-family: var(--document-viewer-font-family-default, var(--font-family-sans));\n font-size: var(--document-viewer-font-size, 16px);\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","tag","TableRowSection","TableCellAlign","props","_a","className","__default__","nodeTypeToComponentMap","blockquote","Blockquote","code","Code","code_block","CodeBlock","emphasis","Emphasis","heading","Heading","image","Image","line_break","LineBreak","link","Link","list","List","list_item","ListItem","paragraph","Paragraph","table","Table","table_row","TableRow","table_cell","TableCell","text","Text","text_block","TextBlock","nodeTypesNotified","notifyUnknownNodeType","type","indexOf","push","console","warn","renderChildren","children","parent","map","child","restProps","component","_createVNode","_mergeProps","Children"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-viewer.es.js","sources":["../src/components/nodes/Blockquote.vue","../src/components/nodes/Code.vue","../src/components/nodes/CodeBlock.vue","../src/components/nodes/Emphasis.vue","../src/components/nodes/Heading.vue","../src/components/nodes/LineBreak.vue","../src/components/nodes/Table.vue","../src/types/index.ts","../src/components/nodes/TableRow.vue","../src/components/nodes/TableCell.vue","../src/components/nodes/Text.vue","../src/components/nodes/TextBlock.vue","../src/components/nodes/Paragraph.vue","../src/components/nodes/List.vue","../src/components/nodes/ListItem.vue","../src/components/renderChildren.tsx","../src/components/DocumentViewer.vue"],"sourcesContent":["<template>\n <blockquote>\n <slot />\n </blockquote>\n</template>\n\n<style scoped>\nblockquote {\n background: var(--document-viewer-blockquote-background, #f8f8fa);\n border-left: 2.5px solid var(--document-viewer-blockquote-border, var(--text_colors-accent, #0b172d));\n border-radius: var(--document-viewer-blockquote-border-radius, 3px);\n font-size: 14px;\n margin: var(--spacing-sm, 12px) var(--spacing-sm, 12px);\n padding: var(--spacing-sm, 12px);\n}\n</style>\n","<template>\n <code>\n <slot />\n </code>\n</template>\n\n<style scoped>\ncode {\n background: var(--document-viewer-code-background, #f1f1f1);\n border-radius: var(--document-viewer-code-border-radius, 3px);\n color: var(--document-viewer-code-color, inherit);\n font-family: var(--document-viewer-code-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-font-size, 14px);\n padding: 4px 6px;\n}\n</style>\n","<template>\n <pre><code><slot /></code></pre>\n</template>\n\n<style scoped>\npre {\n background: var(--document-viewer-code-block-background, #f1f1f1);\n border-radius: var(--document-viewer-code-block-border-radius, 3px);\n color: var(--document-viewer-code-block-color, inherit);\n font-family: var(--document-viewer-code-block-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-block-font-size, 14px);\n margin-bottom: var(--spacing-sm, 12px);\n padding: 12px;\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n default: 1,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n return num > 0 && num < 3\n },\n },\n})\n\nconst tag = props.level === 1 ? 'em' : 'strong'\n</script>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n\n return num > 0 && num < 7\n },\n default: 1,\n },\n})\n\nconst tag = `h${props.level}`\n</script>\n\n<style scoped>\nh1, h2, h3, h4, h5, h6 {\n color: var(--document-viewer-color, var(--text_colors-headings, #0b172d));\n font-family: var(--document-viewer-font-family-headings, var(--document-viewer-font-family-default));\n font-weight: var(--document-viewer-heading-font-weight, 500);\n margin-top: 0;\n}\n\nh1 {\n font-size: 32px;\n font-weight: 500;\n line-height: 38px;\n margin-bottom: var(--spacing-xxl, 48px);\n}\n\nh2 {\n font-size: 24px;\n line-height: 20px;\n margin-bottom: var(--spacing-lg, 24px);\n}\n\nh3 {\n font-size: 20px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh4 {\n font-size: 18px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh5 {\n font-size: 16px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh6 {\n font-size: 14.5px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child {\n margin-top: 0;\n}\n</style>\n","<template>\n <hr>\n</template>\n","<template>\n <table>\n <slot />\n </table>\n</template>\n","/* eslint-disable no-unused-vars */\nexport interface BaseNode<Type extends string = string> {\n type: Type\n children?: Array<BaseNode>\n}\n\n// TODO: Reach out to DevX for a proper interface\nexport interface Document extends BaseNode<'document'> {\n children: Array<BaseNode>\n version: number\n}\n\nexport enum TableRowSection {\n header = 'header',\n body = 'body',\n footer = 'footer'\n}\n\nexport enum TableCellAlign {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport interface TableCellNode extends BaseNode<'table_cell'> {\n align?: TableCellAlign\n}\n\nexport interface TableRowNode extends BaseNode<'table_row'> {\n section?: TableRowSection\n children: Array<TableCellNode>\n}\n\nexport interface TextNode extends BaseNode<'text'> {\n text: string\n children: undefined\n hardBreak?: boolean\n}\n\nexport interface HeadingNode extends BaseNode<'heading'> {\n level: number\n}\n\nexport interface ListItemNode extends BaseNode<'list_item'> {}\n\nexport interface ListNode extends BaseNode<'list'> {\n isOrdered?: boolean\n children: Array<ListItemNode>\n}\n\nexport interface LinkNode extends BaseNode<'link'> {\n href: string\n}\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableRowSection } from '../../types'\n\nconst props = defineProps({\n section: {\n type: String as PropType<TableRowSection>,\n default: TableRowSection.body,\n },\n})\n\nlet tag: string\nif (props.section === TableRowSection.header) {\n tag = 'thead'\n} else if (props.section === TableRowSection.body) {\n tag = 'tbody'\n} else if (props.section === TableRowSection.footer) {\n tag = 'tfoot'\n}\n</script>\n","<template>\n <component\n :is=\"tag\"\n :class=\"className\"\n >\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableCellAlign, TableRowNode, TableRowSection } from '../../types'\n\nconst props = defineProps({\n align: {\n type: String as PropType<TableCellAlign>,\n default: TableCellAlign.left,\n },\n parent: {\n type: Object as PropType<TableRowNode>,\n required: true,\n },\n})\n\nconst tag = props.parent?.section === TableRowSection.header ? 'th' : 'td'\n\nlet className: string\nif (props.align === TableCellAlign.center) {\n className = 'align-center'\n} else if (props.align === TableCellAlign.right) {\n className = 'align-right'\n}\n</script>\n\n<style scoped>\nth, td {\n text-align: left;\n}\n\n.align-center {\n text-align: center;\n}\n\n.align-right {\n text-align: right;\n}\n</style>\n","<template>\n {{ text }}<br v-if=\"hardBreak\">\n</template>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n}\n</script>\n<script setup lang=\"ts\">\ndefineProps({\n text: {\n type: String,\n required: true,\n },\n hardBreak: {\n type: Boolean,\n default: false,\n },\n})\n</script>\n","<template>\n <span>\n <slot />\n </span>\n</template>\n","<template>\n <p>\n <slot />\n </p>\n</template>\n\n<style scoped>\np {\n font-size: 14px;\n line-height: 20px;\n margin: var(--document-viewer-paragraph-margin, 0 0 12px);\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n isOrdered: {\n type: Boolean,\n default: false,\n },\n})\n\nconst tag = props.isOrdered ? 'ol' : 'ul'\n</script>\n\n<style scoped>\nul, ol {\n font-size: 14px;\n margin-bottom: var(--spacing-sm, 12px);\n margin-left: 16px;\n padding: 0;\n}\n\nol {\n list-style: decimal;\n}\n\nul {\n list-style: disc;\n}\n</style>\n","<template>\n <li>\n <slot />\n </li>\n</template>\n","import { Component } from 'vue'\nimport { BaseNode } from '../types'\nimport Blockquote from './nodes/Blockquote.vue'\nimport Code from './nodes/Code.vue'\nimport CodeBlock from './nodes/CodeBlock.vue'\nimport Emphasis from './nodes/Emphasis.vue'\nimport Heading from './nodes/Heading.vue'\nimport Image from './nodes/Image.vue'\nimport LineBreak from './nodes/LineBreak.vue'\nimport Table from './nodes/Table.vue'\nimport TableRow from './nodes/TableRow.vue'\nimport TableCell from './nodes/TableCell.vue'\nimport Text from './nodes/Text.vue'\nimport TextBlock from './nodes/TextBlock.vue'\nimport Paragraph from './nodes/Paragraph.vue'\nimport List from './nodes/List.vue'\nimport ListItem from './nodes/ListItem.vue'\nimport Link from './nodes/Link.vue'\n\n// The node to component mapping is currently static but may change in the future\nconst nodeTypeToComponentMap: Record<string, Component> = {\n blockquote: Blockquote,\n code: Code,\n code_block: CodeBlock,\n emphasis: Emphasis,\n heading: Heading,\n image: Image,\n line_break: LineBreak,\n link: Link,\n list: List,\n list_item: ListItem,\n paragraph: Paragraph,\n table: Table,\n table_row: TableRow,\n table_cell: TableCell,\n text: Text,\n text_block: TextBlock,\n}\n\nconst nodeTypesNotified: Array<string> = []\nfunction notifyUnknownNodeType(type: string) {\n if (nodeTypesNotified.indexOf(type) !== -1) {\n return\n }\n\n nodeTypesNotified.push(type)\n console.warn(`[DocumentViewer] Unable to render an unknown node type \"${type}\"`)\n}\n\nexport default function renderChildren<ChildTypes extends BaseNode>(children: Array<ChildTypes>, parent?: BaseNode): Component {\n return children.map((child) => {\n if (!child) {\n return null\n }\n\n const { type, children, ...restProps } = child\n const component = nodeTypeToComponentMap[child.type]\n\n if (!component) {\n notifyUnknownNodeType(type)\n return null\n }\n\n return (\n <component {...restProps} parent={parent}>\n {() => children && renderChildren(children, child)}\n </component>\n )\n })\n}\n","<template>\n <div class=\"document-viewer\">\n <Children />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport renderChildren from './renderChildren'\n\nconst props = defineProps({\n document: {\n type: Object,\n required: true,\n },\n})\n\nconst Children = () => props.document?.children ? renderChildren(props.document.children) : null\n</script>\n\n<style>\n:root {\n --document-viewer-font-family-default: Roboto, Helvetica, sans-serif;\n --document-viewer-font-family-monospace: Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n}\n</style>\n<style scoped>\n.document-viewer {\n color: var(--document-viewer-color, var(--text_colors-primary, #0b172d));\n font-family: var(--document-viewer-font-family-default, var(--font-family-sans));\n font-size: var(--document-viewer-font-size, 16px);\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","tag","TableRowSection","TableCellAlign","props","_a","className","__default__","nodeTypeToComponentMap","blockquote","Blockquote","code","Code","code_block","CodeBlock","emphasis","Emphasis","heading","Heading","image","Image","line_break","LineBreak","link","Link","list","List","list_item","ListItem","paragraph","Paragraph","table","Table","table_row","TableRow","table_cell","TableCell","text","Text","text_block","TextBlock","nodeTypesNotified","notifyUnknownNodeType","type","indexOf","push","console","warn","renderChildren","children","parent","map","child","restProps","component","_createVNode","_mergeProps","Children"],"mappings":";;;;;;;cAGeA,GAAA;SADHC,EAAA,GAAAC,EAAA,cAAA,MAAA;AAAA;;;;;cCCHF,GAAA;SADGC,EAAA,GAAAC,EAAA,QAAA,MAAA;AAAA;;;;;cCDsBF,GAAA;SAANC,EAAA,GAAAC,EAAA,OAAA,MAAA;AAAA,MAAP,QAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;ACqBrB,UAAMC,MAAY,UAAU,IAAI,OAAO;;;;;;;;;;;;;;;;;;;;;;;ACCjC,UAAAA,IAAM,MAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCtBhBH,GAAA;;;;cCEIA,GAAA;SADEC,EAAA,GAAAC,EAAA,SAAA,MAAA;AAAA;;;;ACUA,IAAAE,sBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,SAAS,UACTA,EAAA,QAAQ,SAHEA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;;;ACDR,QAAAF;AACA,WAAAG,EAAM,YAAYF,EAAgB,SAC9BD,IAAA,UACGG,EAAM,YAAYF,EAAgB,OACrCD,IAAA,UACGG,EAAM,YAAYF,EAAgB,WACrCD,IAAA;;;;;;;;;;;;;;;;;;;;;iBCCFA,MAAMI,IAAAD,EAAM,WAAN,gBAAAC,EAAc,aAAYH,EAAgB,SAAS,OAAO;AAElE,QAAAI;AACA,WAAAF,EAAM,UAAUD,EAAe,SACrBG,IAAA,iBACHF,EAAM,UAAUD,EAAe,UAC5BG,IAAA;;;;;;;;;;oFCzBdC,IAAe;AAAA,EACb,cAAc;AAChB;;;;;;;;;;;;;;;;;;;;eCJST,GAAA;SADGC,EAAA,GAAAC,EAAA,QAAA,MAAA;AAAA;;;;;eCCNF,GAAA;SADMC,EAAA,GAAAC,EAAA,KAAA,MAAA;AAAA;;;;;;;;;;;;ACYN,UAAAC,MAAY,YAAY,OAAO;;;;;;;;;;eCX9BH,GAAA;SADKC,EAAA,GAAAC,EAAA,MAAA,MAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;sECkBNQ,KAAoD;AAAA,EACxDC,YAAYC;AAAAA,EACZC,MAAMC;AAAAA,EACNC,YAAYC;AAAAA,EACZC,UAAUC;AAAAA,EACVC,SAASC;AAAAA,EACTC,OAAOC;AAAAA,EACPC,YAAYC;AAAAA,EACZC,MAAMC;AAAAA,EACNC,MAAMC;AAAAA,EACNC,WAAWC;AAAAA,EACXC,WAAWC;AAAAA,EACXC,OAAOC;AAAAA,EACPC,WAAWC;AAAAA,EACXC,YAAYC;AAAAA,EACZC,MAAMC;AAAAA,EACNC,YAAYC;AACd,GAEMC,IAAmC,CAAA;AACzC,SAASC,GAAsBC,GAAc;AAC3C,EAAIF,EAAkBG,QAAQD,CAAI,MAAM,OAIxCF,EAAkBI,KAAKF,CAAI,GAC3BG,QAAQC,KAAM,2DAA0DJ,IAAO;AACjF;AAEe,SAASK,EAA4CC,GAA6BC,GAA8B;AAC7H,SAAOD,EAASE,IAAKC,CAAAA,MAAU;AAC7B,QAAI,CAACA;AACH,aAAO;AAGT,UAAM;AAAA,MAAET,MAAAA;AAAAA,MAAMM,UAAAA;AAAAA,MAAU,GAAGI;AAAAA,IAAW,IAAGD,GACnCE,IAAY9C,GAAuB4C,EAAMT,IAAI;AAEnD,WAAKW,IAKLC,EAAAD,GAAAE,EACiBH,GAAS;AAAA,MAAA,QAAUH;AAAAA,IAAM,CAAA,GAAA;AAAA,MAAA,SACrC,MAAMD,KAAYD,EAAeC,GAAUG,CAAK;AAAA,IAAC,CAAA,KANpDV,GAAsBC,CAAI,GACnB;AAAA,EAQX,CAAC;AACH;;;;;;;;;;iBCrDMc,IAAW,MAAA;;AAAM,cAAApD,IAAAD,EAAM,aAAN,QAAAC,EAAgB,WAAW2C,EAAe5C,EAAM,SAAS,QAAQ,IAAI;AAAA;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-viewer.umd.js","sources":["../src/components/nodes/Blockquote.vue","../src/components/nodes/Code.vue","../src/components/nodes/CodeBlock.vue","../src/components/nodes/Emphasis.vue","../src/components/nodes/Heading.vue","../src/components/nodes/LineBreak.vue","../src/components/nodes/Table.vue","../src/types/index.ts","../src/components/nodes/TableRow.vue","../src/components/nodes/TableCell.vue","../src/components/nodes/Text.vue","../src/components/nodes/TextBlock.vue","../src/components/nodes/Paragraph.vue","../src/components/nodes/List.vue","../src/components/nodes/ListItem.vue","../src/components/renderChildren.tsx","../src/components/DocumentViewer.vue"],"sourcesContent":["<template>\n <blockquote>\n <slot />\n </blockquote>\n</template>\n\n<style scoped>\nblockquote {\n background: var(--document-viewer-blockquote-background, #f8f8fa);\n border-left: 2.5px solid var(--document-viewer-blockquote-border, var(--text_colors-accent, #0b172d));\n border-radius: var(--document-viewer-blockquote-border-radius, 3px);\n font-size: 14px;\n margin: var(--spacing-sm, 12px) var(--spacing-sm, 12px);\n padding: var(--spacing-sm, 12px);\n}\n</style>\n","<template>\n <code>\n <slot />\n </code>\n</template>\n\n<style scoped>\ncode {\n background: var(--document-viewer-code-background, #f1f1f1);\n border-radius: var(--document-viewer-code-border-radius, 3px);\n color: var(--document-viewer-code-color, inherit);\n font-family: var(--document-viewer-code-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-font-size, 14px);\n padding: 4px 6px;\n}\n</style>\n","<template>\n <pre><code><slot /></code></pre>\n</template>\n\n<style scoped>\npre {\n background: var(--document-viewer-code-block-background, #f1f1f1);\n border-radius: var(--document-viewer-code-block-border-radius, 3px);\n color: var(--document-viewer-code-block-color, inherit);\n font-family: var(--document-viewer-code-block-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-block-font-size, 14px);\n margin-bottom: var(--spacing-sm, 12px);\n padding: 12px;\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n default: 1,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n return num > 0 && num < 3\n },\n },\n})\n\nconst tag = props.level === 1 ? 'em' : 'strong'\n</script>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n\n return num > 0 && num < 7\n },\n default: 1,\n },\n})\n\nconst tag = `h${props.level}`\n</script>\n\n<style scoped>\nh1, h2, h3, h4, h5, h6 {\n color: var(--document-viewer-color, var(--text_colors-headings, #0b172d));\n font-family: var(--document-viewer-font-family-headings, var(--document-viewer-font-family-default));\n font-weight: var(--document-viewer-heading-font-weight, 500);\n margin-top: 0;\n}\n\nh1 {\n font-size: 32px;\n font-weight: 500;\n line-height: 38px;\n margin-bottom: var(--spacing-xxl, 48px);\n}\n\nh2 {\n font-size: 24px;\n line-height: 20px;\n margin-bottom: var(--spacing-lg, 24px);\n}\n\nh3 {\n font-size: 20px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh4 {\n font-size: 18px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh5 {\n font-size: 16px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh6 {\n font-size: 14.5px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child {\n margin-top: 0;\n}\n</style>\n","<template>\n <hr />\n</template>\n","<template>\n <table>\n <slot />\n </table>\n</template>\n","/* eslint-disable no-unused-vars */\nexport interface BaseNode<Type extends string = string> {\n type: Type\n children?: Array<BaseNode>\n}\n\n// TODO: Reach out to DevX for a proper interface\nexport interface Document extends BaseNode<'document'> {\n children: Array<BaseNode>\n version: number\n}\n\nexport enum TableRowSection {\n header = 'header',\n body = 'body',\n footer = 'footer'\n}\n\nexport enum TableCellAlign {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport interface TableCellNode extends BaseNode<'table_cell'> {\n align?: TableCellAlign\n}\n\nexport interface TableRowNode extends BaseNode<'table_row'> {\n section?: TableRowSection\n children: Array<TableCellNode>\n}\n\nexport interface TextNode extends BaseNode<'text'> {\n text: string\n children: undefined\n hardBreak?: boolean\n}\n\nexport interface HeadingNode extends BaseNode<'heading'> {\n level: number\n}\n\nexport interface ListItemNode extends BaseNode<'list_item'> {}\n\nexport interface ListNode extends BaseNode<'list'> {\n isOrdered?: boolean\n children: Array<ListItemNode>\n}\n\nexport interface LinkNode extends BaseNode<'link'> {\n href: string\n}\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableRowSection } from '../../types'\n\nconst props = defineProps({\n section: {\n type: String as PropType<TableRowSection>,\n default: TableRowSection.body,\n },\n})\n\nlet tag: string\nif (props.section === TableRowSection.header) {\n tag = 'thead'\n} else if (props.section === TableRowSection.body) {\n tag = 'tbody'\n} else if (props.section === TableRowSection.footer) {\n tag = 'tfoot'\n}\n</script>\n","<template>\n <component\n :is=\"tag\"\n :class=\"className\"\n >\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableCellAlign, TableRowNode, TableRowSection } from '../../types'\n\nconst props = defineProps({\n align: {\n type: String as PropType<TableCellAlign>,\n default: TableCellAlign.left,\n },\n parent: {\n type: Object as PropType<TableRowNode>,\n required: true,\n },\n})\n\nconst tag = props.parent?.section === TableRowSection.header ? 'th' : 'td'\n\nlet className: string\nif (props.align === TableCellAlign.center) {\n className = 'align-center'\n} else if (props.align === TableCellAlign.right) {\n className = 'align-right'\n}\n</script>\n\n<style scoped>\nth, td {\n text-align: left;\n}\n\n.align-center {\n text-align: center;\n}\n\n.align-right {\n text-align: right;\n}\n</style>\n","<template>\n {{ text }}<br v-if=\"hardBreak\">\n</template>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n}\n</script>\n<script setup lang=\"ts\">\ndefineProps({\n text: {\n type: String,\n required: true,\n },\n hardBreak: {\n type: Boolean,\n default: false,\n },\n})\n</script>\n","<template>\n <span>\n <slot />\n </span>\n</template>\n","<template>\n <p>\n <slot />\n </p>\n</template>\n\n<style scoped>\np {\n font-size: 14px;\n line-height: 20px;\n margin: var(--document-viewer-paragraph-margin, 0 0 12px);\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n isOrdered: {\n type: Boolean,\n default: false,\n },\n})\n\nconst tag = props.isOrdered ? 'ol' : 'ul'\n</script>\n\n<style scoped>\nul, ol {\n font-size: 14px;\n margin-bottom: var(--spacing-sm, 12px);\n margin-left: 16px;\n padding: 0;\n}\n\nol {\n list-style: decimal;\n}\n\nul {\n list-style: disc;\n}\n</style>\n","<template>\n <li>\n <slot />\n </li>\n</template>\n","import { Component } from 'vue'\nimport { BaseNode } from '../types'\nimport Blockquote from './nodes/Blockquote.vue'\nimport Code from './nodes/Code.vue'\nimport CodeBlock from './nodes/CodeBlock.vue'\nimport Emphasis from './nodes/Emphasis.vue'\nimport Heading from './nodes/Heading.vue'\nimport Image from './nodes/Image.vue'\nimport LineBreak from './nodes/LineBreak.vue'\nimport Table from './nodes/Table.vue'\nimport TableRow from './nodes/TableRow.vue'\nimport TableCell from './nodes/TableCell.vue'\nimport Text from './nodes/Text.vue'\nimport TextBlock from './nodes/TextBlock.vue'\nimport Paragraph from './nodes/Paragraph.vue'\nimport List from './nodes/List.vue'\nimport ListItem from './nodes/ListItem.vue'\nimport Link from './nodes/Link.vue'\n\n// The node to component mapping is currently static but may change in the future\nconst nodeTypeToComponentMap: Record<string, Component> = {\n blockquote: Blockquote,\n code: Code,\n code_block: CodeBlock,\n emphasis: Emphasis,\n heading: Heading,\n image: Image,\n line_break: LineBreak,\n link: Link,\n list: List,\n list_item: ListItem,\n paragraph: Paragraph,\n table: Table,\n table_row: TableRow,\n table_cell: TableCell,\n text: Text,\n text_block: TextBlock,\n}\n\nconst nodeTypesNotified: Array<string> = []\nfunction notifyUnknownNodeType(type: string) {\n if (nodeTypesNotified.indexOf(type) !== -1) {\n return\n }\n\n nodeTypesNotified.push(type)\n console.warn(`[DocumentViewer] Unable to render an unknown node type \"${type}\"`)\n}\n\nexport default function renderChildren<ChildTypes extends BaseNode>(children: Array<ChildTypes>, parent?: BaseNode): Component {\n return children.map((child) => {\n if (!child) {\n return null\n }\n\n const { type, children, ...restProps } = child\n const component = nodeTypeToComponentMap[child.type]\n\n if (!component) {\n notifyUnknownNodeType(type)\n return null\n }\n\n return (\n <component {...restProps} parent={parent}>\n {() => children && renderChildren(children, child)}\n </component>\n )\n })\n}\n","<template>\n <div class=\"document-viewer\">\n <Children />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport renderChildren from './renderChildren'\n\nconst props = defineProps({\n document: {\n type: Object,\n required: true,\n },\n})\n\nconst Children = () => props.document?.children ? renderChildren(props.document.children) : null\n</script>\n\n<style>\n:root {\n --document-viewer-font-family-default: Roboto, Helvetica, sans-serif;\n --document-viewer-font-family-monospace: Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n}\n</style>\n<style scoped>\n.document-viewer {\n color: var(--document-viewer-color, var(--text_colors-primary, #0b172d));\n font-family: var(--document-viewer-font-family-default, var(--font-family-sans));\n font-size: var(--document-viewer-font-size, 16px);\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","tag","TableRowSection","TableCellAlign","props","_a","className","__default__","nodeTypeToComponentMap","blockquote","Blockquote","code","Code","code_block","CodeBlock","emphasis","Emphasis","heading","Heading","image","Image","line_break","LineBreak","link","list","List","list_item","ListItem","paragraph","Paragraph","table","Table","table_row","TableRow","table_cell","TableCell","text","Text","text_block","TextBlock","nodeTypesNotified","notifyUnknownNodeType","type","indexOf","push","console","warn","renderChildren","children","parent","map","child","restProps","component","_createVNode","_mergeProps","Children"],"mappings":"yXAGeA,EAAA,QADHC,YAAA,EAAAC,qBAAA,aAAA,KAAA,qICCHF,EAAA,QADGC,YAAA,EAAAC,qBAAA,OAAA,KAAA,qICDsBF,EAAA,QAANC,YAAA,EAAAC,qBAAA,MAAA,KAAA,GAAP,mBAAA,OAAA,KAAA,8QCqBrB,MAAMC,IAAY,QAAU,EAAI,KAAO,iUCCjC,MAAAA,EAAM,MAAU,wmBCtBdH,EAAA,+FCEEA,EAAA,QADEC,YAAA,EAAAC,qBAAA,QAAA,KAAA,gECUA,IAAAE,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,OAAS,SAHCA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,MAAQ,QAHEA,IAAAA,GAAA,CAAA,CAAA,+GCDR,IAAAF,EACA,OAAAG,EAAM,UAAYF,EAAgB,OAC9BD,EAAA,QACGG,EAAM,UAAYF,EAAgB,KACrCD,EAAA,QACGG,EAAM,UAAYF,EAAgB,SACrCD,EAAA,0SCCFA,IAAMI,EAAAD,EAAM,SAAN,YAAAC,EAAc,WAAYH,EAAgB,OAAS,KAAO,KAElE,IAAAI,EACA,OAAAF,EAAM,QAAUD,EAAe,OACrBG,EAAA,eACHF,EAAM,QAAUD,EAAe,QAC5BG,EAAA,qRCzBdC,EAAe,CACb,aAAc,EAChB,+VCJST,EAAA,QADGC,YAAA,EAAAC,qBAAA,OAAA,KAAA,wFCCNF,EAAA,QADMC,YAAA,EAAAC,qBAAA,IAAA,KAAA,qMCYN,MAAAC,IAAY,UAAY,KAAO,6OCX9BH,EAAA,QADKC,YAAA,EAAAC,qBAAA,KAAA,KAAA,wXCkBNQ,EAAoD,CACxDC,WAAYC,EACZC,KAAMC,EACNC,WAAYC,EACZC,SAAUC,EACVC,QAASC,EACTC,MAAOC,EACPC,WAAYC,EACZC,4CACAC,KAAMC,EACNC,UAAWC,EACXC,UAAWC,EACXC,MAAOC,EACPC,UAAWC,EACXC,WAAYC,EACZC,KAAMC,EACNC,WAAYC,CACd,EAEMC,EAAmC,CAAA,EACzC,SAASC,GAAsBC,EAAc,CACvCF,EAAkBG,QAAQD,CAAI,IAAM,KAIxCF,EAAkBI,KAAKF,CAAI,EAC3BG,QAAQC,KAAM,2DAA0DJ,IAAO,EACjF,CAEe,SAASK,EAA4CC,EAA6BC,EAA8B,CAC7H,OAAOD,EAASE,IAAKC,GAAU,CAC7B,GAAI,CAACA,EACH,OAAO,KAGT,KAAM,CAAET,KAAAA,EAAMM,SAAAA,EAAU,GAAGI,CAAW,EAAGD,EACnCE,EAAY7C,EAAuB2C,EAAMT,IAAI,EAEnD,OAAKW,EAKLC,cAAAD,EAAAE,EAAA,WACiBH,EAAS,CAAA,OAAUH,CAAM,CAAA,EAAA,CAAA,QACrC,IAAMD,GAAYD,EAAeC,EAAUG,CAAK,CAAC,CAAA,GANpDV,GAAsBC,CAAI,EACnB,KAQX,CAAC,CACH,gJCrDMc,EAAW,IAAA,OAAM,OAAAnD,EAAAD,EAAM,WAAN,MAAAC,EAAgB,SAAW0C,EAAe3C,EAAM,SAAS,QAAQ,EAAI"}
|
|
1
|
+
{"version":3,"file":"document-viewer.umd.js","sources":["../src/components/nodes/Blockquote.vue","../src/components/nodes/Code.vue","../src/components/nodes/CodeBlock.vue","../src/components/nodes/Emphasis.vue","../src/components/nodes/Heading.vue","../src/components/nodes/LineBreak.vue","../src/components/nodes/Table.vue","../src/types/index.ts","../src/components/nodes/TableRow.vue","../src/components/nodes/TableCell.vue","../src/components/nodes/Text.vue","../src/components/nodes/TextBlock.vue","../src/components/nodes/Paragraph.vue","../src/components/nodes/List.vue","../src/components/nodes/ListItem.vue","../src/components/renderChildren.tsx","../src/components/DocumentViewer.vue"],"sourcesContent":["<template>\n <blockquote>\n <slot />\n </blockquote>\n</template>\n\n<style scoped>\nblockquote {\n background: var(--document-viewer-blockquote-background, #f8f8fa);\n border-left: 2.5px solid var(--document-viewer-blockquote-border, var(--text_colors-accent, #0b172d));\n border-radius: var(--document-viewer-blockquote-border-radius, 3px);\n font-size: 14px;\n margin: var(--spacing-sm, 12px) var(--spacing-sm, 12px);\n padding: var(--spacing-sm, 12px);\n}\n</style>\n","<template>\n <code>\n <slot />\n </code>\n</template>\n\n<style scoped>\ncode {\n background: var(--document-viewer-code-background, #f1f1f1);\n border-radius: var(--document-viewer-code-border-radius, 3px);\n color: var(--document-viewer-code-color, inherit);\n font-family: var(--document-viewer-code-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-font-size, 14px);\n padding: 4px 6px;\n}\n</style>\n","<template>\n <pre><code><slot /></code></pre>\n</template>\n\n<style scoped>\npre {\n background: var(--document-viewer-code-block-background, #f1f1f1);\n border-radius: var(--document-viewer-code-block-border-radius, 3px);\n color: var(--document-viewer-code-block-color, inherit);\n font-family: var(--document-viewer-code-block-font-family, var(--document-viewer-font-family-monospace));\n font-size: var(--document-viewer-code-block-font-size, 14px);\n margin-bottom: var(--spacing-sm, 12px);\n padding: 12px;\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n default: 1,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n return num > 0 && num < 3\n },\n },\n})\n\nconst tag = props.level === 1 ? 'em' : 'strong'\n</script>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n level: {\n type: Number,\n validator(value: unknown): boolean {\n if (!Number.isInteger(value)) {\n return false\n }\n\n const num = value as number\n\n return num > 0 && num < 7\n },\n default: 1,\n },\n})\n\nconst tag = `h${props.level}`\n</script>\n\n<style scoped>\nh1, h2, h3, h4, h5, h6 {\n color: var(--document-viewer-color, var(--text_colors-headings, #0b172d));\n font-family: var(--document-viewer-font-family-headings, var(--document-viewer-font-family-default));\n font-weight: var(--document-viewer-heading-font-weight, 500);\n margin-top: 0;\n}\n\nh1 {\n font-size: 32px;\n font-weight: 500;\n line-height: 38px;\n margin-bottom: var(--spacing-xxl, 48px);\n}\n\nh2 {\n font-size: 24px;\n line-height: 20px;\n margin-bottom: var(--spacing-lg, 24px);\n}\n\nh3 {\n font-size: 20px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh4 {\n font-size: 18px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh5 {\n font-size: 16px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh6 {\n font-size: 14.5px;\n line-height: 20px;\n margin-bottom: var(--spacing-sm, 12px);\n}\n\nh1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child, h6:first-child {\n margin-top: 0;\n}\n</style>\n","<template>\n <hr>\n</template>\n","<template>\n <table>\n <slot />\n </table>\n</template>\n","/* eslint-disable no-unused-vars */\nexport interface BaseNode<Type extends string = string> {\n type: Type\n children?: Array<BaseNode>\n}\n\n// TODO: Reach out to DevX for a proper interface\nexport interface Document extends BaseNode<'document'> {\n children: Array<BaseNode>\n version: number\n}\n\nexport enum TableRowSection {\n header = 'header',\n body = 'body',\n footer = 'footer'\n}\n\nexport enum TableCellAlign {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport interface TableCellNode extends BaseNode<'table_cell'> {\n align?: TableCellAlign\n}\n\nexport interface TableRowNode extends BaseNode<'table_row'> {\n section?: TableRowSection\n children: Array<TableCellNode>\n}\n\nexport interface TextNode extends BaseNode<'text'> {\n text: string\n children: undefined\n hardBreak?: boolean\n}\n\nexport interface HeadingNode extends BaseNode<'heading'> {\n level: number\n}\n\nexport interface ListItemNode extends BaseNode<'list_item'> {}\n\nexport interface ListNode extends BaseNode<'list'> {\n isOrdered?: boolean\n children: Array<ListItemNode>\n}\n\nexport interface LinkNode extends BaseNode<'link'> {\n href: string\n}\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableRowSection } from '../../types'\n\nconst props = defineProps({\n section: {\n type: String as PropType<TableRowSection>,\n default: TableRowSection.body,\n },\n})\n\nlet tag: string\nif (props.section === TableRowSection.header) {\n tag = 'thead'\n} else if (props.section === TableRowSection.body) {\n tag = 'tbody'\n} else if (props.section === TableRowSection.footer) {\n tag = 'tfoot'\n}\n</script>\n","<template>\n <component\n :is=\"tag\"\n :class=\"className\"\n >\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { PropType } from 'vue'\nimport { TableCellAlign, TableRowNode, TableRowSection } from '../../types'\n\nconst props = defineProps({\n align: {\n type: String as PropType<TableCellAlign>,\n default: TableCellAlign.left,\n },\n parent: {\n type: Object as PropType<TableRowNode>,\n required: true,\n },\n})\n\nconst tag = props.parent?.section === TableRowSection.header ? 'th' : 'td'\n\nlet className: string\nif (props.align === TableCellAlign.center) {\n className = 'align-center'\n} else if (props.align === TableCellAlign.right) {\n className = 'align-right'\n}\n</script>\n\n<style scoped>\nth, td {\n text-align: left;\n}\n\n.align-center {\n text-align: center;\n}\n\n.align-right {\n text-align: right;\n}\n</style>\n","<template>\n {{ text }}<br v-if=\"hardBreak\">\n</template>\n\n<script lang=\"ts\">\nexport default {\n inheritAttrs: false,\n}\n</script>\n<script setup lang=\"ts\">\ndefineProps({\n text: {\n type: String,\n required: true,\n },\n hardBreak: {\n type: Boolean,\n default: false,\n },\n})\n</script>\n","<template>\n <span>\n <slot />\n </span>\n</template>\n","<template>\n <p>\n <slot />\n </p>\n</template>\n\n<style scoped>\np {\n font-size: 14px;\n line-height: 20px;\n margin: var(--document-viewer-paragraph-margin, 0 0 12px);\n}\n</style>\n","<template>\n <component :is=\"tag\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nconst props = defineProps({\n isOrdered: {\n type: Boolean,\n default: false,\n },\n})\n\nconst tag = props.isOrdered ? 'ol' : 'ul'\n</script>\n\n<style scoped>\nul, ol {\n font-size: 14px;\n margin-bottom: var(--spacing-sm, 12px);\n margin-left: 16px;\n padding: 0;\n}\n\nol {\n list-style: decimal;\n}\n\nul {\n list-style: disc;\n}\n</style>\n","<template>\n <li>\n <slot />\n </li>\n</template>\n","import { Component } from 'vue'\nimport { BaseNode } from '../types'\nimport Blockquote from './nodes/Blockquote.vue'\nimport Code from './nodes/Code.vue'\nimport CodeBlock from './nodes/CodeBlock.vue'\nimport Emphasis from './nodes/Emphasis.vue'\nimport Heading from './nodes/Heading.vue'\nimport Image from './nodes/Image.vue'\nimport LineBreak from './nodes/LineBreak.vue'\nimport Table from './nodes/Table.vue'\nimport TableRow from './nodes/TableRow.vue'\nimport TableCell from './nodes/TableCell.vue'\nimport Text from './nodes/Text.vue'\nimport TextBlock from './nodes/TextBlock.vue'\nimport Paragraph from './nodes/Paragraph.vue'\nimport List from './nodes/List.vue'\nimport ListItem from './nodes/ListItem.vue'\nimport Link from './nodes/Link.vue'\n\n// The node to component mapping is currently static but may change in the future\nconst nodeTypeToComponentMap: Record<string, Component> = {\n blockquote: Blockquote,\n code: Code,\n code_block: CodeBlock,\n emphasis: Emphasis,\n heading: Heading,\n image: Image,\n line_break: LineBreak,\n link: Link,\n list: List,\n list_item: ListItem,\n paragraph: Paragraph,\n table: Table,\n table_row: TableRow,\n table_cell: TableCell,\n text: Text,\n text_block: TextBlock,\n}\n\nconst nodeTypesNotified: Array<string> = []\nfunction notifyUnknownNodeType(type: string) {\n if (nodeTypesNotified.indexOf(type) !== -1) {\n return\n }\n\n nodeTypesNotified.push(type)\n console.warn(`[DocumentViewer] Unable to render an unknown node type \"${type}\"`)\n}\n\nexport default function renderChildren<ChildTypes extends BaseNode>(children: Array<ChildTypes>, parent?: BaseNode): Component {\n return children.map((child) => {\n if (!child) {\n return null\n }\n\n const { type, children, ...restProps } = child\n const component = nodeTypeToComponentMap[child.type]\n\n if (!component) {\n notifyUnknownNodeType(type)\n return null\n }\n\n return (\n <component {...restProps} parent={parent}>\n {() => children && renderChildren(children, child)}\n </component>\n )\n })\n}\n","<template>\n <div class=\"document-viewer\">\n <Children />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport renderChildren from './renderChildren'\n\nconst props = defineProps({\n document: {\n type: Object,\n required: true,\n },\n})\n\nconst Children = () => props.document?.children ? renderChildren(props.document.children) : null\n</script>\n\n<style>\n:root {\n --document-viewer-font-family-default: Roboto, Helvetica, sans-serif;\n --document-viewer-font-family-monospace: Consolas, 'Liberation Mono', Menlo, Courier, monospace;\n}\n</style>\n<style scoped>\n.document-viewer {\n color: var(--document-viewer-color, var(--text_colors-primary, #0b172d));\n font-family: var(--document-viewer-font-family-default, var(--font-family-sans));\n font-size: var(--document-viewer-font-size, 16px);\n}\n</style>\n"],"names":["_cache","_openBlock","_createElementBlock","tag","TableRowSection","TableCellAlign","props","_a","className","__default__","nodeTypeToComponentMap","blockquote","Blockquote","code","Code","code_block","CodeBlock","emphasis","Emphasis","heading","Heading","image","Image","line_break","LineBreak","link","list","List","list_item","ListItem","paragraph","Paragraph","table","Table","table_row","TableRow","table_cell","TableCell","text","Text","text_block","TextBlock","nodeTypesNotified","notifyUnknownNodeType","type","indexOf","push","console","warn","renderChildren","children","parent","map","child","restProps","component","_createVNode","_mergeProps","Children"],"mappings":"yXAGeA,EAAA,QADHC,YAAA,EAAAC,qBAAA,aAAA,KAAA,qICCHF,EAAA,QADGC,YAAA,EAAAC,qBAAA,OAAA,KAAA,qICDsBF,EAAA,QAANC,YAAA,EAAAC,qBAAA,MAAA,KAAA,GAAP,mBAAA,OAAA,KAAA,8QCqBrB,MAAMC,IAAY,QAAU,EAAI,KAAO,iUCCjC,MAAAA,EAAM,MAAU,wmBCtBhBH,EAAA,+FCEIA,EAAA,QADEC,YAAA,EAAAC,qBAAA,QAAA,KAAA,gECUA,IAAAE,GAAAA,IACVA,EAAA,OAAS,SACTA,EAAA,KAAO,OACPA,EAAA,OAAS,SAHCA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,OAAS,SACTA,EAAA,MAAQ,QAHEA,IAAAA,GAAA,CAAA,CAAA,+GCDR,IAAAF,EACA,OAAAG,EAAM,UAAYF,EAAgB,OAC9BD,EAAA,QACGG,EAAM,UAAYF,EAAgB,KACrCD,EAAA,QACGG,EAAM,UAAYF,EAAgB,SACrCD,EAAA,0SCCFA,IAAMI,EAAAD,EAAM,SAAN,YAAAC,EAAc,WAAYH,EAAgB,OAAS,KAAO,KAElE,IAAAI,EACA,OAAAF,EAAM,QAAUD,EAAe,OACrBG,EAAA,eACHF,EAAM,QAAUD,EAAe,QAC5BG,EAAA,qRCzBdC,EAAe,CACb,aAAc,EAChB,+VCJST,EAAA,QADGC,YAAA,EAAAC,qBAAA,OAAA,KAAA,wFCCNF,EAAA,QADMC,YAAA,EAAAC,qBAAA,IAAA,KAAA,qMCYN,MAAAC,IAAY,UAAY,KAAO,6OCX9BH,EAAA,QADKC,YAAA,EAAAC,qBAAA,KAAA,KAAA,wXCkBNQ,EAAoD,CACxDC,WAAYC,EACZC,KAAMC,EACNC,WAAYC,EACZC,SAAUC,EACVC,QAASC,EACTC,MAAOC,EACPC,WAAYC,EACZC,4CACAC,KAAMC,EACNC,UAAWC,EACXC,UAAWC,EACXC,MAAOC,EACPC,UAAWC,EACXC,WAAYC,EACZC,KAAMC,EACNC,WAAYC,CACd,EAEMC,EAAmC,CAAA,EACzC,SAASC,GAAsBC,EAAc,CACvCF,EAAkBG,QAAQD,CAAI,IAAM,KAIxCF,EAAkBI,KAAKF,CAAI,EAC3BG,QAAQC,KAAM,2DAA0DJ,IAAO,EACjF,CAEe,SAASK,EAA4CC,EAA6BC,EAA8B,CAC7H,OAAOD,EAASE,IAAKC,GAAU,CAC7B,GAAI,CAACA,EACH,OAAO,KAGT,KAAM,CAAET,KAAAA,EAAMM,SAAAA,EAAU,GAAGI,CAAW,EAAGD,EACnCE,EAAY7C,EAAuB2C,EAAMT,IAAI,EAEnD,OAAKW,EAKLC,cAAAD,EAAAE,EAAA,WACiBH,EAAS,CAAA,OAAUH,CAAM,CAAA,EAAA,CAAA,QACrC,IAAMD,GAAYD,EAAeC,EAAUG,CAAK,CAAC,CAAA,GANpDV,GAAsBC,CAAI,EACnB,KAQX,CAAC,CACH,gJCrDMc,EAAW,IAAA,OAAM,OAAAnD,EAAAD,EAAM,WAAN,MAAAC,EAAgB,SAAW0C,EAAe3C,EAAM,SAAS,QAAQ,EAAI"}
|